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

Loading…
Cancel
Save