From b5351598c8f1d54cdb445b5975e148aa3fece2a1 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 22 五月 2023 16:03:58 +0800
Subject: [PATCH] optimize owner received owe fee

---
 java110-db/src/main/resources/mapper/report/ReportFeeStatisticsServiceDaoImplMapper.xml |  193 ++++++++++++++++++++++++-----------------------
 1 files changed, 99 insertions(+), 94 deletions(-)

diff --git a/java110-db/src/main/resources/mapper/report/ReportFeeStatisticsServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/report/ReportFeeStatisticsServiceDaoImplMapper.xml
index 264f9f4..2a59ca7 100644
--- a/java110-db/src/main/resources/mapper/report/ReportFeeStatisticsServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/report/ReportFeeStatisticsServiceDaoImplMapper.xml
@@ -6,7 +6,7 @@
 
     <!-- 鏌ヨ鍘嗗彶娆犺垂 -->
     <select id="getHisMonthOweFee" parameterType="Map" resultType="Map">
-        select ifnull(sum(t.receivable_amount - t.received_amount - t.discount_amount),0.0) hisOweFee
+        select ifnull(sum(t.receivable_amount),0.0) hisOweFee
         from pay_fee_detail_month t
         INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
         <if test="floorId != null and floorId != ''">
@@ -40,13 +40,14 @@
             and pf.fee_type_cd = #{feeTypeCd}
         </if>
         and t.status_cd = '0'
+        and t.detail_id = '-1'
         and t.community_id= #{communityId}
         and t.cur_month_time &lt; #{startDate}
     </select>
 
     <!-- 鏌ヨ鍗曟湀娆犺垂 -->
     <select id="getCurMonthOweFee" parameterType="Map" resultType="Map">
-        select ifnull(sum(t.receivable_amount - t.received_amount - t.discount_amount),0.0) curOweFee
+        select ifnull(sum(t.receivable_amount),0.0) curOweFee
         from pay_fee_detail_month t
         INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
         <if test="floorId != null and floorId != ''">
@@ -80,8 +81,9 @@
             and pf.fee_type_cd = #{feeTypeCd}
         </if>
         and t.status_cd = '0'
+        and t.detail_id = '-1'
         and t.community_id= #{communityId}
-        and t.cur_month_time &gt; #{startDate}
+        and t.cur_month_time &gt;= #{startDate}
         and t.cur_month_time &lt; #{endDate}
     </select>
 
@@ -123,7 +125,7 @@
         </if>
         and t.status_cd = '0'
         and t.community_id= #{communityId}
-        and t.cur_month_time &gt; #{startDate}
+        and t.cur_month_time &gt;= #{startDate}
         and t.cur_month_time &lt; #{endDate}
     </select>
 
@@ -164,9 +166,9 @@
         </if>
         and t.status_cd = '0'
         and t.community_id= #{communityId}
-        and t.pay_fee_time &gt;  #{startDate}
+        and t.pay_fee_time &gt; #{startDate}
         and t.pay_fee_time &lt; #{endDate}
-        and t.cur_month_time &lt;  #{startDate}
+        and t.cur_month_time &lt; #{startDate}
     </select>
 
     <!-- 鏌ヨ 棰勪氦璐圭敤 -->
@@ -206,9 +208,9 @@
         </if>
         and t.status_cd = '0'
         and t.community_id= #{communityId}
-        and t.pay_fee_time &gt;  #{startDate}
+        and t.pay_fee_time &gt; #{startDate}
         and t.pay_fee_time &lt; #{endDate}
-        and t.cur_month_time &gt;  #{endDate}
+        and t.cur_month_time &gt; #{endDate}
     </select>
 
     <!-- 鏌ヨ瀹炴敹璐圭敤 -->
@@ -251,7 +253,7 @@
         </if>
         and t.status_cd = '0'
         and t.community_id= #{communityId}
-        and t.create_time &gt;  #{startDate}
+        and t.create_time &gt; #{startDate}
         and t.create_time &lt; #{endDate}
     </select>
 
@@ -350,29 +352,29 @@
 
         select a.floor_id floorId,a.floor_num floorNum,a.name floorName,
         (
-            select count(1) from (
-            select bu.floor_id,a.room_id
-            from building_room a
-            left join pay_fee_detail_month t on t.obj_id = a.room_id
-            INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
-            left join building_unit bu on a.unit_id = bu.unit_id and bu.status_cd = '0'
-            where
-            1=1
-            and a.status_cd = '0'
-            and pf.payer_obj_type = '3333'
-            and t.community_id= a.community_id
-            and t.cur_month_time &lt; #{endDate}
-            and (t.receivable_amount - t.received_amount - t.discount_amount) > 0
-            <if test="configIds !=null ">
-                and t.config_id in
-                <foreach collection="configIds" item="item" index="index" open="(" close=")" separator=",">
-                    #{item}
-                </foreach>
-            </if>
-            <if test="feeTypeCd != null and feeTypeCd != ''">
-                and pf.fee_type_cd = #{feeTypeCd}
-            </if>
-            group by bu.floor_id,t.obj_id
+        select count(1) from (
+        select bu.floor_id,a.room_id
+        from building_room a
+        left join pay_fee_detail_month t on t.obj_id = a.room_id
+        INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        left join building_unit bu on a.unit_id = bu.unit_id and bu.status_cd = '0'
+        where
+        1=1
+        and a.status_cd = '0'
+        and pf.payer_obj_type = '3333'
+        and t.community_id= a.community_id
+        and t.cur_month_time &lt; #{endDate}
+        and (t.receivable_amount - t.received_amount - t.discount_amount) > 0
+        <if test="configIds !=null ">
+            and t.config_id in
+            <foreach collection="configIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="feeTypeCd != null and feeTypeCd != ''">
+            and pf.fee_type_cd = #{feeTypeCd}
+        </if>
+        group by bu.floor_id,t.obj_id
         ) b
         where b.floor_id = a.floor_id
         ) oweRoomCount,
@@ -450,7 +452,7 @@
         </if>
         ) preReceivedFee,
         (
-        select ifnull(sum(t.receivable_amount - t.received_amount - t.discount_amount),0.0) hisOweFee
+        select ifnull(sum(t.receivable_amount),0.0) hisOweFee
         from pay_fee_detail_month t
         INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
         LEFT JOIN building_room br on t.obj_id = br.room_id and br.status_cd = '0'
@@ -460,6 +462,7 @@
         and bu.floor_id = a.floor_id
         and t.status_cd = '0'
         and t.community_id= a.community_id
+        and t.detail_id = '-1'
         and t.cur_month_time &lt; #{startDate}
         <if test="configIds !=null ">
             and t.config_id in
@@ -482,7 +485,7 @@
         and bu.floor_id = a.floor_id
         and t.status_cd = '0'
         and t.community_id= a.community_id
-        and t.cur_month_time  &gt; #{startDate}
+        and t.cur_month_time &gt; #{startDate}
         and t.cur_month_time &lt; #{endDate}
         <if test="configIds !=null ">
             and t.config_id in
@@ -541,7 +544,7 @@
         1=1
         and a.status_cd = '0'
         and pf.payer_obj_type = '3333'
-        and t.community_id= a.community_id
+        and t.community_id= #{communityId}
         and t.cur_month_time &lt; #{endDate}
         <if test="configIds !=null ">
             and t.config_id in
@@ -570,7 +573,7 @@
             and bu.floor_id = a.floor_id
         </if>
         and t.status_cd = '0'
-        and t.community_id= a.community_id
+        and t.community_id= #{communityId}
         and t.create_time &gt; #{startDate}
         and t.create_time &lt; #{endDate}
         <if test="configIds !=null ">
@@ -595,7 +598,7 @@
             and bu.floor_id = a.floor_id
         </if>
         and t.status_cd = '0'
-        and t.community_id=  #{communityId}
+        and t.community_id= #{communityId}
         and t.pay_fee_time &gt; #{startDate}
         and t.pay_fee_time &lt; #{endDate}
         and t.cur_month_time &gt; #{endDate}
@@ -608,7 +611,7 @@
         and pf.fee_type_cd = a.status_cd
         ) preReceivedFee,
         (
-        select ifnull(sum(t.receivable_amount - t.received_amount - t.discount_amount),0.0) hisOweFee
+        select ifnull(sum(t.receivable_amount),0.0) hisOweFee
         from pay_fee_detail_month t
         INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
         <if test="floorId != null and floorId != ''">
@@ -621,7 +624,8 @@
             and bu.floor_id = a.floor_id
         </if>
         and t.status_cd = '0'
-        and t.community_id=  #{communityId}
+        and t.community_id= #{communityId}
+        and t.detail_id = '-1'
         and t.cur_month_time &lt; #{startDate}
         <if test="configIds !=null ">
             and t.config_id in
@@ -646,7 +650,7 @@
         </if>
         and t.status_cd = '0'
         and t.community_id= #{communityId}
-        and t.cur_month_time  &gt; #{startDate}
+        and t.cur_month_time &gt; #{startDate}
         and t.cur_month_time &lt; #{endDate}
         <if test="configIds !=null ">
             and t.config_id in
@@ -669,83 +673,84 @@
         select a.obj_name objName,a.obj_id objId,a.owner_name ownerName,a.link
         from pay_fee_detail_month a
         where a.status_cd = '0'
-        and a.community_id = '2023013154290059'
+        and a.community_id = #{communityId}
         group by a.obj_name,a.obj_id,a.owner_name,a.link
         ) b
     </select>
-
+    <!-- 鏌ヨ鎴垮眿璐圭敤鏄庣粏琛�-->
     <select id="getObjFeeSummary" parameterType="Map" resultType="Map">
-        select a.obj_name objName,a.obj_id objId,a.owner_name ownerName,a.link,
+        select
+        a.obj_id objId,pfc.fee_type_cd feeTypeCd,
         (
-        select ifnull(sum(t.receivable_amount - t.received_amount - t.discount_amount),0.0) hisOweFee
+        select ifnull(sum(t.receivable_amount),0.0) hisOweFee
         from pay_fee_detail_month t
         INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        inner join pay_fee_config pfc1 on pfc1.config_id = t.config_id and pfc1.status_cd = '0'
         where t.obj_id = a.obj_id
         and t.status_cd = '0'
+        and t.detail_id = '-1'
         and t.community_id= a.community_id
-        and t.cur_month_time &lt; #{startDate}
-        ) hisOweFee,
-        (
-        select ifnull(sum(t.receivable_amount - t.received_amount - t.discount_amount),0.0) curOweFee
-        from pay_fee_detail_month t
-        INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
-        where t.obj_id = a.obj_id
-        and t.status_cd = '0'
-        and t.community_id= a.community_id
-        and t.cur_month_time &gt; #{startDate}
+        and t.obj_id = a.obj_id
+        and pfc1.fee_type_cd = pfc.fee_type_cd
         and t.cur_month_time &lt; #{endDate}
-        ) curOweFee,
-        (
-        select ifnull(sum(t.receivable_amount),0.0) curReceivableFee
-        from pay_fee_detail_month t
-        INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
-        where t.obj_id = a.obj_id
-        and t.status_cd = '0'
-        and t.community_id= a.community_id
-        and t.cur_month_time &gt; #{startDate}
-        and t.cur_month_time &lt; #{endDate}
-        ) curReceivableFee,
-        (
-        select ifnull(sum(t.received_amount),0.0) hisReceivedFee
-        from pay_fee_detail_month t
-        INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
-        where t.obj_id = a.obj_id
-        and t.status_cd = '0'
-        and t.community_id= a.community_id
-        and t.pay_fee_time &gt; #{startDate}
-        and t.pay_fee_time &lt; #{endDate}
-        and t.cur_month_time &lt; #{startDate}
-        ) hisReceivedFee,
-        (
-        select ifnull(sum(t.received_amount),0.0) preReceivedFee
-        from pay_fee_detail_month t
-        INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
-        where t.obj_id = a.obj_id
-        and t.status_cd = '0'
-        and t.community_id= a.community_id
-        and t.pay_fee_time &gt; #{startDate}
-        and t.pay_fee_time &lt; #{endDate}
-        and t.cur_month_time &gt; #{endDate}
-        ) preReceivedFee,
+        ) oweFee,
         (
         select ifnull(sum(t.received_amount),0.0) receivedFee
         from pay_fee_detail_month t
         INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        inner join pay_fee_config pfc1 on pfc1.config_id = t.config_id and pfc1.status_cd = '0'
         where t.obj_id = a.obj_id
         and t.status_cd = '0'
         and t.community_id= a.community_id
+        and pfc1.fee_type_cd = pfc.fee_type_cd
         and t.pay_fee_time &gt; #{startDate}
         and t.pay_fee_time &lt; #{endDate}
         ) receivedFee
         from pay_fee_detail_month a
-        where a.status_cd = '0'
-        and a.community_id = #{communityId}
-        group by a.obj_name,a.obj_id,a.owner_name,a.link
-        order by  a.obj_name
-        <if test="page != -1 and page != null ">
-            limit #{page}, #{row}
-        </if>
+        inner join pay_fee_config pfc on a.config_id = pfc.config_id and pfc.status_cd = '0'
+        where a.obj_id in
+        <foreach collection="objIds" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        group by a.obj_id,pfc.fee_type_cd,a.community_id
     </select>
 
+    <!-- 鏌ヨ涓氫富璐圭敤鏄庣粏琛� -->
+    <select id="getOwnerFeeSummary" parameterType="Map" resultType="Map">
+        select
+        a.owner_id ownerId,GROUP_CONCAT(a.obj_name) objName,pfc.fee_type_cd feeTypeCd,
+        (
+        select ifnull(sum(t.receivable_amount),0.0) hisOweFee
+        from pay_fee_detail_month t
+        INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        inner join pay_fee_config pfc1 on pfc1.config_id = t.config_id and pfc1.status_cd = '0'
+        where 1=1
+        and t.status_cd = '0'
+        and t.detail_id = '-1'
+        and t.community_id= a.community_id
+        and t.owner_id = a.owner_id
+        and pfc1.fee_type_cd = pfc.fee_type_cd
+        and t.cur_month_time &lt; #{endDate}
+        ) oweFee,
+        (
+        select ifnull(sum(t.received_amount),0.0) receivedFee
+        from pay_fee_detail_month t
+        INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        inner join pay_fee_config pfc1 on pfc1.config_id = t.config_id and pfc1.status_cd = '0'
+        where t.owner_id = a.owner_id
+        and t.status_cd = '0'
+        and t.community_id= a.community_id
+        and pfc1.fee_type_cd = pfc.fee_type_cd
+        and t.pay_fee_time &gt; #{startDate}
+        and t.pay_fee_time &lt; #{endDate}
+        ) receivedFee
+        from pay_fee_detail_month a
+        inner join pay_fee_config pfc on a.config_id = pfc.config_id and pfc.status_cd = '0'
+        where a.owner_id in
+        <foreach collection="ownerIds" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        group by a.owner_id,pfc.fee_type_cd,a.community_id
+    </select>
 
 </mapper>

--
Gitblit v1.8.0