From 60acc8dd204aea9a435ae44205bae7b97feda4b3 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 16 六月 2026 14:37:49 +0800
Subject: [PATCH] fix: 客户往来及明细查询修改

---
 src/main/resources/mapper/basic/CustomerMapper.xml |   72 ++++++++++++++++++++----------------
 1 files changed, 40 insertions(+), 32 deletions(-)

diff --git a/src/main/resources/mapper/basic/CustomerMapper.xml b/src/main/resources/mapper/basic/CustomerMapper.xml
index c9be760..46b7bf7 100644
--- a/src/main/resources/mapper/basic/CustomerMapper.xml
+++ b/src/main/resources/mapper/basic/CustomerMapper.xml
@@ -52,6 +52,7 @@
                 )
             </if>-->
         </where>
+        order by maintenance_time desc
     </select>
 
     <select id="list" resultType="com.ruoyi.basic.vo.CustomerVo">
@@ -111,23 +112,8 @@
     <select id="customewTransactions" resultType="com.ruoyi.sales.vo.CustomerTransactionsVo">
         select T1.customer_id,
                c.customer_name,
-               T1.contractAmounts,
-               IFNULL(T3.outboundAmount, 0) AS shippedAmount,
-               GREATEST(T1.contractAmounts - IFNULL(T3.outboundAmount, 0), 0) AS unshippedAmount
+               T1.contractAmounts
         from (select customer_id, sum(contract_amount) as contractAmounts from sales_ledger group by customer_id) T1
-        left join (
-            SELECT
-                sl.customer_id,
-                sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount
-            FROM stock_out_record sor
-            LEFT join shipping_info s on sor.record_id = s.id
-            LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
-            LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
-            WHERE sor.record_type='13'
-                and sor.approval_status=1
-                and slp.type = 1
-            group by sl.customer_id
-        ) T3 on T3.customer_id=T1.customer_id
         left join customer c on T1.customer_id = c.id
         <where>
             <if test="customerName!=null and customerName!=''">
@@ -141,23 +127,45 @@
         select sl.id salesLedgerId,
                sl.sales_contract_no,
                sl.execution_date,
-               sl.contract_amount,
-               IFNULL(T2.outboundAmount, 0) AS shippedAmount,
-               GREATEST(sl.contract_amount - IFNULL(T2.outboundAmount, 0), 0) AS unshippedAmount
+               sl.contract_amount
         from sales_ledger sl
-        left join (
-            SELECT
-                sl.id,
-                sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount
-            FROM stock_out_record sor
-                     left join shipping_info s on sor.record_id = s.id
-                     LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
-                     LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
-            WHERE sor.record_type='13'
-              and sor.approval_status=1
-              and slp.type = 1
-            group by  sl.id
-        )T2 on T2.id = sl.id
         where sl.customer_id = #{customerId}
+        order by sl.execution_date
+    </select>
+
+    <select id="getShippedAmountByCustomerIds" resultType="java.util.Map">
+        SELECT
+            sl.customer_id as customerId,
+            sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount
+        FROM stock_out_record sor
+        LEFT join shipping_info s on sor.record_id = s.id
+        LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
+        LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
+        WHERE sor.record_type='13'
+            and sor.approval_status=1
+            and slp.type = 1
+            and sl.customer_id IN
+            <foreach collection="customerIds" item="customerId" open="(" separator="," close=")">
+                #{customerId}
+            </foreach>
+        group by sl.customer_id
+    </select>
+
+    <select id="getShippedAmountBySalesLedgerIds" resultType="java.util.Map">
+        SELECT
+            sl.id as salesLedgerId,
+            sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount
+        FROM stock_out_record sor
+        LEFT join shipping_info s on sor.record_id = s.id
+        LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
+        LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
+        WHERE sor.record_type='13'
+            and sor.approval_status=1
+            and slp.type = 1
+            and sl.id IN
+            <foreach collection="salesLedgerIds" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        group by sl.id
     </select>
 </mapper>

--
Gitblit v1.9.3