From b8308ad287804b31409a52ef73ff69022f5fa979 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Fri, 18 Apr 2025 18:47:49 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=20=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=A4=84=E7=90=86-=E6=AD=A5=E9=AA=A4=E7=9A=84=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E5=BF=85=E5=A1=AB=EF=BC=8C=E4=B8=8A=E4=BC=A0=E9=99=84?= =?UTF-8?q?=E4=BB=B6=E7=9B=B4=E6=8E=A5=E5=9B=9E=E5=A4=8D=EF=BC=8C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E6=A0=A1=E9=AA=8C=E6=96=87=E6=9C=AC=E5=BF=85=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1396236794429440]工单处理-步骤的回复必填,上传附件直接回复,没有校验文本必填 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1396236794429440 --- .../IProcessStepHandlerCrossoverUtil.java | 2 +- .../crossover/IProcessTaskCrossoverMapper.java | 6 ++++++ .../stephandler/core/ProcessStepHandlerBase.java | 14 +++++++++++--- .../stephandler/core/ProcessTaskStepThread.java | 11 +++++++++-- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/neatlogic/framework/process/crossover/IProcessStepHandlerCrossoverUtil.java b/src/main/java/neatlogic/framework/process/crossover/IProcessStepHandlerCrossoverUtil.java index 0d0a0244..d9c5e6c3 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 2277463d..9270cb1f 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 6f6c8ecf..b2ed42d2 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 dd9e7b0c..52c39b13 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); } } -- Gitee