From 7bf754a7835d06f26240c4ca15bc5f83650de377 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 21 九月 2026 20:52:25 +0800
Subject: [PATCH] docs(api): 更新信托基金与代储台账及油品出库相关接口文档

---
 src/main/resources/mapper/sales/SalesLedgerMapper.xml |  203 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 165 insertions(+), 38 deletions(-)

diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 7ce76a8..366520c 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -5,43 +5,31 @@
 <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">
-        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,
@@ -51,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,
@@ -58,29 +53,161 @@
         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>
+            <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.vo.SalesLedgerVo">
+        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.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.net_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
+        FROM sales_ledger T1
+        LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
+        <!-- 鏄惁鍙戣揣鏀规寜鍒拌揣璁板綍绠楋紝鍒嗕袱绉嶅彴璐︼細
+             鍗栨补锛氳鍙拌处 type=1 鏄庣粏鐨勫悎鍚屾暟閲忔�诲拰 <= 宸插埌璐ф暟閲忔�诲拰 鎵嶇畻鍙戝畬锛�
+             浠e偍锛氭病鏈� type=1 鏄庣粏锛屽熀鍑嗙嚎鏀逛负銆岃鍙拌处鍏ㄩ儴宸插鎵规补鍝佸嚭搴撳崟鐨勫嚭搴撻噺鎬诲拰銆嶏紝鍚屾牱銆屽叏閮ㄥ埌璐с�嶆墠绠楀彂瀹屻��
+             涓や釜鍒嗘敮鍚勮嚜閮借姹傚熀鍑嗙嚎 &gt; 0锛屽惁鍒� 0 &lt;= 0 浼氳鍒ゆ垚銆屽凡鍙戣揣銆� -->
+        LEFT JOIN (
+        SELECT sl.id AS sales_ledger_id,
+        CASE
+        WHEN IFNULL(d.total_qty, 0) &gt; 0 AND IFNULL(d.total_qty, 0) &lt;= IFNULL(a.total_arrival, 0) THEN TRUE
+        WHEN IFNULL(d.total_qty, 0) = 0 AND IFNULL(o.total_out, 0) &gt; 0
+        AND IFNULL(o.total_out, 0) &lt;= 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},'%')
             </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>
+            <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
     </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>
+    <!-- 宸插彂璐х殑鍙拌处锛氬彛寰勪笌 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