From 436c0a68d698955d0d4eda827d398257b9e4dafc Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 16 四月 2026 15:56:00 +0800
Subject: [PATCH] fix(mapper): 修复销售台账和生产工单查询逻辑

---
 src/main/resources/mapper/production/ProductWorkOrderMapper.xml |    4 ++--
 src/main/resources/mapper/sales/SalesLedgerMapper.xml           |   34 ++++++++++++++--------------------
 2 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index 14b883e..ab3911e 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -45,8 +45,8 @@
             <if test="c.planStartTime != null and c.planEndTime != null">
                 and DATE(pwo.create_time) between #{c.planStartTime} and #{c.planEndTime}
             </if>
-            <if test="c.productOrderId != null and c.productOrderId != ''">
-               and pwo.product_order_id = #{c.productOrderId}
+            <if test="c.productOrderNpsNo != null and c.productOrderNpsNo != ''">
+               and po.nps_no like concat('%',#{c.productOrderNpsNo},'%')
             </if>
     </select>
     <select id="getProductWorkOrderFlowCard" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 735a232..0240ec1 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -56,38 +56,32 @@
         T1.attachment_materials,
         T1.tenant_id,
         T1.contract_amount,
-        T1.contract_amount as noInvoiceAmountTotal,
+        T1.contract_amount AS noInvoiceAmountTotal,
         T1.execution_date,
         T2.nick_name AS entry_person_name,
         T1.payment_method,
         T1.delivery_date,
         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
-        ELSE false
-        END AS is_fh,
-        CASE
-        WHEN EXISTS (
-        SELECT 1
-        FROM product_order po2
-        INNER JOIN product_work_order wo2 ON wo2.product_order_id = po2.id
-        INNER JOIN production_product_main pm2 ON pm2.work_order_id = wo2.id
-        WHERE po2.sales_ledger_id = T1.id
-        LIMIT 1
-        ) THEN true
-        ELSE false
-        END AS has_production_record
+        IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh,
+        IFNULL(production_exists.has_production, FALSE) AS has_production_record
         FROM sales_ledger T1
         LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
         LEFT JOIN (
         SELECT sales_ledger_id,
-        COUNT(*) as total_count,
-        SUM(CASE WHEN status != '宸插彂璐�' THEN 1 ELSE 0 END) as unshipped_count
+        CASE
+        WHEN SUM(CASE WHEN status != '宸插彂璐�' THEN 1 ELSE 0 END) = 0 THEN TRUE
+        ELSE FALSE
+        END AS is_all_shipped
         FROM shipping_info
         GROUP BY sales_ledger_id
         ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id
-
+        LEFT JOIN (
+        SELECT DISTINCT po.sales_ledger_id,
+        TRUE AS has_production
+        FROM product_order po
+        INNER JOIN product_work_order wo ON wo.product_order_id = po.id
+        INNER JOIN production_product_main pm ON pm.work_order_id = wo.id
+        ) production_exists ON T1.id = production_exists.sales_ledger_id
         <where>
             <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
                 AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')

--
Gitblit v1.9.3