|
3 | 3 |
|
4 | 4 | <mapper namespace="cn.cordys.crm.approval.mapper.ExtApprovalTaskMapper"> |
5 | 5 |
|
| 6 | + <select id="selectPendingTasks" resultType="cn.cordys.crm.approval.dto.response.ApprovalTodoItemResponse"> |
| 7 | + SELECT |
| 8 | + ai.resource_id AS resourceId, |
| 9 | + COALESCE(oq.name, c.name, so.name, ci.name, '') AS resourceName, |
| 10 | + UPPER(ai.type) AS resourceType, |
| 11 | + u.name AS applicant, |
| 12 | + ai.submit_time AS submitTime, |
| 13 | + CASE WHEN at.action IS NULL OR at.action = '' THEN at.status ELSE at.action END AS approvalOperation, |
| 14 | + ai.approval_status AS dataResult, |
| 15 | + at.id AS approvalTaskId, |
| 16 | + at.node_id AS approvalNodeId, |
| 17 | + at.instance_id AS approvalInstanceId, |
| 18 | + at.approver_id AS approvalId, |
| 19 | + afv.flow_id AS approvalFlowId, |
| 20 | + afv.id AS approvalFlowVersionId |
| 21 | + FROM approval_task at |
| 22 | + INNER JOIN approval_instance ai ON ai.id = at.instance_id |
| 23 | + INNER JOIN approval_flow_version afv ON afv.id = ai.flow_version_id |
| 24 | + LEFT JOIN sys_user u ON u.id = ai.submitter_id |
| 25 | + LEFT JOIN opportunity_quotation oq ON ai.resource_id = oq.id AND ai.type IN ('quotation', 'quote') |
| 26 | + LEFT JOIN contract c ON ai.resource_id = c.id AND ai.type = 'contract' |
| 27 | + LEFT JOIN sales_order so ON ai.resource_id = so.id AND ai.type = 'order' |
| 28 | + LEFT JOIN contract_invoice ci ON ai.resource_id = ci.id AND ai.type = 'invoice' |
| 29 | + WHERE at.approver_id = #{approverId} |
| 30 | + AND at.status = #{pendingStatus} |
| 31 | + <if test="resourceType != null and resourceType != ''"> |
| 32 | + AND ai.type = #{resourceType} |
| 33 | + </if> |
| 34 | + <if test="resourceName != null and resourceName != ''"> |
| 35 | + AND COALESCE(oq.name, c.name, so.name, ci.name) LIKE CONCAT('%', #{resourceName}, '%') |
| 36 | + </if> |
| 37 | + ORDER BY at.create_time DESC, at.id DESC |
| 38 | + </select> |
| 39 | + |
| 40 | + <select id="selectProcessedTasks" resultType="cn.cordys.crm.approval.dto.response.ApprovalTodoItemResponse"> |
| 41 | + SELECT |
| 42 | + ai.resource_id AS resourceId, |
| 43 | + COALESCE(oq.name, c.name, so.name, ci.name, '') AS resourceName, |
| 44 | + UPPER(ai.type) AS resourceType, |
| 45 | + u.name AS applicant, |
| 46 | + ai.submit_time AS submitTime, |
| 47 | + CASE WHEN at.action IS NULL OR at.action = '' THEN at.status ELSE at.action END AS approvalOperation, |
| 48 | + ai.approval_status AS dataResult, |
| 49 | + at.id AS approvalTaskId, |
| 50 | + at.node_id AS approvalNodeId, |
| 51 | + at.instance_id AS approvalInstanceId, |
| 52 | + at.approver_id AS approvalId, |
| 53 | + afv.flow_id AS approvalFlowId, |
| 54 | + afv.id AS approvalFlowVersionId |
| 55 | + FROM approval_task at |
| 56 | + INNER JOIN approval_instance ai ON ai.id = at.instance_id |
| 57 | + INNER JOIN approval_flow_version afv ON afv.id = ai.flow_version_id |
| 58 | + LEFT JOIN sys_user u ON u.id = ai.submitter_id |
| 59 | + LEFT JOIN opportunity_quotation oq ON ai.resource_id = oq.id AND ai.type IN ('quotation', 'quote') |
| 60 | + LEFT JOIN contract c ON ai.resource_id = c.id AND ai.type = 'contract' |
| 61 | + LEFT JOIN sales_order so ON ai.resource_id = so.id AND ai.type = 'order' |
| 62 | + LEFT JOIN contract_invoice ci ON ai.resource_id = ci.id AND ai.type = 'invoice' |
| 63 | + WHERE at.approver_id = #{approverId} |
| 64 | + AND at.status != #{pendingStatus} |
| 65 | + <if test="keyword != null and keyword != ''"> |
| 66 | + AND COALESCE(oq.name, c.name, so.name, ci.name) LIKE CONCAT('%', #{keyword}, '%') |
| 67 | + </if> |
| 68 | + ORDER BY at.update_time DESC, at.id DESC |
| 69 | + </select> |
| 70 | + |
| 71 | + <select id="selectInitiatedTasks" resultType="cn.cordys.crm.approval.dto.response.ApprovalTodoItemResponse"> |
| 72 | + SELECT |
| 73 | + ai.resource_id AS resourceId, |
| 74 | + COALESCE(oq.name, c.name, so.name, ci.name, '') AS resourceName, |
| 75 | + UPPER(ai.type) AS resourceType, |
| 76 | + u.name AS applicant, |
| 77 | + ai.submit_time AS submitTime, |
| 78 | + ai.approval_status AS approvalOperation, |
| 79 | + ai.approval_status AS dataResult, |
| 80 | + NULL AS approvalTaskId, |
| 81 | + ai.current_node_id AS approvalNodeId, |
| 82 | + ai.id AS approvalInstanceId, |
| 83 | + ai.submitter_id AS approvalId, |
| 84 | + afv.flow_id AS approvalFlowId, |
| 85 | + afv.id AS approvalFlowVersionId |
| 86 | + FROM approval_instance ai |
| 87 | + INNER JOIN approval_flow_version afv ON afv.id = ai.flow_version_id |
| 88 | + LEFT JOIN sys_user u ON u.id = ai.submitter_id |
| 89 | + LEFT JOIN opportunity_quotation oq ON ai.resource_id = oq.id AND ai.type IN ('quotation', 'quote') |
| 90 | + LEFT JOIN contract c ON ai.resource_id = c.id AND ai.type = 'contract' |
| 91 | + LEFT JOIN sales_order so ON ai.resource_id = so.id AND ai.type = 'order' |
| 92 | + LEFT JOIN contract_invoice ci ON ai.resource_id = ci.id AND ai.type = 'invoice' |
| 93 | + WHERE ai.submitter_id = #{submitterId} |
| 94 | + <if test="keyword != null and keyword != ''"> |
| 95 | + AND COALESCE(oq.name, c.name, so.name, ci.name) LIKE CONCAT('%', #{keyword}, '%') |
| 96 | + </if> |
| 97 | + ORDER BY ai.update_time DESC, ai.id DESC |
| 98 | + </select> |
| 99 | + |
| 100 | + <select id="selectCcTasks" resultType="cn.cordys.crm.approval.dto.response.ApprovalTodoItemResponse"> |
| 101 | + SELECT |
| 102 | + ai.resource_id AS resourceId, |
| 103 | + COALESCE(oq.name, c.name, so.name, ci.name, '') AS resourceName, |
| 104 | + UPPER(ai.type) AS resourceType, |
| 105 | + u.name AS applicant, |
| 106 | + ai.submit_time AS submitTime, |
| 107 | + CASE WHEN at.action IS NULL OR at.action = '' THEN at.status ELSE at.action END AS approvalOperation, |
| 108 | + ai.approval_status AS dataResult, |
| 109 | + at.id AS approvalTaskId, |
| 110 | + at.node_id AS approvalNodeId, |
| 111 | + at.instance_id AS approvalInstanceId, |
| 112 | + at.approver_id AS approvalId, |
| 113 | + afv.flow_id AS approvalFlowId, |
| 114 | + afv.id AS approvalFlowVersionId |
| 115 | + FROM approval_task at |
| 116 | + INNER JOIN approval_instance ai ON ai.id = at.instance_id |
| 117 | + INNER JOIN approval_flow_version afv ON afv.id = ai.flow_version_id |
| 118 | + LEFT JOIN sys_user u ON u.id = ai.submitter_id |
| 119 | + LEFT JOIN opportunity_quotation oq ON ai.resource_id = oq.id AND ai.type IN ('quotation', 'quote') |
| 120 | + LEFT JOIN contract c ON ai.resource_id = c.id AND ai.type = 'contract' |
| 121 | + LEFT JOIN sales_order so ON ai.resource_id = so.id AND ai.type = 'order' |
| 122 | + LEFT JOIN contract_invoice ci ON ai.resource_id = ci.id AND ai.type = 'invoice' |
| 123 | + WHERE at.approver_id = #{approverId} |
| 124 | + AND at.type IN ('cc', 'CC') |
| 125 | + <if test="keyword != null and keyword != ''"> |
| 126 | + AND COALESCE(oq.name, c.name, so.name, ci.name) LIKE CONCAT('%', #{keyword}, '%') |
| 127 | + </if> |
| 128 | + ORDER BY at.update_time DESC, at.id DESC |
| 129 | + </select> |
| 130 | + |
6 | 131 | <select id="countPendingByApprover" resultType="cn.cordys.crm.approval.dto.response.ApprovalTodoCountResponse"> |
7 | 132 | SELECT |
8 | 133 | IFNULL(SUM(t.cnt), 0) AS total, |
|
0 commit comments