Просмотр исходного кода

优化按时间段缴费逻辑

Your Name лет назад: 2
Родитель
Сommit
af7d8b4ce5

+ 110 - 87
java110-db/src/main/resources/mapper/report/ReportFeeMonthStatisticsServiceDaoImplMapper.xml

@@ -2841,95 +2841,118 @@
 
     <!-- 查询费用月统计信息 add by wuxw 2018-07-03 -->
     <select id="queryHuaningPayFee" parameterType="Map" resultType="Map">
+
         select
-        a.floorNum,f.receivableAmount,a.receivedAmount,b.receivedAmount1,c.receivedAmount2,d.receivedAmount3,e.receivedAmount4
-        from
-        (select t.floor_num floorNum,sum(pfd.received_amount) receivedAmount
-        from f_floor t
-        inner JOIN building_unit bu on t.floor_id = bu.floor_id and bu.status_cd = '0'
-        inner JOIN building_room br on br.unit_id = bu.unit_id and br.status_cd = '0'
-        inner JOIN pay_fee pf on pf.payer_obj_id = br.room_id and pf.status_cd = '0'
-        inner join pay_fee_detail pfd on pf.fee_id = pfd.fee_id and pfd.status_cd = '0'
-        where 1=1
-        and t.status_cd = '0'
-        and DATE_FORMAT(pfd.create_time,'%Y-%m') = #{yearMonth}
-        and t.community_id= #{communityId}
-        GROUP BY floor_num
-        ) a,
-        (select t.floor_num floorNum,sum(pfdm1.received_amount ) receivedAmount1
-        from f_floor t
-        inner JOIN building_unit bu on t.floor_id = bu.floor_id and bu.status_cd = '0'
-        inner JOIN building_room br on br.unit_id = bu.unit_id and br.status_cd = '0'
-        inner JOIN pay_fee pf on pf.payer_obj_id = br.room_id and pf.status_cd = '0'
-        inner join pay_fee_detail pfd on pf.fee_id = pfd.fee_id and pfd.status_cd = '0'
-        LEFT JOIN pay_fee_detail_month pfdm1 on pf.fee_id = pfdm1.fee_id and pfd.detail_id = pfdm1.detail_id and
-        pfdm1.status_cd = '0' and pfdm1.detail_year = #{year} and pfdm1.detail_month &lt; #{month}
-        where 1=1
-        and t.status_cd = '0'
-        and DATE_FORMAT(pfd.create_time,'%Y-%m') = #{yearMonth}
-        and t.community_id= #{communityId}
-        GROUP BY floor_num
-        ) b,
-        (select t.floor_num floorNum,sum(pfdm2.received_amount ) receivedAmount2
-        from f_floor t
-        inner JOIN building_unit bu on t.floor_id = bu.floor_id and bu.status_cd = '0'
-        inner JOIN building_room br on br.unit_id = bu.unit_id and br.status_cd = '0'
-        inner JOIN pay_fee pf on pf.payer_obj_id = br.room_id and pf.status_cd = '0'
-        inner join pay_fee_detail pfd on pf.fee_id = pfd.fee_id and pfd.status_cd = '0'
-        LEFT JOIN pay_fee_detail_month pfdm2 on pf.fee_id = pfdm2.fee_id and pfd.detail_id = pfdm2.detail_id and
-        pfdm2.status_cd = '0' and pfdm2.detail_year = #{year} and pfdm2.detail_month = #{month}
-        where 1=1
-        and t.status_cd = '0'
-        and DATE_FORMAT(pfd.create_time,'%Y-%m') = #{yearMonth}
-        and t.community_id= #{communityId}
-        GROUP BY floor_num
-        ) c,
-        (select t.floor_num floorNum,sum(pfdm3.received_amount ) receivedAmount3
-        from f_floor t
-        inner JOIN building_unit bu on t.floor_id = bu.floor_id and bu.status_cd = '0'
-        inner JOIN building_room br on br.unit_id = bu.unit_id and br.status_cd = '0'
-        inner JOIN pay_fee pf on pf.payer_obj_id = br.room_id and pf.status_cd = '0'
-        inner join pay_fee_detail pfd on pf.fee_id = pfd.fee_id and pfd.status_cd = '0'
-        LEFT JOIN pay_fee_detail_month pfdm3 on pf.fee_id = pfdm3.fee_id and pfd.detail_id = pfdm3.detail_id and
-        pfdm3.status_cd = '0' and pfdm3.detail_year = #{nextYear} and pfdm3.detail_month = #{nextMonth}
-        where 1=1
-        and t.status_cd = '0'
-        and DATE_FORMAT(pfd.create_time,'%Y-%m') = #{yearMonth}
-        and t.community_id= #{communityId}
-        GROUP BY floor_num
-        ) d,
-        (select t.floor_num floorNum,sum(pfdm4.received_amount ) receivedAmount4
-        from f_floor t
-        inner JOIN building_unit bu on t.floor_id = bu.floor_id and bu.status_cd = '0'
-        inner JOIN building_room br on br.unit_id = bu.unit_id and br.status_cd = '0'
-        inner JOIN pay_fee pf on pf.payer_obj_id = br.room_id and pf.status_cd = '0'
-        inner join pay_fee_detail pfd on pf.fee_id = pfd.fee_id and pfd.status_cd = '0'
-        LEFT JOIN pay_fee_detail_month pfdm4 on pf.fee_id = pfdm4.fee_id and pfd.detail_id = pfdm4.detail_id and
-        pfdm4.status_cd = '0' and pfdm4.detail_year &lt; #{year}
-        where 1=1
-        and t.status_cd = '0'
-        and DATE_FORMAT(pfd.create_time,'%Y-%m') = #{yearMonth}
-        and t.community_id= #{communityId}
-        GROUP BY floor_num
-        ) e,
-        (select t.floor_num floorNum,SUM(rfms.receivable_amount) receivableAmount
-        from f_floor t
-        inner JOIN building_unit bu on t.floor_id = bu.floor_id and bu.status_cd = '0'
-        inner JOIN building_room br on br.unit_id = bu.unit_id and br.status_cd = '0'
-        inner JOIN report_fee_month_statistics rfms on rfms.obj_id = br.room_id and rfms.status_cd = '0'
-        where t.community_id = #{communityId}
-        and rfms.fee_year = #{year}
-        and rfms.fee_month = #{month}
-        group by t.floor_num
-        ) f
-        where a.floorNum = b.floorNum
-        and b.floorNum = c.floorNum
-        and c.floorNum = d.floorNum
-        and d.floorNum = e.floorNum
-        and e.floorNum = f.floorNum
-        <if test="page != -1 and page != null ">
-            limit #{page}, #{row}
+        f.floor_num floorNum,
+        (
+        select ifnull(SUM(t.receivable_amount),0)
+        from pay_fee_detail_month t
+        inner join building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+        inner join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+        inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        where
+        1=1
+        <if test="feeTypeCd != null and feeTypeCd != ''">
+            and pf.fee_type_cd = #{feeTypeCd}
+        </if>
+        and bu.floor_id = f.floor_id
+        and t.community_id = f.community_id
+        and t.cur_month_time = #{endTime}
+        ) receivableAmount,
+        (
+        select ifnull(SUM(t.received_amount),0)
+        from pay_fee_detail_month t
+        inner join building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+        inner join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+        inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        where
+        1=1
+        <if test="feeTypeCd != null and feeTypeCd != ''">
+            and pf.fee_type_cd = #{feeTypeCd}
+        </if>
+        and bu.floor_id = f.floor_id
+        and t.community_id = f.community_id
+        and t.pay_fee_time &gt;= #{endTime}
+        and t.pay_fee_time &lt; #{nextMonthTime}
+        and t.detail_id != '-1'
+        ) receivedAmount,
+        (
+        select ifnull(SUM(t.received_amount),0)
+        from pay_fee_detail_month t
+        inner join building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+        inner join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+        inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        where
+        1=1
+        <if test="feeTypeCd != null and feeTypeCd != ''">
+            and pf.fee_type_cd = #{feeTypeCd}
+        </if>
+        and bu.floor_id = f.floor_id
+        and t.community_id = f.community_id
+        and t.pay_fee_time &gt;= #{endTime}
+        and t.pay_fee_time &lt; #{nextMonthTime}
+        and t.cur_month_time &lt; #{endTime}
+        and t.cur_month_time &gt;= #{startTime}
+        and t.detail_id != '-1'
+        ) receivedAmount1,
+        (
+        select ifnull(SUM(t.received_amount),0)
+        from pay_fee_detail_month t
+        inner join building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+        inner join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+        inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        where
+        1=1
+        <if test="feeTypeCd != null and feeTypeCd != ''">
+            and pf.fee_type_cd = #{feeTypeCd}
         </if>
+        and bu.floor_id = f.floor_id
+        and t.community_id = f.community_id
+        and t.pay_fee_time &gt;= #{endTime}
+        and t.pay_fee_time &lt; #{nextMonthTime}
+        and t.cur_month_time = #{endTime}
+        and t.detail_id != '-1'
+        ) receivedAmount2,
+        (
+        select ifnull(SUM(t.received_amount),0)
+        from pay_fee_detail_month t
+        inner join building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+        inner join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+        inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        where
+        1=1
+        <if test="feeTypeCd != null and feeTypeCd != ''">
+            and pf.fee_type_cd = #{feeTypeCd}
+        </if>
+        and bu.floor_id = f.floor_id
+        and t.community_id = f.community_id
+        and t.pay_fee_time &gt;= #{endTime}
+        and t.pay_fee_time &lt; #{nextMonthTime}
+        and t.cur_month_time &gt;= #{nextMonthTime}
+        and t.detail_id != '-1'
+        ) receivedAmount3,
+        (
+        select ifnull(SUM(t.received_amount),0)
+        from pay_fee_detail_month t
+        inner join building_room br on t.obj_id = br.room_id and br.status_cd = '0'
+        inner join building_unit bu on br.unit_id = bu.unit_id and bu.status_cd = '0'
+        inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        where
+        1=1
+        <if test="feeTypeCd != null and feeTypeCd != ''">
+            and pf.fee_type_cd = #{feeTypeCd}
+        </if>
+        and bu.floor_id = f.floor_id
+        and t.community_id = f.community_id
+        and t.pay_fee_time &gt;= #{endTime}
+        and t.pay_fee_time &lt; #{nextMonthTime}
+        and t.cur_month_time &lt; #{startTime}
+        and t.detail_id != '-1'
+        ) receivedAmount4
+        from f_floor f
+        where 1=1
+        and f.community_id = #{communityId}
+        and f.status_cd = '0'
     </select>
     <select id="queryHuaningPayFeeTwoCount" parameterType="Map" resultType="Map">
         select count(1) count

+ 3 - 0
service-report/src/main/java/com/java110/report/api/ReportFeeMonthStatisticsApi.java

@@ -597,6 +597,9 @@ public class ReportFeeMonthStatisticsApi {
         paramInfo.put("month", month);
         paramInfo.put("page", page);
         paramInfo.put("row", row);
+        paramInfo.put("startTime", DateUtil.getYear() + "-01-01");
+        paramInfo.put("endTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_Q)+"-01");
+        paramInfo.put("nextMonthTime",DateUtil.getFormatTimeStringB(DateUtil.getNextMonthFirstDate()));
         return getReportFeeMonthStatisticsBMOImpl.queryHuaningPayFee(paramInfo);
     }
 

+ 3 - 16
service-report/src/main/java/com/java110/report/bmo/reportFeeMonthStatistics/impl/GetReportFeeMonthStatisticsBMOImpl.java

@@ -843,25 +843,12 @@ public class GetReportFeeMonthStatisticsBMOImpl implements IGetReportFeeMonthSta
 
     @Override
     public ResponseEntity<String> queryHuaningPayFee(Map paramInfo) {
-        Calendar calendar = Calendar.getInstance();
-        calendar.set(Calendar.YEAR, (int) paramInfo.get("year"));
-        calendar.set(Calendar.MONTH, (int) paramInfo.get("month") - 1);
-        paramInfo.put("yearMonth", DateUtil.getFormatTimeString(calendar.getTime(), "YYYY-MM"));
-        calendar.add(Calendar.MONTH, 1);
-        paramInfo.put("nextYear", calendar.get(Calendar.YEAR));
-        paramInfo.put("nextMonth", calendar.get(Calendar.MONTH) + 1);
-        int count = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningPayFeeCount(paramInfo);
 
         List<Map> reportFeeMonthStatisticsDtos = null;
-        if (count > 0) {
-            reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningPayFee(paramInfo);
-        } else {
-            reportFeeMonthStatisticsDtos = new ArrayList<>();
-        }
 
-        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (int) paramInfo.get("row")), count, reportFeeMonthStatisticsDtos);
+        reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningPayFee(paramInfo);
 
-        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(reportFeeMonthStatisticsDtos);
 
         return responseEntity;
     }
@@ -898,7 +885,7 @@ public class GetReportFeeMonthStatisticsBMOImpl implements IGetReportFeeMonthSta
         List<Map> reportFeeMonthStatisticsDtos = null;
         if (count > 0) {
             reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningOweFeeDetail(paramInfo);
-           // refreshOweFee(reportFeeMonthStatisticsDtos, paramInfo);
+            // refreshOweFee(reportFeeMonthStatisticsDtos, paramInfo);
         } else {
             reportFeeMonthStatisticsDtos = new ArrayList<>();
         }