From 0b7d3956104426517fbadaee526efa36d20112e7 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 27 二月 2025 16:30:21 +0800 Subject: [PATCH] 流程推进统计table内容调整 --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 196 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 138 insertions(+), 58 deletions(-) diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java index ee84bc4..ca1ea6f 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -284,7 +284,7 @@ this.getRemainingTask(query.getProjectId(), query.getProcessDefId(), projectProcess.getProcessInsId(), query.getTaskName(), (int) query.getCurrentPage(), (int) query.getPageSize(), ok); break; case TaskTypeConstant.TIMELY: - this.getTimelyTask(query.getProcessDefId(), projectProcess.getProcessInsId(), query.getTaskName(), (int) query.getCurrentPage(), (int) query.getPageSize(), ok); + this.getTimelyTask(query.getProjectId(), query.getProcessDefId(), projectProcess.getProcessInsId(), query.getTaskName(), (int) query.getCurrentPage(), (int) query.getPageSize(), ok); break; case TaskTypeConstant.OVERTIME: this.getOvertimeTask(query.getProjectId(), query.getProcessDefId(), projectProcess.getProcessInsId(), query.getTaskName(), (int) query.getCurrentPage(), (int) query.getPageSize(), ok); @@ -898,11 +898,16 @@ List<String> handlerNames = new ArrayList<>(2); List<Long> handlerUnitIds = new ArrayList<>(2); List<String> handlerUnitNames = new ArrayList<>(2); + List<String> promoterNames = new ArrayList<>(2); + List<String> promoterUnitNames = new ArrayList<>(2); vo.setHandlerId(handlerIds); vo.setHandlerName(handlerNames); vo.setHandlerUnitId(handlerUnitIds); vo.setHandlerUnitName(handlerUnitNames); + vo.setPromoterName(promoterNames); + vo.setPromoterUnitName(promoterUnitNames); + this.setCandidateInfo(userTask, vo, projectId, processInsId); if (Objects.isNull(task)) { // 濡傛灉浠诲姟鍦ㄨ繍琛屾椂娌℃壘鍒帮紝閭d箞鍙兘涓烘湭寮�濮嬫垨鑰呭凡瀹屾垚锛岄渶瑕佷粠鍘嗗彶浠诲姟涓啀鎵句竴涓� List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery() @@ -913,8 +918,6 @@ .desc() .list(); if (CollectionUtils.isEmpty(historicTasks)) { - vo.setPromoterName("鏆傛棤"); - vo.setPromoterUnitName("鏆傛棤"); // 鏈紑濮嬬殑浠诲姟锛屽叾鍏宠仈鐨勭敤鎴风粍杩欎簺閮藉彲浠ヤ粠UserTask涓嬁鍒帮紝鍥犱负鏈韩鏈紑濮嬬殑浠诲姟鏄病鏈塼ask鐨勶紝鎵�浠ヨ繖閲岀洿鎺ユ煡 if (StringUtils.isNotBlank(userTask.getAssignee())) { vo.setHandlerType(HandlerTypeEnum.USER); @@ -927,14 +930,13 @@ handlerUnitNames.add(sysUser.getDept().getDeptName()); } } - } else if (CollectionUtil.isNotEmpty(userTask.getCandidateGroups())) { List<String> groupIds = userTask.getCandidateGroups(); for (String groupId : groupIds) { // 澶勭悊鍙橀噺琛ㄨ揪寮忥紝DATA_LAUNCH鍙彲鑳芥槸閮ㄩ棬涓嶄細鏄鑹诧紝鍥犱负浠h〃鐨勬槸涓氫富閮ㄩ棬 if (groupId.contains(ProcessConstants.DATA_LAUNCH)) { vo.setHandlerType(HandlerTypeEnum.DEPT); - this.varYzReview(vo, projectId, processInsId, HandlerTypeEnum.DEPT); + this.varYzReview(vo, projectId, processInsId, HandlerTypeEnum.DEPT, 1); } else if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 vo.setHandlerType(HandlerTypeEnum.DEPT); String[] split = groupId.split(":"); @@ -944,6 +946,7 @@ if (Objects.nonNull(dept)) { handlerUnitIds.add(dept.getDeptId()); handlerUnitNames.add(dept.getDeptName()); + handlerNames.add(this.getDeptLeaderShowName(dept)); } } } else { @@ -970,8 +973,10 @@ if (Objects.nonNull(handlerUser)) { handlerIds.add(handlerUserId); handlerNames.add(this.getUserShowName(handlerUser)); - vo.setActualHandlerUserId(historicTasks.get(0).getAssignee()); - vo.setActualHandlerUserName(handlerUser.getNickName()); + if (Objects.nonNull(handlerUser.getDept())) { + handlerUnitNames.add(handlerUser.getDept().getDeptName()); + handlerUnitIds.add(handlerUser.getDept().getDeptId()); + } } vo.setTaskDefinitionKey(historicTasks.get(0).getTaskDefinitionKey()); this.setPromoterAndHandler(vo, historicTasks.get(0).getIdentityLinks()); @@ -1075,18 +1080,19 @@ taskVO.setProcessInsId(task.getProcessInstanceId()); taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey()); - // 娴佺▼鍙戣捣浜轰俊鎭� - this.setPromoterInfo(taskVO); - // 涓�涓换鍔″彲鑳芥湁澶氫釜鍊欓�変汉/缁勶紝鎵�浠ラ渶瑕佷娇鐢╨ist List<Long> handlerIds = new ArrayList<>(2); List<String> handlerNames = new ArrayList<>(2); List<Long> handlerUnitIds = new ArrayList<>(2); List<String> handlerUnitNames = new ArrayList<>(2); + List<String> promoterNames = new ArrayList<>(2); + List<String> promoterUnitNames = new ArrayList<>(2); taskVO.setHandlerId(handlerIds); taskVO.setHandlerName(handlerNames); taskVO.setHandlerUnitId(handlerUnitIds); taskVO.setHandlerUnitName(handlerUnitNames); + taskVO.setPromoterName(promoterNames); + taskVO.setPromoterUnitName(promoterUnitNames); // 娴佺▼澶勭悊浜轰俊鎭� List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(task.getId()); @@ -1106,6 +1112,8 @@ if (Objects.nonNull(sysUser.getDept())) { taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId()); taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName()); + taskVO.getPromoterName().add(this.getUserShowName(sysUser)); + taskVO.getPromoterUnitName().add(sysUser.getDept().getDeptName()); } } // 缁戝畾鐨勬槸瑙掕壊鎴栬�呴儴闂� @@ -1119,6 +1127,8 @@ if (Objects.nonNull(dept)) { taskVO.getHandlerUnitId().add(dept.getDeptId()); taskVO.getHandlerUnitName().add(dept.getDeptName()); + taskVO.getPromoterName().add(this.getDeptLeaderShowName(dept)); + taskVO.getPromoterUnitName().add(dept.getDeptName()); } } } else { @@ -1130,7 +1140,6 @@ } } } - this.distinctVo(taskVO); } } @@ -1189,7 +1198,7 @@ * @param result * @return */ - private List<CustomerTaskVO> getTimelyTask(String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) { + private List<CustomerTaskVO> getTimelyTask(Long projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) { int startNum = pageSize * (pageNum - 1); int endNum = startNum + pageSize; @@ -1272,11 +1281,16 @@ List<String> handlerNames = new ArrayList<>(2); List<Long> handlerUnitIds = new ArrayList<>(2); List<String> handlerUnitNames = new ArrayList<>(2); + List<String> promoterNames = new ArrayList<>(2); + List<String> promoterUnitNames = new ArrayList<>(2); vo.setHandlerId(handlerIds); vo.setHandlerName(handlerNames); vo.setHandlerUnitId(handlerUnitIds); vo.setHandlerUnitName(handlerUnitNames); + vo.setPromoterName(promoterNames); + vo.setPromoterUnitName(promoterUnitNames); + this.setCandidateInfo(userTask, vo, projectId, processInsId); HistoricTaskInstance hisTask = keyMap.get(userTask.getId()); if (Objects.nonNull(hisTask)) { vo.setTaskStatus(TaskStatusEnum.FINISHED); @@ -1291,8 +1305,6 @@ if (Objects.nonNull(handlerUser)) { vo.getHandlerId().add(handlerUserId); vo.getHandlerName().add(this.getUserShowName(handlerUser)); - vo.setActualHandlerUserId(hisTask.getAssignee()); - vo.setActualHandlerUserName(this.getUserShowName(handlerUser)); } vo.setTaskDefinitionKey(hisTask.getTaskDefinitionKey()); this.setPromoterAndHandler(vo, hisTask.getIdentityLinks()); @@ -1313,6 +1325,16 @@ */ private String getUserShowName(SysUser user) { return user.getNickName() + (StringUtils.isNotBlank(user.getPhonenumber()) ? "(" + user.getPhonenumber() + ")" : ""); + } + + /** + * 閮ㄩ棬璐熻矗浜哄悕绉板悗闈㈣窡鐢佃瘽鍙风爜 + * + * @param dept + * @return + */ + private String getDeptLeaderShowName(SysDept dept) { + return dept.getLeader() + (StringUtils.isNotBlank(dept.getPhone()) ? "(" + dept.getPhone() + ")" : ""); } /** @@ -1622,10 +1644,14 @@ List<String> handlerNames = new ArrayList<>(2); List<Long> handlerUnitIds = new ArrayList<>(2); List<String> handlerUnitNames = new ArrayList<>(2); + List<String> promoterNames = new ArrayList<>(2); + List<String> promoterUnitNames = new ArrayList<>(2); vo.setHandlerId(handlerIds); vo.setHandlerName(handlerNames); vo.setHandlerUnitId(handlerUnitIds); vo.setHandlerUnitName(handlerUnitNames); + vo.setPromoterName(promoterNames); + vo.setPromoterUnitName(promoterUnitNames); vo.setProcessInsId(process.getId()); vo.setProcessDefId(processDefinitionId); @@ -1633,6 +1659,9 @@ vo.setTaskName(userTask.getName()); vo.setProcessName(process.getProcessDefinitionName()); vo.setTaskStatus(TaskStatusEnum.NOT_START); + + this.setCandidateInfo(userTask, vo, projectId, processInsId); + // 鏈紑濮嬬殑浠诲姟锛屽叾鍏宠仈鐨勭敤鎴风粍杩欎簺閮藉彲浠ヤ粠UserTask涓嬁鍒帮紝鍥犱负鏈韩鏈紑濮嬬殑浠诲姟鏄病鏈塼ask鐨勶紝鎵�浠ヨ繖閲岀洿鎺ユ煡 if (StringUtils.isNotBlank(userTask.getAssignee())) { vo.setHandlerType(HandlerTypeEnum.USER); @@ -1651,7 +1680,7 @@ // 澶勭悊鍙橀噺琛ㄨ揪寮忥紝DATA_LAUNCH鍙彲鑳芥槸閮ㄩ棬涓嶄細鏄鑹诧紝鍥犱负浠h〃鐨勬槸涓氫富閮ㄩ棬 if (groupId.contains(ProcessConstants.DATA_LAUNCH)) { vo.setHandlerType(HandlerTypeEnum.DEPT); - this.varYzReview(vo, projectId, processInsId, HandlerTypeEnum.DEPT); + this.varYzReview(vo, projectId, processInsId, HandlerTypeEnum.DEPT, 1); } else if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 vo.setHandlerType(HandlerTypeEnum.DEPT); String[] split = groupId.split(":"); @@ -1694,10 +1723,10 @@ /** * 澶勭悊娴佺▼鍙橀噺-涓氫富鍗曚綅 - * + * @param setType 0 璁剧疆璐d换鍗曚綅 1 璁剧疆鍔炵悊鍗曚綅 * @param vo */ - private void varYzReview(CustomerTaskVO vo, Long projectId, String processInsId, HandlerTypeEnum type) { + private void varYzReview(CustomerTaskVO vo, Long projectId, String processInsId, HandlerTypeEnum type, Integer setType) { ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper) .eq(ProjectProcess::getProjectId, projectId) .eq(ProjectProcess::getProcessInsId, processInsId) @@ -1714,8 +1743,14 @@ } else if (HandlerTypeEnum.DEPT.equals(type)) { SysDept dept = deptService.selectDeptById(projectProcess.getDataLaunch()); if (Objects.nonNull(dept)) { - vo.getHandlerUnitId().add(dept.getDeptId()); - vo.getHandlerUnitName().add(dept.getDeptName()); + if (setType == 1) { + vo.getHandlerUnitId().add(dept.getDeptId()); + vo.getHandlerUnitName().add(dept.getDeptName()); + vo.getHandlerName().add(this.getDeptLeaderShowName(dept)); + } else { + vo.getPromoterUnitName().add(dept.getDeptName()); + vo.getPromoterName().add(this.getDeptLeaderShowName(dept)); + } } } else if (HandlerTypeEnum.ROLE.equals(type)) { SysRole role = sysRoleService.selectRoleById(projectProcess.getDataLaunch()); @@ -1753,6 +1788,52 @@ return totalNum - num; } + /** + * 璁剧疆鍊欓�変汉淇℃伅/璐d换鍗曚綅 + * + * @param userTask + * @param vo + * @param projectId + * @param processInsId + */ + private void setCandidateInfo(UserTask userTask, CustomerTaskVO vo, Long projectId, String processInsId) { + if (StringUtils.isNotBlank(userTask.getAssignee())) { + SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee())); + if (Objects.nonNull(sysUser)) { + if (Objects.nonNull(sysUser.getDept())) { + // 濡傛灉鏄寚瀹氱殑鏌愪釜浜猴紝閭d箞璐d换鍗曚綅鏄繖涓汉鎵�鍦ㄧ殑閮ㄩ棬 + vo.getPromoterUnitName().add(sysUser.getDept().getDeptName()); + vo.getPromoterName().add(this.getUserShowName(sysUser)); + } + } + } else if (CollectionUtil.isNotEmpty(userTask.getCandidateGroups())) { + List<String> groupIds = userTask.getCandidateGroups(); + for (String groupId : groupIds) { + // 澶勭悊鍙橀噺琛ㄨ揪寮忥紝DATA_LAUNCH鍙彲鑳芥槸閮ㄩ棬涓嶄細鏄鑹诧紝鍥犱负浠h〃鐨勬槸涓氫富閮ㄩ棬 + if (groupId.contains(ProcessConstants.DATA_LAUNCH)) { + vo.setHandlerType(HandlerTypeEnum.DEPT); + this.varYzReview(vo, projectId, processInsId, HandlerTypeEnum.DEPT, 0); + } else if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + vo.setHandlerType(HandlerTypeEnum.DEPT); + String[] split = groupId.split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + vo.getPromoterUnitName().add(dept.getDeptName()); + vo.getPromoterName().add(this.getDeptLeaderShowName(dept)); + } + } + } else { + vo.setHandlerType(HandlerTypeEnum.ROLE); + SysRole role = sysRoleService.selectRoleById(Long.parseLong(groupId)); + if (Objects.nonNull(role)) { + vo.getPromoterUnitName().add(role.getRoleName()); + } + } + } + } + } /** * 璁剧疆浠诲姟鐨勫彂璧蜂汉&澶勭悊浜� 鍙湁寰呭姙浠诲姟鍜屽凡瀹屾垚浠诲姟鎵嶄細鎺夎繖涓柟娉� @@ -1761,7 +1842,7 @@ * @param identityLinkInfos 濡傛灉鏄凡瀹屾垚鐨勪换鍔★紝鐢ㄨ繖涓幓鍙栧叧鑱旂殑鐢ㄦ埛/鐢ㄦ埛缁� */ private void setPromoterAndHandler(CustomerTaskVO taskVO, List<? extends IdentityLinkInfo> identityLinkInfos) { - this.setPromoterInfo(taskVO); +// this.setPromoterInfo(taskVO); // 涓�涓换鍔″彲鑳芥湁澶氫釜鍊欓�変汉/缁勶紝鎵�浠ラ渶瑕佷娇鐢╨ist List<Long> handlerIds = new ArrayList<>(2); @@ -1786,7 +1867,7 @@ if (Objects.nonNull(sysUser)) { taskVO.setHandlerType(HandlerTypeEnum.USER); handlerIds.add(sysUser.getUserId()); - handlerNames.add(sysUser.getNickName()); + handlerNames.add(this.getUserShowName(sysUser)); if (Objects.nonNull(sysUser.getDept())) { handlerUnitIds.add(sysUser.getDept().getDeptId()); handlerUnitNames.add(sysUser.getDept().getDeptName()); @@ -1823,7 +1904,7 @@ SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); if (Objects.nonNull(sysUser)) { handlerIds.add(sysUser.getUserId()); - handlerNames.add(sysUser.getNickName()); + handlerNames.add(this.getUserShowName(sysUser)); if (Objects.nonNull(sysUser.getDept())) { handlerUnitIds.add(sysUser.getDept().getDeptId()); handlerUnitNames.add(sysUser.getDept().getDeptName()); @@ -1853,7 +1934,6 @@ } } } - this.distinctVo(taskVO); } @@ -1863,41 +1943,41 @@ * @param taskVO */ private void setPromoterInfo(CustomerTaskVO taskVO) { - // 鍙戣捣浜哄簲涓轰笂涓�鑺傜偣鐨勫鐞嗕汉 - List<String> beforeNodeKey = taskCommonService.getBeforeNodeInfo(taskVO.getProcessDefId(), taskVO.getTaskDefinitionKey()); - List<SysUser> userList = beforeNodeKey.stream().map(key -> { - List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery() - .processInstanceId(taskVO.getProcessInsId()) - .taskDefinitionKey(key) - .orderByHistoricTaskInstanceStartTime() - .desc() - .list(); // 涔嬫墍浠ョ敤list鏄洜涓哄鏋滄煇涓换鍔¤椹冲洖杩囷紝涓斿鏋滆浠诲姟鍐嶆鎵ц鏃朵細鏈夊鏉℃暟鎹紝鍙栨渶鏂扮殑涓�鏉� - if (!CollectionUtils.isEmpty(historicTaskInstances)) { - // 瀹為檯棰嗗彇杩欎釜浠诲姟鐨勪汉锛屼篃灏辨槸澶勭悊浜� - String assignee = historicTaskInstances.get(0).getAssignee(); - SysUser startUser = sysUserService.selectUserById(Long.parseLong(assignee)); - return startUser; - } else { - return null; - } - }).filter(user -> Objects.nonNull(user)).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(userList)) { - taskVO.setPromoterName("鏆傛棤"); - taskVO.setPromoterUnitName("鏆傛棤"); - } else { - taskVO.setPromoterId(userList.stream().map(user -> { - return user.getUserId() + ""; - }).collect(Collectors.joining("銆�"))); - taskVO.setPromoterName(userList.stream().map(user -> { - return this.getUserShowName(user); - }).collect(Collectors.joining("銆�"))); - taskVO.setPromoterUnitId(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { - return user.getDept().getDeptId() + ""; - }).collect(Collectors.joining("銆�"))); - taskVO.setPromoterUnitName(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { - return user.getDept().getDeptName() + ""; - }).collect(Collectors.joining("銆�"))); - } +// // 鍙戣捣浜哄簲涓轰笂涓�鑺傜偣鐨勫鐞嗕汉 +// List<String> beforeNodeKey = taskCommonService.getBeforeNodeInfo(taskVO.getProcessDefId(), taskVO.getTaskDefinitionKey()); +// List<SysUser> userList = beforeNodeKey.stream().map(key -> { +// List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery() +// .processInstanceId(taskVO.getProcessInsId()) +// .taskDefinitionKey(key) +// .orderByHistoricTaskInstanceStartTime() +// .desc() +// .list(); // 涔嬫墍浠ョ敤list鏄洜涓哄鏋滄煇涓换鍔¤椹冲洖杩囷紝涓斿鏋滆浠诲姟鍐嶆鎵ц鏃朵細鏈夊鏉℃暟鎹紝鍙栨渶鏂扮殑涓�鏉� +// if (!CollectionUtils.isEmpty(historicTaskInstances)) { +// // 瀹為檯棰嗗彇杩欎釜浠诲姟鐨勪汉锛屼篃灏辨槸澶勭悊浜� +// String assignee = historicTaskInstances.get(0).getAssignee(); +// SysUser startUser = sysUserService.selectUserById(Long.parseLong(assignee)); +// return startUser; +// } else { +// return null; +// } +// }).filter(user -> Objects.nonNull(user)).collect(Collectors.toList()); +// if (CollectionUtils.isEmpty(userList)) { +// taskVO.setPromoterName("鏆傛棤"); +// taskVO.setPromoterUnitName("鏆傛棤"); +// } else { +// taskVO.setPromoterId(userList.stream().map(user -> { +// return user.getUserId() + ""; +// }).collect(Collectors.joining("銆�"))); +// taskVO.setPromoterName(userList.stream().map(user -> { +// return this.getUserShowName(user); +// }).collect(Collectors.joining("銆�"))); +// taskVO.setPromoterUnitId(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { +// return user.getDept().getDeptId() + ""; +// }).collect(Collectors.joining("銆�"))); +// taskVO.setPromoterUnitName(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { +// return user.getDept().getDeptName() + ""; +// }).collect(Collectors.joining("銆�"))); +// } } /** -- Gitblit v1.8.0