From dbfe06e01e1dd97675b5889588ed058c1817a8c6 Mon Sep 17 00:00:00 2001
From: liriming <1343021927@qq.com>
Date: 星期五, 28 三月 2025 08:33:46 +0800
Subject: [PATCH] 计划修正

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PlanDataChartReqVO.java       |    3 +++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java |   52 +++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 50 insertions(+), 5 deletions(-)

diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PlanDataChartReqVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PlanDataChartReqVO.java
index 1e469a0..f4a91fb 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PlanDataChartReqVO.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PlanDataChartReqVO.java
@@ -27,4 +27,7 @@
 
     @Schema(description = "预测时间")
     private String predictTime;
+
+    @Schema(description = "右侧长度")
+    private int lengthRight;
 }
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java
index 6aaace5..34ad0dd 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/DataServiceImpl.java
@@ -185,6 +185,34 @@
         result[2] = endTime;
         return result;
     }
+
+    private Date[] calResultTime2(Date predictTimeReq,String startTimeReq, String endTimeReq, int lengthLeft, int lengthRight) {
+        Date[] result = new Date[2];
+        Date predictTime = predictTimeReq;
+        Date startTime = new Date();
+        if (startTimeReq == null) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(predictTime);
+            calendar.add(Calendar.SECOND, -1 * lengthLeft * 60);
+            startTime = calendar.getTime();
+        }
+        Date endTime = new Date();
+        if (endTimeReq == null) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(predictTime);
+            calendar.add(Calendar.SECOND, lengthRight * 60);
+            endTime = calendar.getTime();
+        }
+        if (endTime.getTime() <= startTime.getTime()) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(startTime);
+            calendar.add(Calendar.SECOND, lengthRight * 60);
+            endTime = calendar.getTime();
+        }
+        result[0] = startTime;
+        result[1] = endTime;
+        return result;
+    }
     /**
      *  查询原始计划、修正计划数据
      */
@@ -203,10 +231,23 @@
         if (planCode == null) {
             return null;
         }
+        String itemCode = tMap.get(CommonConstant.ITEM_CODE);
+        if (itemCode == null) {
+            return null;
+        }
 
-        Date startTime = DateUtils.parse(reqVO.getStartTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
-        Date endTime = DateUtils.parse(reqVO.getEndTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
-        Date predictTime = DateUtils.parse(reqVO.getPredictTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+        PreDataSingleChartReqVO queryDto = new PreDataSingleChartReqVO();
+        queryDto.setChartCode(reqVO.getChartCode());
+        PreDataSingleChartRespVO chartData = mcsApi.getPreDataSingleChart(queryDto);
+
+        Date predictTime = chartData.getPredictTime();
+        int lengthLeft = new BigDecimal(tMap.get(CommonConstant.LENGTH_LEFT)).intValue();
+        int lengthRight = reqVO.getLengthRight();
+
+        Date[] timeArray = calResultTime2(predictTime, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight);
+        Date startTime = timeArray[0];
+        Date endTime = timeArray[1];
+
         // 原始计划数据
         LinkedHashMap<String, List<String[]>> planData = getRealPlanData(planCode, startTime, endTime, predictTime);
 
@@ -222,7 +263,8 @@
     public LinkedHashMap<String, List<String[]>> getRealPlanData(String planCode, Date startTime, Date endTime, Date predictTime) {
         LinkedHashMap<String, List<String[]>> result = new LinkedHashMap<>();
         ApiDataQueryDTO apiDataQueryDTO = new ApiDataQueryDTO();
-        apiDataQueryDTO.setItemNo(planCode);
+        List<String> itemList = Arrays.asList(planCode.toString().split(","));
+        apiDataQueryDTO.setItemNos(itemList);
         apiDataQueryDTO.setStart(startTime);
         apiDataQueryDTO.setEnd(endTime);
         LinkedHashMap<String, List<ApiPlanDataDTO>> planData = planItemApi.queryPlanItemRecordValue(apiDataQueryDTO);
@@ -251,7 +293,7 @@
         PreDataSingleChartReqVO queryDto = new PreDataSingleChartReqVO();
         queryDto.setChartCode(charCode);
         queryDto.setStartTime(startTime);
-        queryDto.setEndTime(startTime);
+        queryDto.setEndTime(endTime);
         PreDataSingleChartRespVO chartData = mcsApi.getPreDataSingleChart(queryDto);
         if (CollectionUtils.isEmpty(chartData.getDataView().getPreDataN())) {
             return result;

--
Gitblit v1.9.3