|
@@ -114,6 +114,7 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
for (DispatchCmdBatchItemModel jpItem : itemModels) {
|
|
|
DispatchCmdBatchItemNextTimeModel dispatchCmdBatchItemNextTimeModel = new DispatchCmdBatchItemNextTimeModel();
|
|
|
dispatchCmdBatchItemNextTimeModel.setHandleStartTime(jpItem.getHandleStartTime());
|
|
|
+ dispatchCmdBatchItemNextTimeModel.setHandleStartTimeLimit(jpItem.getHandleEndTime());
|
|
|
itemModelNextTimes.add(dispatchCmdBatchItemNextTimeModel);
|
|
|
}
|
|
|
}
|
|
@@ -121,8 +122,9 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
nextTimeModel.setPlanType(model.getPlanType());
|
|
|
nextTimeModel.setDispatchLeadTime(model.getDispatchLeadTime());
|
|
|
nextTimeModel.setCycles(model.getCycles());
|
|
|
- newNextTakeTime = (model.getPlanType()==0)?0L:returnNextTakeTime(nextTimeModel);
|
|
|
- newLimitNextTakeTime = (model.getPlanType()==0)?0L:0L;//returnNextTakeTime(nextTimeModel);
|
|
|
+ Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel);
|
|
|
+ newNextTakeTime = (model.getPlanType()==0)?0L:nextMap.get("nextTakeTime");
|
|
|
+ newLimitNextTakeTime = (model.getPlanType()==0)?0L:nextMap.get("limitNextTakeTime");//returnNextTakeTime(nextTimeModel);
|
|
|
|
|
|
if (model.getPlanType() != 0 && newNextTakeTime <= oldNextTakeTime){
|
|
|
newNextTakeTime = oldNextTakeTime;
|
|
@@ -150,12 +152,24 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
|
|
|
Long sugBeginTime = 0L;
|
|
|
if(model.getDispatchLeadTime()<0){
|
|
|
- sugBeginTime = Instant.ofEpochMilli(model.getNextTakeTime())
|
|
|
+ sugBeginTime = Instant.ofEpochMilli(model.getNextTakeTime()).atZone(ZoneId.systemDefault())
|
|
|
+ .withHour(Integer.valueOf(item.getHandleStartTime().split(":")[0]))
|
|
|
+ .withMinute(Integer.valueOf(item.getHandleStartTime().split(":")[1]))
|
|
|
+ .withSecond(Integer.valueOf(item.getHandleStartTime().split(":")[2]))
|
|
|
+ .toInstant()
|
|
|
.plus(Math.abs(model.getDispatchLeadTime()),ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()==0){
|
|
|
- sugBeginTime = model.getNextTakeTime();
|
|
|
+ sugBeginTime = Instant.ofEpochMilli(model.getNextTakeTime()).atZone(ZoneId.systemDefault())
|
|
|
+ .withHour(Integer.valueOf(item.getHandleStartTime().split(":")[0]))
|
|
|
+ .withMinute(Integer.valueOf(item.getHandleStartTime().split(":")[1]))
|
|
|
+ .withSecond(Integer.valueOf(item.getHandleStartTime().split(":")[2]))
|
|
|
+ .toInstant().toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()>0){
|
|
|
- sugBeginTime = Instant.ofEpochMilli(model.getNextTakeTime())
|
|
|
+ sugBeginTime = Instant.ofEpochMilli(model.getNextTakeTime()).atZone(ZoneId.systemDefault())
|
|
|
+ .withHour(Integer.valueOf(item.getHandleStartTime().split(":")[0]))
|
|
|
+ .withMinute(Integer.valueOf(item.getHandleStartTime().split(":")[1]))
|
|
|
+ .withSecond(Integer.valueOf(item.getHandleStartTime().split(":")[2]))
|
|
|
+ .toInstant()
|
|
|
.minus(Math.abs(model.getDispatchLeadTime()),ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}
|
|
|
if (sugBeginTime<=0L){
|
|
@@ -445,8 +459,13 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
|
|
|
//TODO 公用计算下次生效时间的方法
|
|
|
//TODO 分是否排班
|
|
|
- public static Long returnNextTakeTime(DispatchPlanInfoNextTimeModel model){
|
|
|
+ public static Map<String,Long> returnNextTakeTime(DispatchPlanInfoNextTimeModel model){
|
|
|
+ Map<String,Long> map = new HashMap<>();
|
|
|
+
|
|
|
Long nextTakeTime = 0L;
|
|
|
+ Long limitNextTakeTime = 0L;
|
|
|
+ map.put("nextTakeTime",nextTakeTime);
|
|
|
+ map.put("limitNextTakeTime",limitNextTakeTime);
|
|
|
if(!CollectionUtils.isEmpty(model.getItemsList())){
|
|
|
List<DispatchCmdBatchItemNextTimeModel> newList = model.getItemsList().stream()
|
|
|
.sorted(Comparator.comparing(DispatchCmdBatchItemNextTimeModel::getHandleStartTime))
|
|
@@ -459,16 +478,25 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+" "+
|
|
|
newList.get(0).getHandleStartTime()));
|
|
|
+ Instant endTime = Instant.ofEpochMilli(
|
|
|
+ TimeTool.convertDateStr2UTC
|
|
|
+ (
|
|
|
+ JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+ +" "+
|
|
|
+ newList.get(0).getHandleStartTimeLimit()));
|
|
|
if(model.getDispatchLeadTime()==0) {
|
|
|
nextTakeTime = nowTime.toEpochMilli();
|
|
|
+ limitNextTakeTime = endTime.toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()>0){
|
|
|
nextTakeTime = nowTime.minus(-model.getDispatchLeadTime(), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
+ limitNextTakeTime = endTime.minus(-model.getDispatchLeadTime(), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()<0){
|
|
|
nextTakeTime = nowTime.minus(Math.abs(model.getDispatchLeadTime()), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
+ limitNextTakeTime = endTime.minus(Math.abs(model.getDispatchLeadTime()), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}
|
|
|
//TODO 如果当前时间与下次生效时间是同一天,但是时刻已经是过去时,那么则返回失败信息
|
|
|
Long nowTimeLong = TimeTool.getCurMsUTC();
|
|
|
- if(nowTimeLong>nextTakeTime&&isSameDay(nowTimeLong,nextTakeTime)){
|
|
|
+ if(nowTimeLong>nextTakeTime&&nowTimeLong>limitNextTakeTime&&isSameDay(nowTimeLong,nextTakeTime)){
|
|
|
throw new RuntimeException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode());
|
|
|
}
|
|
|
}else if(model.getPlanType()==1){
|
|
@@ -479,14 +507,23 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
TimeTool.convertDateStr2UTC
|
|
|
(JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+" "+item.getHandleStartTime()));
|
|
|
+ Instant endTime = Instant.ofEpochMilli(
|
|
|
+ TimeTool.convertDateStr2UTC
|
|
|
+ (
|
|
|
+ JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+ +" "+
|
|
|
+ item.getHandleStartTimeLimit()));
|
|
|
if(nowTime.isBefore(Instant.now()) || nowTime.equals(Instant.now())){
|
|
|
isToDay = true;
|
|
|
if(model.getDispatchLeadTime()==0) {
|
|
|
nextTakeTime = nowTime.toEpochMilli();
|
|
|
+ limitNextTakeTime = endTime.toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()>0){
|
|
|
nextTakeTime = nowTime.minus(-model.getDispatchLeadTime(), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
+ limitNextTakeTime = endTime.minus(-model.getDispatchLeadTime(), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()<0){
|
|
|
nextTakeTime = nowTime.minus(Math.abs(model.getDispatchLeadTime()), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
+ limitNextTakeTime = endTime.minus(Math.abs(model.getDispatchLeadTime()), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -497,23 +534,37 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
TimeTool.convertDateStr2UTC
|
|
|
(JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+" "+newList.get(0).getHandleStartTime())).toEpochMilli();
|
|
|
+ limitNextTakeTime = Instant.ofEpochMilli(
|
|
|
+ TimeTool.convertDateStr2UTC
|
|
|
+ (JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+ +" "+newList.get(0).getHandleStartTimeLimit())).toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()>0){
|
|
|
nextTakeTime = Instant.ofEpochMilli(
|
|
|
TimeTool.convertDateStr2UTC
|
|
|
(JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+" "+newList.get(0).getHandleStartTime())).minus(-model.getDispatchLeadTime(), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
+ limitNextTakeTime = Instant.ofEpochMilli(
|
|
|
+ TimeTool.convertDateStr2UTC
|
|
|
+ (JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+ +" "+newList.get(0).getHandleStartTimeLimit())).minus(-model.getDispatchLeadTime(), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}else if(model.getDispatchLeadTime()<0){
|
|
|
nextTakeTime = Instant.ofEpochMilli(
|
|
|
TimeTool.convertDateStr2UTC
|
|
|
(JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+" "+newList.get(0).getHandleStartTime())).minus(Math.abs(model.getDispatchLeadTime()), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
+ limitNextTakeTime = Instant.ofEpochMilli(
|
|
|
+ TimeTool.convertDateStr2UTC
|
|
|
+ (JSONArray.parseArray(model.getCycles()).getString(0)
|
|
|
+ +" "+newList.get(0).getHandleStartTimeLimit())).minus(Math.abs(model.getDispatchLeadTime()), ChronoUnit.MINUTES).toEpochMilli();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//TODO 如果当前时间大于生效时间,说明生效时间过期,则加一天
|
|
|
- if(nextTakeTime<TimeTool.getCurMsUTC()){
|
|
|
+ if(limitNextTakeTime<TimeTool.getCurMsUTC()){
|
|
|
nextTakeTime = Instant.ofEpochMilli(nextTakeTime)
|
|
|
.plus(1, ChronoUnit.DAYS).toEpochMilli();
|
|
|
+ limitNextTakeTime = Instant.ofEpochMilli(limitNextTakeTime)
|
|
|
+ .plus(1, ChronoUnit.DAYS).toEpochMilli();
|
|
|
}
|
|
|
}else if(model.getPlanType()==2){
|
|
|
//TODO 周计划
|
|
@@ -529,40 +580,59 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
|
|
|
//TODO 先得到所有集合对应的当前周的所有符合条件的时间
|
|
|
List<String> dateTimeStrings = new ArrayList<>();
|
|
|
+ List<String> dateLimitTimeStrings = new ArrayList<>();//最小截止值
|
|
|
for (Object obj:newJSONArray){
|
|
|
LocalDateTime nowDate = LocalDateTime.now().with(DayOfWeek.of(Integer.valueOf(obj.toString())));
|
|
|
for (DispatchCmdBatchItemNextTimeModel item : newList){
|
|
|
String[] times = item.getHandleStartTime().split(":");
|
|
|
+ String[] timeLimits = item.getHandleStartTimeLimit().split(":");
|
|
|
dateTimeStrings.add(nowDate.withHour(Integer.valueOf(times[0]))
|
|
|
.withMinute(Integer.valueOf(times[1])).withSecond(Integer.valueOf(times[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+ dateLimitTimeStrings.add(nowDate.withHour(Integer.valueOf(timeLimits[0]))
|
|
|
+ .withMinute(Integer.valueOf(timeLimits[1])).withSecond(Integer.valueOf(timeLimits[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
}
|
|
|
}
|
|
|
LocalDateTime nextDateTime = findNextTime(dateTimeStrings);
|
|
|
+ LocalDateTime limitNextDateTime = nextDateTime!=null?LocalDateTime.parse(dateLimitTimeStrings.get(dateTimeStrings.indexOf(nextDateTime
|
|
|
+ .format(DateTimeFormatter.ofPattern(TimeTool.TIMESTAMP_FORMAT)))),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):null;
|
|
|
|
|
|
if(nextDateTime!=null){
|
|
|
if (model.getDispatchLeadTime() == 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime);
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime);
|
|
|
} else if (model.getDispatchLeadTime() > 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMinutes(-model.getDispatchLeadTime()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime.minusMinutes(-model.getDispatchLeadTime()));
|
|
|
} else if (model.getDispatchLeadTime() < 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime.minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
}
|
|
|
}else{
|
|
|
LocalTime localTime = LocalTime.parse(newList.get(0).getHandleStartTime(), DateTimeFormatter.ofPattern("HH:mm:ss"));
|
|
|
+ LocalTime localTimeLimit = LocalTime.parse(newList.get(0).getHandleStartTimeLimit(), DateTimeFormatter.ofPattern("HH:mm:ss"));
|
|
|
nextDateTime = LocalDateTime.now()
|
|
|
.with(DayOfWeek.of(Integer.valueOf(newJSONArray.get(0).toString())));
|
|
|
if (model.getDispatchLeadTime() == 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()));
|
|
|
} else if (model.getDispatchLeadTime() > 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()).minusMinutes(-model.getDispatchLeadTime()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()).minusMinutes(-model.getDispatchLeadTime()));
|
|
|
} else if (model.getDispatchLeadTime() < 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()).minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()).minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
}
|
|
|
}
|
|
|
}else if(model.getPlanType()==3){
|
|
@@ -576,43 +646,62 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
// .reversed()
|
|
|
).collect(Collectors.toCollection(JSONArray::new));
|
|
|
|
|
|
- //TODO 先得到所有集合对应的当前周的所有符合条件的时间
|
|
|
+ //TODO 先得到所有集合对应的当前月的所有符合条件的时间
|
|
|
List<String> dateTimeStrings = new ArrayList<>();
|
|
|
+ List<String> dateLimitTimeStrings = new ArrayList<>();//最小截止值
|
|
|
for (Object obj:newJSONArray){
|
|
|
LocalDateTime nowDate = LocalDateTime.now().withDayOfMonth(Integer.valueOf(obj.toString()));
|
|
|
for (DispatchCmdBatchItemNextTimeModel item : newList){
|
|
|
String[] times = item.getHandleStartTime().split(":");
|
|
|
+ String[] timeLimits = item.getHandleStartTimeLimit().split(":");
|
|
|
dateTimeStrings.add(nowDate.withHour(Integer.valueOf(times[0]))
|
|
|
.withMinute(Integer.valueOf(times[1])).withSecond(Integer.valueOf(times[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+ dateLimitTimeStrings.add(nowDate.withHour(Integer.valueOf(timeLimits[0]))
|
|
|
+ .withMinute(Integer.valueOf(timeLimits[1])).withSecond(Integer.valueOf(timeLimits[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
LocalDateTime nextDateTime = findNextTime(dateTimeStrings);
|
|
|
+ LocalDateTime limitNextDateTime = nextDateTime!=null?LocalDateTime.parse(dateLimitTimeStrings.get(dateTimeStrings.indexOf(nextDateTime
|
|
|
+ .format(DateTimeFormatter.ofPattern(TimeTool.TIMESTAMP_FORMAT)))),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):null;
|
|
|
|
|
|
if(nextDateTime!=null){
|
|
|
if (model.getDispatchLeadTime() == 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime);
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime);
|
|
|
} else if (model.getDispatchLeadTime() > 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMinutes(-model.getDispatchLeadTime()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime.minusMinutes(-model.getDispatchLeadTime()));
|
|
|
} else if (model.getDispatchLeadTime() < 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime.minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
}
|
|
|
}else{
|
|
|
LocalTime localTime = LocalTime.parse(newList.get(0).getHandleStartTime(), DateTimeFormatter.ofPattern("HH:mm:ss"));
|
|
|
+ LocalTime localTimeLimit = LocalTime.parse(newList.get(0).getHandleStartTimeLimit(), DateTimeFormatter.ofPattern("HH:mm:ss"));
|
|
|
nextDateTime = LocalDateTime.now()
|
|
|
.withDayOfMonth(newJSONArray.getInteger(0));
|
|
|
if (model.getDispatchLeadTime() == 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMonths(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()));
|
|
|
} else if (model.getDispatchLeadTime() > 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMonths(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()).minusMinutes(-model.getDispatchLeadTime()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()).minusMinutes(-model.getDispatchLeadTime()));
|
|
|
} else if (model.getDispatchLeadTime() < 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMonths(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()).minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()).minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
}
|
|
|
}
|
|
|
}else if(model.getPlanType()==4){
|
|
@@ -628,28 +717,38 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
|
|
|
//TODO 先得到所有集合对应的当前周的所有符合条件的时间
|
|
|
List<String> dateTimeStrings = new ArrayList<>();
|
|
|
+ List<String> dateLimitTimeStrings = new ArrayList<>();//最小截止值
|
|
|
for (Object obj:newJSONArray){
|
|
|
String[] monthDays = obj.toString().split("-");
|
|
|
LocalDateTime nowDate = LocalDateTime.now().withMonth(Integer.valueOf(monthDays[0]))
|
|
|
.withDayOfMonth(Integer.valueOf(monthDays[1]));
|
|
|
for (DispatchCmdBatchItemNextTimeModel item : newList){
|
|
|
String[] times = item.getHandleStartTime().split(":");
|
|
|
+ String[] timeLimits = item.getHandleStartTimeLimit().split(":");
|
|
|
dateTimeStrings.add(nowDate.withHour(Integer.valueOf(times[0]))
|
|
|
.withMinute(Integer.valueOf(times[1])).withSecond(Integer.valueOf(times[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+ dateLimitTimeStrings.add(nowDate.withHour(Integer.valueOf(timeLimits[0]))
|
|
|
+ .withMinute(Integer.valueOf(timeLimits[1])).withSecond(Integer.valueOf(timeLimits[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
LocalDateTime nextDateTime = findNextTime(dateTimeStrings);
|
|
|
+ LocalDateTime limitNextDateTime = nextDateTime!=null?LocalDateTime.parse(dateLimitTimeStrings.get(dateTimeStrings.indexOf(nextDateTime
|
|
|
+ .format(DateTimeFormatter.ofPattern(TimeTool.TIMESTAMP_FORMAT)))),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):null;
|
|
|
if(nextDateTime!=null){
|
|
|
if (model.getDispatchLeadTime() == 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime);
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime);
|
|
|
} else if (model.getDispatchLeadTime() > 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMinutes(-model.getDispatchLeadTime()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime.minusMinutes(-model.getDispatchLeadTime()));
|
|
|
} else if (model.getDispatchLeadTime() < 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(limitNextDateTime.minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
}
|
|
|
}else{
|
|
|
LocalTime localTime = LocalTime.parse(newList.get(0).getHandleStartTime(), DateTimeFormatter.ofPattern("HH:mm:ss"));
|
|
|
+ LocalTime localTimeLimit = LocalTime.parse(newList.get(0).getHandleStartTimeLimit(), DateTimeFormatter.ofPattern("HH:mm:ss"));
|
|
|
nextDateTime = LocalDateTime.now()
|
|
|
.withMonth(Integer.valueOf(newJSONArray.get(0).toString().split("-")[0]))
|
|
|
.withDayOfMonth(Integer.valueOf(newJSONArray.get(0).toString().split("-")[1]));
|
|
@@ -657,19 +756,31 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusYears(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()));
|
|
|
} else if (model.getDispatchLeadTime() > 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusYears(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()).minusMinutes(-model.getDispatchLeadTime()));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()).minusMinutes(-model.getDispatchLeadTime()));
|
|
|
} else if (model.getDispatchLeadTime() < 0) {
|
|
|
nextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusYears(-1).withHour(localTime.getHour())
|
|
|
.withMinute(localTime.getMinute())
|
|
|
.withSecond(localTime.getSecond()).minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
+ limitNextTakeTime = reloadLocalDateTimeToLong(nextDateTime.minusWeeks(-1).withHour(localTimeLimit.getHour())
|
|
|
+ .withMinute(localTimeLimit.getMinute())
|
|
|
+ .withSecond(localTimeLimit.getSecond()).minusMinutes(Math.abs(model.getDispatchLeadTime())));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return nextTakeTime;
|
|
|
+
|
|
|
+ map.put("nextTakeTime",nextTakeTime);
|
|
|
+ map.put("limitNextTakeTime",limitNextTakeTime);
|
|
|
+ return map;
|
|
|
}
|
|
|
|
|
|
//TODO 新增计划
|
|
@@ -691,6 +802,7 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
//TODO 开始计算时间字段并设置
|
|
|
Long lastTakeTime = 0L;
|
|
|
Long nextTakeTime = 0L;//下一次生效时间
|
|
|
+ Long limitNextTakeTime = 0L;//下一次生效截止时间
|
|
|
|
|
|
DispatchPlanInfoNextTimeModel nextTimeModel = new DispatchPlanInfoNextTimeModel();
|
|
|
nextTimeModel.setPlanType(oJsonParam.getPlanType());
|
|
@@ -699,17 +811,21 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
for(JPDispatchCmdBatchItem jpItem:oJsonParam.getItemsList()){
|
|
|
DispatchCmdBatchItemNextTimeModel dispatchCmdBatchItemNextTimeModel =new DispatchCmdBatchItemNextTimeModel();
|
|
|
dispatchCmdBatchItemNextTimeModel.setHandleStartTime(jpItem.getHandleStartTime());
|
|
|
+ dispatchCmdBatchItemNextTimeModel.setHandleStartTimeLimit(jpItem.getHandleEndTime());
|
|
|
itemModels.add(dispatchCmdBatchItemNextTimeModel);
|
|
|
}
|
|
|
}
|
|
|
nextTimeModel.setItemsList(itemModels);
|
|
|
nextTimeModel.setDispatchLeadTime(oJsonParam.getDispatchLeadTime());
|
|
|
nextTimeModel.setCycles(oJsonParam.getCycles());
|
|
|
- nextTakeTime = returnNextTakeTime(nextTimeModel);
|
|
|
+ Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel);
|
|
|
+ nextTakeTime = nextMap.get("nextTakeTime");
|
|
|
+ limitNextTakeTime = nextMap.get("limitNextTakeTime");
|
|
|
|
|
|
|
|
|
model.setLastTakeTime(lastTakeTime);
|
|
|
model.setNextTakeTime(nextTakeTime);
|
|
|
+ model.setLimitNextTakeTime(limitNextTakeTime);
|
|
|
model.setTakes(0);
|
|
|
model.setErrors("");
|
|
|
model.setSendway(oJsonParam.getSendway());
|
|
@@ -770,6 +886,7 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
|
|
|
//TODO 开始计算时间字段并设置
|
|
|
Long nextTakeTime = 0L;//下一次生效时间
|
|
|
+ Long limitNextTakeTime = 0L;//下一次生效时间
|
|
|
|
|
|
DispatchPlanInfoNextTimeModel nextTimeModel = new DispatchPlanInfoNextTimeModel();
|
|
|
nextTimeModel.setPlanType(oJsonParam.getPlanType());
|
|
@@ -778,6 +895,7 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
for(JPDispatchCmdBatchItem jpItem:oJsonParam.getItemsList()){
|
|
|
DispatchCmdBatchItemNextTimeModel dispatchCmdBatchItemNextTimeModel =new DispatchCmdBatchItemNextTimeModel();
|
|
|
dispatchCmdBatchItemNextTimeModel.setHandleStartTime(jpItem.getHandleStartTime());
|
|
|
+ dispatchCmdBatchItemNextTimeModel.setHandleStartTimeLimit(jpItem.getHandleEndTime());
|
|
|
itemModels.add(dispatchCmdBatchItemNextTimeModel);
|
|
|
}
|
|
|
}
|
|
@@ -785,10 +903,12 @@ public class WODispatchPlanTmDoBizFun {
|
|
|
nextTimeModel.setItemsList(itemModels);
|
|
|
nextTimeModel.setDispatchLeadTime(oJsonParam.getDispatchLeadTime());
|
|
|
nextTimeModel.setCycles(oJsonParam.getCycles());
|
|
|
- nextTakeTime = returnNextTakeTime(nextTimeModel);
|
|
|
+ Map<String,Long> nextMap = returnNextTakeTime(nextTimeModel);
|
|
|
+ nextTakeTime = nextMap.get("nextTakeTime");
|
|
|
+ limitNextTakeTime = nextMap.get("limitNextTakeTime");
|
|
|
|
|
|
|
|
|
- ResponseCode updateRes = getThisDBService().updatePlanInfoByCount(oJsonParam,nextTakeTime, oJsonParam.getRulesList(),
|
|
|
+ ResponseCode updateRes = getThisDBService().updatePlanInfoByCount(oJsonParam,nextTakeTime,limitNextTakeTime, oJsonParam.getRulesList(),
|
|
|
oJsonParam.getTagsList(), oJsonParam.getItemsList());
|
|
|
return updateRes;
|
|
|
}catch(Exception ex){
|