From 9deb58d1b223484e5d6c8bfc66063456d71941b6 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Tue, 30 Jul 2024 11:21:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BE=85=E5=8A=9E=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/MyGlobalEventListener.java | 34 +++++++++++++------ .../activiti/mapper/xml/ProcessAllMapper.xml | 4 +-- .../activiti/service/ProcessAllService.java | 11 +++++- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java index 4c9aa0ce..b1d1d179 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java @@ -19,6 +19,7 @@ import com.jero.modules.activiti.enums.CommitFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.ProcessStatusEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; import com.jero.modules.activiti.process.standardinterpret.common.StandardInterpretCommon; import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; @@ -229,8 +230,8 @@ public class MyGlobalEventListener implements ActivitiEventListener { //更新转办任务id LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); - update.eq(ProcessApprovalRecord::getTaskId,taskId); - update.set(ProcessApprovalRecord::getTransferTaskId,taskId+"_"+System.currentTimeMillis()); + update.eq(ProcessApprovalRecord::getTaskId, taskId); + update.set(ProcessApprovalRecord::getTransferTaskId, taskId + "_" + System.currentTimeMillis()); recordService.update(update); // 生成被转办人的待办 list.clear(); @@ -420,14 +421,24 @@ public class MyGlobalEventListener implements ActivitiEventListener { String parentTaskId = (String) execution.getVariable(ActivitiCommon.PARENT_TASK_ID); if (StringUtils.isNotBlank(parentTaskId)) { int i = processAllService.countByParentTaskId(parentTaskId); - if (i == 0) { - TaskService taskService = SpringContextUtil.getBean(TaskService.class); - if (StandardInterpretCommon.KEY_1.equals(processDefinitionId)){ - boolean b = isChildrenNodeAllComplete(processInstanceId, parentTaskId); - if (b){ - taskService.complete(parentTaskId); + if (StandardInterpretCommon.KEY_1.equals(processDefinitionId) || + StandardInterpretCommon.KEY_2.equals(processDefinitionId) || + StandardInterpretCommon.KEY_3.equals(processDefinitionId)) { + if (i == 0) { + if (StandardInterpretCommon.KEY_1.equals(processDefinitionId)) { + TaskService taskService = SpringContextUtil.getBean(TaskService.class); + boolean b = isChildrenNodeAllComplete(processInstanceId, parentTaskId); + if (b) { + taskService.complete(parentTaskId); + } } - }else { + } + } + if (ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_MAIN.equals(processDefinitionId) || + ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_DISTRIBUTE.equals(processDefinitionId) || + ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE.equals(processDefinitionId)) { + if (i == 0) { + TaskService taskService = SpringContextUtil.getBean(TaskService.class); Object variable = taskService.getVariable(parentTaskId, UNALLOCATED_QUANTITY); if (variable != null) { int unallocatedQuantity = (int) variable; @@ -480,11 +491,12 @@ public class MyGlobalEventListener implements ActivitiEventListener { /** * 判断所有子流程是否都完成 + * * @param processInstanceId * @param parentTaskId * @return true:都完成 false:未都完成 */ - private boolean isChildrenNodeAllComplete(String processInstanceId, String parentTaskId){ + private boolean isChildrenNodeAllComplete(String processInstanceId, String parentTaskId) { // 判断当前parentTaskId是否是第一个自动处理任务节点 ProcessApprovalRecordService processApprovalRecordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); int count = processApprovalRecordService.count( @@ -492,7 +504,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { .eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId) .eq(ProcessApprovalRecord::getNodeId, StandardInterpretCommon.INTERPRETING_PEOPLE_FILLOUT) .eq(ProcessApprovalRecord::getParentTaskId, parentTaskId)); - if (count > 0){ + if (count > 0) { // 判断子流程是否还有未完成的节点 int childCount = processApprovalRecordService.count( new LambdaQueryWrapper() diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessAllMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessAllMapper.xml index 3c56bca1..5371b924 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessAllMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/activiti/mapper/xml/ProcessAllMapper.xml @@ -46,11 +46,9 @@ pa.prc_status, pa.end_time, pa.over_time, - pa.project_id, - pn.countersign_flag + pa.project_id from process_approval_record par left join process_all pa on pa.process_instance_id = par.process_instance_id - left join process_node pn on pn.xml_node_id = par.node_id ${ew.customSqlSegment} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java index a5ab06a5..4873666c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java @@ -101,7 +101,16 @@ public class ProcessAllService extends ServiceImpl public IPage getTodoList(Page page, QueryWrapper queryWrapper, HttpServletRequest req) { String column = req.getParameter("column"); String order = req.getParameter("order"); - return processAllMapper.getTodoList(page,queryWrapper,column,order); + IPage todoList = processAllMapper.getTodoList(page, queryWrapper, column, order); + Set nodeIdSet = todoList.getRecords().stream().map(ProcessAll::getNodeId).collect(Collectors.toSet()); + List processNodeList = processNodeService.list(new LambdaQueryWrapper().in(ProcessNode::getId, nodeIdSet)); + todoList.getRecords().forEach(processAll -> { + processNodeList.stream() + .filter(processNode -> processNode.getId().equals(processAll.getNodeId())) + .findFirst() + .ifPresent(processNode -> processAll.setCountersignFlag(processNode.getCountersignFlag())); + }); + return todoList; } public IPage getCompletedList(Page page, QueryWrapper queryWrapper, HttpServletRequest req) {