|
|
|
|
@ -55,67 +55,79 @@ public class TaskConfig { |
|
|
|
|
|
|
|
|
|
if(list.size() > 0){ |
|
|
|
|
for(AutoStartModel autoStartModel : list){ |
|
|
|
|
Date nextStartTime = autoStartModel.getNextStartTime(); |
|
|
|
|
LocalDateTime localDateTime = DateUtil.fromDate(nextStartTime); |
|
|
|
|
LocalDate nextStartDay = LocalDate.of(localDateTime.getYear(),localDateTime.getMonth(),localDateTime.getDayOfMonth()); |
|
|
|
|
|
|
|
|
|
if(nowDay.equals(nextStartDay) || nowDay.isAfter(nextStartDay)){ |
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
workOrder.setApplyUser(autoStartModel.getApplyUser().toString()); |
|
|
|
|
workOrder.setMaintenanceCompany(autoStartModel.getMaintenanceCompany().toString()); |
|
|
|
|
workOrder.setManagement(autoStartModel.getManagement().toString()); |
|
|
|
|
workOrder.setTaskParent(autoStartModel.getTaskParent().toString()); |
|
|
|
|
workOrder.setTaskType(autoStartModel.getTaskType().toString()); |
|
|
|
|
workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString()); |
|
|
|
|
workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString()); |
|
|
|
|
workOrder.setOperateSys(autoStartModel.getOperateSys().toString()); |
|
|
|
|
workOrder.setOperateModule(autoStartModel.getOperateModule().toString()); |
|
|
|
|
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId()); |
|
|
|
|
workOrder.setType(autoStartModel.getType()); |
|
|
|
|
workOrder.setTenantId(autoStartModel.getTenantId()); |
|
|
|
|
workOrder.setUploadRecord(autoStartModel.getUploadRecord()); |
|
|
|
|
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime()); |
|
|
|
|
//新增
|
|
|
|
|
workOrderService.save(workOrder); |
|
|
|
|
//修改nextFlag = 1,表示已经生成新工单了
|
|
|
|
|
// autoStartModel.setNextFlag(1);
|
|
|
|
|
//计算下一次的执行时间
|
|
|
|
|
Long repeatMode = autoStartModel.getRepeatMode(); |
|
|
|
|
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusWeeks(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusWeeks(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusMonths(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusMonths(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusMonths(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusMonths(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusDays(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusDays(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusMinutes(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusMinutes(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if(autoStartModel.getNextFlag() == 1){//说明是首次工作流结束后已经自动生成工单了
|
|
|
|
|
autoStartModel.setNextFlag(0); |
|
|
|
|
}else{ |
|
|
|
|
Date nextStartTime = autoStartModel.getNextStartTime(); |
|
|
|
|
LocalDateTime localDateTime = DateUtil.fromDate(nextStartTime); |
|
|
|
|
LocalDate nextStartDay = LocalDate.of(localDateTime.getYear(),localDateTime.getMonth(),localDateTime.getDayOfMonth()); |
|
|
|
|
|
|
|
|
|
if(nowDay.equals(nextStartDay) || nowDay.isAfter(nextStartDay)){ |
|
|
|
|
WorkOrder workOrder = new WorkOrder(); |
|
|
|
|
workOrder.setApplyUser(autoStartModel.getApplyUser().toString()); |
|
|
|
|
workOrder.setMaintenanceCompany(autoStartModel.getMaintenanceCompany().toString()); |
|
|
|
|
workOrder.setManagement(autoStartModel.getManagement().toString()); |
|
|
|
|
workOrder.setTaskParent(autoStartModel.getTaskParent().toString()); |
|
|
|
|
workOrder.setTaskType(autoStartModel.getTaskType().toString()); |
|
|
|
|
workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString()); |
|
|
|
|
workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString()); |
|
|
|
|
workOrder.setOperateSys(autoStartModel.getOperateSys().toString()); |
|
|
|
|
workOrder.setOperateModule(autoStartModel.getOperateModule().toString()); |
|
|
|
|
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId()); |
|
|
|
|
workOrder.setType(autoStartModel.getType()); |
|
|
|
|
workOrder.setTenantId(autoStartModel.getTenantId()); |
|
|
|
|
workOrder.setUploadRecord(autoStartModel.getUploadRecord()); |
|
|
|
|
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime()); |
|
|
|
|
//新增
|
|
|
|
|
workOrderService.save(workOrder); |
|
|
|
|
|
|
|
|
|
log.info("TaskConfig生成新工单的流程id:{},生成时间是:{}",autoStartModel.getProcessInstanceId(),autoStartModel.getNextEndTime()); |
|
|
|
|
|
|
|
|
|
autoStartModelService.updateById(autoStartModel); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//修改下次开始时间
|
|
|
|
|
this.updateNextDateOfOrder(autoStartModel); |
|
|
|
|
|
|
|
|
|
log.info("TaskConfig生成新工单的流程id:{},生成时间是:{}",autoStartModel.getProcessInstanceId(),autoStartModel.getNextEndTime()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* 修改下次工单开始结束时间 |
|
|
|
|
* @param autoStartModel |
|
|
|
|
*/ |
|
|
|
|
private void updateNextDateOfOrder(AutoStartModel autoStartModel){ |
|
|
|
|
Long repeatMode = autoStartModel.getRepeatMode(); |
|
|
|
|
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusWeeks(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusWeeks(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusMonths(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusMonths(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusMonths(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusMonths(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusDays(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusDays(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
}else if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode.toString())){ |
|
|
|
|
autoStartModel.setNextStartTime(DateUtil.plusMinutes(autoStartModel.getNextStartTime(),1)); |
|
|
|
|
autoStartModel.setNextEndTime(DateUtil.plusMinutes(autoStartModel.getNextEndTime(),1)); |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
autoStartModel.setNextFlag(0); |
|
|
|
|
autoStartModelService.updateById(autoStartModel); |
|
|
|
|
log.info("TaskConfig修改工单的下次结束时间{},流程id:{}",autoStartModel.getNextEndTime(),autoStartModel.getProcessInstanceId()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 自动计算下一次的开始和结束时间,next_flag = 1 status = 10 is_delete = 0 |
|
|
|
|
*/ |
|
|
|
|
// @Scheduled(fixedDelay = 90*1000)
|
|
|
|
|
// @Scheduled(fixedRate = 90*1000)
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
// @Async("taskExecutor")
|
|
|
|
|
public void computerNextDateOfOrder(){ |
|
|
|
|
|