From bdd25f75a0dbf35d61ee750518a88eb98edb1445 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Thu, 19 Dec 2024 11:08:30 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=A0=87=E8=AE=B0-=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=8F=96=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1275215277948928]重复工单标记-批量取消 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1275215277948928 --- .../ProcessTaskRepeatDeleteApi.java | 41 ++++++++++------ .../processtask/ProcessTaskRepeatSaveApi.java | 35 ++++++++------ .../component/EndProcessComponent.java | 47 +++++++++++++++---- 3 files changed, 85 insertions(+), 38 deletions(-) diff --git a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatDeleteApi.java b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatDeleteApi.java index e9bfe386d..6f0fdbc98 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatDeleteApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatDeleteApi.java @@ -19,6 +19,8 @@ import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.process.auth.PROCESS_BASE; import neatlogic.framework.process.constvalue.ProcessTaskAuditType; +import neatlogic.framework.process.dto.ProcessTaskVo; +import neatlogic.framework.restful.annotation.Description; import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; import neatlogic.framework.process.dto.ProcessTaskStepVo; import neatlogic.module.process.service.ProcessTaskService; @@ -59,7 +61,7 @@ public class ProcessTaskRepeatDeleteApi extends PrivateApiComponentBase { @Override public String getName() { - return "解绑重复工单接口"; + return "nmpap.processtaskrepeatdeleteapi.getname"; } @Override @@ -68,28 +70,39 @@ public class ProcessTaskRepeatDeleteApi extends PrivateApiComponentBase { } @Input({ - @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "工单id"), - @Param(name = "source", type = ApiParamType.STRING, defaultValue = "pc", desc = "来源"), + @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "term.itsm.processtaskid"), + @Param(name = "repeatProcessTaskId", type = ApiParamType.LONG, isRequired = true, desc = "term.itsm.repeatprocesstaskid"), + @Param(name = "source", type = ApiParamType.STRING, defaultValue = "pc", desc = "common.source"), }) + @Description(desc = "nmpap.processtaskrepeatdeleteapi.getname") @Override public Object myDoService(JSONObject paramObj) throws Exception { + String source = paramObj.getString("source"); Long processTaskId = paramObj.getLong("processTaskId"); - processTaskService.checkProcessTaskParamsIsLegal(processTaskId); - Long repeatGroupId = processTaskMapper.getRepeatGroupIdByProcessTaskId(processTaskId); + Long repeatProcessTaskId = paramObj.getLong("repeatProcessTaskId"); + ProcessTaskVo processTask = processTaskService.checkProcessTaskParamsIsLegal(processTaskId); + ProcessTaskVo repeatProcessTask = processTaskService.checkProcessTaskParamsIsLegal(repeatProcessTaskId); + Long repeatGroupId = processTaskMapper.getRepeatGroupIdByProcessTaskId(repeatProcessTaskId); if (repeatGroupId != null) { - processTaskMapper.deleteProcessTaskRepeatByProcessTaskId(processTaskId); - ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); - processTaskStepVo.setProcessTaskId(processTaskId); - processTaskStepVo.getParamObj().put("source", paramObj.getString("source")); -// processTaskStepVo.setParamObj(jsonObj); - processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.UNBINDREPEAT); + processTaskMapper.deleteProcessTaskRepeatByProcessTaskId(repeatProcessTaskId); + { + ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); + processTaskStepVo.setProcessTaskId(repeatProcessTaskId); + processTaskStepVo.getParamObj().put("source", source); + processTaskStepVo.getParamObj().put("repeatProcessTaskSerialNumber", processTask.getSerialNumber()); + processTaskStepVo.getParamObj().put("repeatProcessTaskTitle", processTask.getTitle()); + processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.UNBOUNDREPEAT); + } List repeatProcessTaskIdList = processTaskMapper.getProcessTaskIdListByRepeatGroupId(repeatGroupId); if (repeatProcessTaskIdList.size() == 1) { processTaskMapper.deleteProcessTaskRepeatByProcessTaskId(repeatProcessTaskIdList.get(0)); + } + { ProcessTaskStepVo processTaskStep = new ProcessTaskStepVo(); - processTaskStep.setProcessTaskId(repeatProcessTaskIdList.get(0)); - processTaskStep.getParamObj().put("source", paramObj.getString("source")); -// processTaskStepVo.setParamObj(jsonObj); + processTaskStep.setProcessTaskId(processTaskId); + processTaskStep.getParamObj().put("source", source); + processTaskStep.getParamObj().put("repeatProcessTaskSerialNumber", repeatProcessTask.getSerialNumber()); + processTaskStep.getParamObj().put("repeatProcessTaskTitle", repeatProcessTask.getTitle()); processStepHandlerUtil.audit(processTaskStep, ProcessTaskAuditType.UNBINDREPEAT); } } diff --git a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatSaveApi.java b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatSaveApi.java index 79f842a6c..842120459 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatSaveApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskRepeatSaveApi.java @@ -17,10 +17,8 @@ package neatlogic.module.process.api.processtask; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.common.constvalue.ApiParamType; -import neatlogic.framework.common.constvalue.SystemUser; import neatlogic.framework.exception.type.ParamNotExistsException; import neatlogic.framework.process.auth.PROCESS_BASE; import neatlogic.framework.process.constvalue.ProcessTaskAuditType; @@ -32,7 +30,6 @@ import neatlogic.framework.process.dto.ProcessTaskVo; import neatlogic.framework.process.exception.processtask.ProcessTaskNotFoundException; import neatlogic.framework.process.notify.constvalue.ProcessTaskNotifyTriggerType; import neatlogic.framework.process.operationauth.core.ProcessAuthManager; -import neatlogic.framework.process.stephandler.core.ProcessStepHandlerFactory; import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; @@ -95,7 +92,7 @@ public class ProcessTaskRepeatSaveApi extends PrivateApiComponentBase { @Override public Object myDoService(JSONObject paramObj) throws Exception { Long processTaskId = paramObj.getLong("processTaskId"); - processTaskService.checkProcessTaskParamsIsLegal(processTaskId); + ProcessTaskVo processTask = processTaskService.checkProcessTaskParamsIsLegal(processTaskId); new ProcessAuthManager.TaskOperationChecker(processTaskId, ProcessTaskOperationType.PROCESSTASK_MARKREPEAT) .build() .checkAndNoPermissionThrowException(); @@ -150,24 +147,32 @@ public class ProcessTaskRepeatSaveApi extends PrivateApiComponentBase { processTaskMapper.replaceProcessTaskRepeatList(processTaskRepeatList); processTaskRepeatList.clear(); } - ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); - processTaskStepVo.setProcessTaskId(processTaskVo.getId()); - processTaskStepVo.getParamObj().put("source", source); - processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.BINDREPEAT); + { + ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); + processTaskStepVo.setProcessTaskId(processTaskVo.getId()); + processTaskStepVo.getParamObj().put("source", source); + processTaskStepVo.getParamObj().put("repeatProcessTaskSerialNumber", processTask.getSerialNumber()); + processTaskStepVo.getParamObj().put("repeatProcessTaskTitle", processTask.getTitle()); + processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.BOUNDREPEAT); + } + { + processTaskMapper.replaceProcessTaskRepeat(new ProcessTaskRepeatVo(processTaskId, repeatGroupId)); + ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); + processTaskStepVo.setProcessTaskId(processTaskId); + processTaskStepVo.getParamObj().put("source", source); + processTaskStepVo.getParamObj().put("repeatProcessTaskSerialNumber", processTaskVo.getSerialNumber()); + processTaskStepVo.getParamObj().put("repeatProcessTaskTitle", processTaskVo.getTitle()); + processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.BINDREPEAT); + } } if (CollectionUtils.isNotEmpty(processTaskRepeatList)) { processTaskMapper.replaceProcessTaskRepeatList(processTaskRepeatList); } - processTaskMapper.replaceProcessTaskRepeat(new ProcessTaskRepeatVo(processTaskId, repeatGroupId)); - ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); - processTaskStepVo.setProcessTaskId(processTaskId); - processTaskStepVo.getParamObj().put("source", source); - processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.BINDREPEAT); for (ProcessTaskVo processTaskVo : runningProcessTaskList) { //当前用户可能没有工单的取消权限,所以用系统用户操作 - UserContext.init(SystemUser.SYSTEM); - ProcessStepHandlerFactory.getHandler().abortProcessTask(processTaskVo); +// UserContext.init(SystemUser.SYSTEM); +// ProcessStepHandlerFactory.getHandler().abortProcessTask(processTaskVo); ProcessTaskStepVo processTaskStep = new ProcessTaskStepVo(); processTaskStep.setProcessTaskId(processTaskVo.getId()); processTaskStep.getParamObj().put("source", source); diff --git a/src/main/java/neatlogic/module/process/stephandler/component/EndProcessComponent.java b/src/main/java/neatlogic/module/process/stephandler/component/EndProcessComponent.java index 7baadceef..c2d05808c 100644 --- a/src/main/java/neatlogic/module/process/stephandler/component/EndProcessComponent.java +++ b/src/main/java/neatlogic/module/process/stephandler/component/EndProcessComponent.java @@ -1,16 +1,16 @@ package neatlogic.module.process.stephandler.component; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.process.constvalue.ProcessStepHandlerType; -import neatlogic.framework.process.constvalue.ProcessStepMode; -import neatlogic.framework.process.constvalue.ProcessTaskStatus; +import neatlogic.framework.asynchronization.threadlocal.UserContext; +import neatlogic.framework.common.constvalue.SystemUser; +import neatlogic.framework.crossover.CrossoverServiceFactory; +import neatlogic.framework.process.constvalue.*; +import neatlogic.framework.process.crossover.IProcessTaskCrossoverMapper; import neatlogic.framework.process.dto.ProcessTaskStepVo; import neatlogic.framework.process.dto.ProcessTaskStepWorkerVo; import neatlogic.framework.process.dto.ProcessTaskVo; import neatlogic.framework.process.exception.processtask.ProcessTaskException; -import neatlogic.framework.process.stephandler.core.IProcessStepExtendHandler; -import neatlogic.framework.process.stephandler.core.ProcessStepExtendHandlerFactory; -import neatlogic.framework.process.stephandler.core.ProcessStepHandlerBase; +import neatlogic.framework.process.stephandler.core.*; import neatlogic.framework.transaction.core.AfterTransactionJob; import neatlogic.module.process.service.IProcessStepHandlerUtil; import org.apache.commons.collections4.CollectionUtils; @@ -109,10 +109,10 @@ public class EndProcessComponent extends ProcessStepHandlerBase { @Override protected int myComplete(ProcessTaskStepVo currentProcessTaskStepVo) { - ProcessTaskVo processTaskVo = new ProcessTaskVo(); + String source = currentProcessTaskStepVo.getParamObj().getString("source"); + IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); + ProcessTaskVo processTaskVo = processTaskCrossoverMapper.getProcessTaskBaseInfoById(currentProcessTaskStepVo.getProcessTaskId()); processTaskVo.setStatus(ProcessTaskStatus.SUCCEED.getValue()); - processTaskVo.setId(currentProcessTaskStepVo.getProcessTaskId()); - //processTaskMapper.updateProcessTaskStatus(processTaskVo); //自动评分 processStepHandlerUtil.autoScore(processTaskVo); @@ -125,6 +125,35 @@ public class EndProcessComponent extends ProcessStepHandlerBase { } } + // 重复事件工单自动取消 + Long repeatGroupId = processTaskCrossoverMapper.getRepeatGroupIdByProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); + if (repeatGroupId != null) { + List repeatProcessTaskIdList = processTaskCrossoverMapper.getProcessTaskIdListByRepeatGroupId(repeatGroupId); + repeatProcessTaskIdList.remove(currentProcessTaskStepVo.getProcessTaskId()); + if (CollectionUtils.isNotEmpty(repeatProcessTaskIdList)) { + List repeatProcessTaskList = processTaskCrossoverMapper.getProcessTaskListByIdList(repeatProcessTaskIdList); + for (ProcessTaskVo repeatProcessTask : repeatProcessTaskList) { + ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); + processTaskStepVo.setProcessTaskId(repeatProcessTask.getId()); + processTaskStepVo.setIsAutoGenerateId(false); + processTaskStepVo.getParamObj().put("source", source); + processTaskStepVo.getParamObj().put("repeatProcessTaskSerialNumber", processTaskVo.getSerialNumber()); + processTaskStepVo.getParamObj().put("repeatProcessTaskTitle", processTaskVo.getTitle()); + ProcessTaskStepThread thread = new ProcessTaskStepThread(ProcessTaskOperationType.PROCESSTASK_ABORT, processTaskStepVo, null) { + @Override + protected void myExecute(ProcessTaskStepVo processTaskStepVo) { + processTaskStepVo.getParamObj().put("repeatProcessTaskSerialNumber", processTaskVo.getSerialNumber()); + processTaskStepVo.getParamObj().put("repeatProcessTaskTitle", processTaskVo.getTitle()); + processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.AUTOCANCELREPEAT); + UserContext.init(SystemUser.SYSTEM); + ProcessStepHandlerFactory.getHandler().abortProcessTask(new ProcessTaskVo(processTaskStepVo.getProcessTaskId())); + } + }; + AfterTransactionJob afterTransactionJob = new AfterTransactionJob<>("PROCESSTASK-REPEAT-ABORT"); + afterTransactionJob.execute(thread); + } + } + } return 0; } -- Gitee