From 8327da7f5936922348e8ed35cded40a8f6472d20 Mon Sep 17 00:00:00 2001 From: sunchenliang <2532527871@qq.com> Date: Mon, 29 Jul 2024 20:21:45 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E4=BB=BB=E5=8A=A1=E5=8A=A8=E6=80=81=E5=8E=82=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlowTaskServiceImpl.java | 43 +++++++++++++------ .../mapper/oa/OcrTaskchildPictureMapper.xml | 2 +- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java index 63d6e455..f0fea157 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java @@ -918,22 +918,18 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask String fieldValue = (String) field.get(first); log.info("厂商名称------{}", fieldValue); List collect = contractorList.stream().filter(contractorTask -> contractorTask.getContractor().equals(fieldValue)).map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList()); - List assignees = new ArrayList<>(); - List assigneeList = new ArrayList<>(); - for (String str : candidateUsers) { - if (collect.contains(str)) { - assigneeList.add(str); - } - } + List assigneeList = getUserCollect(candidateUsers,collect,true); +// for (String str : candidateUsers) { +// if (collect.contains(str)) { +// assigneeList.add(str); +// } +// } if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(assigneeList)) { taskService.claim(task.getId(), assigneeList.get(rand.nextInt(assigneeList.size()))); } - if (CollectionUtils.isEmpty(assigneeList) && org.apache.commons.collections4.CollectionUtils.isNotEmpty(userList)) { - List userCcollect = candidateUsers.stream().filter(o -> !userList.contains(o)).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(userCcollect)) { - userCcollect = candidateUsers; - } - taskService.claim(task.getId(), userCcollect.get(rand.nextInt(userCcollect.size()))); + if (CollectionUtils.isEmpty(assigneeList) && org.apache.commons.collections4.CollectionUtils.isNotEmpty(collect)) { + List userCollect = getUserCollect(candidateUsers, collect, false); + taskService.claim(task.getId(), userCollect.get(rand.nextInt(userCollect.size()))); } else { taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size()))); } @@ -984,6 +980,27 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask return flowTaskCompleteVO; } + private static List getUserCollect(List candidateUsers, List userList, Boolean type) { + List userCcollect = new ArrayList<>(); + for (String candidateUser : candidateUsers) { + for (String user : userList) { + if (type) { + if (user.contains(candidateUser)) { + userCcollect.add(candidateUser); + } + } else { + if (!user.contains(candidateUser)) { + userCcollect.add(candidateUser); + } + } + } + } + if (CollectionUtils.isEmpty(userCcollect) && !type) { + userCcollect = candidateUsers; + } + return userCcollect; + } + /** * 设置当前审批节点的 */ diff --git a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml index af091d5b..cffb52f8 100644 --- a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml +++ b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml @@ -1036,7 +1036,7 @@ and (FIND_IN_SET(#{thisLoginUserid.value} , tcp.ASSIGNEE) or - if((select count(1) from ocr_contractor_task where tenant_id =#{tenantid.value} and pic.${contractor.value} = contractor and task_user_assignee = #{thisLoginUserid.value})>1, 1=1,tcp.STATES = 5) + if((select count(1) from ocr_contractor_task where tenant_id =#{tenantid.value} and pic.${contractor.value} = contractor and FIND_IN_SET(#{thisLoginUserid.value},task_user_assignee))>1, 1=1,tcp.STATES = 5) tcp.STATES = 5