From 7a93f4097430703dc60c4aee0240ed348a0ab1df Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 06 一月 2025 18:12:00 +0800
Subject: [PATCH] 核算重构

---
 ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml |   88 ++++++++++++++++++++++++++++---------------
 1 files changed, 57 insertions(+), 31 deletions(-)

diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
index 2f3ec80..9733db3 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
@@ -18,46 +18,73 @@
         <result column="latestDeductMoney" property="latestDeductMoney"/>
     </resultMap>
 
-    <select id="page" resultMap="BaseResultMap">
+<!--    <select id="page" resultMap="BaseResultMap">-->
+<!--        SELECT-->
+<!--            tcr.contract_id,-->
+<!--            tyu.unit_name,-->
+<!--            tc.name,-->
+<!--            tcr.id,-->
+<!--            tcr.status,-->
+<!--            tcr.deduct_money,-->
+<!--            tcr.create_time,-->
+<!--            tcr.update_time,-->
+<!--            tcr.calculate_time,-->
+<!--            tcr.latest_time,-->
+<!--            (SELECT a.deduct_money FROM (SELECT deduct_money,which_year, which_month FROM t_calculate_record WHERE contract_id = tcr.contract_id ORDER BY which_year, which_month DESC limit 1) a) as latestDeductMoney-->
+<!--        FROM-->
+<!--        t_calculate_report tcr-->
+<!--        INNER JOIN t_contract tc ON tcr.contract_id = tc.id-->
+<!--        INNER JOIN t_yw_unit tyu ON tyu.id = tc.unit_id-->
+<!--        <where>-->
+<!--            AND tcr.deleted = 0 AND tc.deleted = 0 AND tyu.deleted = 0-->
+<!--            <if test="query.unitName != null and query.unitName != '' ">-->
+<!--                AND tyu.unit_name like concat('%', #{query.unitName}, '%')-->
+<!--            </if>-->
+<!--            <if test="query.unitId != null">-->
+<!--                AND tyu.id = #{query.unitId}-->
+<!--            </if>-->
+<!--        </where>-->
+<!--    </select>-->
+    <select id="page" resultType="com.ycl.platform.domain.vo.CalculateReportVO">
         SELECT
-            tcr.contract_id,
-            tyu.unit_name,
-            tc.name,
-            tcr.id,
-            tcr.status,
-            tcr.deduct_money,
-            tcr.create_time,
-            tcr.update_time,
-            tcr.calculate_time,
-            tcr.latest_time,
-            (SELECT a.deduct_money FROM (SELECT deduct_money,which_year, which_month FROM t_calculate_record WHERE contract_id = tcr.contract_id ORDER BY which_year, which_month DESC limit 1) a) as latestDeductMoney
+        tcr.id,
+        tcr.contract_id,
+        tyu.unit_name,
+        tc.name as contractName,
+        tcr.which_year,
+        SUM(tcr.deduct_money) AS deductMoney,
+        MAX(tcr.create_time) AS latest_time,
+        (
+        SELECT deduct_money
+        FROM t_calculate_record
+        WHERE contract_id = tcr.contract_id
+        AND which_year = tcr.which_year
+        ORDER BY which_month DESC
+        LIMIT 1
+        ) AS latestDeductMoney
         FROM
-        t_calculate_report tcr
+        t_calculate_record tcr
         INNER JOIN t_contract tc ON tcr.contract_id = tc.id
         INNER JOIN t_yw_unit tyu ON tyu.id = tc.unit_id
         <where>
             AND tcr.deleted = 0 AND tc.deleted = 0 AND tyu.deleted = 0
-            <if test="query.unitName != null and query.unitName != '' ">
-                AND tyu.unit_name like concat('%', #{query.unitName}, '%')
-            </if>
-            <if test="query.unitId != null">
-                AND tyu.id = #{query.unitId}
+            <if test="query.status!=null and query.status !=''">
+                AND tcr.status = #{query.status}
             </if>
         </where>
+        group by contract_id,which_year
     </select>
-
     <resultMap id="DetailResultMap" type="com.ycl.platform.domain.vo.CalculateReportDetailVO">
         <result column="id" property="id"/>
         <result column="create_time" property="createTime"/>
         <result column="unit_name" property="unitName"/>
         <result column="name" property="contractName"/>
         <result column="contract_id" property="contractId"/>
-        <result column="calculate_time" property="calculateTime"/>
-        <result column="deduct_money" property="deductMoney"/>
+        <result column="which_year" property="whichYear"/>
         <result column="status" property="status"/>
         <collection property="ruleList" column="contract_id" ofType="com.ycl.platform.domain.vo.CalculateMoneyRuleVO"
                     select="selectRuleByContractId"/>
-        <collection property="recordList" column="contract_id" ofType="com.ycl.platform.domain.vo.CalculateRecordVO"
+        <collection property="recordList" column="{contractId=contract_id, whichYear=which_year}" ofType="com.ycl.platform.domain.vo.CalculateRecordVO"
                     select="selectRecordByContractId"/>
     </resultMap>
 
@@ -77,14 +104,14 @@
                score,
                deduct_money as deductMoney,
                which_year as whichYear,
-               which_month as whichMonth
+               which_month as whichMonth,
+               status
         FROM
              t_calculate_record
         WHERE
-              contract_id = #{contractId} AND deleted = 0
+              contract_id = #{contractId} AND which_year = #{whichYear} AND deleted = 0
         ORDER BY
-            create_time DESC
-
+            create_time
     </select>
 
     <select id="getById" resultMap="DetailResultMap">
@@ -92,15 +119,14 @@
                tc.name,
                tcr.id,
                tcr.contract_id,
-               tcr.deduct_money,
                tcr.create_time,
                tcr.update_time,
-               tcr.calculate_time,
-               tcr.status
-        FROM t_calculate_report tcr
+               tcr.which_year
+        FROM t_calculate_record tcr
                  INNER JOIN t_contract tc ON tcr.contract_id = tc.id
                  INNER JOIN t_yw_unit tyu ON tyu.id = tc.unit_id
-        WHERE tcr.id = #{id}
+        WHERE tcr.contract_id = #{query.contractId} AND tcr.which_year = #{query.whichYear}
+        limit 1
     </select>
 
     <select id="exportData" resultType="com.ycl.platform.domain.excel.CalculateExport">

--
Gitblit v1.8.0