ApprovalTaskMapper.xml 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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="assignee_id" property="assigneeId"/>
  11. <result column="assignee_type" property="assigneeType"/>
  12. <result column="task_status" property="taskStatus"/>
  13. <result column="approval_result" property="approvalResult"/>
  14. <result column="approval_comment" property="approvalComment"/>
  15. <result column="attachment_urls" property="attachmentUrls"/>
  16. <result column="timeout_time" property="timeoutTime"/>
  17. <result column="timeout_action" property="timeoutAction"/>
  18. <result column="create_time" property="createTime"/>
  19. <result column="handle_time" property="handleTime"/>
  20. <result column="version" property="version"/>
  21. <result column="deleted" property="deleted"/>
  22. <result column="process_name" property="processName"/>
  23. <result column="instance_title" property="instanceTitle"/>
  24. <result column="instance_no" property="instanceNo"/>
  25. <result column="form_data" property="formData"/>
  26. <result column="form_schema" property="formSchema"/>
  27. </resultMap>
  28. <select id="selectTodoList" resultMap="BaseResultMap">
  29. SELECT t.*, pi.title as instance_title, pi.instance_no as instance_no, pi.form_data as form_data,
  30. pd.process_name as process_name, pd.form_schema as form_schema
  31. FROM bpm_approval_task t
  32. INNER JOIN bpm_process_instance pi ON t.instance_id = pi.id
  33. LEFT JOIN bpm_process_definition pd ON pi.process_definition_id = pd.id
  34. WHERE t.deleted = 0
  35. AND t.task_status = 0
  36. AND t.node_type != 'cc'
  37. AND (
  38. <choose>
  39. <when test="assigneeType == 'ROLE'">
  40. (t.assignee_type = 'ROLE' AND t.assignee_id = #{assigneeId})
  41. </when>
  42. <when test="roleIds != null and roleIds.size() > 0">
  43. ((t.assignee_type != 'ROLE' AND t.assignee_id = #{assigneeId})
  44. OR (t.assignee_type = 'ROLE' AND t.assignee_id IN
  45. <foreach collection="roleIds" item="roleId" open="(" close=")" separator=",">#{roleId}</foreach>))
  46. </when>
  47. <otherwise>
  48. (t.assignee_id = #{assigneeId} AND (t.assignee_type IS NULL OR t.assignee_type = '' OR t.assignee_type = 'USER'))
  49. </otherwise>
  50. </choose>
  51. )
  52. <if test="processName != null and processName != ''">
  53. AND pd.process_name LIKE CONCAT('%', #{processName}, '%')
  54. </if>
  55. <if test="formFilters != null and formFilters.size() > 0">
  56. <foreach collection="formFilters" index="key" item="value">
  57. <if test="value != null and value != ''">
  58. AND pi.form_data LIKE CONCAT('"%', #{key}, '%"%', #{value}, '%')
  59. </if>
  60. </foreach>
  61. </if>
  62. ORDER BY t.create_time ASC
  63. </select>
  64. <select id="selectHandledList" resultMap="BaseResultMap">
  65. SELECT DISTINCT t.*, pi.title as instance_title, pi.instance_no as instance_no, pd.process_name as process_name
  66. FROM bpm_approval_task t
  67. INNER JOIN bpm_process_instance pi ON t.instance_id = pi.id
  68. LEFT JOIN bpm_process_definition pd ON pi.process_definition_id = pd.id
  69. INNER JOIN bpm_approval_record r ON r.task_id = t.id AND r.operator_id = #{assigneeId}
  70. WHERE t.deleted = 0
  71. AND t.task_status IN (1, 2, 4)
  72. AND t.node_type != 'cc'
  73. <if test="processName != null and processName != ''">
  74. AND pd.process_name LIKE CONCAT('%', #{processName}, '%')
  75. </if>
  76. ORDER BY t.handle_time DESC
  77. </select>
  78. <select id="selectCcList" resultMap="BaseResultMap">
  79. SELECT t.*, pi.title as instance_title, pi.instance_no as instance_no, pd.process_name as process_name
  80. FROM bpm_approval_task t
  81. INNER JOIN bpm_process_instance pi ON t.instance_id = pi.id
  82. LEFT JOIN bpm_process_definition pd ON pi.process_definition_id = pd.id
  83. WHERE t.deleted = 0
  84. AND t.node_type = 'cc'
  85. AND (
  86. <choose>
  87. <when test="assigneeType == 'ROLE'">
  88. (t.assignee_type = 'ROLE' AND t.assignee_id = #{assigneeId})
  89. </when>
  90. <when test="roleIds != null and roleIds.size() > 0">
  91. ((t.assignee_type != 'ROLE' AND t.assignee_id = #{assigneeId})
  92. OR (t.assignee_type = 'ROLE' AND t.assignee_id IN
  93. <foreach collection="roleIds" item="roleId" open="(" close=")" separator=",">#{roleId}</foreach>))
  94. </when>
  95. <otherwise>
  96. (t.assignee_id = #{assigneeId} AND (t.assignee_type IS NULL OR t.assignee_type = '' OR t.assignee_type = 'USER'))
  97. </otherwise>
  98. </choose>
  99. )
  100. <if test="processName != null and processName != ''">
  101. AND pd.process_name LIKE CONCAT('%', #{processName}, '%')
  102. </if>
  103. ORDER BY t.create_time DESC
  104. </select>
  105. </mapper>