From 118afd697fe3197236dcf0ffd6cfd39bcec2d85f Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期一, 14 七月 2025 13:37:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml | 154 ++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 128 insertions(+), 26 deletions(-) diff --git a/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml b/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml index 5d3b24c..0b29502 100644 --- a/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml +++ b/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml @@ -6,23 +6,26 @@ <select id="selectPurchaseReport" resultType="com.ruoyi.purchase.dto.InvoicePurchaseReportDto"> - select sl.customer_contract_no, - sl.customer_name, - sl.project_name, - sl.contract_amount, - pl.contract_amount as purchase_amount, - sum(slp.tax_exclusive_total_price) as sale_tax_exclusive_total_price, - sum(pr.tax_exclusive_total_price) as tax_exclusive_total_price, - (sl.contract_amount-pl.contract_amount) as balance, - CONCAT(FORMAT((sl.contract_amount - pl.contract_amount) / sl.contract_amount * 100, 2), '%') AS balance_ratio, - sl.contract_amount-sum(slp.tax_exclusive_total_price)-(pl.contract_amount-sum(pr.tax_exclusive_total_price)) as balance_amount + select A.*, + FORMAT(A.contract_amount-A.sale_tax_exclusive_total_price-A.purchase_amount+A.tax_exclusive_total_price,2) as balance_amount + from (select sl.customer_contract_no, + sl.id, + pl.id as pl_id, + sl.customer_name, + sl.project_name, + sl.contract_amount, + pl.contract_amount as purchase_amount, + sum(slp.tax_exclusive_total_price) /count(slp.id) as sale_tax_exclusive_total_price, + sum(slp1.tax_exclusive_total_price) as tax_exclusive_total_price, + (sl.contract_amount - pl.contract_amount) as balance, + CONCAT(FORMAT((sl.contract_amount - pl.contract_amount) / sl.contract_amount * 100, 2), + '%') AS balance_ratio from purchase_ledger pl - left join sales_ledger sl on pl.sales_ledger_id = sl.id - left join product_record pr on pr.purchase_ledger_id = pl.id - left join sales_ledger_product slp on slp.sales_ledger_id = sl.id - - group by sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount - having sl.customer_contract_no is not null + left join sales_ledger sl on pl.sales_ledger_id = sl.id + left join sales_ledger_product slp on slp.sales_ledger_id = sl.id and slp.type = 1 + left join sales_ledger_product slp1 on slp1.sales_ledger_id = pl.id and slp1.type = 2 + group by sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount,sl.id,pl.id + having sl.customer_contract_no is not null) A <where> <if test="c.customerName != null and c.customerName != ''"> and sl.customer_name like concat('%',#{c.customerName},'%') @@ -30,15 +33,114 @@ </where> </select> <select id="listVat" resultType="com.ruoyi.purchase.dto.VatDto"> - SELECT - DATE_FORMAT(il.invoice_date, '%Y-%m') AS month, - ROUND(SUM(pr.invoice_amount - pr.invoice_amount / (1 + pr.tax_rate / 100)), 2) AS tax_amount - FROM invoice_ledger il - LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id - WHERE il.invoice_no IS NOT NULL - AND invoice_type = '澧炰笓绁�' - GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m') - ORDER BY month; + select * + from (SELECT + COALESCE(a1.month, a2.month) AS month, + IFNULL(a1.tax_amount, 0) AS j_tax_amount, + IFNULL(a2.x_tax_amount, 0) AS x_tax_amount + FROM ( + -- 绗竴涓煡璇細鏉ヨ嚜 invoice_ledger 鐨勭◣棰� + SELECT + DATE_FORMAT(il.invoice_date, '%Y-%m') AS month, + ROUND(SUM(pr.invoice_amount - pr.invoice_amount / (1 + pr.tax_rate / 100)), 2) AS tax_amount + FROM invoice_ledger il + LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id + WHERE il.invoice_no IS NOT NULL + AND invoice_type = '澧炰笓绁�' + GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m') + ) a1 + LEFT JOIN ( + -- 绗簩涓煡璇細鏉ヨ嚜 ticket_registration 鐨勭◣棰� + SELECT + DATE_FORMAT(a.issue_date, '%Y-%m') AS month, + SUM(a.invoice_amount) AS x_tax_amount + FROM ( + SELECT DISTINCT pr.id, + tr.issue_date, + ROUND(pr.tickets_amount / (1 + pr.tax_rate / 100), 2) AS un_tickets_price, + ROUND(pr.tickets_amount - pr.tickets_amount / (1 + pr.tax_rate / 100), 2) AS invoice_amount + FROM product_record pr + LEFT JOIN purchase_ledger pl ON pl.id = pr.purchase_ledger_id + LEFT JOIN sales_ledger sl ON sl.id = pl.sales_ledger_id + LEFT JOIN ticket_registration tr ON tr.purchase_ledger_id = pl.id + LEFT JOIN product_model pm ON pm.id = pr.product_model_id + WHERE type = 2 + AND tr.invoice_number IS NOT NULL + ) a + GROUP BY DATE_FORMAT(a.issue_date, '%Y-%m') + ) a2 ON a1.month = a2.month + + UNION ALL + + SELECT + COALESCE(a1.month, a2.month) AS month, + IFNULL(a1.tax_amount, 0) AS tax_amount, + IFNULL(a2.x_tax_amount, 0) AS x_tax_amount + FROM ( + -- 绗簩涓煡璇細鏉ヨ嚜 ticket_registration 鐨勭◣棰濓紙鍙嶈繃鏉ヨˉ鍏ㄦ病鏈夊尮閰嶅埌鐨勶級 + SELECT + DATE_FORMAT(a.issue_date, '%Y-%m') AS month, + SUM(a.invoice_amount) AS x_tax_amount + FROM ( + SELECT DISTINCT pr.id, + tr.issue_date, + ROUND(pr.tickets_amount / (1 + pr.tax_rate / 100), 2) AS un_tickets_price, + ROUND(pr.tickets_amount - pr.tickets_amount / (1 + pr.tax_rate / 100), 2) AS invoice_amount + FROM product_record pr + LEFT JOIN purchase_ledger pl ON pl.id = pr.purchase_ledger_id + LEFT JOIN sales_ledger sl ON sl.id = pl.sales_ledger_id + LEFT JOIN ticket_registration tr ON tr.purchase_ledger_id = pl.id + LEFT JOIN product_model pm ON pm.id = pr.product_model_id + WHERE type = 2 + AND tr.invoice_number IS NOT NULL + ) a + GROUP BY DATE_FORMAT(a.issue_date, '%Y-%m') + ) a2 + LEFT JOIN ( + -- 绗竴涓煡璇細鏉ヨ嚜 invoice_ledger 鐨勭◣棰� + SELECT + DATE_FORMAT(il.invoice_date, '%Y-%m') AS month, + ROUND(SUM(pr.invoice_amount - pr.invoice_amount / (1 + pr.tax_rate / 100)), 2) AS tax_amount + FROM invoice_ledger il + LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id + WHERE il.invoice_no IS NOT NULL + AND invoice_type = '澧炰笓绁�' + GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m') + ) a1 ON a1.month = a2.month + WHERE a1.month IS NULL + ORDER BY month + )as a + <where> + <if test="month != null"> + and a.month = #{month} + </if> + </where> + + </select> + <select id="listVat1" resultType="com.ruoyi.purchase.dto.VatDto"> + # SELECT +# DATE_FORMAT(il.invoice_date, '%Y-%m') AS month, +# ROUND(SUM(pr.invoice_amount - pr.invoice_amount / (1 + pr.tax_rate / 100)), 2) AS tax_amount +# FROM invoice_ledger il +# LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id +# WHERE il.invoice_no IS NOT NULL +# AND invoice_type = '澧炰笓绁�' +# GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m') +# ORDER BY month; +# select DATE_FORMAT(a.issue_date, '%Y-%m'), sum(a.invoice_amount) as xTaxAmount +# from (SELECT distinct pr.id, +# tr.issue_date, +# ROUND(pr.tickets_amount / (1 + pr.tax_rate / 100), 2) AS un_tickets_price, +# ROUND(pr.tickets_amount - pr.tickets_amount / (1 + pr.tax_rate / 100), +# 2) AS invoice_amount +# FROM product_record pr +# LEFT JOIN purchase_ledger pl ON pl.id = pr.purchase_ledger_id +# LEFT JOIN sales_ledger sl ON sl.id = pl.sales_ledger_id +# LEFT JOIN ticket_registration tr ON tr.purchase_ledger_id = pl.id +# LEFT JOIN product_model pm ON pm.id = pr.product_model_id +# WHERE type = 2 +# and tr.invoice_number is not null) a +# GROUP BY DATE_FORMAT(a.issue_date, '%Y-%m') </select> -</mapper> \ No newline at end of file +</mapper> -- Gitblit v1.9.3