| | |
| | | </select> |
| | | <select id="selectAgingTotal" resultType="com.by4cloud.platformx.business.vo.AgingVo"> |
| | | SELECT |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | COALESCE(SUM( |
| | | COALESCE ( |
| | | sum( |
| | | CASE |
| | | |
| | | WHEN cps.payment_status = '0' THEN |
| | | cps.planned_amount |
| | | WHEN cps.payment_status = '1' THEN |
| | | cps.planned_amount - cps.actual_amount ELSE 0 |
| | | END |
| | | ), 0) AS total_amount |
| | | ), |
| | | 0 |
| | | ) AS total_amount |
| | | FROM |
| | | ( |
| | | SELECT '0-30天' AS overdue_range, 0 AS min_days, 30 AS max_days UNION ALL |
| | | SELECT '31-60天', 31, 60 UNION ALL |
| | | SELECT '61-90天', 61, 90 UNION ALL |
| | | SELECT '91-180天', 91, 180 UNION ALL |
| | | SELECT '181-365天', 181, 365 UNION ALL |
| | | SELECT '1年以上', 366, 999999 |
| | | ) AS ranges |
| | | LEFT JOIN |
| | | contract_payment_schedule cps ON |
| | | cps.del_flag = '0' |
| | | AND cps.payment_status NOT IN ('2', '3') |
| | | AND cps.effective_end_date < current_date |
| | | AND DATEDIFF(current_date, cps.effective_end_date) BETWEEN ranges.min_days AND ranges.max_days |
| | | LEFT JOIN |
| | | contract c ON cps.contract_id = c.id |
| | | LEFT JOIN |
| | | business_customer bc ON c.party_a_id = bc.id |
| | | where |
| | | c.del_flag = '0' |
| | | SELECT |
| | | 1 sort, |
| | | '0-30天' AS overdue_range, |
| | | 0 AS min_days, |
| | | 30 AS max_days UNION ALL |
| | | SELECT |
| | | 2 sort, |
| | | '31-60天', |
| | | 31, |
| | | 60 UNION ALL |
| | | SELECT |
| | | 3 sort, |
| | | '61-90天', |
| | | 61, |
| | | 90 UNION ALL |
| | | SELECT |
| | | 4 sort, |
| | | '91-180天', |
| | | 91, |
| | | 180 UNION ALL |
| | | SELECT |
| | | 5 sort, |
| | | '181-365天', |
| | | 181, |
| | | 365 UNION ALL |
| | | SELECT |
| | | 6 sort, |
| | | '1年以上', |
| | | 366, |
| | | 999999 |
| | | ) ranges |
| | | LEFT JOIN contract_payment_schedule cps ON cps.del_flag = '0' |
| | | AND cps.payment_status NOT IN ( '2', '3' ) |
| | | AND cps.effective_end_date < CURRENT_DATE |
| | | AND DATEDIFF( CURRENT_DATE, cps.effective_end_date ) BETWEEN ranges.min_days |
| | | AND ranges.max_days |
| | | LEFT JOIN contract c ON cps.contract_id = c.id |
| | | LEFT JOIN business_customer bc ON c.party_a_id = bc.id |
| | | WHERE |
| | | c.del_flag = '0' |
| | | <if test="queryDTO.companyId !=null"> |
| | | and c.party_a_id = #{queryDTO.companyId} |
| | | and c.comp_id = #{queryDTO.companyId} |
| | | </if> |
| | | <if test="queryDTO.areaId !=null"> |
| | | and bc.area_id = #{queryDTO.areaId} |
| | |
| | | and bc.class_id = #{queryDTO.classId} |
| | | </if> |
| | | GROUP BY |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | ranges.min_days |
| | | ORDER BY |
| | | ranges.min_days; |
| | | ranges.min_days |
| | | </select> |
| | | <select id="selectAgingCompanyShip" resultType="com.by4cloud.platformx.business.vo.AgingCompanyVo"> |
| | | SELECT |
| | |
| | | </select> |
| | | <select id="selectAgingTotalShip" resultType="com.by4cloud.platformx.business.vo.AgingVo"> |
| | | SELECT |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | COALESCE ( |
| | | sum(amount-paid_amount), |
| | |
| | | ) AS total_amount |
| | | FROM |
| | | ( |
| | | SELECT |
| | | '0-30天' AS overdue_range, |
| | | 0 AS min_days, |
| | | 30 AS max_days UNION ALL |
| | | SELECT |
| | | '31-60天', |
| | | 31, |
| | | 60 UNION ALL |
| | | SELECT |
| | | '61-90天', |
| | | 61, |
| | | 90 UNION ALL |
| | | SELECT |
| | | '91-180天', |
| | | 91, |
| | | 180 UNION ALL |
| | | SELECT |
| | | '181-365天', |
| | | 181, |
| | | 365 UNION ALL |
| | | SELECT |
| | | '1年以上', |
| | | 366, |
| | | 999999 |
| | | ) ranges |
| | | SELECT |
| | | 1 sort, |
| | | '0-30天' AS overdue_range, |
| | | 0 AS min_days, |
| | | 30 AS max_days UNION ALL |
| | | SELECT |
| | | 2 sort, |
| | | '31-60天', |
| | | 31, |
| | | 60 UNION ALL |
| | | SELECT |
| | | 3 sort, |
| | | '61-90天', |
| | | 61, |
| | | 90 UNION ALL |
| | | SELECT |
| | | 4 sort, |
| | | '91-180天', |
| | | 91, |
| | | 180 UNION ALL |
| | | SELECT |
| | | 5 sort, |
| | | '181-365天', |
| | | 181, |
| | | 365 UNION ALL |
| | | SELECT |
| | | 6 sort, |
| | | '1年以上', |
| | | 366, |
| | | 999999 |
| | | ) ranges |
| | | LEFT JOIN contract c ON c.del_flag = '0' |
| | | AND DATEDIFF( |
| | | CURRENT_DATE, |
| | |
| | | </if> |
| | | AND EXISTS ( SELECT 1 FROM contract_out_bound cob WHERE cob.del_flag = '0' AND cob.contract_id = c.id ) |
| | | GROUP BY |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | ranges.min_days |
| | | ORDER BY |
| | |
| | | </select> |
| | | <select id="selectAgingTotalInvoice" resultType="com.by4cloud.platformx.business.vo.AgingVo"> |
| | | SELECT |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | COALESCE ( |
| | | sum(amount-paid_amount), |
| | |
| | | ) AS total_amount |
| | | FROM |
| | | ( |
| | | SELECT |
| | | '0-30天' AS overdue_range, |
| | | 0 AS min_days, |
| | | 30 AS max_days UNION ALL |
| | | SELECT |
| | | '31-60天', |
| | | 31, |
| | | 60 UNION ALL |
| | | SELECT |
| | | '61-90天', |
| | | 61, |
| | | 90 UNION ALL |
| | | SELECT |
| | | '91-180天', |
| | | 91, |
| | | 180 UNION ALL |
| | | SELECT |
| | | '181-365天', |
| | | 181, |
| | | 365 UNION ALL |
| | | SELECT |
| | | '1年以上', |
| | | 366, |
| | | 999999 |
| | | ) ranges |
| | | SELECT |
| | | 1 sort, |
| | | '0-30天' AS overdue_range, |
| | | 0 AS min_days, |
| | | 30 AS max_days UNION ALL |
| | | SELECT |
| | | 2 sort, |
| | | '31-60天', |
| | | 31, |
| | | 60 UNION ALL |
| | | SELECT |
| | | 3 sort, |
| | | '61-90天', |
| | | 61, |
| | | 90 UNION ALL |
| | | SELECT |
| | | 4 sort, |
| | | '91-180天', |
| | | 91, |
| | | 180 UNION ALL |
| | | SELECT |
| | | 5 sort, |
| | | '181-365天', |
| | | 181, |
| | | 365 UNION ALL |
| | | SELECT |
| | | 6 sort, |
| | | '1年以上', |
| | | 366, |
| | | 999999 |
| | | ) ranges |
| | | LEFT JOIN contract c ON c.del_flag = '0' |
| | | AND DATEDIFF( |
| | | CURRENT_DATE, |
| | |
| | | </if> |
| | | AND EXISTS ( SELECT 1 FROM contract_invoice ci WHERE ci.del_flag = '0' AND ci.contract_id = c.id) |
| | | GROUP BY |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | ranges.min_days |
| | | ORDER BY |
| | |
| | | </select> |
| | | <select id="selectAgingTotalScale" resultType="com.by4cloud.platformx.business.vo.AgingVo"> |
| | | SELECT |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | COALESCE ( |
| | | SUM( |
| | |
| | | FROM |
| | | ( |
| | | SELECT |
| | | 1 sort, |
| | | '0-30天' AS overdue_range, |
| | | 0 AS min_days, |
| | | 30 AS max_days UNION ALL |
| | | SELECT |
| | | 2 sort, |
| | | '31-60天', |
| | | 31, |
| | | 60 UNION ALL |
| | | SELECT |
| | | 3 sort, |
| | | '61-90天', |
| | | 61, |
| | | 90 UNION ALL |
| | | SELECT |
| | | 4 sort, |
| | | '91-180天', |
| | | 91, |
| | | 180 UNION ALL |
| | | SELECT |
| | | 5 sort, |
| | | '181-365天', |
| | | 181, |
| | | 365 UNION ALL |
| | | SELECT |
| | | 6 sort, |
| | | '1年以上', |
| | | 366, |
| | | 999999 |
| | |
| | | and c.party_b_id = #{queryDTO.companyId} |
| | | </if> |
| | | GROUP BY |
| | | ranges.sort, |
| | | ranges.overdue_range, |
| | | ranges.min_days |
| | | ORDER BY |