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 | 260 +++++++++++++++++++++++++++-------------------------
1 files changed, 135 insertions(+), 125 deletions(-)
diff --git a/java110-db/src/main/resources/mapper/report/ReportFeeStatisticsServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/report/ReportFeeStatisticsServiceDaoImplMapper.xml
index 8e93698..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 < #{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 > #{startDate}
+ and t.cur_month_time >= #{startDate}
and t.cur_month_time < #{endDate}
</select>
@@ -123,7 +125,7 @@
</if>
and t.status_cd = '0'
and t.community_id= #{communityId}
- and t.cur_month_time > #{startDate}
+ and t.cur_month_time >= #{startDate}
and t.cur_month_time < #{endDate}
</select>
@@ -164,9 +166,9 @@
</if>
and t.status_cd = '0'
and t.community_id= #{communityId}
- and t.pay_fee_time > #{startDate}
+ and t.pay_fee_time > #{startDate}
and t.pay_fee_time < #{endDate}
- and t.cur_month_time < #{startDate}
+ and t.cur_month_time < #{startDate}
</select>
<!-- 鏌ヨ 棰勪氦璐圭敤 -->
@@ -206,18 +208,21 @@
</if>
and t.status_cd = '0'
and t.community_id= #{communityId}
- and t.pay_fee_time > #{startDate}
+ and t.pay_fee_time > #{startDate}
and t.pay_fee_time < #{endDate}
- and t.cur_month_time > #{endDate}
+ and t.cur_month_time > #{endDate}
</select>
<!-- 鏌ヨ瀹炴敹璐圭敤 -->
<select id="getReceivedFee" parameterType="Map" resultType="Map">
select ifnull(sum(t.received_amount),0.0) receivedFee
- from pay_fee_detail_month t
+ from pay_fee_detail t
INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+ left join pay_fee_attrs pfa on pf.fee_id = pfa.fee_id and pfa.status_cd = '0' and pfa.spec_cd = '390008'
+ left join pay_fee_attrs pfa1 on pf.fee_id = pfa1.fee_id and pfa1.status_cd = '0' and pfa1.spec_cd = '390009'
+ left join pay_fee_attrs pfa2 on pf.fee_id = pfa2.fee_id and pfa2.status_cd = '0' and pfa2.spec_cd = '390012'
<if test="floorId != null and floorId != ''">
- LEFT JOIN building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+ LEFT JOIN building_room br on pf.payer_obj_id = br.room_id and br.status_cd = '0'
left join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
</if>
where
@@ -229,16 +234,16 @@
and t.config_id = #{configId}
</if>
<if test="objName != null and objName != ''">
- and t.obj_name like concat('%',#{objName},'%')
+ and pfa2.value like concat('%',#{objName},'%')
</if>
<if test="ownerName != null and ownerName != ''">
- and t.owner_name like concat('%',#{ownerName},'%')
+ and pfa.value like concat('%',#{ownerName},'%')
</if>
<if test="link != null and link != ''">
- and t.link = #{link}
+ and pfa1.value = #{link}
</if>
<if test="configIds !=null ">
- and t.config_id in
+ and pf.config_id in
<foreach collection="configIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
@@ -248,8 +253,8 @@
</if>
and t.status_cd = '0'
and t.community_id= #{communityId}
- and t.pay_fee_time > #{startDate}
- and t.pay_fee_time < #{endDate}
+ and t.create_time > #{startDate}
+ and t.create_time < #{endDate}
</select>
<!-- 鏌ヨ娆犺垂鎴锋暟 -->
@@ -348,14 +353,14 @@
select a.floor_id floorId,a.floor_num floorNum,a.name floorName,
(
select count(1) from (
- select t.obj_id from pay_fee_detail_month t
+ 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_room br on t.obj_id = br.room_id and br.status_cd = '0'
- left join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+ left join building_unit bu on a.unit_id = bu.unit_id and bu.status_cd = '0'
where
1=1
- and bu.floor_id = a.floor_id
- and t.status_cd = '0'
+ and a.status_cd = '0'
and pf.payer_obj_type = '3333'
and t.community_id= a.community_id
and t.cur_month_time < #{endDate}
@@ -369,19 +374,20 @@
<if test="feeTypeCd != null and feeTypeCd != ''">
and pf.fee_type_cd = #{feeTypeCd}
</if>
- group by t.obj_id) b
+ group by bu.floor_id,t.obj_id
+ ) b
+ where b.floor_id = a.floor_id
) oweRoomCount,
(
select count(1) from (
- select t.obj_id
- from pay_fee_detail_month t
+ 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_room br on t.obj_id = br.room_id and br.status_cd = '0'
- left join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+ left join building_unit bu on a.unit_id = bu.unit_id and bu.status_cd = '0'
where
1=1
- and bu.floor_id = a.floor_id
- and t.status_cd = '0'
+ and a.status_cd = '0'
and pf.payer_obj_type = '3333'
and t.community_id= a.community_id
and t.cur_month_time < #{endDate}
@@ -394,23 +400,25 @@
<if test="feeTypeCd != null and feeTypeCd != ''">
and pf.fee_type_cd = #{feeTypeCd}
</if>
- group by t.obj_id) b
+ group by bu.floor_id,t.obj_id
+ ) b
+ where b.floor_id = a.floor_id
) feeRoomCount,
(
select ifnull(sum(t.received_amount),0.0) receivedFee
- from pay_fee_detail_month t
+ from pay_fee_detail 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'
+ LEFT JOIN building_room br on pf.payer_obj_id = br.room_id and br.status_cd = '0'
left join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
where
1=1
and bu.floor_id = a.floor_id
and t.status_cd = '0'
and t.community_id= a.community_id
- and t.pay_fee_time > #{startDate}
- and t.pay_fee_time < #{endDate}
+ and t.create_time > #{startDate}
+ and t.create_time < #{endDate}
<if test="configIds !=null ">
- and t.config_id in
+ and pf.config_id in
<foreach collection="configIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
@@ -444,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'
@@ -454,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 < #{startDate}
<if test="configIds !=null ">
and t.config_id in
@@ -476,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 > #{startDate}
+ and t.cur_month_time > #{startDate}
and t.cur_month_time < #{endDate}
<if test="configIds !=null ">
and t.config_id in
@@ -499,20 +508,16 @@
select a.name,
(
select count(1) from (
- select t.obj_id from pay_fee_detail_month t
+ select pf.fee_type_cd,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'
- <if test="floorId != null and floorId != ''">
- LEFT JOIN building_room br on t.obj_id = br.room_id and br.status_cd = '0'
- left join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
- </if>
+ left join building_unit bu on a.unit_id = bu.unit_id and bu.status_cd = '0'
where
1=1
- <if test="floorId != null and floorId != ''">
- and bu.floor_id = a.floor_id
- </if>
- and t.status_cd = '0'
+ and a.status_cd = '0'
and pf.payer_obj_type = '3333'
- and t.community_id= #{communityId}
+ and t.community_id= a.community_id
and t.cur_month_time < #{endDate}
and (t.receivable_amount - t.received_amount - t.discount_amount) > 0
<if test="configIds !=null ">
@@ -521,26 +526,25 @@
#{item}
</foreach>
</if>
- and pf.fee_type_cd = a.status_cd
- group by t.obj_id) b
+ <if test="feeTypeCd != null and feeTypeCd != ''">
+ and pf.fee_type_cd = #{feeTypeCd}
+ </if>
+ group by pf.fee_type_cd,t.obj_id
+ ) b
+ where b.fee_type_cd = a.status_cd
) oweRoomCount,
(
select count(1) from (
- select t.obj_id
- from pay_fee_detail_month t
+ select pf.fee_type_cd,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'
- <if test="floorId != null and floorId != ''">
- LEFT JOIN building_room br on t.obj_id = br.room_id and br.status_cd = '0'
- left join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
- </if>
+ left join building_unit bu on a.unit_id = bu.unit_id and bu.status_cd = '0'
where
1=1
- <if test="floorId != null and floorId != ''">
- and bu.floor_id = a.floor_id
- </if>
- and t.status_cd = '0'
+ and a.status_cd = '0'
and pf.payer_obj_type = '3333'
- and t.community_id= #{communityId}
+ and t.community_id= #{communityId}
and t.cur_month_time < #{endDate}
<if test="configIds !=null ">
and t.config_id in
@@ -548,15 +552,19 @@
#{item}
</foreach>
</if>
- and pf.fee_type_cd = a.status_cd
- group by t.obj_id) b
+ <if test="feeTypeCd != null and feeTypeCd != ''">
+ and pf.fee_type_cd = #{feeTypeCd}
+ </if>
+ group by pf.fee_type_cd,t.obj_id
+ ) b
+ where b.fee_type_cd = a.status_cd
) feeRoomCount,
(
select ifnull(sum(t.received_amount),0.0) receivedFee
- from pay_fee_detail_month t
+ from pay_fee_detail t
INNER JOIN pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
<if test="floorId != null and floorId != ''">
- LEFT JOIN building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+ LEFT JOIN building_room br on pf.payer_obj_id = br.room_id and br.status_cd = '0'
left join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
</if>
where
@@ -565,11 +573,11 @@
and bu.floor_id = a.floor_id
</if>
and t.status_cd = '0'
- and t.community_id= #{communityId}
- and t.pay_fee_time > #{startDate}
- and t.pay_fee_time < #{endDate}
+ and t.community_id= #{communityId}
+ and t.create_time > #{startDate}
+ and t.create_time < #{endDate}
<if test="configIds !=null ">
- and t.config_id in
+ and pf.config_id in
<foreach collection="configIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
@@ -590,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 > #{startDate}
and t.pay_fee_time < #{endDate}
and t.cur_month_time > #{endDate}
@@ -603,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 != ''">
@@ -616,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 < #{startDate}
<if test="configIds !=null ">
and t.config_id in
@@ -641,7 +650,7 @@
</if>
and t.status_cd = '0'
and t.community_id= #{communityId}
- and t.cur_month_time > #{startDate}
+ and t.cur_month_time > #{startDate}
and t.cur_month_time < #{endDate}
<if test="configIds !=null ">
and t.config_id in
@@ -664,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 < #{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 > #{startDate}
+ and t.obj_id = a.obj_id
+ and pfc1.fee_type_cd = pfc.fee_type_cd
and t.cur_month_time < #{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 > #{startDate}
- and t.cur_month_time < #{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 > #{startDate}
- and t.pay_fee_time < #{endDate}
- and t.cur_month_time < #{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 > #{startDate}
- and t.pay_fee_time < #{endDate}
- and t.cur_month_time > #{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 > #{startDate}
and t.pay_fee_time < #{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 < #{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 > #{startDate}
+ and t.pay_fee_time < #{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