From 8e470eeb46446b6b9503ce4b23cf2e71f7ee6350 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Sun, 4 Feb 2024 18:40:33 +0800 Subject: [PATCH] =?UTF-8?q?fix=2081700=20=E4=BC=98=E5=8C=96=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E7=9B=91=E6=8E=A7=E6=9F=A5=E8=AF=A2=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/activiti/entity/ProcessAll.java | 2 - .../listener/MyGlobalEventListener.java | 15 ++++ .../activiti/mapper/xml/ProcessAllMapper.xml | 88 ++++++++++--------- .../activiti/service/ProcessAllService.java | 37 +++++++- 4 files changed, 97 insertions(+), 45 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessAll.java b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessAll.java index ab08b4b0..e4a9a9e1 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessAll.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/entity/ProcessAll.java @@ -162,7 +162,6 @@ public class ProcessAll { /** * 接收任务时间 */ - @TableField(exist = false) @ApiModelProperty(value="接收任务时间") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @@ -171,7 +170,6 @@ public class ProcessAll { /** * 接收任务时间 */ - @TableField(exist = false) @ApiModelProperty(value="完成任务时间") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 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 fd9cde8f..cce21a78 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 @@ -115,6 +115,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { //任务创建时,清除pass delegateTask.removeVariable("pass"); //流程审批信息 + ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class); ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); ProcessNodeService processNodeService = SpringContextUtil.getBean(ProcessNodeService.class); log.info("id = " + delegateTask.getId()); @@ -151,6 +152,12 @@ public class MyGlobalEventListener implements ActivitiEventListener { approvalRecord.setCreateTime(createTime); approvalRecord.setNodeId(taskDefinitionKey); recordService.save(approvalRecord); + //更新最新接受任务时间 + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessAll::getId,processAll.getId()); + updateWrapper.set(ProcessAll::getReceivedTaskTime,createTime); + processAllService.update(updateWrapper); // 对接统一平台生成待办任务 PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class); @@ -188,6 +195,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { log.info("execution.getActivityId() = " + execution.getActivityId()); log.info("taskEntity.getVariables() = " + delegateTask.getVariables()); //流程审批信息转办 + ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class); ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); String taskId = delegateTask.getId(); String assignee = delegateTask.getAssignee(); @@ -237,6 +245,13 @@ public class MyGlobalEventListener implements ActivitiEventListener { } recordService.updateById(approvalRecord); + //更新最新完成任务时间 + ProcessAll processAll = processAllService.getByProcessInstanceId(delegateTask.getProcessInstanceId()); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessAll::getId,processAll.getId()); + updateWrapper.set(ProcessAll::getCompletedTaskTime,date); + processAllService.update(updateWrapper); + // 对接统一平台生成完成任务 PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class); List list = new ArrayList<>(); 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 50bc4622..21a8066a 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 @@ -19,39 +19,44 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file 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 215d9ae7..b2569a11 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 @@ -127,7 +127,42 @@ public class ProcessAllService extends ServiceImpl public IPage getAllList(Page page, QueryWrapper queryWrapper, HttpServletRequest req) { String column = req.getParameter("column"); String order = req.getParameter("order"); - return processAllMapper.getAllList(page,queryWrapper,column,order); + IPage allList = processAllMapper.getAllList(page, queryWrapper, column, order); + List records = allList.getRecords(); + + List incompleteCollect = records.stream().filter(item -> ProcessStatusEnum.INCOMPLETE.getValue().equals(item.getPrcStatus())).map(ProcessAll::getProcessInstanceId).collect(Collectors.toList()); + List incompleteRecordList = new ArrayList<>(); + if (!incompleteCollect.isEmpty()) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("process_instance_id","group_concat(user_id) as user_id"); + wrapper.lambda().in(ProcessApprovalRecord::getProcessInstanceId,incompleteCollect) + .eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.INCOMPLETE.getValue()) + .groupBy(ProcessApprovalRecord::getProcessInstanceId); + incompleteRecordList = approvalRecordService.list(wrapper); + } + Map incompleteUserMap = CollStreamUtil.toMap(incompleteRecordList, ProcessApprovalRecord::getProcessInstanceId, ProcessApprovalRecord::getUserId); + + List withdrawnCollect = records.stream().filter(item -> ProcessStatusEnum.WITHDRAWN.getValue().equals(item.getPrcStatus())).map(ProcessAll::getProcessInstanceId).collect(Collectors.toList()); + List withdrawnRecordList = new ArrayList<>(); + if (!withdrawnCollect.isEmpty()){ + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.select("process_instance_id","group_concat(user_id) as user_id"); + wrapper1.lambda().in(ProcessApprovalRecord::getProcessInstanceId,withdrawnCollect) + .eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.WITHDRAWN.getValue()) + .groupBy(ProcessApprovalRecord::getProcessInstanceId); + withdrawnRecordList = approvalRecordService.list(wrapper1); + } + Map withdrawnUserMap = CollStreamUtil.toMap(withdrawnRecordList, ProcessApprovalRecord::getProcessInstanceId, ProcessApprovalRecord::getUserId); + + for (ProcessAll record : records) { + if (ProcessStatusEnum.INCOMPLETE.getValue().equals(record.getPrcStatus())) { + record.setHandleUserId(incompleteUserMap.get(record.getProcessInstanceId())); + } + if (ProcessStatusEnum.WITHDRAWN.getValue().equals(record.getPrcStatus())) { + record.setHandleUserId(withdrawnUserMap.get(record.getProcessInstanceId())); + } + } + return allList; } @Transactional(rollbackFor = Exception.class) public void forcedWithdrawal(String processInstanceId) {