1.工作流结束后会自动创建一次工单

main
yitonglei 3 years ago
parent 6caf0eee97
commit 69e3816fee
  1. 112
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/TaskConfig.java
  2. 22
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java

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

@ -56,7 +56,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Duration; import java.time.Duration;
import java.util.*; import java.util.*;
@ -344,12 +343,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString()); workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString());
workOrder.setTenantId(WfTaskUtil.getTenantId()); workOrder.setTenantId(WfTaskUtil.getTenantId());
workOrder.setProcessInstanceId(processInstanceId); workOrder.setProcessInstanceId(processInstanceId);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString(),"yyyy-MM-dd HH:mm:ss"));
try {
workOrder.setExpectedCompletionTime(dateFormat.parse(variables.get("qiwangwanchengshijian").toString()));
} catch (ParseException e) {
e.printStackTrace();
}
workOrder.setRepeatMode(variables.get("chongfumoshi").toString()); workOrder.setRepeatMode(variables.get("chongfumoshi").toString());
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成 //如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
User applyUser = UserCache.getUser(Long.valueOf(variables.get("applyUser").toString())); User applyUser = UserCache.getUser(Long.valueOf(variables.get("applyUser").toString()));
@ -390,16 +384,18 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString())); autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString()));
autoStartModel.setIsDeleted(0); autoStartModel.setIsDeleted(0);
autoStartModel.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord"))); autoStartModel.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord")));
// String deptId = AuthUtil.getDeptId();
// Long userId = AuthUtil.getUser().getUserId(); //自动生成工单
// autoStartModel.setCreateUser(userId); this.newWorkOrder(autoStartModel);
// autoStartModel.setCreateDept(Long.valueOf(deptId)); //修改status = 10 nextFlag = 1,表示该记录已经生成工单了,并且该记录可以重复执行了
autoStartModel.setCreateTime(DateUtil.now()); autoStartModel.setCreateTime(DateUtil.now());
autoStartModel.setStatus(10); autoStartModel.setStatus(10);
save(autoStartModel); autoStartModel.setNextFlag(1);
baseMapper.insert(autoStartModel);
} }
private Date nextDate(Date startTime, String repeatMode){ private Date nextDate(Date startTime, String repeatMode){
Date endTime; Date endTime;
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode)){ if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode)){
@ -440,7 +436,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setIsFinish(1); workOrder.setIsFinish(1);
workOrder.setFinishTime(new Date()); workOrder.setFinishTime(new Date());
} }
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
workOrderService.save(workOrder); workOrderService.save(workOrder);
} }
} }

Loading…
Cancel
Save