1.自动工单非重复任务保存优化

main
yitonglei 3 years ago
parent 704be43d48
commit 15a047e577
  1. 42
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/TaskConfig.java

@ -3,6 +3,7 @@ package org.springblade.plugin.config;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil;
@ -32,6 +33,7 @@ import java.util.List;
@Component
@EnableScheduling
@AllArgsConstructor
@Slf4j
public class TaskConfig {
private final IAutoStartModelService autoStartModelService;
private final IWorkOrderService workOrderService;
@ -48,7 +50,7 @@ public class TaskConfig {
LocalDate nowDay = LocalDate.now();
LambdaQueryWrapper<AutoStartModel> wrapper = Wrappers.lambdaQuery();
wrapper.eq(AutoStartModel::getNextFlag, 0).eq(AutoStartModel::getIsBreak,0).eq(AutoStartModel::getStatus,10);
wrapper.eq(AutoStartModel::getIsBreak,0).eq(AutoStartModel::getStatus,10);
List<AutoStartModel> list = autoStartModelService.list(wrapper);
if(list.size() > 0){
@ -76,9 +78,34 @@ public class TaskConfig {
//新增
workOrderService.save(workOrder);
//修改nextFlag = 1,表示已经生成新工单了
autoStartModel.setNextFlag(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;
}
autoStartModelService.updateById(autoStartModel);
System.out.println("生成结束时间为:" + autoStartModel.getNextEndTime() + "的工单结束");
log.info("TaskConfig生成新工单的流程id:{},生成时间是:{}",autoStartModel.getProcessInstanceId(),autoStartModel.getNextEndTime());
}
}
@ -88,9 +115,9 @@ public class TaskConfig {
/**
* 自动计算下一次的开始和结束时间,next_flag = 1 status = 10 is_delete = 0
*/
@Scheduled(fixedRate = 90*1000)
@Transactional(rollbackFor = Exception.class)
@Async("taskExecutor")
// @Scheduled(fixedDelay = 90*1000)
// @Transactional(rollbackFor = Exception.class)
// @Async("taskExecutor")
public void computerNextDateOfOrder(){
LambdaQueryWrapper<AutoStartModel> wrapper = Wrappers.lambdaQuery();
@ -121,7 +148,8 @@ public class TaskConfig {
}
autoStartModel.setNextFlag(0);
autoStartModelService.updateById(autoStartModel);
System.out.println("修改工单的下次结束时间:" + DateUtil.plusMinutes(autoStartModel.getNextEndTime(),1) + "的工单结束");
log.info("TaskConfig修改工单的下次结束时间{},流程id:{}",autoStartModel.getNextEndTime(),autoStartModel.getProcessInstanceId());
});
}
}

Loading…
Cancel
Save