Procházet zdrojové kódy

概览完成待测试

gushoubang před 1 měsícem
rodič
revize
464ef90132

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectProcessRes.java

@@ -7,6 +7,6 @@ import lombok.Data;
  */
 @Data
 public class ProjectProcessRes {
-    private String processName; // 进度名称
+    private String name; // 进度名称
     private String count; // 进度数量
 }

+ 7 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectWorkflowMapper.java

@@ -1,6 +1,7 @@
 package com.siwei.apply.mapper;
 
 import com.siwei.apply.domain.ProjectWorkflow;
+import com.siwei.apply.domain.res.ProjectProcessRes;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -28,4 +29,10 @@ public interface ProjectWorkflowMapper {
      */
     List<ProjectWorkflow> selectByProjectIdAndNodeTableName(@Param("projectId") String projectId,
                                                             @Param("nodeTableName") String nodeTableName);
+
+    /**
+     * 统计:取每个 project_id 的最大 workflow_id,若相同 workflow_id 有多条仅计一次,
+     * 再按 workflow_name 统计数量,返回字段为 name(workflow_name)与 count
+     */
+    List<ProjectProcessRes> countMaxWorkflowByName();
 }

+ 6 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ProjectImpl.java

@@ -3,11 +3,13 @@ package com.siwei.apply.service.impl;
 import com.siwei.apply.domain.Project;
 import com.siwei.apply.domain.res.ProjectNumRes;
 import com.siwei.apply.domain.res.ProjectOverviewRes;
+import com.siwei.apply.domain.res.ProjectProcessRes;
 import com.siwei.apply.domain.res.ProjectSupplyRes;
 import com.siwei.apply.domain.vo.ProjectFilterVo;
 import com.siwei.apply.domain.vo.ProjectUpdateVo;
 import com.siwei.apply.domain.vo.ProjectVo;
 import com.siwei.apply.mapper.ProjectMapper;
+import com.siwei.apply.mapper.ProjectWorkflowMapper;
 import com.siwei.apply.mapper.TdgyMapper;
 import com.siwei.apply.service.ProjectService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +31,8 @@ public class ProjectImpl implements ProjectService {
     private ProjectMapper projectMapper;
     @Autowired
     private TdgyMapper tdgyMapper;
+    @Autowired
+    private ProjectWorkflowMapper projectWorkflowMapper;
 
     @Override
     public String add(ProjectVo projectVo) {
@@ -94,6 +98,8 @@ public class ProjectImpl implements ProjectService {
         List<ProjectSupplyRes> projectSupplyList = tdgyMapper.countAndSumByGdType();
         projectOverviewRes.setProjectSupplyList(projectSupplyList);
         // 获取项目进度
+        List<ProjectProcessRes> projectProcessList = projectWorkflowMapper.countMaxWorkflowByName();
+        projectOverviewRes.setProjectProcessList(projectProcessList);
         return projectOverviewRes;
     }
 }

+ 19 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectWorkflowMapper.xml

@@ -42,4 +42,23 @@
           AND node_table_name = #{nodeTableName}
         ORDER BY created_at
     </select>
+
+    <!-- 统计:每个项目取最大 workflow_id,若同项目同 workflow_id 多条只计一次;
+         然后按 workflow_name 分组统计数量;返回字段 name(workflow_name)与 count -->
+    <select id="countMaxWorkflowByName" resultType="com.siwei.apply.domain.res.ProjectProcessRes">
+        SELECT
+            t.workflow_name AS name,
+            CAST(COUNT(*) AS varchar) AS count
+        FROM (
+            SELECT DISTINCT tpw.project_id, tpw.workflow_id, tpw.workflow_name
+            FROM t_project_workflow tpw
+            INNER JOIN (
+                SELECT project_id, MAX(workflow_id) AS max_workflow_id
+                FROM t_project_workflow
+                GROUP BY project_id
+            ) m
+            ON m.project_id = tpw.project_id AND m.max_workflow_id = tpw.workflow_id
+        ) t
+        GROUP BY t.workflow_name
+    </select>
 </mapper>