From 2bdf6b86c427cd8a0f433d6a559d532eed67b733 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 13 八月 2026 13:40:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津_意博凯信' into dev_天津_意博凯信

---
 src/main/resources/mapper/account/AccountStatementMapper.xml |  135 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 113 insertions(+), 22 deletions(-)

diff --git a/src/main/resources/mapper/account/AccountStatementMapper.xml b/src/main/resources/mapper/account/AccountStatementMapper.xml
index 32b1621..324d243 100644
--- a/src/main/resources/mapper/account/AccountStatementMapper.xml
+++ b/src/main/resources/mapper/account/AccountStatementMapper.xml
@@ -41,38 +41,129 @@
     ORDER BY lj.statement_month DESC
     </select>
     <select id="selectVatDtoPage" resultType="com.ruoyi.purchase.dto.VatDto">
-    SELECT
-        month,
-        jTaxAmount,
-        xTaxAmount,
-        (jTaxAmount - xTaxAmount) AS taxAmount
-    FROM (
+        SELECT * FROM (
+            SELECT
+                asi.id,
+                asi.invoice_number AS invoiceNumber,
+                asi.issue_date AS issueDate,
+                'sales' AS type,
+                asi.invoice_type AS invoiceType,
+                asi.tax_price AS taxAmount,
+                asi.tax_inclusive_price AS totalAmount,
+                c.customer_name AS customerName,
+                NULL AS supplierName,
+                DATE_FORMAT(asi.issue_date, '%Y-%m') AS month
+            FROM account_sales_invoice asi
+            LEFT JOIN customer c ON c.id = asi.customer_id
+            WHERE (asi.status IS NULL OR asi.status = 0)
+            UNION ALL
+            SELECT
+                api.id,
+                api.invoice_number AS invoiceNumber,
+                api.issue_date AS issueDate,
+                'purchase' AS type,
+                api.invoice_type AS invoiceType,
+                api.tax_price AS taxAmount,
+                api.tax_inclusive_price AS totalAmount,
+                NULL AS customerName,
+                s.supplier_name AS supplierName,
+                DATE_FORMAT(api.issue_date, '%Y-%m') AS month
+            FROM account_purchase_invoice api
+            LEFT JOIN supplier_manage s ON s.id = api.supplier_id
+            WHERE (api.status IS NULL OR api.status = 0)
+        ) AS invoice_detail
+        <where>
+            <if test="month != null and month != ''">
+                AND month = #{month}
+            </if>
+            <if test="type != null and type != ''">
+                AND type = #{type}
+            </if>
+        </where>
+        ORDER BY issueDate DESC, type
+    </select>
+
+    <select id="selectVatSummary" resultType="com.ruoyi.purchase.dto.VatSummaryDto">
         SELECT
             month,
-            SUM(IF(type = 'purchase', tax_price, 0)) AS xTaxAmount,
-            SUM(IF(type = 'sales', tax_price, 0)) AS jTaxAmount
+            SUM(jTaxAmount) AS jTaxAmount,
+            SUM(xTaxAmount) AS xTaxAmount,
+            SUM(jTaxAmount) - SUM(xTaxAmount) AS taxAmount
         FROM (
             SELECT
                 DATE_FORMAT(issue_date, '%Y-%m') AS month,
-                tax_price,
-                'sales' AS type
+                SUM(tax_price) AS jTaxAmount,
+                0 AS xTaxAmount
             FROM account_sales_invoice
-            WHERE status != 1
+            WHERE (status IS NULL OR status = 0)
+            <if test="year != null and year != ''">
+                AND YEAR(issue_date) = #{year}
+            </if>
+            GROUP BY DATE_FORMAT(issue_date, '%Y-%m')
             UNION ALL
             SELECT
                 DATE_FORMAT(issue_date, '%Y-%m') AS month,
-                tax_price,
-                'purchase' AS type
+                0 AS jTaxAmount,
+                SUM(tax_price) AS xTaxAmount
             FROM account_purchase_invoice
-            WHERE status != 1
-        ) AS all_data
-    GROUP BY month
-    ) AS TT
-     <where>
-            <if test="month != null">
-                and TT.month = #{month}
+            WHERE (status IS NULL OR status = 0)
+            <if test="year != null and year != ''">
+                AND YEAR(issue_date) = #{year}
             </if>
-     </where>
-    ORDER BY TT.month
+            GROUP BY DATE_FORMAT(issue_date, '%Y-%m')
+        ) t
+        GROUP BY month
+        ORDER BY month
+    </select>
+
+    <select id="listVatDetail" resultType="com.ruoyi.purchase.dto.VatDto">
+        SELECT *
+        FROM (
+            -- 杩涢」绋庢槑缁嗭紙閲囪喘璁㈠崟锛�
+            SELECT
+                pl.purchase_contract_number AS invoiceNo,
+                pl.sales_contract_no AS salesContractNo,
+                pl.supplier_name AS supplierName,
+                NULL AS customerName,
+                '杩涢」' AS orderType,
+                pl.entry_date AS invoiceDate,
+                slp.tax_rate AS taxRate,
+                ROUND(SUM(slp.tax_inclusive_total_price - slp.tax_exclusive_total_price), 2) AS jTaxAmount,
+                0 AS xTaxAmount,
+                ROUND(SUM(slp.tax_inclusive_total_price - slp.tax_exclusive_total_price), 2) AS taxAmount
+            FROM sales_ledger_product slp
+            LEFT JOIN purchase_ledger pl ON pl.id = slp.sales_ledger_id
+            WHERE slp.type = 2
+              AND slp.tax_rate IS NOT NULL
+              AND slp.tax_rate > 0
+            GROUP BY pl.id
+
+            UNION ALL
+
+            -- 閿�椤圭◣鏄庣粏锛堥攢鍞鍗曪級
+            SELECT
+                sl.sales_contract_no AS invoiceNo,
+                sl.sales_contract_no AS salesContractNo,
+                NULL AS supplierName,
+                sl.customer_name AS customerName,
+                '閿�椤�' AS orderType,
+                sl.entry_date AS invoiceDate,
+                slp.tax_rate AS taxRate,
+                0 AS jTaxAmount,
+                ROUND(SUM(slp.tax_inclusive_total_price - slp.tax_exclusive_total_price), 2) AS xTaxAmount,
+                ROUND(SUM(slp.tax_inclusive_total_price - slp.tax_exclusive_total_price), 2) AS taxAmount
+            FROM sales_ledger_product slp
+            LEFT JOIN sales_ledger sl ON sl.id = slp.sales_ledger_id
+            WHERE slp.type = 1
+              AND slp.tax_rate IS NOT NULL
+              AND slp.tax_rate > 0
+            GROUP BY sl.id
+        ) a
+        <where>
+            <if test="month != null and month != ''">
+                AND DATE_FORMAT(a.invoiceDate, '%Y-%m') = #{month}
+            </if>
+        </where>
+        ORDER BY a.invoiceDate DESC
     </select>
 </mapper>

--
Gitblit v1.9.3