ProjectWorkflowMapper.xml 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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 pw.project_id as projectId,
  63. pw.node_id as nodeId,
  64. pw.workflow_id as workflowId,
  65. pw.node_table_name as nodeTableName,
  66. pw.created_at as createdAt,
  67. (SELECT array_to_string(array_agg(ST_AsEWKT(gd.geom)), '|')
  68. FROM t_node_land nl
  69. LEFT JOIN t_geom_db_details gd ON nl.geom_db_id = gd.upload_id
  70. WHERE nl.node_id = pw.node_id
  71. AND gd.geom IS NOT NULL) as geom
  72. FROM t_project_workflow pw
  73. WHERE pw.project_id = #{projectId}
  74. ORDER BY pw.created_at
  75. </select>
  76. <select id="isOnchain" parameterType="map" resultType="boolean">
  77. SELECT COALESCE((SELECT has_onchain
  78. FROM ${tableName}
  79. WHERE id = #{id}
  80. <if test="projectId != null and tableName!='t_ydbp_data'">
  81. AND project_id = #{projectId}
  82. </if>
  83. LIMIT 1 ), false) AS has_onchain
  84. </select>
  85. <select id="getCurrentNode" parameterType="map" resultType="map">
  86. SELECT *
  87. FROM ${tableName}
  88. WHERE id = #{id}
  89. <if test="projectId != null and tableName!='t_ydbp_data'">
  90. AND project_id = #{projectId}
  91. </if>
  92. LIMIT 1
  93. </select>
  94. <select id="selectTableColumnComments" parameterType="string" resultType="map">
  95. SELECT
  96. c.column_name AS "columnName",
  97. COALESCE(d.description, c.column_name) AS "columnComment"
  98. FROM information_schema.columns c
  99. LEFT JOIN pg_catalog.pg_class pc
  100. ON pc.relname = c.table_name
  101. LEFT JOIN pg_catalog.pg_namespace pn
  102. ON pn.oid = pc.relnamespace
  103. AND pn.nspname = c.table_schema
  104. LEFT JOIN pg_catalog.pg_description d
  105. ON d.objoid = pc.oid
  106. AND d.objsubid = c.ordinal_position
  107. WHERE c.table_schema = 'public'
  108. AND c.table_name = #{tableName}
  109. ORDER BY c.ordinal_position
  110. </select>
  111. <insert id="add" parameterType="com.siwei.apply.domain.ProjectWorkflow">
  112. INSERT INTO t_project_workflow (id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name,
  113. created_at, updated_at)
  114. VALUES (#{id}, #{projectId}, #{workflowId}, #{parentId}, #{nodeId}, #{nodeTableName}, #{workflowName}, now(),
  115. now())
  116. </insert>
  117. <select id="selectByProjectIdAndNodeTableName" parameterType="map" resultMap="ProjectWorkflowResultMap">
  118. SELECT id,
  119. project_id,
  120. workflow_id,
  121. parent_id,
  122. node_id,
  123. node_table_name,
  124. workflow_name,
  125. created_at,
  126. updated_at
  127. FROM t_project_workflow
  128. WHERE project_id = #{projectId}
  129. AND node_table_name = #{nodeTableName}
  130. ORDER BY created_at
  131. </select>
  132. <!-- 统计:每个项目取最大 workflow_id,若同项目同 workflow_id 多条只计一次;
  133. 然后按 workflow_name 分组统计数量;返回字段 name(workflow_name)与 count -->
  134. <select id="countMaxWorkflowByName" resultType="com.siwei.apply.domain.res.ProjectProcessRes">
  135. SELECT t.workflow_name AS name,
  136. CAST(COUNT(*) AS varchar) AS count
  137. FROM (
  138. SELECT DISTINCT tpw.project_id, tpw.workflow_id, tpw.workflow_name
  139. FROM t_project_workflow tpw
  140. INNER JOIN (
  141. SELECT project_id, MAX (workflow_id) AS max_workflow_id
  142. FROM t_project_workflow
  143. GROUP BY project_id
  144. ) m
  145. ON m.project_id = tpw.project_id AND m.max_workflow_id = tpw.workflow_id
  146. <where>
  147. EXISTS (
  148. SELECT 1 FROM t_project p
  149. WHERE p.id = tpw.project_id
  150. <if test="projectType != null">
  151. AND p.project_type = #{projectType}
  152. </if>
  153. AND p.on_chain_num > 0
  154. )
  155. </where>
  156. ) t
  157. GROUP BY t.workflow_name
  158. </select>
  159. <select id="selectProjectOneNodeId" parameterType="map" resultMap="ProjectWorkflowResultMap">
  160. SELECT
  161. flow2.id,
  162. flow2.project_id,
  163. flow2.workflow_id,
  164. flow2.parent_id,
  165. flow2.node_id,
  166. flow2.node_table_name,
  167. flow2.workflow_name,
  168. flow2.created_at,
  169. flow2.updated_at
  170. FROM "public"."t_project_workflow" flow1
  171. LEFT JOIN "public"."t_project_workflow" flow2
  172. on flow1.project_id=flow2.project_id and flow2.node_table_name=#{nodeTableName}
  173. WHERE flow1.node_id = #{nodeId}
  174. </select>
  175. <!-- <select id="selectOnchainInfoByNodeId" resultType="map" parameterType="String">-->
  176. <!-- SELECT-->
  177. <!-- id,-->
  178. <!-- has_onchain as "hasOnchain"-->
  179. <!-- FROM "public".#{nodeTableName}-->
  180. <!-- WHERE id = #{nodeId}-->
  181. <!-- limit 1-->
  182. <!-- </select>-->
  183. <select id="selectByProjectIdList" parameterType="List" resultMap="ProjectWorkflowResultMap">
  184. SELECT id,
  185. project_id,
  186. workflow_id,
  187. parent_id,
  188. node_id,
  189. node_table_name,
  190. workflow_name,
  191. created_at,
  192. updated_at
  193. FROM t_project_workflow
  194. <where>
  195. <if test="projectIdList!=null and projectIdList.size()>0">
  196. project_id IN
  197. <foreach collection="projectIdList" item="id" open="(" separator="," close=")">
  198. #{id}
  199. </foreach>
  200. </if>
  201. </where>
  202. ORDER BY created_at
  203. </select>
  204. <!-- 更新记录:ProjectWorkflow -->
  205. <update id="update" parameterType="com.siwei.apply.domain.ProjectWorkflow">
  206. UPDATE t_project_workflow
  207. <set>
  208. <if test="projectId != null">project_id = #{projectId},</if>
  209. <if test="workflowId != null">workflow_id = #{workflowId},</if>
  210. <if test="parentId != null">parent_id = #{parentId},</if>
  211. <if test="nodeId != null">node_id = #{nodeId},</if>
  212. <if test="nodeTableName != null">node_table_name = #{nodeTableName},</if>
  213. <if test="workflowName != null">workflow_name = #{workflowName},</if>
  214. updated_at = now()
  215. </set>
  216. WHERE id = #{id}
  217. </update>
  218. <delete id="deleteById">
  219. DELETE FROM t_project_workflow
  220. WHERE id = #{id}
  221. </delete>
  222. </mapper>