From 8a714a4dd3446b057720ee0e02c9552d779fe235 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 16 四月 2026 13:45:02 +0800
Subject: [PATCH] feat(sales): 添加销售台账生产记录状态功能

---
 src/main/resources/mapper/sales/SalesLedgerMapper.xml |   40 ++++++++++++++++++++++++++--------------
 1 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 71ad49f..735a232 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -5,12 +5,12 @@
 <mapper namespace="com.ruoyi.sales.mapper.SalesLedgerMapper">
 
     <select id="selectSequencesByDate" resultType="java.lang.Integer">
-        SELECT CAST(SUBSTR(sales_contract_no,LENGTH(#{datePart})+1 , 3) AS SIGNED)
+        SELECT CAST(SUBSTR(sales_contract_no, LENGTH(#{datePart}) + 1, 3) AS SIGNED)
         FROM sales_ledger
-        WHERE sales_contract_no LIKE CONCAT('%',#{datePart},'%')
+        WHERE sales_contract_no LIKE CONCAT('%', #{datePart}, '%')
     </select>
     <select id="getSalesNo" resultType="com.ruoyi.sales.pojo.SalesLedger">
-        
+
     </select>
 
     <select id="selectSalesLedgerList" resultType="com.ruoyi.sales.pojo.SalesLedger">
@@ -56,9 +56,9 @@
         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,
+        T2.nick_name AS entry_person_name,
         T1.payment_method,
         T1.delivery_date,
         DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff,
@@ -66,7 +66,18 @@
         WHEN shipping_status_counts.total_count = 0 THEN false
         WHEN shipping_status_counts.unshipped_count = 0 THEN true
         ELSE false
-        END AS is_fh
+        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
         FROM sales_ledger T1
         LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
         LEFT JOIN (
@@ -76,27 +87,28 @@
         FROM shipping_info
         GROUP BY sales_ledger_id
         ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id
+
         <where>
             <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
-                AND  T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
+                AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
             </if>
             <if test="salesLedgerDto.customerContractNo != null and salesLedgerDto.customerContractNo !='' ">
-                AND  T1.customer_contract_no LIKE CONCAT('%',#{salesLedgerDto.customerContractNo},'%')
+                AND T1.customer_contract_no LIKE CONCAT('%',#{salesLedgerDto.customerContractNo},'%')
             </if>
             <if test="salesLedgerDto.salesContractNo != null and salesLedgerDto.salesContractNo != '' ">
-                AND  T1.sales_contract_no LIKE CONCAT('%',#{salesLedgerDto.salesContractNo},'%')
+                AND T1.sales_contract_no LIKE CONCAT('%',#{salesLedgerDto.salesContractNo},'%')
             </if>
             <if test="salesLedgerDto.projectName != null and salesLedgerDto.projectName != '' ">
                 AND T1.project_name LIKE CONCAT('%',#{salesLedgerDto.projectName},'%')
             </if>
             <if test="salesLedgerDto.entryDateStart != null and salesLedgerDto.entryDateStart != '' ">
-               AND T1.entry_date &gt;= DATE_FORMAT(#{salesLedgerDto.entryDateStart},'%Y-%m-%d')
+                AND T1.entry_date &gt;= DATE_FORMAT(#{salesLedgerDto.entryDateStart},'%Y-%m-%d')
             </if>
             <if test="salesLedgerDto.entryDateEnd != null and salesLedgerDto.entryDateEnd != '' ">
-                AND  T1.entry_date &lt;= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
+                AND T1.entry_date &lt;= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
             </if>
         </where>
-    order by T1.entry_date desc
+        order by T1.entry_date desc
     </select>
 
     <select id="selectIncomeStats" resultType="com.ruoyi.home.dto.IncomeExpenseAnalysisDto">
@@ -117,9 +129,9 @@
         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 = '宸插彂璐�'
-            <if test="ew.customerName != null and ew.customerName != '' ">
+        <if test="ew.customerName != null and ew.customerName != '' ">
             and sl.customer_name like concat('%',#{ew.customerName},'%')
-            </if>
+        </if>
         order by sl.execution_date desc
     </select>
 

--
Gitblit v1.9.3