From 620bb4712a31791231c4381581f0f60088f079fe Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 27 五月 2026 14:03:45 +0800
Subject: [PATCH] Merge branch 'refs/heads/dev_New_pro' into dev_宁夏_英泽防锈
---
src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml | 194 +++++++++++++++++++++++++++++-------------------
1 files changed, 116 insertions(+), 78 deletions(-)
diff --git a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
index f501849..a818160 100644
--- a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -9,88 +9,126 @@
SET contract_amount = #{totalTaxInclusiveAmount}
WHERE id = #{id}
</update>
-
- <select id="selectPurchaseLedgerListPage" resultType="com.ruoyi.purchase.dto.PurchaseLedgerDto">
- SELECT
- pl.id,
- pl.purchase_contract_number,
- pl.sales_contract_no,
- pl.supplier_id,
- pl.supplier_name,
- pl.project_name,
- pl.contract_amount,
- IFNULL(tr_sum.total_invoice_amount, 0) AS receipt_payment_amount,
- pl.contract_amount - IFNULL(tr_sum.total_invoice_amount, 0) AS unReceipt_payment_amount,
- pl.entry_date,
- pl.execution_date,
- pl.recorder_id,
- pl.recorder_name,
- pl.template_name,
- pl.approve_user_ids,
- sm.is_white,
- pl.approval_status,
- pl.payment_method,
- pl.remarks
- FROM purchase_ledger pl
- LEFT JOIN (
- SELECT
- purchase_ledger_id,
- SUM(invoice_amount) AS total_invoice_amount
- FROM ticket_registration
- GROUP BY purchase_ledger_id
- ) tr_sum ON pl.id = tr_sum.purchase_ledger_id
- LEFT JOIN supplier_manage sm ON pl.supplier_id = sm.id
- <where>
- <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''">
- AND pl.purchase_contract_number LIKE CONCAT('%', #{c.purchaseContractNumber}, '%')
- </if>
- <if test="c.approvalStatus != null and c.approvalStatus != ''">
- AND pl.approval_status = #{c.approvalStatus}
- </if>
- <if test="c.supplierName != null and c.supplierName != ''">
- AND pl.supplier_name LIKE CONCAT('%', #{c.supplierName}, '%')
- </if>
- <if test="c.salesContractNo != null and c.salesContractNo != ''">
- AND pl.sales_contract_no LIKE CONCAT('%', #{c.salesContractNo}, '%')
- </if>
- <if test="c.projectName != null and c.projectName != ''">
- AND pl.project_name LIKE CONCAT('%', #{c.projectName}, '%')
- </if>
- <if test="c.entryDateStart != null and c.entryDateStart != ''">
- AND pl.entry_date >= #{c.entryDateStart}
- </if>
- <if test="c.entryDateEnd != null and c.entryDateEnd != ''">
- AND pl.entry_date <= #{c.entryDateEnd}
- </if>
- </where>
- ORDER BY pl.entry_date DESC
- </select>
-
- <select id="getPaymentRegistrationDtoById" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto">
- SELECT
- T1.id,
- T1.payment_date,
- T2.supplier_name,
- T1.current_payment_amount,
- T1.payment_method,
- T3.nick_name AS registrant,
- T1.registrationt_date
- FROM
- payment_registration T1
- LEFT JOIN
- supplier_manage T2 ON T1.supplier_id = T2.id
- LEFT JOIN
- sys_user T3 ON T3.user_id = T1.registrant_id
- WHERE
- T1.sales_ledger_product_id = #{id}
- </select>
-
-
<select id="selectPurchaseStats" resultType="com.ruoyi.home.dto.IncomeExpenseAnalysisDto">
SELECT DATE_FORMAT(entry_date, #{dateFormat}) as dateStr, IFNULL(SUM(contract_amount), 0) as amount
FROM purchase_ledger
WHERE entry_date BETWEEN #{startDate} AND #{endDate}
GROUP BY dateStr
+ </select>
+
+ <select id="selectPurchaseLedgerListPage" resultType="com.ruoyi.purchase.dto.PurchaseLedgerDto">
+ SELECT result.*
+ FROM (
+ SELECT
+ pl.id,
+ pl.purchase_contract_number,
+ pl.sales_contract_no,
+ pl.supplier_id,
+ pl.supplier_name,
+ pl.project_name,
+ pl.contract_amount,
+ pl.entry_date,
+ pl.execution_date,
+ pl.recorder_id,
+ pl.recorder_name,
+ pl.template_name,
+ pl.approve_user_ids,
+ sm.is_white,
+ pl.approval_status,
+ pl.payment_method,
+ pl.remarks,
+ CASE
+ WHEN IFNULL(ls.total_product_count, 0) = 0 THEN '寰呭叆搴�'
+ WHEN IFNULL(ls.full_product_count, 0) >= IFNULL(ls.total_product_count, 0) THEN '瀹屽叏鍏ュ簱'
+ WHEN IFNULL(ls.approved_product_count, 0) > 0 THEN '鍏ュ簱涓�'
+ ELSE '寰呭叆搴�'
+ END AS stock_in_status
+ FROM purchase_ledger pl
+ LEFT JOIN supplier_manage sm ON pl.supplier_id = sm.id
+ LEFT JOIN (
+ SELECT
+ product_status.sales_ledger_id,
+ COUNT(1) AS total_product_count,
+ SUM(CASE WHEN product_status.approved_stock_in_num > 0 THEN 1 ELSE 0 END) AS approved_product_count,
+ SUM(CASE WHEN product_status.approved_stock_in_num >= product_status.product_quantity THEN 1 ELSE 0 END) AS full_product_count
+ FROM (
+ SELECT
+ slp.id AS sales_ledger_product_id,
+ slp.sales_ledger_id,
+ IFNULL(slp.quantity, 0) AS product_quantity,
+ IFNULL(approved_qty.approved_stock_in_num, 0) AS approved_stock_in_num
+ FROM sales_ledger_product slp
+ LEFT JOIN (
+ SELECT rel.sales_ledger_product_id,
+ IFNULL(SUM(rel.stock_in_num), 0) AS approved_stock_in_num
+ FROM (
+ SELECT slp.id AS sales_ledger_product_id,
+ sir.stock_in_num
+ FROM stock_in_record sir
+ INNER JOIN sales_ledger_product slp
+ ON slp.type = 2
+ AND TRIM(sir.record_type) = '7'
+ AND sir.record_id = slp.sales_ledger_id
+ AND (
+ (sir.batch_no IS NOT NULL AND sir.batch_no LIKE CONCAT('%-', slp.id))
+ OR (sir.batch_no IS NULL AND sir.product_model_id = slp.product_model_id)
+ )
+ WHERE sir.approval_status = 1
+
+ UNION ALL
+
+ SELECT slp.id AS sales_ledger_product_id,
+ sir.stock_in_num
+ FROM stock_in_record sir
+ INNER JOIN quality_inspect qi
+ ON TRIM(sir.record_type) = '10'
+ AND sir.record_id = qi.id
+ INNER JOIN sales_ledger_product slp
+ ON slp.type = 2
+ AND slp.sales_ledger_id = qi.purchase_ledger_id
+ AND slp.product_model_id = qi.product_model_id
+ WHERE sir.approval_status = 1
+ ) rel
+ GROUP BY rel.sales_ledger_product_id
+ ) approved_qty ON approved_qty.sales_ledger_product_id = slp.id
+ WHERE slp.type = 2
+ ) product_status
+ GROUP BY product_status.sales_ledger_id
+ ) ls ON ls.sales_ledger_id = pl.id
+ <where>
+ <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''">
+ AND pl.purchase_contract_number LIKE CONCAT('%', #{c.purchaseContractNumber}, '%')
+ </if>
+ <if test="c.approvalStatus != null and c.approvalStatus != ''">
+ AND pl.approval_status = #{c.approvalStatus}
+ </if>
+ <if test="c.supplierName != null and c.supplierName != ''">
+ AND pl.supplier_name LIKE CONCAT('%', #{c.supplierName}, '%')
+ </if>
+ <if test="c.salesContractNo != null and c.salesContractNo != ''">
+ AND pl.sales_contract_no LIKE CONCAT('%', #{c.salesContractNo}, '%')
+ </if>
+ <if test="c.projectName != null and c.projectName != ''">
+ AND pl.project_name LIKE CONCAT('%', #{c.projectName}, '%')
+ </if>
+ <if test="c.entryDateStart != null and c.entryDateStart != ''">
+ AND pl.entry_date >= #{c.entryDateStart}
+ </if>
+ <if test="c.entryDateEnd != null and c.entryDateEnd != ''">
+ AND pl.entry_date <= #{c.entryDateEnd}
+ </if>
+ <if test="c.supplierId != null">
+ AND pl.supplier_id = #{c.supplierId}
+ </if>
+ <if test="c.approvalStatus != null">
+ AND pl.approval_status = #{c.approvalStatus}
+ </if>
+ </where>
+ ) result
+ <if test="c.stockInStatus != null and c.stockInStatus != ''">
+ WHERE result.stock_in_status = #{c.stockInStatus}
+ </if>
+ ORDER BY result.entry_date DESC
</select>
<select id="selectTotalPurchaseAmount" resultType="java.math.BigDecimal">
@@ -105,4 +143,4 @@
</if>
</where>
</select>
-</mapper>
\ No newline at end of file
+</mapper>
--
Gitblit v1.9.3