From 0200b4092214d065adea7c7b9fef0c04b31be255 Mon Sep 17 00:00:00 2001
From: zhang_nuo <zhang_12370@163.com>
Date: 星期二, 22 九月 2026 02:10:18 +0800
Subject: [PATCH] fix(sales&stock): 修复销售台账与库存查询的多处业务问题
---
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 29 ++++++++++++++++++++++++++++-
1 files changed, 28 insertions(+), 1 deletions(-)
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index ed6c26c..0fc627f 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -88,6 +88,30 @@
<if test="salesLedgerDto.projectName != null and salesLedgerDto.projectName != '' ">
AND T1.project_name LIKE CONCAT('%',#{salesLedgerDto.projectName},'%')
</if>
+ <if test="salesLedgerDto.shippingStatus != null and salesLedgerDto.shippingStatus != '' ">
+ AND T1.id IN (
+ SELECT slp.sales_ledger_id
+ FROM sales_ledger_product slp
+ LEFT JOIN (
+ SELECT si.sales_ledger_product_id, IFNULL(SUM(spd.quantity), 0) AS shipped_quantity
+ FROM shipping_info si
+ LEFT JOIN shipping_product_detail spd ON si.id = spd.shipping_info_id
+ WHERE si.status != '瀹℃牳鎷掔粷'
+ GROUP BY si.sales_ledger_product_id
+ ) ship ON ship.sales_ledger_product_id = slp.id
+ WHERE slp.type = 1
+ GROUP BY slp.sales_ledger_id
+ HAVING
+ <choose>
+ <when test="'宸插彂璐�'.equals(salesLedgerDto.shippingStatus)">
+ SUM(CASE WHEN IFNULL(slp.quantity, 0) - IFNULL(ship.shipped_quantity, 0) > 0 THEN 1 ELSE 0 END) = 0
+ </when>
+ <otherwise>
+ SUM(CASE WHEN IFNULL(slp.quantity, 0) - IFNULL(ship.shipped_quantity, 0) > 0 THEN 1 ELSE 0 END) > 0
+ </otherwise>
+ </choose>
+ )
+ </if>
<if test="salesLedgerDto.entryDateStart != null and salesLedgerDto.entryDateStart != '' ">
AND T1.entry_date >= DATE_FORMAT(#{salesLedgerDto.entryDateStart},'%Y-%m-%d')
</if>
@@ -116,10 +140,13 @@
sales_ledger sl
left join sales_ledger_product slp on sl.id = slp.sales_ledger_id
left join shipping_info si on slp.id = si.sales_ledger_product_id
- where si.status = '瀹℃牳閫氳繃'
+ where si.status in ('瀹℃牳閫氳繃', '宸插彂璐�')
<if test="ew.customerId != null and ew.customerId != '' ">
and sl.customer_id = #{ew.customerId}
</if>
+ <if test="ew.customerName != null and ew.customerName != '' ">
+ and sl.customer_name like concat('%', #{ew.customerName}, '%')
+ </if>
order by sl.execution_date desc
</select>
--
Gitblit v1.9.3