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

main
yitonglei 3 years ago
parent 6caf0eee97
commit 69e3816fee
  1. 38
      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,6 +55,9 @@ public class TaskConfig {
if(list.size() > 0){ if(list.size() > 0){
for(AutoStartModel autoStartModel : list){ for(AutoStartModel autoStartModel : list){
if(autoStartModel.getNextFlag() == 1){//说明是首次工作流结束后已经自动生成工单了
autoStartModel.setNextFlag(0);
}else{
Date nextStartTime = autoStartModel.getNextStartTime(); Date nextStartTime = autoStartModel.getNextStartTime();
LocalDateTime localDateTime = DateUtil.fromDate(nextStartTime); LocalDateTime localDateTime = DateUtil.fromDate(nextStartTime);
LocalDate nextStartDay = LocalDate.of(localDateTime.getYear(),localDateTime.getMonth(),localDateTime.getDayOfMonth()); LocalDate nextStartDay = LocalDate.of(localDateTime.getYear(),localDateTime.getMonth(),localDateTime.getDayOfMonth());
@ -77,9 +80,25 @@ public class TaskConfig {
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime()); workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
//新增 //新增
workOrderService.save(workOrder); workOrderService.save(workOrder);
//修改nextFlag = 1,表示已经生成新工单了
// autoStartModel.setNextFlag(1); log.info("TaskConfig生成新工单的流程id:{},生成时间是:{}",autoStartModel.getProcessInstanceId(),autoStartModel.getNextEndTime());
//计算下一次的执行时间
}
}
//修改下次开始时间
this.updateNextDateOfOrder(autoStartModel);
}
}
}
/**
* 修改下次工单开始结束时间
* @param autoStartModel
*/
private void updateNextDateOfOrder(AutoStartModel autoStartModel){
Long repeatMode = autoStartModel.getRepeatMode(); Long repeatMode = autoStartModel.getRepeatMode();
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){ if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){
autoStartModel.setNextStartTime(DateUtil.plusWeeks(autoStartModel.getNextStartTime(),1)); autoStartModel.setNextStartTime(DateUtil.plusWeeks(autoStartModel.getNextStartTime(),1));
@ -100,22 +119,15 @@ public class TaskConfig {
else{ else{
return; return;
} }
autoStartModel.setNextFlag(0);
autoStartModelService.updateById(autoStartModel); autoStartModelService.updateById(autoStartModel);
log.info("TaskConfig修改工单的下次结束时间{},流程id:{}",autoStartModel.getNextEndTime(),autoStartModel.getProcessInstanceId());
log.info("TaskConfig生成新工单的流程id:{},生成时间是:{}",autoStartModel.getProcessInstanceId(),autoStartModel.getNextEndTime());
}
}
}
} }
/** /**
* 自动计算下一次的开始和结束时间,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