1
0

ProjectWorkflowMapper.xml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.siwei.apply.mapper.ProjectWorkflowMapper">
  4. <resultMap id="ProjectWorkflowResultMap" type="com.siwei.apply.domain.ProjectWorkflow">
  5. <id property="id" column="id"/>
  6. <result property="projectId" column="project_id"/>
  7. <result property="workflowId" column="workflow_id"/>
  8. <result property="parentId" column="parent_id"/>
  9. <result property="nodeId" column="node_id"/>
  10. <result property="nodeTableName" column="node_table_name"/>
  11. <result property="workflowName" column="workflow_name"/>
  12. <result property="createdAt" column="created_at"/>
  13. <result property="updatedAt" column="updated_at"/>
  14. </resultMap>
  15. <select id="selectById" parameterType="string" resultMap="ProjectWorkflowResultMap">
  16. SELECT id,
  17. project_id,
  18. workflow_id,
  19. parent_id,
  20. node_id,
  21. node_table_name,
  22. workflow_name,
  23. created_at,
  24. updated_at
  25. FROM t_project_workflow
  26. WHERE id = #{id}
  27. ORDER BY created_at
  28. </select>
  29. <select id="selectByProjectId" parameterType="string" resultMap="ProjectWorkflowResultMap">
  30. SELECT id,
  31. project_id,
  32. workflow_id,
  33. parent_id,
  34. node_id,
  35. node_table_name,
  36. workflow_name,
  37. created_at,
  38. updated_at
  39. FROM t_project_workflow
  40. WHERE project_id = #{projectId}
  41. ORDER BY created_at
  42. </select>
  43. <select id="selectByNodeId" parameterType="string" resultMap="ProjectWorkflowResultMap">
  44. SELECT id,
  45. project_id,
  46. workflow_id,
  47. parent_id,
  48. node_id,
  49. node_table_name,
  50. workflow_name,
  51. created_at,
  52. updated_at
  53. FROM t_project_workflow
  54. WHERE node_id = #{nodeId}
  55. ORDER BY created_at
  56. </select>
  57. <select id="selectCycleByProjectId" parameterType="string"
  58. resultType="com.siwei.apply.domain.res.ProjectWorkflowRes">
  59. SELECT project_id as projectId,
  60. node_id as nodeId,
  61. workflow_id as workflowId,
  62. node_table_name as nodeTableName,
  63. created_at as createdAt
  64. FROM t_project_workflow
  65. WHERE project_id = #{projectId}
  66. ORDER BY created_at
  67. </select>
  68. <select id="isOnchain" parameterType="map" resultType="boolean">
  69. SELECT COALESCE((SELECT has_onchain
  70. FROM ${tableName}
  71. WHERE id = #{id}
  72. AND project_id = #{projectId}
  73. LIMIT 1 ), false) AS has_onchain
  74. </select>
  75. <insert id="add" parameterType="com.siwei.apply.domain.ProjectWorkflow">
  76. INSERT INTO t_project_workflow (id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name,
  77. created_at, updated_at)
  78. VALUES (#{id}, #{projectId}, #{workflowId}, #{parentId}, #{nodeId}, #{nodeTableName}, #{workflowName}, now(),
  79. now())
  80. </insert>
  81. <select id="selectByProjectIdAndNodeTableName" parameterType="map" resultMap="ProjectWorkflowResultMap">
  82. SELECT id,
  83. project_id,
  84. workflow_id,
  85. parent_id,
  86. node_id,
  87. node_table_name,
  88. workflow_name,
  89. created_at,
  90. updated_at
  91. FROM t_project_workflow
  92. WHERE project_id = #{projectId}
  93. AND node_table_name = #{nodeTableName}
  94. ORDER BY created_at
  95. </select>
  96. <!-- 统计:每个项目取最大 workflow_id,若同项目同 workflow_id 多条只计一次;
  97. 然后按 workflow_name 分组统计数量;返回字段 name(workflow_name)与 count -->
  98. <select id="countMaxWorkflowByName" resultType="com.siwei.apply.domain.res.ProjectProcessRes">
  99. SELECT t.workflow_name AS name,
  100. CAST(COUNT(*) AS varchar) AS count
  101. FROM (
  102. SELECT DISTINCT tpw.project_id, tpw.workflow_id, tpw.workflow_name
  103. FROM t_project_workflow tpw
  104. INNER JOIN (
  105. SELECT project_id, MAX (workflow_id) AS max_workflow_id
  106. FROM t_project_workflow
  107. GROUP BY project_id
  108. ) m
  109. ON m.project_id = tpw.project_id AND m.max_workflow_id = tpw.workflow_id
  110. <where>
  111. EXISTS (
  112. SELECT 1 FROM t_project p
  113. WHERE p.id = tpw.project_id
  114. <if test="projectType != null">
  115. AND p.project_type = #{projectType}
  116. </if>
  117. AND p.on_chain_num > 0
  118. )
  119. </where>
  120. ) t
  121. GROUP BY t.workflow_name
  122. </select>
  123. <select id="selectProjectOneNodeId" parameterType="map" resultMap="ProjectWorkflowResultMap">
  124. SELECT
  125. flow2.id,
  126. flow2.project_id,
  127. flow2.workflow_id,
  128. flow2.parent_id,
  129. flow2.node_id,
  130. flow2.node_table_name,
  131. flow2.workflow_name,
  132. flow2.created_at,
  133. flow2.updated_at
  134. FROM "public"."t_project_workflow" flow1
  135. LEFT JOIN "public"."t_project_workflow" flow2
  136. on flow1.project_id=flow2.project_id and flow2.node_table_name=#{nodeTableName}
  137. WHERE flow1.node_id = #{nodeId}
  138. </select>
  139. <!-- <select id="selectOnchainInfoByNodeId" resultType="map" parameterType="String">-->
  140. <!-- SELECT-->
  141. <!-- id,-->
  142. <!-- has_onchain as "hasOnchain"-->
  143. <!-- FROM "public".#{nodeTableName}-->
  144. <!-- WHERE id = #{nodeId}-->
  145. <!-- limit 1-->
  146. <!-- </select>-->
  147. </mapper>