From 5badb0e02901c3ea5570fdb9cf497aec7e48fd65 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期四, 18 六月 2026 17:00:23 +0800
Subject: [PATCH] feat:新增账龄行业、地区分析账龄分析
---
platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 200 insertions(+), 1 deletions(-)
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml
index 64c9b87..94fd082 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml
@@ -16,7 +16,7 @@
<result property="paymentRatio" column="payment_ratio"/>
<result property="paymentStatus" column="payment_status"/>
<result property="plannedAmount" column="planned_amount"/>
- <result property="plannedPaymentDate" column="planned_payment_date"/>
+<!-- <result property="plannedPaymentDate" column="planned_payment_date"/>-->
<result property="remark" column="remark"/>
<result property="stageName" column="stage_name"/>
<result property="stageOrder" column="stage_order"/>
@@ -28,4 +28,203 @@
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
+ <select id="selectAgingCompany" resultType="com.by4cloud.platformx.business.vo.AgingCompanyVo">
+ SELECT
+ c.party_a_id companyId,
+ cps.comp_id
+ FROM
+ contract_payment_schedule cps,
+ contract c
+ WHERE
+ cps.contract_id = c.id
+ AND cps.del_flag = '0'
+ AND c.del_flag = '0'
+ AND cps.effective_end_date is not null
+ AND cps.effective_end_date < current_date
+ AND DATEDIFF(current_date, cps.effective_end_date)>0
+ AND cps.payment_status <> '2'
+ AND cps.payment_status <> 3
+ GROUP BY
+ c.party_a_id,
+ cps.comp_id
+ </select>
+ <select id="selectAgingTotal" resultType="com.by4cloud.platformx.business.vo.AgingVo">
+ SELECT
+ ranges.overdue_range,
+ 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
+ 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'
+ <if test="queryDTO.companyId !=null">
+ and c.party_a_id = #{queryDTO.companyId}
+ </if>
+ <if test="queryDTO.areaId !=null">
+ and bc.area_id = #{queryDTO.areaId}
+ </if>
+ <if test="queryDTO.industryId !=null">
+ and bc.industry_id = #{queryDTO.industryId}
+ </if>
+ GROUP BY
+ ranges.overdue_range,
+ ranges.min_days
+ ORDER BY
+ ranges.min_days;
+ </select>
+ <select id="selectAgingCompanyShip" resultType="com.by4cloud.platformx.business.vo.AgingCompanyVo">
+ SELECT
+ c.party_a_id companyId,
+ c.comp_id
+ FROM
+ contract c
+ WHERE
+ c.del_flag = '0'
+ AND c.amount > c.paid_amount
+ AND EXISTS ( SELECT 1 FROM contract_out_bound cob WHERE cob.del_flag = '0' AND cob.contract_id = c.id )
+ GROUP BY
+ c.party_a_id,
+ c.comp_id;
+ </select>
+ <select id="selectAgingCompanyInvoice" resultType="com.by4cloud.platformx.business.vo.AgingCompanyVo">
+ SELECT
+ c.party_a_id companyId,
+ c.comp_id
+ FROM
+ contract c
+ WHERE
+ c.del_flag = '0'
+ AND c.amount > c.paid_amount
+ AND EXISTS ( SELECT 1 FROM contract_invoice ci WHERE ci.del_flag = '0' AND ci.contract_id = c.id )
+ GROUP BY
+ c.party_a_id,
+ c.comp_id;
+ </select>
+ <select id="selectAgingTotalShip" resultType="com.by4cloud.platformx.business.vo.AgingVo">
+ SELECT
+ ranges.overdue_range,
+ COALESCE (
+ sum(amount-paid_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
+ ) ranges
+ LEFT JOIN contract c ON c.del_flag = '0'
+ AND DATEDIFF(
+ CURRENT_DATE,
+ ( SELECT max( out_bound_time ) FROM contract_out_bound cob WHERE cob.del_flag = '0' AND cob.contract_id = c.id ORDER BY out_bound_time ASC )) BETWEEN ranges.min_days
+ AND ranges.max_days
+ WHERE
+ c.del_flag = '0'
+ AND c.amount > c.paid_amount
+ <if test="queryDTO.companyId !=null">
+ and c.party_a_id = #{queryDTO.companyId}
+ </if>
+ AND EXISTS ( SELECT 1 FROM contract_out_bound cob WHERE cob.del_flag = '0' AND cob.contract_id = c.id )
+ GROUP BY
+ ranges.overdue_range,
+ ranges.min_days
+ ORDER BY
+ ranges.min_days;
+ </select>
+ <select id="selectAgingTotalInvoice" resultType="com.by4cloud.platformx.business.vo.AgingVo">
+ SELECT
+ ranges.overdue_range,
+ COALESCE (
+ sum(amount-paid_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
+ ) ranges
+ LEFT JOIN contract c ON c.del_flag = '0'
+ AND DATEDIFF(
+ CURRENT_DATE,
+ ( SELECT max( out_bound_time ) FROM contract_out_bound cob WHERE cob.del_flag = '0' AND cob.contract_id = c.id ORDER BY out_bound_time ASC )) BETWEEN ranges.min_days
+ AND ranges.max_days
+ WHERE
+ c.del_flag = '0'
+ AND c.amount > c.paid_amount
+ <if test="queryDTO.companyId !=null">
+ and c.party_a_id = #{queryDTO.companyId}
+ </if>
+ AND EXISTS ( SELECT 1 FROM contract_invoice ci WHERE ci.del_flag = '0' AND ci.contract_id = c.id)
+ GROUP BY
+ ranges.overdue_range,
+ ranges.min_days
+ ORDER BY
+ ranges.min_days;
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1