From 897acda0bb8c0bcd9511d62fad24060609669d35 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期一, 18 八月 2025 10:04:24 +0800 Subject: [PATCH] yys 完善劳保台账导入导出 --- src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 152 insertions(+), 19 deletions(-) diff --git a/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml b/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml index 9a04b88..413f293 100644 --- a/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml +++ b/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml @@ -6,27 +6,160 @@ <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 - 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 + SELECT + A.*, + FORMAT(A.sales_tax_amount - A.purchase_tax_amount, 2) AS balance_amount + FROM ( + SELECT + sl.customer_contract_no, + sl.id, + pl.id AS pl_id, + sl.customer_name, + sl.project_name, + slp.tax_inclusive_total_price - slp.tax_exclusive_total_price AS contract_amount, + SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price) AS purchase_amount, + (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, + (slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) - + SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price) AS balance, + CONCAT( + FORMAT( + ((slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) - + SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price)) / + (slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) * 100, + 2), + '%' + ) AS balance_ratio, + (slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) AS sales_tax_amount, + SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price) AS purchase_tax_amount + FROM + purchase_ledger pl + 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.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},'%') + AND A.customer_name LIKE CONCAT('%', #{c.customerName}, '%') </if> </where> </select> -</mapper> \ No newline at end of file + <select id="listVat" resultType="com.ruoyi.purchase.dto.VatDto"> + 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> -- Gitblit v1.9.3