From 01410747fc92a6f7bccdf9497fcde43368dc9752 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期六, 30 十一月 2024 08:05:27 +0800 Subject: [PATCH] 项目跟进回显部门 --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 214 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 196 insertions(+), 18 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 03743a5..d2dd255 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -1,5 +1,6 @@ package com.ycl.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -7,6 +8,7 @@ import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.common.constant.ProcessConstants; import com.ycl.common.core.domain.AjaxResult; +import com.ycl.common.core.domain.entity.SysDept; import com.ycl.common.core.domain.entity.SysRole; import com.ycl.common.core.domain.entity.SysUser; import com.ycl.common.enums.FlowComment; @@ -26,6 +28,7 @@ import com.ycl.domain.form.ProjectProcessForm; import com.ycl.domain.vo.ProjectProcessVO; import com.ycl.domain.query.ProjectProcessQuery; +import com.ycl.system.service.ISysDeptService; import com.ycl.system.service.ISysRoleService; import com.ycl.system.service.ISysUserService; import org.apache.commons.lang3.StringUtils; @@ -71,6 +74,7 @@ private final HistoryService historyService; private final ISysUserService sysUserService; private final ISysRoleService sysRoleService; + private final ISysDeptService sysDeptService; /** * 鍒嗛〉鏌ヨ @@ -235,19 +239,10 @@ return ok; } - /** - * 鏌ヨ寰呭姙浠诲姟 - * - * @param processInsId - * @param taskName - * @param pageSize - * @param pageNum - * @param result - */ - private void getTodoTaskList(String processInsId, String taskName, int pageSize, int pageNum, Result result) { + @Override + public void getAllTodoTask(String taskName, int pageSize, int pageNum, Result result) { TaskQuery taskQuery = taskService.createTaskQuery() .active() - .processInstanceId(processInsId) .includeProcessVariables() .orderByTaskCreateTime().desc(); @@ -314,6 +309,98 @@ } /** + * 鏌ヨ寰呭姙浠诲姟 + * + * @param processInsId + * @param taskName + * @param pageSize + * @param pageNum + * @param result + */ + public void getTodoTaskList(String processInsId, String taskName, int pageSize, int pageNum, Result result) { + TaskQuery taskQuery = taskService.createTaskQuery() + .active() + .processInstanceId(processInsId) + .includeProcessVariables() + .orderByTaskCreateTime().desc(); + + if (StringUtils.isNotBlank(taskName)) { + taskQuery.processDefinitionNameLike(taskName); + } + result.total(taskQuery.count()); + List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize); + List<CustomerTaskVO> vos = new ArrayList<>(); + for (Task task : taskList) { + CustomerTaskVO taskVO = new CustomerTaskVO(); + // 褰撳墠娴佺▼淇℃伅 + taskVO.setTaskId(task.getId()); + taskVO.setCreateTime(task.getCreateTime()); + taskVO.setProcessDefId(task.getProcessDefinitionId()); + taskVO.setExecutionId(task.getExecutionId()); + taskVO.setTaskName(task.getName()); + taskVO.setTaskStatus(TaskStatusEnum.TODO); + // 娴佺▼瀹氫箟淇℃伅 + ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(task.getProcessDefinitionId()) + .singleResult(); + taskVO.setDeployId(pd.getDeploymentId()); + taskVO.setProcessName(pd.getName()); + taskVO.setProcessInsId(task.getProcessInstanceId()); + + // 娴佺▼鍙戣捣浜轰俊鎭� + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .singleResult(); + SysUser startUser = sysUserService.selectUserById(Long.parseLong(historicProcessInstance.getStartUserId())); + taskVO.setPromoterId(startUser.getUserId()); + taskVO.setPromoterName(startUser.getNickName()); + taskVO.setPromoterUnitName(Objects.nonNull(startUser.getDept()) ? startUser.getDept().getDeptName() : ""); + taskVO.setPromoterUnitId(Objects.nonNull(startUser.getDept()) ? startUser.getDept().getDeptId() : null); + // 娴佺▼澶勭悊浜轰俊鎭� + List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(task.getId()); + for (IdentityLink identityLink : identityLinksForTask) { + // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂� + if (StringUtils.isNotBlank(identityLink.getUserId())) { + SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); + if (Objects.nonNull(sysUser)) { + taskVO.setHandlerId(sysUser.getUserId()); + if (Objects.nonNull(sysUser.getDept())) { + taskVO.setHandlerUnitId(sysUser.getDept().getDeptId()); + taskVO.setHandlerUnitName(sysUser.getDept().getDeptName()); + } + taskVO.setHandlerName(sysUser.getNickName()); + } + // 缁戝畾鐨勬槸瑙掕壊鎴栬�呴儴闂� + } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { + if (identityLink.getGroupId().startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + String[] split = identityLink.getGroupId().split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + taskVO.setHandlerUnitId(dept.getDeptId()); + taskVO.setHandlerUnitName(dept.getDeptName()); + taskVO.setHandlerName("鏆傛湭澶勭悊"); + taskVO.setHandlerId(null); + } + } + } else { + SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); + if (Objects.nonNull(role)) { + taskVO.setHandlerUnitId(Long.parseLong(identityLink.getGroupId())); + taskVO.setHandlerUnitName("鐢辨嫢鏈夎鑹诧細銆�" + role.getRoleName() + "銆戠殑浜哄鐞�"); + taskVO.setHandlerName("鏆傛湭澶勭悊"); + taskVO.setHandlerId(null); + } + } + } + } + vos.add(taskVO); + } + result.put("taskList", vos); + } + + /** * 鑾峰彇鎵�鏈変换鍔� * * @param processDefinitionId 娴佺▼杩愯id @@ -357,6 +444,39 @@ .includeIdentityLinks() .singleResult(); if (Objects.isNull(historicTask)) { + // 鏈紑濮嬬殑浠诲姟锛屽叾鍏宠仈鐨勭敤鎴风粍杩欎簺閮藉彲浠ヤ粠UserTask涓嬁鍒帮紝鍥犱负鏈韩鏈紑濮嬬殑浠诲姟鏄病鏈塼ask鐨勶紝鎵�浠ヨ繖閲岀洿鎺ユ煡 + if (StringUtils.isNotBlank(userTask.getAssignee())) { + SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee())); + if (Objects.nonNull(sysUser)) { + vo.setHandlerId(sysUser.getUserId()); + vo.setHandlerName(sysUser.getNickName()); + vo.setHandlerUnitId(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptId() : null); + vo.setHandlerUnitName(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptName() : null); + } + } else if (CollectionUtil.isNotEmpty(userTask.getCandidateGroups())) { + String groupId = userTask.getCandidateGroups().get(0); + if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + String[] split = groupId.split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + vo.setHandlerUnitId(dept.getDeptId()); + vo.setHandlerUnitName(dept.getDeptName()); + vo.setHandlerName("鏈紑濮�"); + vo.setHandlerId(null); + } + } + } else { + SysRole role = sysRoleService.selectRoleById(Long.parseLong(groupId)); + if (Objects.nonNull(role)) { + vo.setHandlerUnitId(Long.parseLong(groupId)); + vo.setHandlerUnitName("鐢辨嫢鏈夎鑹诧細銆�" + role.getRoleName() + "銆戠殑浜哄鐞�"); + vo.setHandlerName("鏈紑濮�"); + vo.setHandlerId(null); + } + } + } vo.setTaskStatus(TaskStatusEnum.NOT_START); } else { vo.setTaskStatus(TaskStatusEnum.FINISHED); @@ -431,6 +551,39 @@ .includeIdentityLinks() .singleResult(); if (Objects.isNull(historicTask)) { + // 鏈紑濮嬬殑浠诲姟锛屽叾鍏宠仈鐨勭敤鎴风粍杩欎簺閮藉彲浠ヤ粠UserTask涓嬁鍒帮紝鍥犱负鏈韩鏈紑濮嬬殑浠诲姟鏄病鏈塼ask鐨勶紝鎵�浠ヨ繖閲岀洿鎺ユ煡 + if (StringUtils.isNotBlank(userTask.getAssignee())) { + SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee())); + if (Objects.nonNull(sysUser)) { + vo.setHandlerId(sysUser.getUserId()); + vo.setHandlerName(sysUser.getNickName()); + vo.setHandlerUnitId(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptId() : null); + vo.setHandlerUnitName(Objects.nonNull(sysUser.getDept()) ? sysUser.getDept().getDeptName() : null); + } + } else if (CollectionUtil.isNotEmpty(userTask.getCandidateGroups())) { + String groupId = userTask.getCandidateGroups().get(0); + if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + String[] split = groupId.split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + vo.setHandlerUnitId(dept.getDeptId()); + vo.setHandlerUnitName(dept.getDeptName()); + vo.setHandlerName("鏈紑濮�"); + vo.setHandlerId(null); + } + } + } else { + SysRole role = sysRoleService.selectRoleById(Long.parseLong(groupId)); + if (Objects.nonNull(role)) { + vo.setHandlerUnitId(Long.parseLong(groupId)); + vo.setHandlerUnitName("鐢辨嫢鏈夎鑹诧細銆�" + role.getRoleName() + "銆戠殑浜哄鐞�"); + vo.setHandlerName("鏈紑濮�"); + vo.setHandlerId(null); + } + } + } vo.setTaskStatus(TaskStatusEnum.NOT_START); return vo; } else { @@ -508,14 +661,28 @@ } taskVO.setHandlerName(sysUser.getNickName()); } - // 缁戝畾鐨勬槸瑙掕壊锛屾煡鍑鸿鑹插悕绉� + // 缁戝畾鐨勬槸瑙掕壊鎴栬�呮槸閮ㄩ棬锛岄渶瑕佹牴鎹甶d鍒ゆ柇 } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { - SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); - if (Objects.nonNull(role)) { - taskVO.setHandlerUnitId(Long.parseLong(identityLink.getGroupId())); - taskVO.setHandlerUnitName("鐢辨嫢鏈夎鑹诧細銆�" + role.getRoleName() + "銆戠殑浜哄鐞�"); - taskVO.setHandlerName("鏆傛湭澶勭悊"); - taskVO.setHandlerId(null); + if (identityLink.getGroupId().startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + String[] split = identityLink.getGroupId().split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + taskVO.setHandlerUnitId(dept.getDeptId()); + taskVO.setHandlerUnitName(dept.getDeptName()); + taskVO.setHandlerName("鏆傛湭澶勭悊"); + taskVO.setHandlerId(null); + } + } + } else { + SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); + if (Objects.nonNull(role)) { + taskVO.setHandlerUnitId(Long.parseLong(identityLink.getGroupId())); + taskVO.setHandlerUnitName("鐢辨嫢鏈夎鑹诧細銆�" + role.getRoleName() + "銆戠殑浜哄鐞�"); + taskVO.setHandlerName("鏆傛湭澶勭悊"); + taskVO.setHandlerId(null); + } } } } @@ -534,6 +701,17 @@ } // 缁戝畾鐨勬槸瑙掕壊锛屾煡鍑鸿鑹插悕绉� } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { + if (identityLink.getGroupId().startsWith("dept")) { + String[] split = identityLink.getGroupId().split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + taskVO.setHandlerUnitId(dept.getDeptId()); + taskVO.setHandlerUnitName(dept.getDeptName()); + } + } + } SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); if (Objects.nonNull(role)) { taskVO.setHandlerUnitId(Long.parseLong(identityLink.getGroupId())); -- Gitblit v1.8.0