From 53fd9afc15dc2f65be69801ccc67362294c3be60 Mon Sep 17 00:00:00 2001 From: sunchenliang <2532527871@qq.com> Date: Sat, 20 Apr 2024 12:18:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=BB=88=E5=AE=A1?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlowTaskController.java | 2 +- .../flowable/service/IFlowTaskService.java | 6 +- .../service/impl/FlowTaskServiceImpl.java | 112 ++++++++++-------- 3 files changed, 66 insertions(+), 54 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java index 801b8cfd..e065df2f 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java @@ -496,7 +496,7 @@ public class FlowTaskController extends BaseController { Map query = searchQuery.getQuery(); - flowTaskService.getFinalProcessInstances(query, pageUtils); + flowTaskService.getFinalProcessInstances(query, pageUtils,user); return ResultVoUtil.success(pageUtils); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java index dae4c7bf..11e6a163 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java @@ -13,11 +13,8 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.oa.from.dataobject.Category; import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; -import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro; -import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo; -import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.flowable.bpmn.model.UserTask; @@ -102,9 +99,10 @@ public interface IFlowTaskService { * * @param query 搜索条件 * @param pageUtils 分页参数 + * @param user * @return */ - public void getFinalProcessInstances(Map query, PageUtils pageUtils); + public void getFinalProcessInstances(Map query, PageUtils pageUtils, User user); /** 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 a75aba6d..b660cad1 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 @@ -16,7 +16,6 @@ import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery; import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.oa.from.dataDao.FlowableccMybatisDao; -import cn.jyjz.xiaoyao.oa.from.dataDao.IHisFlowableActinstDao; import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto; import cn.jyjz.flowable.factory.FlowServiceFactory; import cn.jyjz.flowable.service.IFlowTaskService; @@ -36,7 +35,6 @@ import cn.jyjz.xiaoyao.oa.from.service.*; import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; import cn.jyjz.xiaoyao.oa.from.vo.RepeatedContentVo; -import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo; import cn.jyjz.xiaoyao.ocr.dataobject.*; import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; @@ -119,6 +117,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask private IOcrMsgService ocrMsgService; @Resource private UserdistionaryService userdistionaryService; + @Override public void myTodoTaskList(PageUtils vo, HttpServletRequest request) { @@ -433,23 +432,23 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask } return result; } - - - public UserTask getNextTasks(String processDefinitionId ){ + + + public UserTask getNextTasks(String processDefinitionId) { //流程实例id //String processInstanceId = "5b945750-81db-11e9-a576-1a73f8e23adc"; - + // 获取流程定义 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionId(processDefinitionId) .singleResult(); - + // 获取BpmnModel BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); - + // 获取所有的FlowElement,包括开始事件、结束事件、用户任务等 List flowElements = (List) bpmnModel.getMainProcess().getFlowElements(); - + // 遍历FlowElement for (FlowElement targetFlowElement : flowElements) { //用户任务 @@ -463,7 +462,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask return null; } - public UserTask getNextTasks(Task task){ + public UserTask getNextTasks(Task task) { //获取流程发布Id信息 String definitionId = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId(); @@ -512,6 +511,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask } } } + /** * 完成任务 */ @@ -562,13 +562,13 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask //获取下一个节点 UserTask userTask = this.getNextTasks(task); - if(null != userTask){ + if (null != userTask) { MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics(); // 会签节点 if (Objects.nonNull(multiInstance)) { - List loginnames = this.getAssignee(userTask,model.getCreateuser()); - if(null != loginnames && !loginnames.isEmpty()){ - variables.put("persons",loginnames); + List loginnames = this.getAssignee(userTask, model.getCreateuser()); + if (null != loginnames && !loginnames.isEmpty()) { + variables.put("persons", loginnames); } } } @@ -781,48 +781,50 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask return activeActivityIds; } - + /** * 获取候选用户或者审批组的用户信息集合 - * @param userTask 当前审批节点 + * + * @param userTask 当前审批节点 * @param loginname 流程发起人 * @return */ - public List getAssignee(UserTask userTask,String loginname){ - if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){ + public List getAssignee(UserTask userTask, String loginname) { + if (null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1) { //获取候选用户集合 List loginnames = userTask.getCandidateUsers(); //顺序设置审批用户 return loginnames; - }else { + } else { //得到候选组 List candidateGroups = userTask.getCandidateGroups(); - if(null != candidateGroups && !candidateGroups.isEmpty()){ - - + if (null != candidateGroups && !candidateGroups.isEmpty()) { + + List listusers = new ArrayList<>(); - for(String groupid:candidateGroups){ - - + for (String groupid : candidateGroups) { + + //排除不在同一个公司的人员 - List userdistionaryList = userdistionaryService.selectListByCandidateid(groupid,loginname); - + List userdistionaryList = userdistionaryService.selectListByCandidateid(groupid, loginname); + List listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList()); - if(null!= listuserid && !listuserid.isEmpty()){ + if (null != listuserid && !listuserid.isEmpty()) { listusers.addAll(this.userService.selectUserById(listuserid)); } - + } - - if(null != listusers && !listusers.isEmpty()){ + + if (null != listusers && !listusers.isEmpty()) { List loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList()); - + return loginnames; } } } return null; } + /** * 设置当前审批节点的审批人 * 目前只多候选组和多个候选人起作用 @@ -845,48 +847,48 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); if (flowElement instanceof UserTask && StringUtils.isBlank(task.getAssignee())) { UserTask userTask = (UserTask) flowElement; - + MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics(); // 会签节点 if (Objects.nonNull(multiInstance)) { - if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){ + if (null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1) { //获取候选用户集合 List loginnames = userTask.getCandidateUsers(); //顺序设置审批用户 taskService.setAssignee(task.getId(), loginnames.get(taskIndex)); - }else { + } else { //得到候选组 List candidateGroups = userTask.getCandidateGroups(); - if(null != candidateGroups && !candidateGroups.isEmpty()){ + if (null != candidateGroups && !candidateGroups.isEmpty()) { flowTaskCompleteVO = new FlowTaskCompleteVO(); flowTaskCompleteVO.setTaskId(task.getId()); - + List listusers = new ArrayList<>(); - for(String groupid:candidateGroups){ + for (String groupid : candidateGroups) { //获取发起人员信息 HistoricProcessInstance hi = historyService.createHistoricProcessInstanceQuery() .processInstanceId(processInstanceId) .singleResult(); //发起人员登录账号 String startUserId = hi.getStartUserId(); - + //排除不在同一个公司的人员 - List userdistionaryList = userdistionaryService.selectListByCandidateid(groupid,startUserId); - + List userdistionaryList = userdistionaryService.selectListByCandidateid(groupid, startUserId); + List listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList()); listusers.addAll(this.userService.selectUserById(listuserid)); } - - if(null != listusers && !listusers.isEmpty()){ + + if (null != listusers && !listusers.isEmpty()) { List loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList()); - + //顺序设置审批用户 taskService.setAssignee(task.getId(), loginnames.get(taskIndex)); } } } taskIndex++; - }else{ + } else { //如果审批不存在,需要在候选组中查询 if (StringUtils.isBlank(userTask.getAssignee())) { //得到候选人 @@ -895,7 +897,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask Random rand = new Random(); taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size()))); } - + //得到候选组 List candidateGroups = userTask.getCandidateGroups(); if (null != candidateGroups && !candidateGroups.isEmpty()) { @@ -913,7 +915,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask taskService.claim(task.getId(), loginuser); } } - + } } } @@ -1172,9 +1174,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * * @param query 搜索条件 * @param pageUtils 分页参数 + * @param user * @return */ - public void getFinalProcessInstances(Map query, PageUtils pageUtils) { + public void getFinalProcessInstances(Map query, PageUtils pageUtils, User user) { ParamterPage paramterPage = new ParamterPage(); paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize()); paramterPage.setPagesize(pageUtils.getPageSize()); @@ -1282,7 +1285,18 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask // taskchildPicture.setTransferRecords(historicTaskInstanceDtos); // } // } - + for (OcrTaskchildPicture ocrTaskchildPicture : list) { + String assignee = ocrTaskchildPicture.getAssignee(); + if (assignee.contains(",")) { + String[] split = assignee.split(","); + for (int i = 0; i < split.length; i++) { + if (user.getLoginname().equals(split[i])) { + String[] taskIds = ocrTaskchildPicture.getTaskId().split(","); + ocrTaskchildPicture.setTaskId(taskIds[i]); + } + } + } + } pageUtils.setTotalCount(count.intValue()); pageUtils.setList(list); }