From 0f1a0887db74631c151f2f241c3ff1ceef2656e6 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期二, 24 三月 2026 17:30:46 +0800
Subject: [PATCH] feat(sales): 优化发货和销售台账相关功能

---
 src/main/resources/mapper/sales/SalesLedgerMapper.xml                |    5 +++--
 src/main/resources/mapper/sales/SalesLedgerProductMapper.xml         |   10 +++++++++-
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java           |    4 ++++
 src/main/resources/mapper/sales/ShippingInfoMapper.xml               |    7 ++++++-
 src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java |    1 +
 src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java                 |    9 +++++++++
 src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java  |    5 +++++
 7 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
index 58810c9..0595e0b 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -191,6 +191,11 @@
         LoginUser loginUser = SecurityUtils.getLoginUser();
         Long tenantId = loginUser.getTenantId();
         customer.setTenantId(tenantId);
+        customer.setTaxpayerIdentificationNumber("");
+        customer.setCompanyAddress("");
+        customer.setCompanyPhone("");
+        customer.setMaintainer("");
+        customer.setMaintenanceTime(new Date());
         return customerMapper.insert(customer);
     }
 
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index db3c5b9..5ac9f57 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -37,6 +37,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index 1bf9aa2..14f388c 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -243,4 +243,8 @@
     // 鍙敤鏁伴噺  quantity - returnQuality
     @TableField(exist = false)
     private BigDecimal availableQuality;
+
+    @TableField(exist = false)
+    // 閮ㄥ垎鍙戣揣鏁伴噺
+    private BigDecimal partSendAmount;
 }
diff --git a/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
index 82a657c..8b5fc76 100644
--- a/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
+++ b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
@@ -7,6 +7,7 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
 
@@ -88,4 +89,12 @@
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
 
+    @TableField(value = "is_all_send")
+    @ApiModelProperty(value = "鏄惁鍏ㄩ儴鍙戣揣 1鍏ㄩ儴鍙戣揣 0涓嶅叏閮ㄥ彂璐�")
+    private Integer isAllSend;
+
+    @ApiModelProperty(value = "閮ㄥ垎鍙戣揣鏁伴噺")
+    @TableField(value = "part_send_amount")
+    private BigDecimal partSendAmount;
+
 }
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 71ad49f..57d804a 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -64,7 +64,7 @@
         DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff,
         CASE
         WHEN shipping_status_counts.total_count = 0 THEN false
-        WHEN shipping_status_counts.unshipped_count = 0 THEN true
+        WHEN shipping_status_counts.shipped_type = 0 THEN true
         ELSE false
         END AS is_fh
         FROM sales_ledger T1
@@ -72,7 +72,8 @@
         LEFT JOIN (
         SELECT sales_ledger_id,
         COUNT(*) as total_count,
-        SUM(CASE WHEN status != '宸插彂璐�' THEN 1 ELSE 0 END) as unshipped_count
+        SUM(CASE WHEN status != '宸插彂璐�' THEN 1 ELSE 0 END) as shipped_type,
+        sum(part_send_amount) as part_send_amount
         FROM shipping_info
         GROUP BY sales_ledger_id
         ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 712124a..e729339 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -10,10 +10,18 @@
         CASE
         WHEN (IFNULL(t2.qualitity, 0) - IFNULL(t2.locked_quantity, 0)) >= IFNULL(T1.quantity, 0) THEN 1
         ELSE 0
-        END as has_sufficient_stock
+        END as has_sufficient_stock,
+        t3.part_send_amount
         FROM
         sales_ledger_product T1
         LEFT JOIN stock_inventory t2 ON T1.product_model_id = t2.product_model_id
+
+        LEFT JOIN (
+        SELECT sales_ledger_id,
+        sum(part_send_amount) as part_send_amount
+        FROM shipping_info
+        GROUP BY sales_ledger_id
+        ) as t3 on t3.sales_ledger_id = T1.sales_ledger_id
         <where>
             <if test="salesLedgerProduct.salesLedgerId != null">
                 AND T1.sales_ledger_id = #{salesLedgerProduct.salesLedgerId}
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
index 82c67b2..e56c572 100644
--- a/src/main/resources/mapper/sales/ShippingInfoMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -21,7 +21,9 @@
         sl.sales_contract_no,
         slp.specification_model,
         p.product_name,
-        sl.customer_name
+        sl.customer_name,
+        s.is_all_send,
+        s.part_send_amount
         FROM shipping_info s
         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 and slp.type = 1
@@ -31,6 +33,9 @@
         <if test="req.salesContractNo != null and req.salesContractNo != ''">
             AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
         </if>
+        <if test="req.salesLedgerId != null">
+            AND s.sales_ledger_id = #{req.salesLedgerId}
+        </if>
         <if test="req.shippingCarNumber != null and req.shippingCarNumber != ''">
             AND s.shipping_car_number LIKE CONCAT('%',#{req.shippingCarNumber},'%')
         </if>

--
Gitblit v1.9.3