From 0c0aacce3755912bed0e576b209444411d54b5f7 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 19 八月 2026 10:19:55 +0800
Subject: [PATCH] feat: 销售台账新增未/已发货

---
 src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java |    3 +++
 src/main/resources/mapper/sales/SalesLedgerMapper.xml |   24 ++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index c119e94..0de4f3b 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -25,6 +25,9 @@
     private String entryDateStart;
     private String entryDateEnd;
 
+    @Schema(description = "鍙戣揣鐘舵�佺瓫閫夛細鏈彂璐�/宸插彂璐�")
+    private String shippingStatus;
+
 
     private String salesman;
     private Long customerId;
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index ed6c26c..8b41173 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) &gt; 0 THEN 1 ELSE 0 END) = 0
+                    </when>
+                    <otherwise>
+                        SUM(CASE WHEN IFNULL(slp.quantity, 0) - IFNULL(ship.shipped_quantity, 0) &gt; 0 THEN 1 ELSE 0 END) &gt; 0
+                    </otherwise>
+                </choose>
+                )
+            </if>
             <if test="salesLedgerDto.entryDateStart != null and salesLedgerDto.entryDateStart != '' ">
                 AND T1.entry_date &gt;= DATE_FORMAT(#{salesLedgerDto.entryDateStart},'%Y-%m-%d')
             </if>

--
Gitblit v1.9.3