Browse Source

生命周期添加

gushoubang 1 tháng trước cách đây
mục cha
commit
2f486b867b

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

@@ -28,7 +28,7 @@ public class Gyjsydscdj {
     private String djjg;           // 登记结构
     private String djDate;           // 登记日期
     private Map<String, Object> attachment; // 附件
-    private String hasOnchain;     // 是否上链
+    private Boolean hasOnchain;     // 是否上链(布尔)
     private String creatorId;      // 创建人ID
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createdAt;        // 创建时间

+ 2 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectCycleRes.java

@@ -15,6 +15,6 @@ public class ProjectCycleRes {
     private String name;         // 名称
     private Double index;        // 执行顺序
 
-    private Boolean isComplete=false;//是否完成
-    private List<ProjectWorkflow> workflows;
+    private Boolean hasOnchain=false;//是否完成
+    private List<ProjectWorkflowRes> workflows;
 }

+ 41 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectWorkflowRes.java

@@ -0,0 +1,41 @@
+package com.siwei.apply.domain.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 项目生命周期返回结果
+ */
+@Data
+public class ProjectWorkflowRes {
+    /**
+     * 节点id,对应当前进度
+     */
+    private String nodeId;
+    /**
+     * 流程id,对应总的流程(不返回前端)
+     */
+    @JsonIgnore
+    private String workflowId;
+    /**
+     * 项目id(不返回前端)
+     */
+    @JsonIgnore
+    private String projectId;
+
+    /**
+     * 节点表名
+     */
+    @JsonIgnore
+    private String nodeTableName;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createdAt;
+}
+

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/GyjsydscdjUpdateVo.java

@@ -8,5 +8,5 @@ import lombok.Data;
 @Data
 public class GyjsydscdjUpdateVo extends GyjsydscdjVo {
     private String id;
-    private String hasOnchain;    // 是否上链
+    private Boolean hasOnchain;    // 是否上链(布尔)
 }

+ 17 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectWorkflowMapper.java

@@ -2,6 +2,7 @@ package com.siwei.apply.mapper;
 
 import com.siwei.apply.domain.ProjectWorkflow;
 import com.siwei.apply.domain.res.ProjectProcessRes;
+import com.siwei.apply.domain.res.ProjectWorkflowRes;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -19,6 +20,21 @@ public interface ProjectWorkflowMapper {
      */
     List<ProjectWorkflow> selectByNodeId(@Param("nodeId") String nodeId);
 
+    /**
+     * 原有:带 hasOnchain 的整合查询(保留)
+     */
+    List<ProjectWorkflowRes> selectCycleByProjectId(@Param("projectId") String projectId);
+
+    /**
+     * 查询项目流程节点是否上链
+     *
+     * @param id
+     * @param projectId
+     * @param tableName
+     * @return
+     */
+    Boolean isOnchain(@Param("id") String id, @Param("projectId") String projectId, @Param("tableName") String tableName);
+
     /**
      * 新增项目流程节点关系
      */
@@ -27,8 +43,7 @@ public interface ProjectWorkflowMapper {
     /**
      * 根据项目id与节点表名查询项目流程节点关系
      */
-    List<ProjectWorkflow> selectByProjectIdAndNodeTableName(@Param("projectId") String projectId,
-                                                            @Param("nodeTableName") String nodeTableName);
+    List<ProjectWorkflow> selectByProjectIdAndNodeTableName(@Param("projectId") String projectId, @Param("nodeTableName") String nodeTableName);
 
     /**
      * 统计:取每个 project_id 的最大 workflow_id,若相同 workflow_id 有多条仅计一次,

+ 13 - 4
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ProjectImpl.java

@@ -112,10 +112,17 @@ public class ProjectImpl implements ProjectService {
         // 获取不同类型的流程
         List<ProjectCycleRes> workflows = workflowMapper.selectByProjectTypeOrderByIndex(projectType);
         // 获取项目对应的工作流
-        List<ProjectWorkflow> projectWorkflows = projectWorkflowMapper.selectByProjectId(projectId);
-        Map<String, List<ProjectWorkflow>> workflowMap = new HashMap<>();
+        List<ProjectWorkflowRes> projectWorkflowsAll = projectWorkflowMapper.selectCycleByProjectId(projectId);
+        // 过滤掉没有上链的
+        List<ProjectWorkflowRes> projectWorkflows = new ArrayList<>();
+        for (ProjectWorkflowRes projectWorkflowRes : projectWorkflowsAll) {
+            Boolean hasOnchain = projectWorkflowMapper.isOnchain(projectWorkflowRes.getNodeId(), projectId, projectWorkflowRes.getNodeTableName());
+            if (hasOnchain) projectWorkflows.add(projectWorkflowRes);
+        }
+
+        Map<String, List<ProjectWorkflowRes>> workflowMap = new HashMap<>();
         // 将项目工作流按节点表名分组
-        for (ProjectWorkflow projectWorkflow : projectWorkflows) {
+        for (ProjectWorkflowRes projectWorkflow : projectWorkflows) {
             String workflowId = projectWorkflow.getWorkflowId();
             if (!workflowMap.containsKey(workflowId)) {
                 workflowMap.put(workflowId, new ArrayList<>());
@@ -125,8 +132,10 @@ public class ProjectImpl implements ProjectService {
         // 构建项目周期响应
         for (ProjectCycleRes workflow : workflows) {
             if (workflowMap.containsKey(workflow.getId())) {
-                workflow.setIsComplete(true);
+                workflow.setHasOnchain(true);
                 workflow.setWorkflows(workflowMap.get(workflow.getId()));
+            } else {
+                workflow.setWorkflows(new ArrayList<>());
             }
         }
         return workflows;

+ 57 - 15
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectWorkflowMapper.xml

@@ -14,29 +14,72 @@
     </resultMap>
 
     <select id="selectByProjectId" parameterType="string" resultMap="ProjectWorkflowResultMap">
-        SELECT id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name, created_at, updated_at
+        SELECT id,
+               project_id,
+               workflow_id,
+               parent_id,
+               node_id,
+               node_table_name,
+               workflow_name,
+               created_at,
+               updated_at
         FROM t_project_workflow
         WHERE project_id = #{projectId}
         ORDER BY created_at
     </select>
 
     <select id="selectByNodeId" parameterType="string" resultMap="ProjectWorkflowResultMap">
-        SELECT id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name, created_at, updated_at
+        SELECT id,
+               project_id,
+               workflow_id,
+               parent_id,
+               node_id,
+               node_table_name,
+               workflow_name,
+               created_at,
+               updated_at
         FROM t_project_workflow
         WHERE node_id = #{nodeId}
         ORDER BY created_at
     </select>
 
+    <select id="selectCycleByProjectId" parameterType="string"
+            resultType="com.siwei.apply.domain.res.ProjectWorkflowRes">
+        SELECT project_id      as projectId,
+               node_id         as nodeId,
+               workflow_id     as workflowId,
+               node_table_name as nodeTableName,
+               created_at      as createdAt
+        FROM t_project_workflow
+        WHERE project_id = #{projectId}
+        ORDER BY created_at
+    </select>
+
+    <select id="isOnchain" parameterType="map" resultType="boolean">
+        SELECT COALESCE((SELECT has_onchain
+                         FROM ${tableName}
+                         WHERE id = #{id}
+                           AND project_id = #{projectId}
+                        LIMIT 1 ), false) AS has_onchain
+    </select>
+
     <insert id="add" parameterType="com.siwei.apply.domain.ProjectWorkflow">
-        INSERT INTO t_project_workflow (
-            id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name, created_at, updated_at
-        ) VALUES (
-            #{id}, #{projectId}, #{workflowId}, #{parentId}, #{nodeId}, #{nodeTableName}, #{workflowName}, now(), now()
-        )
+        INSERT INTO t_project_workflow (id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name,
+                                        created_at, updated_at)
+        VALUES (#{id}, #{projectId}, #{workflowId}, #{parentId}, #{nodeId}, #{nodeTableName}, #{workflowName}, now(),
+                now())
     </insert>
 
     <select id="selectByProjectIdAndNodeTableName" parameterType="map" resultMap="ProjectWorkflowResultMap">
-        SELECT id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name, created_at, updated_at
+        SELECT id,
+               project_id,
+               workflow_id,
+               parent_id,
+               node_id,
+               node_table_name,
+               workflow_name,
+               created_at,
+               updated_at
         FROM t_project_workflow
         WHERE project_id = #{projectId}
           AND node_table_name = #{nodeTableName}
@@ -46,19 +89,18 @@
     <!-- 统计:每个项目取最大 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
+        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
+            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
+            ) t
         GROUP BY t.workflow_name
     </select>
 </mapper>