From 279366f14d6e1361b6caf7c05b74f0cea4227a36 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期五, 27 三月 2026 10:53:28 +0800
Subject: [PATCH] 新增推送
---
service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml | 185 +++++++++++++++++++++++++++++-----------------
1 files changed, 116 insertions(+), 69 deletions(-)
diff --git a/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml b/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml
index 86fc6af..69350f7 100644
--- a/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml
+++ b/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml
@@ -53,38 +53,25 @@
<result property="systemNo" column="system_no" />
<result property="billName" column="bill_name" />
<result property="customerName" column="customer_name" />
- <result property="payee" column="payee" />
+
<result property="responsiblePerson" column="responsible_person" />
<result property="responsibleLeader" column="responsible_leader" />
<result property="settlementMethod" column="settlement_method" />
<result property="businessType" column="business_type" />
<result property="promotionRequirement" column="promotion_requirement" />
- <result property="isInternalSettlement" column="is_internal_settlement" />
- <result property="internalSettlementUnit" column="internal_settlement_unit" />
- <result property="documentCount" column="document_count" />
<result property="totalAmount" column="total_amount" />
<result property="currency" column="currency" />
- <result property="discountAmount" column="discount_amount" />
<result property="receivedAmount" column="received_amount" />
<result property="pendingAmount" column="pending_amount" />
- <result property="exchangeRate" column="exchange_rate" />
- <result property="cnyAmount" column="cny_amount" />
- <result property="periodType" column="period_type" />
- <result property="businessStartDate" column="business_start_date" />
- <result property="businessEndDate" column="business_end_date" />
+
+
<result property="billingStartDate" column="billing_start_date" />
<result property="billingEndDate" column="billing_end_date" />
- <result property="billGenerateDate" column="bill_generate_date" />
- <result property="billSendDate" column="bill_send_date" />
+
<result property="billDueDate" column="bill_due_date" />
- <result property="status" column="status" />
- <result property="remark" column="remark" />
- <result property="createBy" column="create_by" />
- <result property="createTime" column="create_time" />
- <result property="updateBy" column="update_by" />
- <result property="updateTime" column="update_time" />
+
<result property="dueIn30Days" column="due_in_30_days" />
- <result property="overdueAmount" column="overdue_amount" />
+
<result property="overdue1To30Days" column="overdue_1_to_30_days" />
<result property="overdue31To60Days" column="overdue_31_to_60_days" />
<result property="overdue61To90Days" column="overdue_61_to_90_days" />
@@ -401,9 +388,37 @@
<!-- 鏌ヨ搴旀敹璐﹀崟璐﹂緞鍒嗘瀽鍒楄〃 -->
<select id="selectReceivableBillAgingAnalysisList" parameterType="com.ruoyi.cwgl.domain.ReceivableBillManagement" resultMap="ReceivableBillAgingAnalysisVoResult">
- <include refid="selectReceivableBillManagementVo"/>
+ SELECT
+ thisTab.*,
+ rib_latest.latest_invoice_time as latestInvoiceTime,
+ COALESCE(rib_total.total_invoice_amount, 0) as totalInvoiceAmount,
+ CASE
+ WHEN thisTab.pending_amount > COALESCE(rib_total.total_invoice_amount, 0)
+ THEN thisTab.pending_amount - COALESCE(rib_total.total_invoice_amount, 0)
+ ELSE 0
+ END as unInvoicedAmount
+ FROM receivable_bill_management thisTab
+
+ -- 鑾峰彇鏈�鏂板紑绁ㄦ棩鏈�
+ LEFT JOIN (
+ SELECT head_id, MAX(invoice_time) as latest_invoice_time
+ FROM receivable_invoice_business
+ WHERE status = 1
+ GROUP BY head_id
+ ) rib_latest ON thisTab.id = rib_latest.head_id
+
+ -- 鑾峰彇寮�绁ㄦ�婚噾棰�
+ LEFT JOIN (
+ SELECT head_id, SUM(invoicing_amount) as total_invoice_amount
+ FROM receivable_invoice_business
+ WHERE status = 1
+ GROUP BY head_id
+ ) rib_total ON thisTab.id = rib_total.head_id
+
<where>
- <include refid="whereCondition"/>
+ <if test="systemNo != null and systemNo != ''"> and thisTab.system_no = #{systemNo}</if>
+ <if test="customerName != null and customerName != ''"> and thisTab.customer_name like concat('%', #{customerName}, '%')</if>
+
</where>
ORDER BY customer_name, bill_due_date
</select>
@@ -482,58 +497,90 @@
<!-- 鏌ヨ搴旀敹璐﹀崟璐︽鍒嗘瀽鍒楄〃 -->
<select id="selectReceivableBillAccountAnalysisList" parameterType="com.ruoyi.cwgl.domain.ReceivableBillManagement" resultType="com.ruoyi.cwgl.domain.vo.ReceivableBillAccountAnalysisVo">
SELECT
- id,
- system_no as systemNo,
- bill_name as billName,
- customer_name as customerName,
- payee,
- responsible_person as responsiblePerson,
- responsible_leader as responsibleLeader,
- settlement_method as settlementMethod,
- business_type as businessType,
- promotion_requirement as promotionRequirement,
- settlement_category as settlementCategory,
- settlement_period as settlementPeriod,
- total_amount as totalAmount,
- received_amount as receivedAmount,
- pending_amount as pendingAmount,
+ thisTab.id,
+ thisTab.system_no as systemNo,
+ thisTab.bill_name as billName,
+ thisTab.customer_name as customerName,
+ thisTab.payee,
+ thisTab.responsible_person as responsiblePerson,
+ thisTab.responsible_leader as responsibleLeader,
+ thisTab.settlement_method as settlementMethod,
+ thisTab.business_type as businessType,
+ thisTab.promotion_requirement as promotionRequirement,
+ thisTab.settlement_category as settlementCategory,
+ thisTab.settlement_period as settlementPeriod,
+ thisTab.total_amount as totalAmount,
+ thisTab.received_amount as receivedAmount,
+ thisTab.pending_amount as pendingAmount,
+ thisTab.nc_settlement_date as ncSettlementDate,
+ thisTab.nc_settlement_amount as ncSettlementAmount,
+ thisTab.account_remark as accountRemark,
+ thisTab.overdue_interest as overdueInterest,
+ thisTab.bill_due_date as billDueDate,
+ thisTab.overdue_days as overdueDays,
+ thisTab.status,
+ thisTab.create_time as createTime,
+ thisTab.update_time as updateTime,
+
+ -- 寮�绁ㄧ浉鍏冲瓧娈�
+ rib_latest.invoice_time as latestInvoiceTime,
+ COALESCE(rib_total.total_invoice_amount, 0) as totalInvoiceAmount,
CASE
- WHEN total_amount > 0 THEN ROUND((received_amount / total_amount) * 100, 2)
+ WHEN thisTab.total_amount > COALESCE(rib_total.total_invoice_amount, 0)
+ THEN thisTab.total_amount - COALESCE(rib_total.total_invoice_amount, 0)
ELSE 0
- END as collectionRate,
- nc_settlement_date as ncSettlementDate,
- nc_settlement_amount as ncSettlementAmount,
- CASE
- WHEN total_amount > 0 THEN ROUND((nc_settlement_amount / total_amount) * 100, 2)
- ELSE 0
- END as ncSettlementRate,
- account_remark as accountRemark,
- overdue_interest as overdueInterest,
- bill_due_date as billDueDate,
- overdue_days as overdueDays,
- status,
- create_time as createTime,
- update_time as updateTime,
- CASE
- WHEN pending_amount = 0 THEN '宸茬粨娓�'
- WHEN overdue_days > 0 THEN '閫炬湡'
- WHEN bill_due_date IS NOT NULL AND bill_due_date > CURDATE() THEN '鏈埌鏈�'
- ELSE '寰呭鐞�'
- END as agingStatus,
- CASE
- WHEN pending_amount = 0 THEN '宸茬粨绠�'
- WHEN nc_settlement_amount IS NOT NULL AND nc_settlement_amount > 0 THEN 'NC宸茬粨绠�'
- ELSE '寰呯粨绠�'
- END as settlementStatus,
- CASE
- WHEN nc_settlement_date IS NOT NULL THEN '宸插鎺�'
- ELSE '鏈鎺�'
- END as ncSyncStatus
- FROM receivable_bill_management
+ END as unInvoicedAmount,
+
+ -- 杩樻鐩稿叧瀛楁
+ rbsd_latest.latest_repayment_date as latestRepaymentDate,
+ COALESCE(rbsd_latest.latest_repayment_amount, 0) as latestRepaymentAmount
+
+ FROM receivable_bill_management thisTab
+
+ -- 鑾峰彇鏈�鏂板紑绁ㄦ棩鏈�
+ LEFT JOIN (
+ SELECT head_id, MAX(invoice_time) as invoice_time
+ FROM receivable_invoice_business
+ WHERE status = 1
+ GROUP BY head_id
+ ) rib_latest ON thisTab.id = rib_latest.head_id
+
+ -- 鑾峰彇寮�绁ㄦ�婚噾棰�
+ LEFT JOIN (
+ SELECT head_id, SUM(invoicing_amount) as total_invoice_amount
+ FROM receivable_invoice_business
+ WHERE status = 1
+ GROUP BY head_id
+ ) rib_total ON thisTab.id = rib_total.head_id
+
+ -- 鑾峰彇鏈�鏂拌繕娆句俊鎭�
+ LEFT JOIN (
+ SELECT
+ r1.bill_id,
+ r1.receipt_date as latest_repayment_date,
+ r1.receipt_amount as latest_repayment_amount
+ FROM receivable_bill_settlement_detail r1
+ INNER JOIN (
+ SELECT bill_id, MAX(receipt_date) as max_receipt_date
+ FROM receivable_bill_settlement_detail
+ WHERE deleted = 0
+ GROUP BY bill_id
+ ) r2 ON r1.bill_id = r2.bill_id AND r1.receipt_date = r2.max_receipt_date
+ WHERE r1.deleted = 0
+ -- 濡傛灉鍚屼竴澶╂湁澶氭潯璁板綍锛屽彇閲戦鏈�澶х殑閭f潯
+ AND r1.receipt_amount = (
+ SELECT MAX(receipt_amount)
+ FROM receivable_bill_settlement_detail r3
+ WHERE r3.bill_id = r1.bill_id AND r3.receipt_date = r1.receipt_date AND r3.deleted = 0
+ )
+ ) rbsd_latest ON thisTab.id = rbsd_latest.bill_id
+
<where>
- <include refid="whereCondition"/>
+ <if test="systemNo != null and systemNo != ''"> and thisTab.system_no = #{systemNo}</if>
+ <if test="customerName != null and customerName != ''"> and thisTab.customer_name like concat('%', #{customerName}, '%')</if>
+
</where>
- ORDER BY customer_name, bill_due_date
+ ORDER BY thisTab.customer_name, thisTab.bill_due_date
</select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0