ProjectWorkflowMapper.xml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  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. <if test="projectId != null">
  56. AND project_id = #{projectId}
  57. </if>
  58. ORDER BY created_at
  59. </select>
  60. <select id="selectCycleByProjectId" parameterType="string"
  61. resultType="com.siwei.apply.domain.res.ProjectWorkflowRes">
  62. SELECT project_id as projectId,
  63. node_id as nodeId,
  64. workflow_id as workflowId,
  65. node_table_name as nodeTableName,
  66. created_at as createdAt
  67. FROM t_project_workflow
  68. WHERE project_id = #{projectId}
  69. ORDER BY created_at
  70. </select>
  71. <select id="isOnchain" parameterType="map" resultType="boolean">
  72. SELECT COALESCE((SELECT has_onchain
  73. FROM ${tableName}
  74. WHERE id = #{id}
  75. <if test="projectId != null and tableName!='t_ydbp_data'">
  76. AND project_id = #{projectId}
  77. </if>
  78. LIMIT 1 ), false) AS has_onchain
  79. </select>
  80. <insert id="add" parameterType="com.siwei.apply.domain.ProjectWorkflow">
  81. INSERT INTO t_project_workflow (id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name,
  82. created_at, updated_at)
  83. VALUES (#{id}, #{projectId}, #{workflowId}, #{parentId}, #{nodeId}, #{nodeTableName}, #{workflowName}, now(),
  84. now())
  85. </insert>
  86. <select id="selectByProjectIdAndNodeTableName" parameterType="map" resultMap="ProjectWorkflowResultMap">
  87. SELECT id,
  88. project_id,
  89. workflow_id,
  90. parent_id,
  91. node_id,
  92. node_table_name,
  93. workflow_name,
  94. created_at,
  95. updated_at
  96. FROM t_project_workflow
  97. WHERE project_id = #{projectId}
  98. AND node_table_name = #{nodeTableName}
  99. ORDER BY created_at
  100. </select>
  101. <!-- 统计:每个项目取最大 workflow_id,若同项目同 workflow_id 多条只计一次;
  102. 然后按 workflow_name 分组统计数量;返回字段 name(workflow_name)与 count -->
  103. <select id="countMaxWorkflowByName" resultType="com.siwei.apply.domain.res.ProjectProcessRes">
  104. SELECT t.workflow_name AS name,
  105. CAST(COUNT(*) AS varchar) AS count
  106. FROM (
  107. SELECT DISTINCT tpw.project_id, tpw.workflow_id, tpw.workflow_name
  108. FROM t_project_workflow tpw
  109. INNER JOIN (
  110. SELECT project_id, MAX (workflow_id) AS max_workflow_id
  111. FROM t_project_workflow
  112. GROUP BY project_id
  113. ) m
  114. ON m.project_id = tpw.project_id AND m.max_workflow_id = tpw.workflow_id
  115. <where>
  116. EXISTS (
  117. SELECT 1 FROM t_project p
  118. WHERE p.id = tpw.project_id
  119. <if test="projectType != null">
  120. AND p.project_type = #{projectType}
  121. </if>
  122. AND p.on_chain_num > 0
  123. )
  124. </where>
  125. ) t
  126. GROUP BY t.workflow_name
  127. </select>
  128. <select id="selectProjectOneNodeId" parameterType="map" resultMap="ProjectWorkflowResultMap">
  129. SELECT
  130. flow2.id,
  131. flow2.project_id,
  132. flow2.workflow_id,
  133. flow2.parent_id,
  134. flow2.node_id,
  135. flow2.node_table_name,
  136. flow2.workflow_name,
  137. flow2.created_at,
  138. flow2.updated_at
  139. FROM "public"."t_project_workflow" flow1
  140. LEFT JOIN "public"."t_project_workflow" flow2
  141. on flow1.project_id=flow2.project_id and flow2.node_table_name=#{nodeTableName}
  142. WHERE flow1.node_id = #{nodeId}
  143. </select>
  144. <!-- <select id="selectOnchainInfoByNodeId" resultType="map" parameterType="String">-->
  145. <!-- SELECT-->
  146. <!-- id,-->
  147. <!-- has_onchain as "hasOnchain"-->
  148. <!-- FROM "public".#{nodeTableName}-->
  149. <!-- WHERE id = #{nodeId}-->
  150. <!-- limit 1-->
  151. <!-- </select>-->
  152. <select id="selectByProjectIdList" parameterType="List" resultMap="ProjectWorkflowResultMap">
  153. SELECT id,
  154. project_id,
  155. workflow_id,
  156. parent_id,
  157. node_id,
  158. node_table_name,
  159. workflow_name,
  160. created_at,
  161. updated_at
  162. FROM t_project_workflow
  163. <where>
  164. <if test="projectIdList!=null and projectIdList.size()>0">
  165. project_id IN
  166. <foreach collection="projectIdList" item="id" open="(" separator="," close=")">
  167. #{id}
  168. </foreach>
  169. </if>
  170. </where>
  171. ORDER BY created_at
  172. </select>
  173. <!-- 更新记录:ProjectWorkflow -->
  174. <update id="update" parameterType="com.siwei.apply.domain.ProjectWorkflow">
  175. UPDATE t_project_workflow
  176. <set>
  177. <if test="projectId != null">project_id = #{projectId},</if>
  178. <if test="workflowId != null">workflow_id = #{workflowId},</if>
  179. <if test="parentId != null">parent_id = #{parentId},</if>
  180. <if test="nodeId != null">node_id = #{nodeId},</if>
  181. <if test="nodeTableName != null">node_table_name = #{nodeTableName},</if>
  182. <if test="workflowName != null">workflow_name = #{workflowName},</if>
  183. updated_at = now()
  184. </set>
  185. WHERE id = #{id}
  186. </update>
  187. </mapper>