소스 검색

河南郸城调度计划 更给计算逻辑, 考虑旧时间的对比情况

1037015548@qq.com 11 달 전
부모
커밋
c83f74ade7
1개의 변경된 파일20개의 추가작업 그리고 35개의 파일을 삭제
  1. 20 35
      src/main/java/com/shkpr/service/aimodelpower/bizmgr/WODispatchPlanTmDoBizFun.java

+ 20 - 35
src/main/java/com/shkpr/service/aimodelpower/bizmgr/WODispatchPlanTmDoBizFun.java

@@ -77,6 +77,9 @@ public class WODispatchPlanTmDoBizFun {
     }
 
     private static ResponseCode handleProduceCmd(String planId, long checkTm){
+        if(planId.equals("PLP29FC2A943900184748")){
+            System.out.println(111);
+        }
         ResponseCode code = ResponseCode.RESULT_BAD;
         Long nowLoc = TimeTool.getCurMsUTC();
         Map<String,Object> mapSel = getThisDBService().getOne(planId);
@@ -124,7 +127,11 @@ public class WODispatchPlanTmDoBizFun {
                 nextTimeModel.setPlanType(model.getPlanType());
                 nextTimeModel.setDispatchLeadTime(model.getDispatchLeadTime());
                 nextTimeModel.setCycles(model.getCycles());
-                Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel,newNextTakeTime);
+
+                LocalDateTime newTureNextTakeTimeDateTime = LocalDateTime
+                        .ofInstant(Instant.ofEpochMilli(newNextTakeTime), ZoneId.systemDefault())
+                        .minusMinutes(model.getDispatchLeadTime());
+                Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel,newTureNextTakeTimeDateTime);
                 newNextTakeTime = (model.getPlanType()==0)?0L:nextMap.get("nextTakeTime");
                 newLimitNextTakeTime = (model.getPlanType()==0)?0L:nextMap.get("limitNextTakeTime");//returnNextTakeTime(nextTimeModel);
 
@@ -429,8 +436,8 @@ public class WODispatchPlanTmDoBizFun {
 
     //判断是否在时间区间内并且取出最接近当前时间的大于它的时间
     //nextType 0 周 1 月 2 年
-    public static LocalDateTime findNextTime(List<String> dateTimeStrings){
-        LocalDateTime now = LocalDateTime.now(); // 获取当前日期时间
+    public static LocalDateTime findNextTime(List<String> dateTimeStrings,LocalDateTime oldTm){
+        LocalDateTime now = oldTm==null?LocalDateTime.now():oldTm; // 获取当前日期时间
         System.out.println("Current DateTime: " + now);
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         // 转换为LocalDateTime集合
@@ -463,7 +470,7 @@ public class WODispatchPlanTmDoBizFun {
     //TODO 公用计算下次生效时间的方法
     //TODO 分是否排班
     //TODO oldTm主要为了再派单时比对
-    public static Map<String,Long> returnNextTakeTime(DispatchPlanInfoNextTimeModel model,long oldTm){
+    public static Map<String,Long> returnNextTakeTime(DispatchPlanInfoNextTimeModel model,LocalDateTime oldTm){
         Map<String,Long> map = new HashMap<>();
 
         Long nextTakeTime = 0L;
@@ -578,7 +585,7 @@ public class WODispatchPlanTmDoBizFun {
                     nextTakeTime = Instant.ofEpochMilli(nextTakeTime)
                             .plus(1, ChronoUnit.DAYS).toEpochMilli();
                     limitNextTakeTime = Instant.ofEpochMilli(limitNextTakeTime).toEpochMilli();
-                }else if(nextTakeTime<=oldTm){
+                }else if(nextTakeTime<=oldTm.atZone(ZoneId.systemDefault()).toEpochSecond()){
                     //TODO 连续时需考虑
                     //TODO 如果传递了对比值, 则说明当前计算的时间与old不符合条件,则再加一算一次
                     nextTakeTime = Instant.ofEpochMilli(nextTakeTime)
@@ -612,9 +619,11 @@ public class WODispatchPlanTmDoBizFun {
                                 .withMinute(Integer.valueOf(timeLimits[1])).withSecond(Integer.valueOf(timeLimits[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                     }
                 }
-                LocalDateTime nextDateTime = findNextTime(dateTimeStrings);
+                LocalDateTime nextDateTime = findNextTime(dateTimeStrings,oldTm);
                 LocalDateTime limitNextDateTime = nextDateTime!=null?LocalDateTime.parse(dateLimitTimeStrings.get(dateLimitTimeStrings.indexOf(nextDateTime
-                        .format(DateTimeFormatter.ofPattern(TimeTool.YEAR_MONTH_DAY_FORMAT))+" "+model.getItemsList().stream().sorted(Comparator.comparing(DispatchCmdBatchItemNextTimeModel::getHandleStartTimeLimit))
+                        .format(DateTimeFormatter.ofPattern(TimeTool.YEAR_MONTH_DAY_FORMAT))
+                        +" "+
+                        model.getItemsList().stream().sorted(Comparator.comparing(DispatchCmdBatchItemNextTimeModel::getHandleStartTimeLimit))
                         .collect(Collectors.toList()).get(0).getHandleStartTimeLimit())),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):null;
 
                 if(nextDateTime!=null){
@@ -657,14 +666,6 @@ public class WODispatchPlanTmDoBizFun {
                                 .withSecond(localTimeLimit.getSecond()));
                     }
                 }
-                //TODO 连续时需考虑
-                if(nextTakeTime<=oldTm){
-                    //TODO 如果传递了对比值, 则说明当前计算的时间与old不符合条件,则再加一算一次
-                    nextTakeTime = Instant.ofEpochMilli(nextTakeTime)
-                            .plus(1, ChronoUnit.DAYS).toEpochMilli();
-                    limitNextTakeTime = Instant.ofEpochMilli(limitNextTakeTime).plus(1, ChronoUnit.DAYS).toEpochMilli();
-                    map.put("ifRestNextTakeTime",1L);
-                }
             }else if(model.getPlanType()==3){
                 //TODO 月计划
                 JSONArray newJSONArray = JSONArray.parseArray(model.getCycles()).stream().sorted(
@@ -691,7 +692,7 @@ public class WODispatchPlanTmDoBizFun {
                     }
                 }
 
-                LocalDateTime nextDateTime = findNextTime(dateTimeStrings);
+                LocalDateTime nextDateTime = findNextTime(dateTimeStrings,oldTm);
                 LocalDateTime limitNextDateTime = nextDateTime!=null?LocalDateTime.parse(dateLimitTimeStrings.get(dateLimitTimeStrings.indexOf(nextDateTime
                         .format(DateTimeFormatter.ofPattern(TimeTool.YEAR_MONTH_DAY_FORMAT))+" "+model.getItemsList().stream().sorted(Comparator.comparing(DispatchCmdBatchItemNextTimeModel::getHandleStartTimeLimit))
                         .collect(Collectors.toList()).get(0).getHandleStartTimeLimit())),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):null;
@@ -736,14 +737,6 @@ public class WODispatchPlanTmDoBizFun {
                                 .withSecond(localTimeLimit.getSecond()));
                     }
                 }
-                //TODO 连续时需考虑
-                if(nextTakeTime<=oldTm){
-                    //TODO 如果传递了对比值, 则说明当前计算的时间与old不符合条件,则再加一算一次
-                    nextTakeTime = Instant.ofEpochMilli(nextTakeTime)
-                            .plus(1, ChronoUnit.DAYS).toEpochMilli();
-                    limitNextTakeTime = Instant.ofEpochMilli(limitNextTakeTime).plus(1, ChronoUnit.DAYS).toEpochMilli();
-                    map.put("ifRestNextTakeTime",1L);
-                }
             }else if(model.getPlanType()==4){
                 //TODO 年计划
                 JSONArray newJSONArray = JSONArray.parseArray(model.getCycles()).stream().sorted(
@@ -772,7 +765,7 @@ public class WODispatchPlanTmDoBizFun {
                     }
                 }
 
-                LocalDateTime nextDateTime = findNextTime(dateTimeStrings);
+                LocalDateTime nextDateTime = findNextTime(dateTimeStrings,oldTm);
                 LocalDateTime limitNextDateTime = nextDateTime!=null?LocalDateTime.parse(dateLimitTimeStrings.get(dateLimitTimeStrings.indexOf(nextDateTime
                         .format(DateTimeFormatter.ofPattern(TimeTool.YEAR_MONTH_DAY_FORMAT))+" "+model.getItemsList().stream().sorted(Comparator.comparing(DispatchCmdBatchItemNextTimeModel::getHandleStartTimeLimit))
                         .collect(Collectors.toList()).get(0).getHandleStartTimeLimit())),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):null;
@@ -817,14 +810,6 @@ public class WODispatchPlanTmDoBizFun {
                                 .withSecond(localTimeLimit.getSecond()));
                     }
                 }
-                //TODO 连续时需考虑
-                if(nextTakeTime<=oldTm){
-                    //TODO 如果传递了对比值, 则说明当前计算的时间与old不符合条件,则再加一算一次
-                    nextTakeTime = Instant.ofEpochMilli(nextTakeTime)
-                            .plus(1, ChronoUnit.DAYS).toEpochMilli();
-                    limitNextTakeTime = Instant.ofEpochMilli(limitNextTakeTime).plus(1, ChronoUnit.DAYS).toEpochMilli();
-                    map.put("ifRestNextTakeTime",1L);
-                }
             }
         }
 
@@ -868,7 +853,7 @@ public class WODispatchPlanTmDoBizFun {
             nextTimeModel.setItemsList(itemModels);
             nextTimeModel.setDispatchLeadTime(oJsonParam.getDispatchLeadTime());
             nextTimeModel.setCycles(oJsonParam.getCycles());
-            Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel,0L);
+            Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel,null);
             nextTakeTime = nextMap.get("nextTakeTime");
             limitNextTakeTime = nextMap.get("limitNextTakeTime");
 
@@ -954,7 +939,7 @@ public class WODispatchPlanTmDoBizFun {
             nextTimeModel.setItemsList(itemModels);
             nextTimeModel.setDispatchLeadTime(oJsonParam.getDispatchLeadTime());
             nextTimeModel.setCycles(oJsonParam.getCycles());
-            Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel,0L);
+            Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel,null);
             nextTakeTime = nextMap.get("nextTakeTime");
             limitNextTakeTime = nextMap.get("limitNextTakeTime");