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