From 31d3591b34d4f26ad2ab207ca3044048d9adb9df Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 21 八月 2024 17:51:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml |  116 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 95 insertions(+), 21 deletions(-)

diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
index 3af6b52..85e8d77 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
@@ -4,37 +4,111 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.CalculateReportVO">
-        <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="which_month" property="whichMonth" />
-        <result column="update_by" property="updateBy" />
+        <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="latest_time" property="latestTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="can_publish" property="canPublish"/>
+        <result column="status" property="status"/>
+        <result column="latestDeductMoney" property="latestDeductMoney"/>
     </resultMap>
 
     <select id="page" resultMap="BaseResultMap">
         SELECT
-               tyu.unit_name,
-               tc.name,
-               tcr.id,
-               tcr.deduct_money,
-               tcr.create_time,
-               tcr.update_time,
-               tcr.calculate_time
+            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
+        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
+            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>
         </where>
     </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="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"
+                    select="selectRecordByContractId"/>
+    </resultMap>
+
+    <select id="selectRuleByContractId" resultType="com.ycl.platform.domain.vo.CalculateMoneyRuleVO">
+        SELECT id,
+               description,
+               score_condition as scoreCondition
+        FROM t_calculate_money_rule
+        WHERE contract_id = #{contractId}
+          AND deleted = 0
+    </select>
+
+    <select id="selectRecordByContractId" resultType="com.ycl.platform.domain.vo.CalculateRecordVO">
+        SELECT
+               id,
+               create_time  as createTime,
+               score,
+               deduct_money as deductMoney,
+               which_year as whichYear,
+               which_month as whichMonth
+        FROM
+             t_calculate_record
+        WHERE
+              contract_id = #{contractId} AND deleted = 0
+        ORDER BY
+            create_time DESC
+
+    </select>
+
+    <select id="getById" resultMap="DetailResultMap">
+        SELECT tyu.unit_name,
+               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
+                 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}
+    </select>
+
+    <select id="exportData" resultType="com.ycl.platform.domain.excel.CalculateExport">
+        SELECT
+            a.rule_name,
+            COUNT(b.id) AS num,
+            IFNULL(-SUM(score), 0) AS score
+        FROM t_calculate_rule a
+        LEFT JOIN t_contract_score b ON b.rule_id = a.id AND auditing_status = 'PASS' AND b.deleted = 0
+        WHERE a.contract_id = #{contractId} AND a.deleted = 0
+        GROUP BY a.rule_name
+    </select>
+
 </mapper>

--
Gitblit v1.8.0