ApprovalTaskMapper.xml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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.qqflow.engine.domain.flow.mapper.ApprovalTaskMapper">
  4. <resultMap id="BaseResultMap" type="com.qqflow.engine.domain.flow.po.ApprovalTask">
  5. <id column="id" property="id"/>
  6. <result column="instance_id" property="instanceId"/>
  7. <result column="node_id" property="nodeId"/>
  8. <result column="node_name" property="nodeName"/>
  9. <result column="node_type" property="nodeType"/>
  10. <result column="sub_node_id" property="subNodeId"/>
  11. <result column="assignee_id" property="assigneeId"/>
  12. <result column="assignee_type" property="assigneeType"/>
  13. <result column="task_status" property="taskStatus"/>
  14. <result column="approval_result" property="approvalResult"/>
  15. <result column="approval_comment" property="approvalComment"/>
  16. <result column="attachment_urls" property="attachmentUrls"/>
  17. <result column="timeout_time" property="timeoutTime"/>
  18. <result column="timeout_action" property="timeoutAction"/>
  19. <result column="create_time" property="createTime"/>
  20. <result column="handle_time" property="handleTime"/>
  21. <result column="version" property="version"/>
  22. <result column="deleted" property="deleted"/>
  23. <result column="process_name" property="processName"/>
  24. <result column="instance_title" property="instanceTitle"/>
  25. <result column="instance_no" property="instanceNo"/>
  26. <result column="form_data" property="formData"/>
  27. <result column="form_schema" property="formSchema"/>
  28. </resultMap>
  29. <select id="selectTodoList" resultMap="BaseResultMap">
  30. SELECT t.*, pi.title as instance_title, pi.instance_no as instance_no, pi.form_data as form_data,
  31. pd.process_name as process_name, pd.form_schema as form_schema
  32. FROM bpm_approval_task t
  33. INNER JOIN bpm_process_instance pi ON t.instance_id = pi.id
  34. LEFT JOIN bpm_process_definition pd ON pi.process_definition_id = pd.id
  35. WHERE t.deleted = 0
  36. AND t.task_status = 0
  37. AND t.node_type != 'cc'
  38. AND pi.status IN (0, 1, 4)
  39. AND (
  40. <choose>
  41. <when test="assigneeType == 'ROLE'">
  42. (t.assignee_type = 'ROLE' AND t.assignee_id = #{assigneeId})
  43. </when>
  44. <when test="roleIds != null and roleIds.size() > 0">
  45. ((t.assignee_type != 'ROLE' AND t.assignee_id = #{assigneeId})
  46. OR (t.assignee_type = 'ROLE' AND t.assignee_id IN
  47. <foreach collection="roleIds" item="roleId" open="(" close=")" separator=",">#{roleId}</foreach>))
  48. </when>
  49. <otherwise>
  50. (t.assignee_id = #{assigneeId} AND (t.assignee_type IS NULL OR t.assignee_type = '' OR t.assignee_type = 'USER'))
  51. </otherwise>
  52. </choose>
  53. )
  54. <if test="processName != null and processName != ''">
  55. AND pd.process_name LIKE CONCAT('%', #{processName}, '%')
  56. </if>
  57. <if test="formFilters != null and formFilters.size() > 0">
  58. <foreach collection="formFilters" index="key" item="value">
  59. <if test="value != null and value != ''">
  60. AND pi.form_data LIKE CONCAT('"%', #{key}, '%"%', #{value}, '%')
  61. </if>
  62. </foreach>
  63. </if>
  64. <if test="currentNodeId != null and currentNodeId != ''">
  65. AND pi.current_node_id = #{currentNodeId}
  66. </if>
  67. ORDER BY t.create_time ASC
  68. </select>
  69. <select id="selectHandledList" resultMap="BaseResultMap">
  70. SELECT DISTINCT t.*, pi.title as instance_title, pi.instance_no as instance_no, pi.form_data as form_data,
  71. pd.process_name as process_name, pd.form_schema as form_schema
  72. FROM bpm_approval_task t
  73. INNER JOIN bpm_process_instance pi ON t.instance_id = pi.id
  74. LEFT JOIN bpm_process_definition pd ON pi.process_definition_id = pd.id
  75. INNER JOIN bpm_approval_record r ON r.task_id = t.id AND r.operator_id = #{assigneeId}
  76. WHERE t.deleted = 0
  77. AND t.task_status IN (1, 2, 4)
  78. AND t.node_type != 'cc'
  79. <if test="processName != null and processName != ''">
  80. AND pd.process_name LIKE CONCAT('%', #{processName}, '%')
  81. </if>
  82. ORDER BY t.handle_time DESC
  83. </select>
  84. <select id="selectCcList" resultMap="BaseResultMap">
  85. SELECT t.*, pi.title as instance_title, pi.instance_no as instance_no, pi.form_data as form_data,
  86. pd.process_name as process_name, pd.form_schema as form_schema
  87. FROM bpm_approval_task t
  88. INNER JOIN bpm_process_instance pi ON t.instance_id = pi.id
  89. LEFT JOIN bpm_process_definition pd ON pi.process_definition_id = pd.id
  90. WHERE t.deleted = 0
  91. AND t.node_type = 'cc'
  92. AND (
  93. <choose>
  94. <when test="assigneeType == 'ROLE'">
  95. (t.assignee_type = 'ROLE' AND t.assignee_id = #{assigneeId})
  96. </when>
  97. <when test="roleIds != null and roleIds.size() > 0">
  98. ((t.assignee_type != 'ROLE' AND t.assignee_id = #{assigneeId})
  99. OR (t.assignee_type = 'ROLE' AND t.assignee_id IN
  100. <foreach collection="roleIds" item="roleId" open="(" close=")" separator=",">#{roleId}</foreach>))
  101. </when>
  102. <otherwise>
  103. (t.assignee_id = #{assigneeId} AND (t.assignee_type IS NULL OR t.assignee_type = '' OR t.assignee_type = 'USER'))
  104. </otherwise>
  105. </choose>
  106. )
  107. <if test="processName != null and processName != ''">
  108. AND pd.process_name LIKE CONCAT('%', #{processName}, '%')
  109. </if>
  110. ORDER BY t.create_time DESC
  111. </select>
  112. <select id="selectTodoCount" resultType="java.lang.Long">
  113. SELECT COUNT(*)
  114. FROM bpm_approval_task t
  115. INNER JOIN bpm_process_instance pi ON t.instance_id = pi.id
  116. WHERE t.deleted = 0
  117. AND t.task_status = 0
  118. AND t.node_type != 'cc'
  119. AND pi.status IN (0, 1, 4)
  120. AND (
  121. <choose>
  122. <when test="assigneeType == 'ROLE'">
  123. (t.assignee_type = 'ROLE' AND t.assignee_id = #{assigneeId})
  124. </when>
  125. <when test="roleIds != null and roleIds.size() > 0">
  126. ((t.assignee_type != 'ROLE' AND t.assignee_id = #{assigneeId})
  127. OR (t.assignee_type = 'ROLE' AND t.assignee_id IN
  128. <foreach collection="roleIds" item="roleId" open="(" close=")" separator=",">#{roleId}</foreach>))
  129. </when>
  130. <otherwise>
  131. (t.assignee_id = #{assigneeId} AND (t.assignee_type IS NULL OR t.assignee_type = '' OR t.assignee_type = 'USER'))
  132. </otherwise>
  133. </choose>
  134. )
  135. </select>
  136. </mapper>