From f5cc69d226d73878bfb9a67b3835ff1842732ffe Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 23 六月 2026 11:15:23 +0800
Subject: [PATCH] 1.质检规则优化
---
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 160 ++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 122 insertions(+), 38 deletions(-)
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 7ce76a8..b4562d0 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -5,43 +5,15 @@
<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">
- SELECT
- T1.id,
- T1.sales_contract_no,
- T1.customer_contract_no,
- T1.project_name,
- T1.entry_date,
- T1.salesman,
- T1.customer_id,
- T1.customer_name,
- T1.entry_person,
- T1.remarks,
- T1.attachment_materials,
- T1.tenant_id,
- T1.contract_amount,
- T1.execution_date,
- T2.nick_name AS entry_person_name,
- T1.payment_method
- FROM
- sales_ledger T1
- LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
- <where>
- <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
- T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
- </if>
- </where>
- </select>
-
- <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.pojo.SalesLedger">
SELECT
T1.id,
T1.sales_contract_no,
@@ -58,29 +30,141 @@
T1.contract_amount,
T1.execution_date,
T2.nick_name AS entry_person_name,
- T1.payment_method
+ T1.payment_method,
+ DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff
FROM
sales_ledger T1
LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
<where>
<if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
- AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
+ T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.vo.SalesLedgerVo">
+ SELECT T1.id,
+ T1.sales_contract_no,
+ T1.master_contract_no,
+ T1.customer_contract_no,
+ T1.project_name,
+ T1.entry_date,
+ T1.salesman,
+ T1.customer_id,
+ T1.customer_name,
+ T1.entry_person,
+ T1.remarks,
+ T1.attachment_materials,
+ T1.tenant_id,
+ T1.contract_amount,
+ 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,
+ IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh,
+ T3.purchase_contract_number,
+ T3.master_contract_no AS purchaseMasterContractNo,
+ IFNULL(rs.total_return_num, 0) AS returnedQuantity,
+ CASE
+ WHEN IFNULL(rs.total_return_num, 0) = 0 THEN '鏃犻��璐�'
+ WHEN IFNULL(rs.total_return_num, 0) >= IFNULL(shipping_qty.total_qty, 0) THEN '鍏ㄩ儴閫�璐�'
+ ELSE '閮ㄥ垎閫�璐�'
+ END AS returnStatus
+ FROM sales_ledger T1
+ LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
+ LEFT JOIN (
+ SELECT sales_ledger_id,
+ 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 purchase_ledger T3 ON T1.purchase_ledger_id = T3.id
+ LEFT JOIN (
+ SELECT si.sales_ledger_id, SUM(sor.stock_out_num) AS total_qty
+ FROM shipping_info si
+ LEFT JOIN stock_out_record sor ON sor.record_id = si.id AND sor.record_type = '13' AND sor.approval_status = 1
+ GROUP BY si.sales_ledger_id
+ ) shipping_qty ON shipping_qty.sales_ledger_id = T1.id
+ LEFT JOIN (
+ SELECT si.sales_ledger_id, SUM(rsp.num) AS total_return_num
+ FROM return_sale_product rsp
+ LEFT JOIN return_management rm ON rm.id = rsp.return_management_id
+ LEFT JOIN shipping_info si ON si.id = rm.shipping_id
+ WHERE rm.status = 1
+ GROUP BY si.sales_ledger_id
+ ) rs ON rs.sales_ledger_id = T1.id
+
+ <where>
+ <if test="salesLedgerDto.customerName != null and 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.masterContractNo != null and salesLedgerDto.masterContractNo != '' ">
+ AND T1.master_contract_no LIKE CONCAT('%',#{salesLedgerDto.masterContractNo},'%')
</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 >= DATE_FORMAT(#{salesLedgerDto.entryDateStart},'%Y-%m-%d')
+ AND T1.entry_date >= DATE_FORMAT(#{salesLedgerDto.entryDateStart},'%Y-%m-%d')
</if>
<if test="salesLedgerDto.entryDateEnd != null and salesLedgerDto.entryDateEnd != '' ">
- AND T1.entry_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
+ AND T1.entry_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
</if>
</where>
+ order by T1.entry_date desc
</select>
-</mapper>
\ No newline at end of file
+
+ <select id="selectIncomeStats" resultType="com.ruoyi.home.dto.IncomeExpenseAnalysisDto">
+ SELECT DATE_FORMAT(entry_date, #{dateFormat}) as dateStr, IFNULL(SUM(contract_amount), 0) as amount
+ FROM sales_ledger
+ WHERE entry_date BETWEEN #{startDate} AND #{endDate}
+ GROUP BY dateStr
+ </select>
+
+ <select id="selectCustomerSalesComposition" resultType="com.ruoyi.dto.MapDto">
+ SELECT customer_name as name, CAST(IFNULL(SUM(contract_amount), 0) AS CHAR) as value
+ FROM sales_ledger
+ GROUP BY customer_name
+ </select>
+ <select id="listSalesLedgerAndShipped" resultType="com.ruoyi.sales.dto.SalesLedgerDto">
+ select distinct sl.id as 'disId', sl.* from
+ 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 = '宸插彂璐�'
+ <if test="ew.customerName != null and ew.customerName != '' ">
+ and sl.customer_name like concat('%',#{ew.customerName},'%')
+ </if>
+ order by sl.execution_date desc
+ </select>
+ <select id="selectPurchaseReportVoPage" resultType="com.ruoyi.purchase.vo.PurchaseReportVo">
+ select sl.sales_contract_no customerContractNo,
+ c.customer_name,
+ sl.project_name,
+ sl.contract_amount contractAmount,
+ pl.contract_amount purchaseAmount,
+ sl.contract_amount-pl.contract_amount balance,
+ (sl.contract_amount-pl.contract_amount)/sl.contract_amount balanceRatio
+ from sales_ledger sl
+ left join purchase_ledger pl on sl.id = pl.sales_ledger_id
+ left join customer c on sl.customer_id = c.id
+ <where>
+ <if test="customerName != null and customerName != '' ">
+ and c.customer_name like concat('%',#{customerName},'%')
+ </if>
+ </where>
+ order by sl.entry_date desc
+ </select>
+
+</mapper>
--
Gitblit v1.9.3