WorkFlowNodeInstanceMapper.xml 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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.dayou.mapper.WorkFlowNodeInstanceMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.dayou.entity.WorkFlowNodeInstance">
  6. <result column="id" property="id" />
  7. <result column="deleted" property="deleted" />
  8. <result column="created" property="created" />
  9. <result column="modified" property="modified" />
  10. <result column="flow_id" property="flowId" />
  11. <result column="node_id" property="nodeId" />
  12. <result column="business_id" property="businessId" />
  13. <result column="business_type" property="businessType" />
  14. <result column="sequence" property="sequence" />
  15. <result column="state" property="state" />
  16. <result column="comment" property="comment" />
  17. </resultMap>
  18. <!-- 通用查询结果列 -->
  19. <sql id="Base_Column_List">
  20. id,
  21. deleted,
  22. created,
  23. modified,
  24. flow_id, node_id, business_id, business_type, sequence, state, comment
  25. </sql>
  26. <select id="getById" parameterType="java.lang.Long" resultType="com.dayou.entity.WorkFlowNodeInstance">
  27. SELECT
  28. wfni.id,
  29. wfni.flow_id,
  30. wfni.node_id,
  31. wfni.business_id,
  32. wfni.business_type,
  33. wfni.sequence,
  34. wfni.state,
  35. wn.verify,
  36. wfni.created,
  37. wn.code as nodeCode
  38. FROM
  39. work_flow_node_instance wfni
  40. LEFT JOIN work_node wn ON wn.id = wfni.node_id
  41. WHERE
  42. wfni.deleted = 0
  43. AND wn.deleted = 0
  44. AND wfni.id = #{instanceNodeId}
  45. </select>
  46. <select id="getInstanceNodeFlow" resultType="com.dayou.vo.WorkNodeInstanceVO">
  47. SELECT
  48. wf.id AS flowId,
  49. wn.id AS nodeId,
  50. wn.privious_node_id as pNodeId,
  51. wf.CODE AS flowCode,
  52. wn.NAME AS nodeName,
  53. wn.CODE AS nodeCode,
  54. ifnull( wfni.state, 'WAITING' ) AS state,
  55. wfni.id as instanceId
  56. FROM
  57. ( SELECT id, CODE FROM work_flow WHERE CODE = #{mainBusiness} AND deleted = 0 AND state = 0 ) wf
  58. LEFT JOIN ( SELECT id, privious_node_id, flow_id, NAME, CODE FROM work_node WHERE deleted = 0 ) wn ON wf.id = wn.flow_id
  59. LEFT JOIN ( SELECT id, flow_id, node_id, state FROM work_flow_node_instance WHERE deleted = 0 AND business_id = #{businessId}
  60. <if test="businessSubId!=null and businessSubId!='' and businessMinId!=null and businessMinId!=''">
  61. AND (business_min_id = #{businessMinId} or business_min_id IS NULL)
  62. AND (business_sub_id = #{businessSubId} or business_sub_id IS NULL)
  63. </if>
  64. <if test="(businessMinId==null or businessMinId=='') and businessSubId!=null and businessSubId!=''">
  65. AND business_min_id IS NULL
  66. AND (business_sub_id = #{businessSubId} or business_sub_id IS NULL)
  67. </if>
  68. <if test="(businessMinId!=null and businessMinId!='') and (businessSubId==null or businessSubId=='')">
  69. AND business_sub_id IS NULL
  70. AND (business_min_id = #{businessMinId} or business_min_id IS NULL)
  71. </if>
  72. <if test="(businessMinId==null or businessMinId=='') and (businessSubId==null or businessSubId=='')">
  73. AND business_sub_id IS NULL
  74. AND business_min_id IS NULL
  75. </if>
  76. ) wfni ON ( wfni.flow_id = wf.id AND wfni.node_id = wn.id )
  77. </select>
  78. <resultMap id="currentInstanceNodeMap" type="com.dayou.vo.WorkNodeInstanceVO">
  79. <result column="flowId" property="flowId" />
  80. <result column="nodeId" property="nodeId" />
  81. <result column="pNodeId" property="pNodeId" />
  82. <result column="flowCode" property="flowCode" />
  83. <result column="nodeName" property="nodeName" />
  84. <result column="nodeCode" property="nodeCode" />
  85. <result column="state" property="state" />
  86. <result column="instanceId" property="instanceId" />
  87. <result column="sequence" property="sequence" />
  88. <result column="reversible" property="reversible" />
  89. <result column="restartable" property="restartable" />
  90. <result column="terminable" property="terminable" />
  91. <result column="skippable" property="skippable" />
  92. <collection property="tasks" ofType="com.dayou.entity.WorkNodeTask" select="selectNodeTasks" column="{nodeId=nodeId,instanceId=instanceId}"/>
  93. </resultMap>
  94. <select id="instanceCurrent" resultMap="currentInstanceNodeMap">
  95. SELECT
  96. wf.id AS flowId,
  97. wn.id AS nodeId,
  98. wn.privious_node_id as pNodeId,
  99. wf.CODE AS flowCode,
  100. wn.NAME AS nodeName,
  101. wn.CODE AS nodeCode,
  102. wfni.state,
  103. wfni.id as instanceId,
  104. wfni.sequence,
  105. wn.reversible,
  106. wn.restartable,
  107. wn.terminable,
  108. wn.skippable
  109. FROM
  110. ( SELECT id, flow_id, node_id, state,sequence FROM work_flow_node_instance WHERE deleted = 0 AND business_id =#{businessId} AND state='PENDING' AND business_type = #{mainBusiness}
  111. <if test="businessSubId!=null and businessSubId!='' and businessMinId!=null and businessMinId!=''">
  112. AND business_sub_id = #{businessSubId}
  113. AND business_min_id = #{businessMinId}
  114. </if>
  115. <if test="businessSubId!=null and businessSubId!='' and (businessMinId==null or businessMinId=='') ">
  116. AND business_sub_id = #{businessSubId}
  117. AND business_min_id IS NULL
  118. </if>
  119. <if test="(businessSubId==null or businessSubId=='') and (businessMinId!=null and businessMinId!='') ">
  120. AND business_min_id = #{businessMinId}
  121. AND business_sub_id IS NULL
  122. </if>
  123. <if test="(businessSubId==null or businessSubId=='') and (businessMinId==null or businessMinId=='') ">
  124. AND business_sub_id IS NULL
  125. AND business_min_id IS NULL
  126. </if>
  127. ) wfni left join
  128. ( SELECT id, CODE FROM work_flow WHERE CODE = #{mainBusiness} AND deleted = 0 AND state = 0 ) wf ON wfni.flow_id = wf.id
  129. LEFT JOIN ( SELECT id, privious_node_id, flow_id, NAME, CODE,reversible,restartable,terminable,skippable FROM work_node WHERE deleted = 0 ) wn ON wfni.node_id = wn.id
  130. </select>
  131. <select id="selectNodeTasks" resultType="com.dayou.entity.WorkNodeTask">
  132. SELECT
  133. wnt.id,
  134. wnt.description,
  135. wnt.info,
  136. wtr.id AS recordId,
  137. wnt.task_type
  138. FROM
  139. work_node_task wnt
  140. LEFT JOIN work_task_record wtr ON wnt.id = wtr.task_id
  141. AND wtr.instance_id = #{instanceId}
  142. WHERE
  143. wnt.node_id = #{nodeId}
  144. AND wnt.deleted = 0 and wtr.deleted = 0
  145. </select>
  146. <select id="getInstanceNodeInfoById" parameterType="java.lang.Long" resultType="com.dayou.entity.WorkFlowNodeInstance">
  147. select wfni.*,wn.code as nodeCode from work_flow_node_instance wfni left join work_node wn on wn.id = wfni.node_id
  148. where wfni.deleted = 0 and wn.deleted = 0 and wfni.id = #{instanceNodeId}
  149. </select>
  150. <update id="batchCommitNode" parameterType="java.util.List">
  151. update work_flow_node_instance set state = 'FINISHED' WHERE id in (
  152. <foreach collection="currentNodeIds" index="index" item="item" separator=",">
  153. #{item}
  154. </foreach>
  155. )
  156. </update>
  157. <select id="instanceNodeCountByCode" parameterType="java.lang.String" resultType="com.dayou.vo.NightingaleEchartsVO">
  158. SELECT
  159. wn.name,
  160. t.num AS
  161. `value`
  162. FROM
  163. (
  164. SELECT
  165. node_id,
  166. count(*) AS num
  167. FROM
  168. work_flow_node_instance
  169. WHERE
  170. deleted = 0
  171. AND business_type = #{businessType}
  172. AND flow_id = ( SELECT id FROM work_flow WHERE CODE =#{businessType} AND state = 0 AND deleted = 0 )
  173. GROUP BY
  174. node_id
  175. ) t
  176. LEFT JOIN work_node wn ON wn.id = t.node_id
  177. ORDER BY
  178. t.num ASC
  179. </select>
  180. </mapper>