1.自动生成的工单即使是运维发起的日常任务,也不要给直接结束掉了

main
yitonglei 3 years ago
parent 7d70014dc6
commit 73a8a1f8b0
  1. 21
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java
  2. 56
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/utils/SysTypeEnum.java
  3. 37
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java

@ -4,16 +4,21 @@ package org.springblade.plugin.listener;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener;
import org.springblade.core.log.model.LogError;
import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.config.SpringContextHolder;
import org.springblade.plugin.workbench.enumutil.RepeatEnum;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springblade.plugin.workbench.service.impl.AutoStartModelServiceImpl;
import org.springblade.resource.enums.SysTypeEnum;
import org.springblade.resource.feign.IMessageClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@ -26,6 +31,8 @@ import java.util.Map;
*/
@Component
public class ProcessEndListener implements ExecutionListener {
@Autowired
private IMessageClient messageClient;
@Override
public void notify(DelegateExecution delegateExecution) {
@ -41,16 +48,16 @@ public class ProcessEndListener implements ExecutionListener {
System.out.println("ProcessEndListener-start event-------------------");
//中止或撤销的工作流不做任何处理了
if(variablesMap.containsKey("wf_process_terminate")) return;
IAutoStartModelService autoStartModelService = (IAutoStartModelService) SpringContextHolder.getBean(AutoStartModelServiceImpl.class);
//判断工作流的的重复模式,重复的任务生成工单、保存任务信息,计算下次任务开始时间
if (Func.isNotEmpty(variablesMap.get("chongfumoshi")) && !StringUtils.equals(RepeatEnum.不重复.getCode(), variablesMap.get("chongfumoshi").toString())) {
String s = autoStartModelService.saveStartProcess(processInstanceId, variablesMap);
// try {
// response.sendError(200,s);
// } catch (IOException e) {
// e.printStackTrace();
// }
if(!StringUtils.equals(s,"1")){
//发送消息
// messageClient.event(SysTypeEnum.INFORM.getValue(), "生成工单",
// "你发起的工作流生成工单失败", 1, 5, variablesMap.get("applyUser").toString(), "/plugin/workflow/process/workorder");
}
} else {//不重复任务,生成工单
autoStartModelService.newWorkOrder(processInstanceId, variablesMap);
}

@ -0,0 +1,56 @@
package org.springblade.plugin.utils;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 用户类型枚举
*
* @author Chill
*/
@Getter
@AllArgsConstructor
public enum SysTypeEnum {
/**
* 计划状态1:未执行2:派发中,3:执行中4:待确认 5完成
*/
//制样通知
MKSM("制样通知", 3),
Check("检测通知", 4),
/**
* 预警
*/
WARNING("预警", 1),
/**
* 通知
*/
INFORM("通知", 2),
;
final String name;
final int value;
/**
* 匹配枚举值
*
* @param name 名称
* @return BladeUserEnum
*/
public static SysTypeEnum of(String name) {
if (name == null) {
return null;
}
SysTypeEnum[] values = SysTypeEnum.values();
for (SysTypeEnum smsEnum : values) {
if (smsEnum.name.equals(name)) {
return smsEnum;
}
}
return null;
}
}

@ -3,24 +3,14 @@ package org.springblade.plugin.workbench.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import liquibase.pro.packaged.E;
import liquibase.pro.packaged.N;
import lombok.AllArgsConstructor;
import lombok.NonNull;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.HistoryService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.flowable.variable.api.history.HistoricVariableInstance;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.database.entity.DataBase;
@ -468,6 +458,31 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
return save;
}
private boolean autoNewWorkOrder(AutoStartModel autoStartModel){
boolean save = false;
//生成工单
WorkOrder workOrder = new WorkOrder();
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId());
workOrder.setTenantId(autoStartModel.getTenantId());
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.setType(autoStartModel.getType());
workOrder.setOperateSys(autoStartModel.getOperateSys().toString());
workOrder.setOperateModule(autoStartModel.getOperateModule().toString());
workOrder.setUploadRecord(autoStartModel.getUploadRecord());
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
workOrder.setIsFinish(0);
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
save = workOrderService.save(workOrder);
return save;
}
@Override
public void autoCreateWorkOrderByQuartz(){
this.autoCreateWorkOrder();
@ -490,7 +505,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
//递归生成工单并更新autoStartModel的nextSatartTime nextEndTime
private void autoCreateWorkOrder(Date now,AutoStartModel autoStartModel){
boolean b = this.newWorkOrder(autoStartModel);
boolean b = this.autoNewWorkOrder(autoStartModel);
if(b){
Date endTime = autoStartModel.getNextEndTime();

Loading…
Cancel
Save