diff --git a/src/main/java/neatlogic/framework/process/crossover/IProcessStepHandlerCrossoverUtil.java b/src/main/java/neatlogic/framework/process/crossover/IProcessStepHandlerCrossoverUtil.java index 0d0a0244bb4e47ef3fc08328bb6155c71d2ab561..d9c5e6c3f6f87d48b9d84067b429e99458b4713c 100644 --- a/src/main/java/neatlogic/framework/process/crossover/IProcessStepHandlerCrossoverUtil.java +++ b/src/main/java/neatlogic/framework/process/crossover/IProcessStepHandlerCrossoverUtil.java @@ -127,7 +127,7 @@ public interface IProcessStepHandlerCrossoverUtil extends ICrossoverService { * 流转操作时检查回复信息是否必填 * @param currentProcessTaskStepVo */ - void checkContentIsRequired(ProcessTaskStepVo currentProcessTaskStepVo); + void checkContentIsRequired(ProcessTaskStepVo currentProcessTaskStepVo, IOperationType operationType); /** * @Description: 保存标签列表 diff --git a/src/main/java/neatlogic/framework/process/crossover/IProcessTaskCrossoverMapper.java b/src/main/java/neatlogic/framework/process/crossover/IProcessTaskCrossoverMapper.java index 2277463d2c1426cf9f89b4a62837db254f3dbdb8..9270cb1fd73f23cf76cd057000db417dfed584b5 100644 --- a/src/main/java/neatlogic/framework/process/crossover/IProcessTaskCrossoverMapper.java +++ b/src/main/java/neatlogic/framework/process/crossover/IProcessTaskCrossoverMapper.java @@ -248,6 +248,12 @@ public interface IProcessTaskCrossoverMapper extends ICrossoverService { int deleteProcessTaskStepInOperationById(Long id); + int deleteProcessTaskStepInOperationByProcessTaskIdAndProcessTaskStepIdAndOperationType( + @Param("processTaskId") Long processTaskId, + @Param("processTaskStepId") Long processTaskStepId, + @Param("operationType") String operationType + ); + int deleteProcessTaskStepReapprovalRestoreBackupByBackupStepId(Long processTaskStepId); int deleteProcessTaskTimeCostByProcessTaskId(Long processTaskId); diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java index 6f6c8ecf91f3b5ffd0cfc10d1ed06a766f6ad535..b2ed42d20f78e64536897c8d628b0f513db2b5ed 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java @@ -954,7 +954,7 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { processTaskCrossoverMapper.deleteProcessTaskStepReapprovalRestoreBackupByBackupStepId(currentProcessTaskStepVo.getId()); } /* 保存描述内容 **/ - processStepHandlerCrossoverUtil.checkContentIsRequired(currentProcessTaskStepVo); + processStepHandlerCrossoverUtil.checkContentIsRequired(currentProcessTaskStepVo, operationType); processStepHandlerCrossoverUtil.saveContentAndFile(currentProcessTaskStepVo, operationType); myComplete(currentProcessTaskStepVo); @@ -1271,7 +1271,7 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { processTaskCrossoverMapper.deleteProcessTaskStepWorker(new ProcessTaskStepWorkerVo(currentProcessTaskStepVo.getId())); } /* 保存描述内容 **/ - processStepHandlerCrossoverUtil.checkContentIsRequired(currentProcessTaskStepVo); + processStepHandlerCrossoverUtil.checkContentIsRequired(currentProcessTaskStepVo, ProcessTaskStepOperationType.STEP_REAPPROVAL); processStepHandlerCrossoverUtil.saveContentAndFile(currentProcessTaskStepVo, ProcessTaskStepOperationType.STEP_REAPPROVAL); myReapproval(currentProcessTaskStepVo); @@ -2310,7 +2310,7 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { /* 保存工单关注人 **/ processStepHandlerCrossoverUtil.saveFocusUserList(currentProcessTaskStepVo); - processStepHandlerCrossoverUtil.checkContentIsRequired(currentProcessTaskStepVo); + processStepHandlerCrossoverUtil.checkContentIsRequired(currentProcessTaskStepVo, ProcessTaskOperationType.PROCESSTASK_START); myStartProcess(currentProcessTaskStepVo); /* 保存描述内容和附件 **/ @@ -2789,6 +2789,14 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { protected synchronized static void doNext(List processTaskStepThreadList) { if (processTaskStepThreadList.size() > 1) { + Set processTaskStepIdSet = new HashSet<>(); + for (int i = processTaskStepThreadList.size() - 1; i >= 0; i--) { + ProcessTaskStepThread thread = processTaskStepThreadList.get(i); + if (processTaskStepIdSet.contains(thread.getProcessTaskStepId())) { + processTaskStepThreadList.remove(i); + } + processTaskStepIdSet.add(thread.getProcessTaskStepId()); + } IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); List processTaskStepRelList = processTaskCrossoverMapper.getProcessTaskStepRelByProcessTaskId(processTaskStepThreadList.get(0).getProcessTaskId()); List stepList = processTaskCrossoverMapper.getProcessTaskStepByProcessTaskIdAndType(processTaskStepThreadList.get(0).getProcessTaskId(), ProcessStepType.END.getValue()); diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepThread.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepThread.java index dd9e7b0c7dd13839baae882fd329769d076f3557..52c39b13dfb4c362db39a76b7862494057a57e15 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepThread.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepThread.java @@ -19,13 +19,17 @@ package neatlogic.framework.process.stephandler.core; import neatlogic.framework.asynchronization.thread.NeatLogicThread; import neatlogic.framework.crossover.CrossoverServiceFactory; -import neatlogic.framework.process.operationauth.core.IOperationType; import neatlogic.framework.process.constvalue.ProcessStepMode; import neatlogic.framework.process.crossover.IProcessTaskCrossoverMapper; import neatlogic.framework.process.dto.ProcessTaskStepVo; +import neatlogic.framework.process.operationauth.core.IOperationType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public abstract class ProcessTaskStepThread extends NeatLogicThread { + private final static Logger logger = LoggerFactory.getLogger(ProcessTaskStepThread.class); + private final ProcessTaskStepVo processTaskStepVo; private final Long processTaskId; @@ -50,9 +54,12 @@ public abstract class ProcessTaskStepThread extends NeatLogicThread { protected void execute() { try { myExecute(processTaskStepVo); + } catch(Exception e) { + logger.error(e.getMessage(), e); } finally { + IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); + processTaskCrossoverMapper.deleteProcessTaskStepInOperationByProcessTaskIdAndProcessTaskStepIdAndOperationType(processTaskId, processTaskStepId, operationType.getValue()); if (inOperationId != null) { - IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); processTaskCrossoverMapper.deleteProcessTaskStepInOperationById(inOperationId); } }