From af2e3ac16cadc0c609043b06b449ca5acf8da310 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期二, 29 九月 2026 17:45:06 +0800
Subject: [PATCH] 新疆-融邦 销售台账、采购台账新增付款类别字段(授信账期/先款后货):实体/DTO/列表SQL,含数据库迁移脚本
---
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 145 +++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 123 insertions(+), 22 deletions(-)
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index c5d7aed..3263cd0 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -5,12 +5,28 @@
<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>
+
+ <!-- 浠e偍閲戦锛氳瀹㈡埛鍏ㄩ儴銆岀被鍨�=浠e偍銆嶅彴璐﹀悎鍚岄噾棰濆悎璁°�傝法瀹㈡埛姹囨�伙紝鍔� /*data_scope*/ 璺宠繃鏁版嵁鏉冮檺锛�
+ 鍚﹀垯闈炵鐞嗗憳鐪嬪埌鐨勬槸琚� dept_id 杩囨护杩囩殑閮ㄥ垎閲戦锛屼細鎶娿�屽凡瓒呬俊鎵樺熀閲戙�嶈鍒ゆ垚鏈秴 -->
+ <select id="selectDepositAmountByCustomerIds" resultType="com.ruoyi.sales.dto.CustomerDepositAmountDto">
+ select /*data_scope*/ customer_id as customerId,
+ IFNULL(sum(contract_amount), 0) as depositTotalAmount
+ from sales_ledger
+ where ledger_type = '浠e偍'
+ <if test="customerIds != null and customerIds.size() > 0">
+ and customer_id in
+ <foreach collection="customerIds" item="cid" open="(" separator="," close=")">
+ #{cid}
+ </foreach>
+ </if>
+ group by customer_id
</select>
<select id="selectSalesLedgerList" resultType="com.ruoyi.sales.pojo.SalesLedger">
@@ -23,6 +39,13 @@
T1.salesman,
T1.customer_id,
T1.customer_name,
+ T1.ledger_type,
+ T1.oil_depot_id,
+ T1.oil_depot_name,
+ T1.tank_id,
+ T1.tank_no,
+ T1.tonnage,
+ T1.approval_status,
T1.entry_person,
T1.remarks,
T1.attachment_materials,
@@ -31,6 +54,7 @@
T1.execution_date,
T2.nick_name AS entry_person_name,
T1.payment_method,
+ T1.payment_category,
DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff
FROM
sales_ledger T1
@@ -39,10 +63,16 @@
<if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
</if>
+ <if test="salesLedgerDto.ledgerType != null and salesLedgerDto.ledgerType != '' ">
+ AND T1.ledger_type = #{salesLedgerDto.ledgerType}
+ </if>
+ <if test="salesLedgerDto.approvalStatus != null and salesLedgerDto.approvalStatus != '' ">
+ AND T1.approval_status = #{salesLedgerDto.approvalStatus}
+ </if>
</where>
</select>
- <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.pojo.SalesLedger">
+ <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.vo.SalesLedgerVo">
SELECT T1.id,
T1.sales_contract_no,
T1.customer_contract_no,
@@ -51,52 +81,91 @@
T1.salesman,
T1.customer_id,
T1.customer_name,
+ T1.ledger_type,
+ T1.oil_depot_id,
+ T1.oil_depot_name,
+ T1.tank_id,
+ T1.tank_no,
+ T1.tonnage,
+ T1.approval_status,
T1.entry_person,
T1.remarks,
T1.attachment_materials,
T1.tenant_id,
T1.contract_amount,
- T1.contract_amount as noInvoiceAmountTotal,
+ T1.net_contract_amount,
+ 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.payment_category,
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
+ IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh
FROM sales_ledger T1
LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
+ <!-- 鏄惁鍙戣揣鏀规寜鍒拌揣璁板綍绠楋紝鍒嗕袱绉嶅彴璐︼細
+ 鍗栨补锛氳鍙拌处 type=1 鏄庣粏鐨勫悎鍚屾暟閲忔�诲拰 <= 宸插埌璐ф暟閲忔�诲拰 鎵嶇畻鍙戝畬锛�
+ 浠e偍锛氭病鏈� type=1 鏄庣粏锛屽熀鍑嗙嚎鏀逛负銆岃鍙拌处鍏ㄩ儴宸插鎵规补鍝佸嚭搴撳崟鐨勫嚭搴撻噺鎬诲拰銆嶏紝鍚屾牱銆屽叏閮ㄥ埌璐с�嶆墠绠楀彂瀹屻��
+ 涓や釜鍒嗘敮鍚勮嚜閮借姹傚熀鍑嗙嚎 > 0锛屽惁鍒� 0 <= 0 浼氳鍒ゆ垚銆屽凡鍙戣揣銆� -->
LEFT JOIN (
- SELECT sales_ledger_id,
- COUNT(*) as total_count,
- SUM(CASE WHEN status != '宸插彂璐�' THEN 1 ELSE 0 END) as unshipped_count
- FROM shipping_info
+ SELECT sl.id AS sales_ledger_id,
+ CASE
+ WHEN IFNULL(d.total_qty, 0) > 0 AND IFNULL(d.total_qty, 0) <= IFNULL(a.total_arrival, 0) THEN TRUE
+ WHEN IFNULL(d.total_qty, 0) = 0 AND IFNULL(o.total_out, 0) > 0
+ AND IFNULL(o.total_out, 0) <= IFNULL(a.total_arrival, 0) THEN TRUE
+ ELSE FALSE
+ END AS is_all_shipped
+ FROM sales_ledger sl
+ LEFT JOIN (
+ SELECT sales_ledger_id, SUM(quantity) AS total_qty
+ FROM sales_ledger_product
+ WHERE type = 1
GROUP BY sales_ledger_id
+ ) d ON d.sales_ledger_id = sl.id
+ LEFT JOIN (
+ SELECT sales_ledger_id, SUM(arrival_quantity) AS total_arrival
+ FROM sales_ledger_arrival
+ GROUP BY sales_ledger_id
+ ) a ON a.sales_ledger_id = sl.id
+ <!-- 浠e偍娌℃湁缁戝畾琛紝鍑哄簱鍗曠殑鍗曞�煎垪 sales_ledger_id 鍗充负鏉冨▉瀵瑰簲鍏崇郴 -->
+ LEFT JOIN (
+ SELECT sor.sales_ledger_id, SUM(sor.stock_out_num) AS total_out
+ FROM stock_out_record sor
+ WHERE sor.approval_status = 1
+ AND (sor.type IS NULL OR sor.type = '')
+ AND sor.sales_ledger_id IS NOT NULL
+ GROUP BY sor.sales_ledger_id
+ ) o ON o.sales_ledger_id = sl.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 >= 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>
+ <if test="salesLedgerDto.ledgerType != null and salesLedgerDto.ledgerType != '' ">
+ AND T1.ledger_type = #{salesLedgerDto.ledgerType}
+ </if>
+ <if test="salesLedgerDto.approvalStatus != null and salesLedgerDto.approvalStatus != '' ">
+ AND T1.approval_status = #{salesLedgerDto.approvalStatus}
</if>
</where>
- order by T1.entry_date desc
+ order by T1.entry_date desc
</select>
<select id="selectIncomeStats" resultType="com.ruoyi.home.dto.IncomeExpenseAnalysisDto">
@@ -111,4 +180,36 @@
FROM sales_ledger
GROUP BY customer_name
</select>
-</mapper>
\ No newline at end of file
+ <!-- 宸插彂璐х殑鍙拌处锛氬彛寰勪笌 is_fh 涓�鑷达紝鏀逛负銆屾湁鍒拌揣璁板綍鐨勫彴璐︺�� -->
+ <select id="listSalesLedgerAndShipped" resultType="com.ruoyi.sales.dto.SalesLedgerDto">
+ select distinct sl.id as 'disId', sl.* from
+ sales_ledger sl
+ inner join sales_ledger_product slp on sl.id = slp.sales_ledger_id
+ inner join sales_ledger_arrival sla on sla.sales_ledger_product_id = slp.id
+ <where>
+ <if test="ew.customerName != null and ew.customerName != '' ">
+ sl.customer_name like concat('%',#{ew.customerName},'%')
+ </if>
+ </where>
+ 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