From da6e6e862645952683533a7a6a95d9080fe151e9 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 03 一月 2025 16:43:26 +0800 Subject: [PATCH] 首页流程待办查询service更换 --- business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java | 31 ++++++++++ business/src/main/resources/mapper/ProjectProcessMapper.xml | 9 +++ business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 93 +++++++++++++++++++++++++++++++ business/src/main/java/com/ycl/controller/ProjectProcessController.java | 2 business/src/main/java/com/ycl/service/ProjectProcessService.java | 10 +++ business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java | 8 ++ 6 files changed, 152 insertions(+), 1 deletions(-) diff --git a/business/src/main/java/com/ycl/controller/ProjectProcessController.java b/business/src/main/java/com/ycl/controller/ProjectProcessController.java index 7c9bbc1..cfc9775 100644 --- a/business/src/main/java/com/ycl/controller/ProjectProcessController.java +++ b/business/src/main/java/com/ycl/controller/ProjectProcessController.java @@ -97,7 +97,7 @@ public Result getAllTodoTask(ProjectProcessQuery query) { Result result = Result.ok(); - projectProcessService.getAllTodoTask("", (int) query.getPageSize(), (int) query.getCurrentPage(), result); + projectProcessService.getIndexTodoTask("", (int) query.getPageSize(), (int) query.getCurrentPage(), result); return result; } diff --git a/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java b/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java new file mode 100644 index 0000000..1cf1825 --- /dev/null +++ b/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java @@ -0,0 +1,31 @@ +package com.ycl.domain.vo; + +import com.ycl.common.enums.business.HandlerTypeEnum; +import com.ycl.common.enums.business.TaskStatusEnum; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 浠诲姟鍥炴樉鍐呭 + * + * @author锛歺p + * @date锛�2024/11/29 10:59 + */ +@Data +public class IndexCustomerTaskVO extends CustomerTaskVO { + + /** + * 椤圭洰id + */ + private Long projectId; + + /** + * 椤圭洰鍚嶇О + */ + private String projectName; + + + +} diff --git a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java index 2445307..76bb113 100644 --- a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java +++ b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java @@ -1,5 +1,6 @@ package com.ycl.mapper; +import com.ycl.domain.entity.ProjectInfo; import com.ycl.domain.entity.ProjectProcess; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -31,4 +32,11 @@ */ IPage getPage(IPage page, @Param("query") ProjectProcessQuery query); + /** + * 閫氳繃娴佺▼瀹炰緥id鑾峰彇椤圭洰id銆佸悕绉� + * + * @param processInstanceId + * @return + */ + ProjectInfo getProjectInfo(@Param("processInsId") String processInstanceId); } diff --git a/business/src/main/java/com/ycl/service/ProjectProcessService.java b/business/src/main/java/com/ycl/service/ProjectProcessService.java index b5dcbc0..89da7d5 100644 --- a/business/src/main/java/com/ycl/service/ProjectProcessService.java +++ b/business/src/main/java/com/ycl/service/ProjectProcessService.java @@ -70,6 +70,16 @@ */ void getAllTodoTask(String taskName, int pageSize, int pageNum, Result result); + /** + * 棣栭〉--鑾峰彇鍒嗛〉鏌ヨ寰呭姙浠诲姟 + * + * @param taskName + * @param pageSize + * @param pageNum + * @param result + */ + void getIndexTodoTask(String taskName, int pageSize, int pageNum, Result result); + Result detailByProcessInsId(TaskQuery query); /** 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 0ba8055..032deda 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -25,6 +25,7 @@ import com.ycl.domain.form.TaskDelegationForm; import com.ycl.domain.json.TaskDelegateData; import com.ycl.domain.vo.CustomerTaskVO; +import com.ycl.domain.vo.IndexCustomerTaskVO; import com.ycl.domain.vo.ProjectProcessDetailVO; import com.ycl.mapper.ProjectInfoMapper; import com.ycl.mapper.ProjectProcessMapper; @@ -254,6 +255,97 @@ } return ok; + } + + @Override + public void getIndexTodoTask(String taskName, int pageSize, int pageNum, Result result) { + TaskQuery taskQuery = taskService.createTaskQuery() + .active() + .includeProcessVariables() + .includeIdentityLinks() + .orderByTaskCreateTime().desc(); + + if (StringUtils.isNotBlank(taskName)) { + taskQuery.processDefinitionNameLike(taskName); + } + result.total(taskQuery.count()); + List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize); + List<IndexCustomerTaskVO> vos = new ArrayList<>(); + for (Task task : taskList) { + IndexCustomerTaskVO taskVO = new IndexCustomerTaskVO(); + // 褰撳墠娴佺▼淇℃伅 + 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()); + taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey()); + + // 娴佺▼椤圭洰淇℃伅 + ProjectInfo project = baseMapper.getProjectInfo(task.getProcessInstanceId()); + if (Objects.nonNull(project)) { + taskVO.setProjectId(project.getId()); + taskVO.setProjectName(project.getProjectName()); + } + + // 娴佺▼鍙戣捣浜轰俊鎭� + 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<? extends IdentityLinkInfo> identityLinks = task.getIdentityLinks(); + for (IdentityLinkInfo identityLink : identityLinks) { + // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂� + if (StringUtils.isNotBlank(identityLink.getUserId())) { + taskVO.setHandlerType(HandlerTypeEnum.USER); + SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); + if (Objects.nonNull(sysUser)) { + handlerIds.add(sysUser.getUserId()); + handlerNames.add(sysUser.getNickName()); + if (Objects.nonNull(sysUser.getDept())) { + handlerUnitIds.add(sysUser.getDept().getDeptId()); + handlerUnitNames.add(sysUser.getDept().getDeptName()); + } + } + // 缁戝畾鐨勬槸瑙掕壊鎴栬�呴儴闂� + } else if (StringUtils.isNotBlank(identityLink.getGroupId())) { + if (identityLink.getGroupId().startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + taskVO.setHandlerType(HandlerTypeEnum.DEPT); + String[] split = identityLink.getGroupId().split(":"); + if (split.length > 1) { + // 閮ㄩ棬 + SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); + if (Objects.nonNull(dept)) { + handlerUnitIds.add(dept.getDeptId()); + handlerUnitNames.add(dept.getDeptName()); + } + } + } else { + taskVO.setHandlerType(HandlerTypeEnum.ROLE); + SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); + if (Objects.nonNull(role)) { + handlerUnitIds.add(role.getRoleId()); + handlerUnitNames.add(role.getRoleName()); + } + } + } + } + vos.add(taskVO); + } + result.put("taskList", vos); } @Override @@ -529,6 +621,7 @@ SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); if (Objects.nonNull(role)) { handlerUnitIds.add(Long.parseLong(identityLink.getGroupId())); + handlerUnitNames.add(role.getRoleName()); } } } diff --git a/business/src/main/resources/mapper/ProjectProcessMapper.xml b/business/src/main/resources/mapper/ProjectProcessMapper.xml index 7fe3996..aa8f67a 100644 --- a/business/src/main/resources/mapper/ProjectProcessMapper.xml +++ b/business/src/main/resources/mapper/ProjectProcessMapper.xml @@ -76,4 +76,13 @@ </select> + + <select id="getProjectInfo" parameterType="string" resultType="com.ycl.domain.entity.ProjectInfo"> + SELECT + PI.id, PI.project_name + FROM + t_project_process PP + INNER JOIN t_project_info PI ON PP.project_id = PI.id AND PI.deleted = 0 AND PP.process_ins_id = #{processInsId} + </select> + </mapper> -- Gitblit v1.8.0