From 35f4412614a4801dc26f9284c8c15457e1db2a7f Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期五, 15 三月 2024 14:55:40 +0800
Subject: [PATCH] 优化代码

---
 service-report/src/main/java/com/java110/report/smo/impl/QueryPayFeeDetailInnerServiceSMOImpl.java |  890 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 614 insertions(+), 276 deletions(-)

diff --git a/service-report/src/main/java/com/java110/report/smo/impl/QueryPayFeeDetailInnerServiceSMOImpl.java b/service-report/src/main/java/com/java110/report/smo/impl/QueryPayFeeDetailInnerServiceSMOImpl.java
index 561a0ca..f4bb3a5 100644
--- a/service-report/src/main/java/com/java110/report/smo/impl/QueryPayFeeDetailInnerServiceSMOImpl.java
+++ b/service-report/src/main/java/com/java110/report/smo/impl/QueryPayFeeDetailInnerServiceSMOImpl.java
@@ -1,22 +1,34 @@
 package com.java110.report.smo.impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.core.smo.IComputeFeeSMO;
+import com.java110.dto.PageDto;
+import com.java110.dto.ReportFeeMonthStatisticsPrepaymentDto.ReportFeeMonthStatisticsPrepaymentDto;
+import com.java110.dto.ReportFeeMonthStatisticsPrepaymentDto.ReportFeeMonthStatisticsPrepaymentTotalDto;
+import com.java110.dto.fee.FeeAccountDetailDto;
 import com.java110.dto.fee.FeeConfigDto;
-import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDto;
+import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.owner.OwnerRoomRelDto;
 import com.java110.dto.repair.RepairDto;
-import com.java110.dto.reportFeeMonthStatistics.ReportFeeMonthStatisticsDto;
-import com.java110.dto.reportFeeMonthStatistics.ReportFeeMonthStatisticsTotalDto;
+import com.java110.dto.reportFee.ReportFeeMonthStatisticsDto;
+import com.java110.dto.reportFee.ReportFeeMonthStatisticsTotalDto;
+import com.java110.dto.room.RoomDto;
+import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO;
 import com.java110.intf.community.IRepairInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.community.IRoomV1InnerServiceSMO;
+import com.java110.intf.fee.IFeeAccountDetailServiceSMO;
 import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.report.IQueryPayFeeDetailInnerServiceSMO;
 import com.java110.intf.report.IReportFeeMonthStatisticsInnerServiceSMO;
+import com.java110.intf.report.IReportFeeMonthStatisticsPrepaymentInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
 import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.ListUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,20 +36,23 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.lang.reflect.Field;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
 /**
  * 鏌ヨ缂磋垂鏄庣粏
- *
  */
 @RestController
-public class QueryPayFeeDetailInnerServiceSMOImpl implements IQueryPayFeeDetailInnerServiceSMO{
+public class QueryPayFeeDetailInnerServiceSMOImpl implements IQueryPayFeeDetailInnerServiceSMO {
 
     private int MAX_ROWS = 500;  // 鏈�澶ц鏁�
 
     @Autowired
     private IReportFeeMonthStatisticsInnerServiceSMO reportFeeMonthStatisticsInnerServiceSMOImpl;
+
+    @Autowired
+    private IReportFeeMonthStatisticsPrepaymentInnerServiceSMO reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl;
 
     @Autowired
     private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
@@ -49,24 +64,219 @@
     private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
 
     @Autowired
-    private IComputeFeeSMO computeFeeSMOImpl;
+    private IFeeAccountDetailServiceSMO feeAccountDetailServiceSMOImpl;
 
     @Autowired
-    private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+    private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    /**
+     * 鏌ヨ缂磋垂鏄庣粏
+     *
+     * @param reportFeeMonthStatisticsDto
+     * @return
+     */
     @Override
     public ResultVo query(@RequestBody ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto) {
+
         JSONObject countInfo = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetailCount(reportFeeMonthStatisticsDto);
-
         int count = Integer.parseInt(countInfo.get("count").toString());
-
         List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos = null;
         ReportFeeMonthStatisticsTotalDto reportFeeMonthStatisticsTotalDto = new ReportFeeMonthStatisticsTotalDto();
-        List<ReportFeeMonthStatisticsDto> reportList = new ArrayList<>();
+        ResultVo resultVo = null;
+        if (count < 1) {
+            resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsDto.getRow()), count, reportFeeMonthStatisticsDtos, reportFeeMonthStatisticsTotalDto);
+            return resultVo;
+        }
+
+        //todo 鏌ヨ缂磋垂鏄庣粏
+        reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetail(reportFeeMonthStatisticsDto);
+
+        //todo 搴旀敹閲戦(澶ц)
+        reportFeeMonthStatisticsTotalDto.setAllReceivableAmount(String.format("%.2f", countInfo.getDouble("totalReceivableAmount")));
+        //todo 瀹炴敹閲戦(澶ц)
+        reportFeeMonthStatisticsTotalDto.setAllReceivedAmount(String.format("%.2f", countInfo.getDouble("totalReceivedAmount")));
+
+        //todo 鎵撴姌閲戦锛堝ぇ璁★級
+        reportFeeMonthStatisticsTotalDto.setAllPreferentialAmount(String.format("%.2f", countInfo.getDouble("discountAmount")));
+
+        //todo 鍑忓厤閲戦(澶ц)
+        reportFeeMonthStatisticsTotalDto.setAllDeductionAmount(String.format("%.2f", countInfo.getDouble("deductionAmount")));
+        //todo 婊炵撼閲�(澶ц)
+        reportFeeMonthStatisticsTotalDto.setAllLateFee(String.format("%.2f", countInfo.getDouble("lateAmount")));
+
+        //todo 璧犻�佽鍒欓噾棰�(澶ц)
+        reportFeeMonthStatisticsTotalDto.setAllGiftAmount(String.format("%.2f", countInfo.getDouble("giftAmount")));
+
+        //todo 璁$畻灏忚
+        computeTotalInfo(reportFeeMonthStatisticsTotalDto, reportFeeMonthStatisticsDtos);
+
+        //todo 璁$畻鎴垮眿闈㈢Н 鍜岃溅浣嶄俊鎭�
+        computeRoomAndParkingSpace(reportFeeMonthStatisticsDtos);
+
+
+        resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsDto.getRow()), count, reportFeeMonthStatisticsDtos, reportFeeMonthStatisticsTotalDto);
+        return resultVo;
+    }
+
+    private void computeRoomAndParkingSpace(List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos) {
+
+        List<String> payerObjIds = new ArrayList<>();
+
+        for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto : reportFeeMonthStatisticsDtos) {
+            payerObjIds.add(reportFeeMonthStatisticsDto.getPayerObjId());
+        }
+
+        if (ListUtil.isNull(payerObjIds)) {
+            return;
+        }
+        RoomDto roomDto = new RoomDto();
+        roomDto.setRoomIds(payerObjIds.toArray(new String[payerObjIds.size()]));
+        roomDto.setCommunityId(reportFeeMonthStatisticsDtos.get(0).getCommunityId());
+        List<RoomDto> roomDtos = roomV1InnerServiceSMOImpl.queryRooms(roomDto);
+
+        if (!ListUtil.isNull(roomDtos)) {
+            for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto : reportFeeMonthStatisticsDtos) {
+                for (RoomDto tmpRoomDto : roomDtos) {
+                    if (reportFeeMonthStatisticsDto.getPayerObjId().equals(tmpRoomDto.getRoomId())) {
+                        reportFeeMonthStatisticsDto.setBuiltUpArea(tmpRoomDto.getBuiltUpArea());
+                    }
+                }
+            }
+        }
+
+        computeParkingSpace(reportFeeMonthStatisticsDtos, payerObjIds);
+
+    }
+
+    private void computeParkingSpace(List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos, List<String> payerObjIds) {
+        OwnerCarDto ownerCarDto = new OwnerCarDto();
+        ownerCarDto.setMemberIds(payerObjIds.toArray(new String[payerObjIds.size()]));
+        ownerCarDto.setCommunityId(reportFeeMonthStatisticsDtos.get(0).getCommunityId());
+        List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+        if (ListUtil.isNull(ownerCarDtos)) {
+            return;
+        }
+        freshRoomInfo(ownerCarDtos);
+        for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto : reportFeeMonthStatisticsDtos) {
+            for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) {
+                if (!reportFeeMonthStatisticsDto.getPayerObjId().equals(tmpOwnerCarDto.getMemberId())) {
+                    continue;
+                }
+                reportFeeMonthStatisticsDto.setPsName(tmpOwnerCarDto.getAreaNum() + "-" + tmpOwnerCarDto.getNum());
+                reportFeeMonthStatisticsDto.setRoomName(tmpOwnerCarDto.getRoomName());
+            }
+        }
+
+    }
+
+    /**
+     * 鍒峰叆鎴垮眿淇℃伅
+     *
+     * @param ownerCarDtos
+     */
+    private void freshRoomInfo(List<OwnerCarDto> ownerCarDtos) {
+
+        if (ListUtil.isNull(ownerCarDtos) || ownerCarDtos.size() > 30) {
+            return;
+        }
+        for (OwnerCarDto ownerCarDto : ownerCarDtos) {
+            doFreshRoomInfo(ownerCarDto);
+        }
+    }
+
+    /**
+     * 杞︿綅淇℃伅鍒峰叆鎴垮眿淇℃伅
+     *
+     * @param ownerCarDto
+     */
+    private void doFreshRoomInfo(OwnerCarDto ownerCarDto) {
+        OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+        ownerRoomRelDto.setOwnerId(ownerCarDto.getOwnerId());
+        ownerRoomRelDto.setPage(1);
+        ownerRoomRelDto.setRow(3); //鍙睍绀�3涓埧灞嬩互鍐� 涓嶇劧椤甸潰澶贡
+        List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+        if (ListUtil.isNull(ownerRoomRelDtos)) {
+            ownerCarDto.setRoomName("-");
+            return;
+        }
+        List<String> roomIds = new ArrayList<>();
+        for (OwnerRoomRelDto tOwnerRoomRelDto : ownerRoomRelDtos) {
+            roomIds.add(tOwnerRoomRelDto.getRoomId());
+        }
+        RoomDto roomDto = new RoomDto();
+        roomDto.setCommunityId(ownerCarDto.getCommunityId());
+        roomDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
+        List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+        String roomName = "";
+        for (RoomDto tRoomDto : roomDtos) {
+            roomName += (tRoomDto.getFloorNum() + "-" + tRoomDto.getUnitNum() + "-" + tRoomDto.getRoomNum() + "-" + "/");
+        }
+        roomName = roomName.endsWith("/") ? roomName.substring(0, roomName.length() - 1) : roomName;
+        ownerCarDto.setRoomName(roomName);
+    }
+
+    /**
+     * 璁$畻澶ц灏忚
+     *
+     * @param reportFeeMonthStatisticsTotalDto
+     */
+    private void computeTotalInfo(ReportFeeMonthStatisticsTotalDto reportFeeMonthStatisticsTotalDto,
+                                  List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos) {
+
+        BigDecimal totalReceivableAmount = new BigDecimal(0.00);
+
+        BigDecimal totalReceivedAmount = new BigDecimal(0.00);
+        BigDecimal totalPreferentialAmount = new BigDecimal(0.00);
+        BigDecimal totalDeductionAmount = new BigDecimal(0.00);
+        BigDecimal totalLateFee = new BigDecimal(0.00);
+        BigDecimal totalGiftAmount = new BigDecimal(0.00);
+
+        for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto : reportFeeMonthStatisticsDtos) {
+            totalReceivableAmount = totalReceivableAmount.add(new BigDecimal(reportFeeMonthStatisticsDto.getReceivableAmount()));
+            totalReceivedAmount = totalReceivedAmount.add(new BigDecimal(reportFeeMonthStatisticsDto.getReceivedAmount()));
+            totalPreferentialAmount = totalPreferentialAmount.add(new BigDecimal(reportFeeMonthStatisticsDto.getDiscountAmount()));
+            totalDeductionAmount = totalDeductionAmount.add(new BigDecimal(reportFeeMonthStatisticsDto.getDeductionAmount()));
+            totalLateFee = totalLateFee.add(new BigDecimal(reportFeeMonthStatisticsDto.getLateAmount()));
+            totalGiftAmount = totalGiftAmount.add(new BigDecimal(reportFeeMonthStatisticsDto.getGiftAmount()));
+
+            reportFeeMonthStatisticsDto.setWithholdAmount(reportFeeMonthStatisticsDto.getAcctAmount());
+            reportFeeMonthStatisticsDto.setPreferentialAmount(reportFeeMonthStatisticsDto.getDiscountAmount());
+            reportFeeMonthStatisticsDto.setLateFee(reportFeeMonthStatisticsDto.getLateAmount());
+        }
+
+        //todo 搴旀敹閲戦(灏忚)
+        reportFeeMonthStatisticsTotalDto.setTotalReceivableAmount(String.format("%.2f", totalReceivableAmount.doubleValue()));
+
+        //todo 瀹炴敹閲戦(灏忚)
+        reportFeeMonthStatisticsTotalDto.setTotalReceivedAmount(String.format("%.2f", totalReceivedAmount.doubleValue()));
+        //todo 浼樻儬閲戦(灏忚)
+        reportFeeMonthStatisticsTotalDto.setTotalPreferentialAmount(String.format("%.2f", totalPreferentialAmount));
+        //todo 鍑忓厤閲戦(灏忚)
+        reportFeeMonthStatisticsTotalDto.setTotalDeductionAmount(String.format("%.2f", totalDeductionAmount));
+        //todo 婊炵撼閲�(灏忚)
+        reportFeeMonthStatisticsTotalDto.setTotalLateFee(String.format("%.2f", totalLateFee));
+
+    }
+
+
+    @Override
+    public ResultVo queryPrepayment(@RequestBody ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatisticsPrepaymentDto) {
+        JSONObject countInfo = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryPayFeeDetailPrepaymentCount(reportFeeMonthStatisticsPrepaymentDto);
+        int count = Integer.parseInt(countInfo.get("count").toString());
+        List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepaymentDtos = null;
+        ReportFeeMonthStatisticsPrepaymentTotalDto reportFeeMonthStatisticsPrepaymentTotalDto = new ReportFeeMonthStatisticsPrepaymentTotalDto();
+        List<ReportFeeMonthStatisticsPrepaymentDto> reportList = new ArrayList<>();
         //鏌ヨ璇ュ皬鍖轰笅鐨勮垂鐢ㄩ」鐩�
         FeeConfigDto feeConfigDto = new FeeConfigDto();
-        feeConfigDto.setCommunityId(reportFeeMonthStatisticsDto.getCommunityId());
-        List<FeeConfigDto> feeConfigDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+        feeConfigDto.setCommunityId(reportFeeMonthStatisticsPrepaymentDto.getCommunityId());
+        List<FeeConfigDto> feeConfigDtos = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryFeeConfigPrepayments(feeConfigDto);
         //搴旀敹鎬婚噾棰�(澶ц)
         Double allReceivableAmount = 0.0;
         //瀹炴敹閲戦(澶ц)
@@ -83,51 +293,54 @@
         Double allVacantHousingReduction = 0.0;
         //璧犻�侀噾棰�(澶ц)
         Double allGiftAmount = 0.0;
-        //鍚村鏂� 娉ㄩ噴 鎰熻鍜屼笂闈㈢殑369 鍔熻兘閲嶅
-        //int size = 0;
+        //娆犺垂閲戦(澶ц)
+        Double allOweAmount = 0.0;
+        //搴旂即閲戦(澶ц)
+        Double allPayableAmount = 0.0;
         if (count > 0) {
             //鏌ヨ缂磋垂鏄庣粏
-            reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetail(reportFeeMonthStatisticsDto);
-            //鍚村鏂� 娉ㄩ噴 鎰熻鍜屼笂闈㈢殑369 鍔熻兘閲嶅
-//            if (reportFeeMonthStatisticsDtos != null && reportFeeMonthStatisticsDtos.size() > 0) {
-//                //鏌ヨ鎵�鏈夌即璐规槑缁嗚褰�
-//                ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto1 = BeanConvertUtil.covertBean(reportFeeMonthStatisticsDto, ReportFeeMonthStatisticsDto.class);
-//                reportFeeMonthStatisticsDto1.setPage(PageDto.DEFAULT_PAGE);
-//                List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos1 = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetail(reportFeeMonthStatisticsDto1);
-//                size = reportFeeMonthStatisticsDtos1.size();
-//            }
+            reportFeeMonthStatisticsPrepaymentDtos = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryNewPayFeeDetailPrepayment(reportFeeMonthStatisticsPrepaymentDto);
             //鏌ヨ搴旀敹銆佸疄鏀舵�婚噾棰�(澶ц)
-            List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsList = reportFeeMonthStatisticsInnerServiceSMOImpl.queryAllPayFeeDetail(reportFeeMonthStatisticsDto);
+            List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepaymentList = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryAllPayFeeDetailPrepayment(reportFeeMonthStatisticsPrepaymentDto);
             //鏌ヨ(浼樻儬銆佸噺鍏嶃�佹粸绾抽噾銆佺┖缃埧鎵撴姌銆佺┖缃埧鍑忓厤閲戦绛�)澶ц鎬婚噾棰�
-            List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsSum = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetailSum(reportFeeMonthStatisticsDto);
-            allReceivableAmount = Double.valueOf(reportFeeMonthStatisticsList.get(0).getAllReceivableAmount());
-            allReceivedAmount = Double.valueOf(reportFeeMonthStatisticsList.get(0).getAllReceivedAmount());
-            for (ReportFeeMonthStatisticsDto reportFeeMonthStatistics : reportFeeMonthStatisticsSum) {
+            List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepaymentSum = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryPayFeeDetailPrepaymentSum(reportFeeMonthStatisticsPrepaymentDto);
+            allReceivableAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllReceivableAmount());
+            allReceivedAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllReceivedAmount());
+            allOweAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllOweAmount());
+            allPayableAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllPayableAmount());
+            for (ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatisticsPrepayment : reportFeeMonthStatisticsPrepaymentSum) {
                 //杩欓噷鏄煡璇㈠嚭鐨勯噾棰濇�诲拰
-                String discountPrice = reportFeeMonthStatistics.getDiscountPrice();
+                String discountPrice = reportFeeMonthStatisticsPrepayment.getDiscountPrice();
+                // discountSmallType 1: 鎵撴姌  2:鍑忓厤  3:婊炵撼閲�  4:绌虹疆鎴挎墦鎶�  5:绌虹疆鎴垮噺鍏�  6:璧犻��
                 //浼樻儬閲戦(澶ц)
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("1")) {
-                    allPreferentialAmount = Double.valueOf(discountPrice);
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("1")) {
+                    Double aDouble = Double.valueOf(discountPrice);
+                    allPreferentialAmount = allPreferentialAmount + aDouble;
                 }
                 //鍑忓厤閲戦(澶ц)
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("2")) {
-                    allDeductionAmount = Double.valueOf(discountPrice);
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("2")) {
+                    Double aDouble = Double.valueOf(discountPrice);
+                    allDeductionAmount = allDeductionAmount + aDouble;
                 }
                 //婊炵撼閲�(澶ц)
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("3")) {
-                    allLateFee = Double.valueOf(discountPrice);
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("3")) {
+                    Double aDouble = Double.valueOf(discountPrice);
+                    allLateFee = allLateFee + aDouble;
                 }
                 //绌虹疆鎴挎墦鎶橀噾棰�(澶ц)
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("4")) {
-                    allVacantHousingDiscount = Double.valueOf(discountPrice);
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("4")) {
+                    Double aDouble = Double.valueOf(discountPrice);
+                    allVacantHousingDiscount = allVacantHousingDiscount + aDouble;
                 }
                 //绌虹疆鎴垮噺鍏嶉噾棰�(澶ц)
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("5")) {
-                    allVacantHousingReduction = Double.valueOf(discountPrice);
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("5")) {
+                    Double aDouble = Double.valueOf(discountPrice);
+                    allVacantHousingReduction = allVacantHousingReduction + aDouble;
                 }
                 //璧犻�侀噾棰�(澶ц)
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("6")) {
-                    allGiftAmount = Double.valueOf(discountPrice);
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("6")) {
+                    Double aDouble = Double.valueOf(discountPrice);
+                    allGiftAmount = allGiftAmount + aDouble;
                 }
             }
             //搴旀敹鎬婚噾棰�(灏忚)
@@ -146,278 +359,403 @@
             Double totalGiftAmount = 0.0;
             //婊炵撼閲�(灏忚)
             Double totalLateFee = 0.0;
-            List<String> ownerIds = new ArrayList<>();
-            for (ReportFeeMonthStatisticsDto reportFeeMonthStatistics : reportFeeMonthStatisticsDtos) {
-                FeeDetailDto feeDetailDto = new FeeDetailDto();
-                feeDetailDto.setDetailId(reportFeeMonthStatistics.getDetailId());
-                List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
-                Assert.listOnlyOne(feeDetailDtos, "鏌ヨ璐圭敤鏄庣粏琛ㄩ敊璇�");
-                reportFeeMonthStatistics.setReceivableAmount(feeDetailDtos.get(0).getReceivableAmount());
-                reportFeeMonthStatistics.setPayableAmount(feeDetailDtos.get(0).getPayableAmount());
+            //娆犺垂閲戦(灏忚)
+            Double totalOweAmount = 0.0;
+            //搴旂即閲戦(灏忚)
+            Double totalPayableAmount = 0.0;
+            for (ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatisticsPrepayment : reportFeeMonthStatisticsPrepaymentDtos) {
                 //搴旀敹閲戦
-                Double receivableAmount = Double.valueOf(reportFeeMonthStatistics.getReceivableAmount());
+                Double receivableAmount = 0.0;
+                if (!StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getPrepaymentReceivableAmount())) {
+                    receivableAmount = Double.valueOf(reportFeeMonthStatisticsPrepayment.getPrepaymentReceivableAmount());
+                }
                 //瀹炴敹閲戦
-                Double receivedAmount = Double.valueOf(reportFeeMonthStatistics.getReceivedAmount());
+                Double receivedAmount = 0.0;
+                if (!StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getPrepaymentReceivedAmount())) {
+                    receivedAmount = Double.valueOf(reportFeeMonthStatisticsPrepayment.getPrepaymentReceivedAmount());
+                }
+                //娆犺垂閲戦
+                Double oweAmount = 0.0;
+                if (!StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getOweAmount())) {
+                    oweAmount = Double.valueOf(reportFeeMonthStatisticsPrepayment.getOweAmount());
+                }
+                //搴旂即閲戦
+                Double payableAmount = 0.0;
+                if (!StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getPayableAmount())) {
+                    payableAmount = Double.valueOf(reportFeeMonthStatisticsPrepayment.getPayableAmount());
+                }
                 totalReceivableAmount = totalReceivableAmount + receivableAmount;
                 totalReceivedAmount = totalReceivedAmount + receivedAmount;
-
-                if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(reportFeeMonthStatistics.getPayerObjType())) {
-                    ownerIds.add(reportFeeMonthStatistics.getOwnerId());
-                }
-
-                // 鏈�澶ц褰曟椂 灏卞幓鍒锋柊
-                //濡傛灉鏄溅浣嶅埛鎴垮眿淇℃伅
-                if (ownerIds.size() == MAX_ROWS) {
-                    refreshReportFeeMonthStatistics(ownerIds, reportFeeMonthStatisticsDtos);
-                    ownerIds = new ArrayList<>();
-                }
-
-                //浼樻儬閲戦
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("1")) {
-                    //鑾峰彇浼樻儬閲戦
-                    Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
-                    totalPreferentialAmount = totalPreferentialAmount + discountPrice;
+                totalOweAmount = totalOweAmount + oweAmount;
+                totalPayableAmount = totalPayableAmount + payableAmount;
+                ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatisticsPrepaymentDto1 = new ReportFeeMonthStatisticsPrepaymentDto();
+                reportFeeMonthStatisticsPrepaymentDto1.setPrepaymentId(reportFeeMonthStatisticsPrepayment.getPrepaymentId());
+                List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepayments = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryPayFeeDetailPrepayment(reportFeeMonthStatisticsPrepaymentDto1);
+                for (ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatistics : reportFeeMonthStatisticsPrepayments) {
                     //浼樻儬閲戦
-                    reportFeeMonthStatistics.setPreferentialAmount(reportFeeMonthStatistics.getDiscountPrice());
-                } else {
-                    reportFeeMonthStatistics.setPreferentialAmount("0");
-                }
-                //鍑忓厤閲戦
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("2")) {
-                    //鑾峰彇鍑忓厤閲戦
-                    Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
-                    totalDeductionAmount = totalDeductionAmount + discountPrice;
+                    if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountPrice()) && !StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType())
+                            && reportFeeMonthStatistics.getDiscountSmallType().equals("1")) {
+                        //鑾峰彇浼樻儬閲戦
+                        Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
+                        totalPreferentialAmount = totalPreferentialAmount + discountPrice;
+                        //浼樻儬閲戦
+                        reportFeeMonthStatisticsPrepayment.setPreferentialAmount(reportFeeMonthStatistics.getDiscountPrice());
+                    } else if (StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getPreferentialAmount())) {
+                        reportFeeMonthStatisticsPrepayment.setPreferentialAmount("0");
+                    }
                     //鍑忓厤閲戦
-                    reportFeeMonthStatistics.setDeductionAmount(reportFeeMonthStatistics.getDiscountPrice());
-                } else {
-                    reportFeeMonthStatistics.setDeductionAmount("0");
-                }
-                //婊炵撼閲�
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("3")) {
-                    //鑾峰彇婊炵撼閲戦噾棰�
-                    Double discountPrice = (Double.valueOf(reportFeeMonthStatistics.getDiscountPrice()));
-                    totalLateFee = totalLateFee + discountPrice;
+                    if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountPrice()) && !StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType())
+                            && reportFeeMonthStatistics.getDiscountSmallType().equals("2")) {
+                        //鑾峰彇鍑忓厤閲戦
+                        Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
+                        totalDeductionAmount = totalDeductionAmount + discountPrice;
+                        //鍑忓厤閲戦
+                        reportFeeMonthStatisticsPrepayment.setDeductionAmount(reportFeeMonthStatistics.getDiscountPrice());
+                    } else if (StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDeductionAmount())) {
+                        reportFeeMonthStatisticsPrepayment.setDeductionAmount("0");
+                    }
                     //婊炵撼閲�
-                    reportFeeMonthStatistics.setLateFee(reportFeeMonthStatistics.getDiscountPrice());
-                } else {
-                    reportFeeMonthStatistics.setLateFee("0");
-                }
-                //绌虹疆鎴挎墦鎶�
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("4")) {
-                    //绌虹疆鎴挎墦鎶橀噾棰�
-                    Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
-                    totalVacantHousingDiscount = totalVacantHousingDiscount + discountPrice;
+                    if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountPrice()) && !StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType())
+                            && reportFeeMonthStatistics.getDiscountSmallType().equals("3")) {
+                        //鑾峰彇婊炵撼閲戦噾棰�
+                        Double discountPrice = (Double.valueOf(reportFeeMonthStatistics.getDiscountPrice()));
+                        totalLateFee = totalLateFee + discountPrice;
+                        //婊炵撼閲�
+                        reportFeeMonthStatisticsPrepayment.setLateFee(reportFeeMonthStatistics.getDiscountPrice());
+                    } else if (StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getLateFee())) {
+                        reportFeeMonthStatisticsPrepayment.setLateFee("0");
+                    }
                     //绌虹疆鎴挎墦鎶�
-                    reportFeeMonthStatistics.setVacantHousingDiscount(reportFeeMonthStatistics.getDiscountPrice());
-                } else {
-                    reportFeeMonthStatistics.setVacantHousingDiscount("0");
-                }
-                //绌虹疆鎴垮噺鍏�
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("5")) {
-                    //绌虹疆鎴垮噺鍏嶉噾棰�
-                    Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
-                    totalVacantHousingReduction = totalVacantHousingReduction + discountPrice;
+                    if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountPrice()) && !StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType())
+                            && reportFeeMonthStatistics.getDiscountSmallType().equals("4")) {
+                        //绌虹疆鎴挎墦鎶橀噾棰�
+                        Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
+                        totalVacantHousingDiscount = totalVacantHousingDiscount + discountPrice;
+                        //绌虹疆鎴挎墦鎶�
+                        reportFeeMonthStatisticsPrepayment.setVacantHousingDiscount(reportFeeMonthStatistics.getDiscountPrice());
+                    } else if (StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getVacantHousingDiscount())) {
+                        reportFeeMonthStatisticsPrepayment.setVacantHousingDiscount("0");
+                    }
                     //绌虹疆鎴垮噺鍏�
-                    reportFeeMonthStatistics.setVacantHousingReduction(reportFeeMonthStatistics.getDiscountPrice());
-                } else {
-                    reportFeeMonthStatistics.setVacantHousingReduction("0");
-                }
-                //璧犻�侀噾棰�
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("6")) {
+                    if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountPrice()) && !StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType())
+                            && reportFeeMonthStatistics.getDiscountSmallType().equals("5")) {
+                        //绌虹疆鎴垮噺鍏嶉噾棰�
+                        Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
+                        totalVacantHousingReduction = totalVacantHousingReduction + discountPrice;
+                        //绌虹疆鎴垮噺鍏�
+                        reportFeeMonthStatisticsPrepayment.setVacantHousingReduction(reportFeeMonthStatistics.getDiscountPrice());
+                    } else if (StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getVacantHousingReduction())) {
+                        reportFeeMonthStatisticsPrepayment.setVacantHousingReduction("0");
+                    }
                     //璧犻�侀噾棰�
-                    Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
-                    totalGiftAmount = totalGiftAmount + discountPrice;
-                    //璧犻�侀噾棰�
-                    reportFeeMonthStatistics.setGiftAmount(reportFeeMonthStatistics.getDiscountPrice());
-                } else {
-                    reportFeeMonthStatistics.setGiftAmount("0");
-                }
-                if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(reportFeeMonthStatistics.getPayerObjType())) {
-                    reportFeeMonthStatistics.setObjName(reportFeeMonthStatistics.getFloorNum()
-                            + "鏍�" + reportFeeMonthStatistics.getUnitNum()
-                            + "鍗曞厓" + reportFeeMonthStatistics.getRoomNum() + "瀹�");
-                } else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(reportFeeMonthStatistics.getPayerObjType())) {
-                    reportFeeMonthStatistics.setObjName(reportFeeMonthStatistics.getCarNum());
-                } else {
-                    reportFeeMonthStatistics.setObjName(reportFeeMonthStatistics.getContractCode());
-
-                }
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getImportFeeName())) {
-                    reportFeeMonthStatistics.setFeeName(reportFeeMonthStatistics.getImportFeeName());
-                }
-                //璐圭敤椤圭洰
-                reportFeeMonthStatistics.setFeeConfigDtos(feeConfigDtos);
-                if (!StringUtil.isEmpty(reportFeeMonthStatistics.getRepairId())) {
-                    RepairDto repairDto = new RepairDto();
-                    repairDto.setRepairId(reportFeeMonthStatistics.getRepairId());
-                    //鏌ヨ鎶ヤ慨鍗�
-                    List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
-                    //Assert.listOnlyOne(repairDtos, "鏌ヨ鎶ヤ慨鍗曢敊璇紒");
-                    if (repairDtos != null && repairDtos.size() == 1) {
-                        if (!StringUtil.isEmpty(repairDtos.get(0).getRepairObjType()) && repairDtos.get(0).getRepairObjType().equals("004")) {
-                            OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
-                            ownerRoomRelDto.setRoomId(repairDtos.get(0).getRepairObjId());
-                            List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
-                            if (ownerRoomRelDtos != null && ownerRoomRelDtos.size() == 0) { //鏌ヨ鏉℃暟涓�0鏉�
-                                OwnerRoomRelDto ownerRoomRel = new OwnerRoomRelDto();
-                                ownerRoomRel.setRoomId(repairDtos.get(0).getRepairObjId());
-                                ownerRoomRel.setStatusCd("1"); //鐪嬬湅涓氫富鎴垮眿鍏崇郴鏁版嵁鏄惁鍒犻櫎浜�
-                                List<OwnerRoomRelDto> ownerRoomRels = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRel);
-                                Assert.listOnlyOne(ownerRoomRels, "鏌ヨ涓氫富鎴垮眿鍏崇郴琛ㄩ敊璇紒");
-                                OwnerDto owner = new OwnerDto();
-                                owner.setOwnerId(ownerRoomRels.get(0).getOwnerId());
-                                owner.setOwnerTypeCd("1001"); //涓氫富鏈汉
-                                List<OwnerDto> owners = ownerInnerServiceSMOImpl.queryOwners(owner);
-                                if (owners != null && owners.size() == 0) { //鏌ュ嚭鏉℃暟涓�0鏉�
-                                    //鍒ゆ柇涓氫富鏄惁鍒犻櫎浜�
-                                    OwnerDto newOwner = new OwnerDto();
-                                    newOwner.setOwnerId(ownerRoomRels.get(0).getOwnerId());
-                                    newOwner.setOwnerTypeCd("1001"); //涓氫富鏈汉
-                                    newOwner.setStatusCd("1");
-                                    List<OwnerDto> newOwners = ownerInnerServiceSMOImpl.queryOwners(newOwner);
-                                    Assert.listOnlyOne(newOwners, "鏌ヨ涓氫富淇℃伅閿欒锛�");
-                                    reportFeeMonthStatistics.setOwnerName(newOwners.get(0).getName());
-                                } else if (owners != null && owners.size() == 1) { //鏌ュ嚭鏉℃暟涓�1鏉�
-                                    reportFeeMonthStatistics.setOwnerName(owners.get(0).getName());
-                                } else {
-                                    throw new IllegalArgumentException("鏌ヨ涓氫富淇℃伅閿欒锛�");
-                                }
-                            } else if (ownerRoomRelDtos != null && ownerRoomRelDtos.size() == 1) { //鏌ヨ鏉℃暟涓�1鏉�
-                                OwnerDto ownerDto = new OwnerDto();
-                                ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
-                                ownerDto.setOwnerTypeCd("1001"); //涓氫富鏈汉
-                                List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
-                                if (ownerDtos != null && ownerDtos.size() == 0) { //涓氫富鏌ヨ鏉℃暟涓�0鏉�
-                                    //鍒ゆ柇涓氫富鏄惁鍒犻櫎浜�
-                                    OwnerDto newOwner = new OwnerDto();
-                                    newOwner.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
-                                    newOwner.setOwnerTypeCd("1001"); //涓氫富鏈汉
-                                    newOwner.setStatusCd("1");
-                                    List<OwnerDto> newOwners = ownerInnerServiceSMOImpl.queryOwners(newOwner);
-                                    Assert.listOnlyOne(newOwners, "鏌ヨ涓氫富淇℃伅閿欒锛�");
-                                    reportFeeMonthStatistics.setOwnerName(newOwners.get(0).getName());
-                                } else if (ownerDtos != null || ownerDtos.size() == 1) {
-                                    reportFeeMonthStatistics.setOwnerName(ownerDtos.get(0).getName());
-                                } else {
-                                    throw new IllegalArgumentException("鏌ヨ涓氫富淇℃伅閿欒锛�");
-                                }
-                            } else {
-                                throw new IllegalArgumentException("鏌ヨ涓氫富鎴垮眿鍏崇郴琛ㄩ敊璇紒");
-                            }
-                        }
+                    if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountPrice()) && !StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType())
+                            && reportFeeMonthStatistics.getDiscountSmallType().equals("6")) {
+                        //璧犻�侀噾棰�
+                        Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
+                        totalGiftAmount = totalGiftAmount + discountPrice;
+                        //璧犻�侀噾棰�
+                        reportFeeMonthStatisticsPrepayment.setGiftAmount(reportFeeMonthStatistics.getDiscountPrice());
+                    } else if (StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getGiftAmount())) {
+                        reportFeeMonthStatisticsPrepayment.setGiftAmount("0");
                     }
                 }
-                if (!hasInReportListAndMerge(reportList, reportFeeMonthStatistics)) {
-                    reportList.add(reportFeeMonthStatistics);
-                }
+                //璐圭敤椤圭洰
+                reportFeeMonthStatisticsPrepayment.setFeeConfigDtos(feeConfigDtos);
+                reportList.add(reportFeeMonthStatisticsPrepayment);
             }
-
-            //濡傛灉鏄溅浣嶅埛鎴垮眿淇℃伅
-            if (ownerIds.size() > 0) {
-                refreshReportFeeMonthStatistics(ownerIds, reportFeeMonthStatisticsDtos);
-            }
-
             //搴旀敹鎬婚噾棰�(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalReceivableAmount(String.format("%.2f", totalReceivableAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalReceivableAmount(String.format("%.2f", totalReceivableAmount));
             //瀹炴敹閲戦(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalReceivedAmount(String.format("%.2f", totalReceivedAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalReceivedAmount(String.format("%.2f", totalReceivedAmount));
+            //娆犺垂閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalOweAmount(String.format("%.2f", totalOweAmount));
+            //搴旂即閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalPayableAmount(String.format("%.2f", totalPayableAmount));
             //浼樻儬閲戦(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalPreferentialAmount(String.format("%.2f", totalPreferentialAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalPreferentialAmount(String.format("%.2f", totalPreferentialAmount));
             //鍑忓厤閲戦(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalDeductionAmount(String.format("%.2f", totalDeductionAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalDeductionAmount(String.format("%.2f", totalDeductionAmount));
             //婊炵撼閲�(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalLateFee(String.format("%.2f", totalLateFee));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalLateFee(String.format("%.2f", totalLateFee));
             //绌虹疆鎴挎墦鎶�(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalVacantHousingDiscount(String.format("%.2f", totalVacantHousingDiscount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalVacantHousingDiscount(String.format("%.2f", totalVacantHousingDiscount));
             //绌虹疆鎴垮噺鍏�(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalVacantHousingReduction(String.format("%.2f", totalVacantHousingReduction));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalVacantHousingReduction(String.format("%.2f", totalVacantHousingReduction));
             //璧犻�佽鍒欓噾棰�(灏忚)
-            reportFeeMonthStatisticsTotalDto.setTotalGiftAmount(String.format("%.2f", totalGiftAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setTotalGiftAmount(String.format("%.2f", totalGiftAmount));
             //搴旀敹閲戦(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllReceivableAmount(String.format("%.2f", allReceivableAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllReceivableAmount(String.format("%.2f", allReceivableAmount));
+            //娆犺垂閲戦(澶ц)
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllOweAmount(String.format("%.2f", allOweAmount));
+            //娆犺垂閲戦(澶ц)
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllPayableAmount(String.format("%.2f", allPayableAmount));
             //瀹炴敹閲戦(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllReceivedAmount(String.format("%.2f", allReceivedAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllReceivedAmount(String.format("%.2f", allReceivedAmount));
             //浼樻儬閲戦(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllPreferentialAmount(String.format("%.2f", allPreferentialAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllPreferentialAmount(String.format("%.2f", allPreferentialAmount));
             //鍑忓厤閲戦(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllDeductionAmount(String.format("%.2f", allDeductionAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllDeductionAmount(String.format("%.2f", allDeductionAmount));
             //婊炵撼閲�(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllLateFee(String.format("%.2f", allLateFee));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllLateFee(String.format("%.2f", allLateFee));
             //绌虹疆鎴挎墦鎶橀噾棰�(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllVacantHousingDiscount(String.format("%.2f", allVacantHousingDiscount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllVacantHousingDiscount(String.format("%.2f", allVacantHousingDiscount));
             //绌虹疆鎴垮噺鍏嶉噾棰�(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllVacantHousingReduction(String.format("%.2f", allVacantHousingReduction));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllVacantHousingReduction(String.format("%.2f", allVacantHousingReduction));
             //璧犻�佽鍒欓噾棰�(澶ц)
-            reportFeeMonthStatisticsTotalDto.setAllGiftAmount(String.format("%.2f", allGiftAmount));
+            reportFeeMonthStatisticsPrepaymentTotalDto.setAllGiftAmount(String.format("%.2f", allGiftAmount));
         } else {
-            reportFeeMonthStatisticsDtos = new ArrayList<>();
-            reportList.addAll(reportFeeMonthStatisticsDtos);
-            reportFeeMonthStatisticsTotalDto = new ReportFeeMonthStatisticsTotalDto();
+            reportFeeMonthStatisticsPrepaymentDtos = new ArrayList<>();
+            reportList.addAll(reportFeeMonthStatisticsPrepaymentDtos);
+            reportFeeMonthStatisticsPrepaymentTotalDto = new ReportFeeMonthStatisticsPrepaymentTotalDto();
         }
-
-        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsDto.getRow()), count, reportList, reportFeeMonthStatisticsTotalDto);
-
+//        count = reportList.size();
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsPrepaymentDto.getRow()), count, reportList, reportFeeMonthStatisticsPrepaymentTotalDto);
         return resultVo;
     }
 
-    /**
-     * @param ownerIds
-     * @param reportFeeMonthStatisticsDtos
-     */
-    private void refreshReportFeeMonthStatistics(List<String> ownerIds, List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos) {
-
-        if (ownerIds == null || ownerIds.size() < 1) {
-            return;
-        }
-
-        OwnerDto ownerDto = new OwnerDto();
-        ownerDto.setOwnerIds(ownerIds.toArray(new String[ownerIds.size()]));
-        List<OwnerDto> ownerDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryRoomAndParkingSpace(ownerDto);
-        String objName = "";
-        for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto : reportFeeMonthStatisticsDtos) {
-            if (!FeeDto.PAYER_OBJ_TYPE_CAR.equals(reportFeeMonthStatisticsDto.getPayerObjType())) {
-                continue;
-            }
-            for (OwnerDto ownerDto1 : ownerDtos) {
-                if (!StringUtil.isEmpty(reportFeeMonthStatisticsDto.getOwnerId()) && !reportFeeMonthStatisticsDto.getOwnerId().equals(ownerDto1.getOwnerId())) {
+    @Override
+    public ResultVo queryReportCollectFees(@RequestBody ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatisticsPrepaymentDto) {
+        ReportFeeMonthStatisticsPrepaymentDto feeMonthStatisticsPrepayment = BeanConvertUtil.covertBean(reportFeeMonthStatisticsPrepaymentDto, ReportFeeMonthStatisticsPrepaymentDto.class);
+        //鏌ヨ棰勪粯鏈熻处鍗曟姤琛ㄧ殑璐圭敤椤筩onfigId
+        List<ReportFeeMonthStatisticsPrepaymentDto> configIds = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryPrepaymentConfigs(feeMonthStatisticsPrepayment);
+        int count = configIds.size();
+        List<ReportFeeMonthStatisticsPrepaymentDto> reportList = new ArrayList<>();
+        //鏌ヨ璇ュ皬鍖轰笅鐨勮垂鐢ㄩ」鐩�
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setCommunityId(reportFeeMonthStatisticsPrepaymentDto.getCommunityId());
+        if (count > 0) {
+            for (ReportFeeMonthStatisticsPrepaymentDto feeMonthStatisticsPrepaymentDto : configIds) {
+                reportFeeMonthStatisticsPrepaymentDto.setConfigId(feeMonthStatisticsPrepaymentDto.getConfigId());
+                if (reportFeeMonthStatisticsPrepaymentDto.getPage() == 0) {
+                    reportFeeMonthStatisticsPrepaymentDto.setPage(1);
+                }
+                //鏌ヨ缂磋垂鏄庣粏
+                List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepaymentDtos = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryPayFeeDetailPrepayment(reportFeeMonthStatisticsPrepaymentDto);
+                if (reportFeeMonthStatisticsPrepaymentDtos == null || reportFeeMonthStatisticsPrepaymentDtos.size() < 1) {
                     continue;
                 }
-                objName = reportFeeMonthStatisticsDto.getObjName() + "(" + ownerDto1.getFloorNum() + "鏍�" + ownerDto1.getUnitNum() + "鍗曞厓" + ownerDto1.getRoomNum() + "瀹�)";
-                reportFeeMonthStatisticsDto.setObjName(objName);
-            }
-        }
-    }
-
-
-    private boolean hasInReportListAndMerge(List<ReportFeeMonthStatisticsDto> reportList, ReportFeeMonthStatisticsDto reportFeeMonthStatistics) {
-        for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto : reportList) {
-            if (reportFeeMonthStatisticsDto.getDetailId().equals(reportFeeMonthStatistics.getDetailId())) {
-                combineSydwCore(reportFeeMonthStatistics, reportFeeMonthStatisticsDto);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    //閽堝鎵�鐢ㄥ璞�
-    private static ReportFeeMonthStatisticsDto combineSydwCore(ReportFeeMonthStatisticsDto sourceBean, ReportFeeMonthStatisticsDto targetBean) {
-        Class sourceBeanClass = sourceBean.getClass();
-        Class targetBeanClass = targetBean.getClass();
-        Field[] sourceFields = sourceBeanClass.getDeclaredFields();
-        Field[] targetFields = sourceBeanClass.getDeclaredFields();
-        for (int i = 0; i < sourceFields.length; i++) {
-            Field sourceField = sourceFields[i];
-            Field targetField = targetFields[i];
-            sourceField.setAccessible(true);
-            targetField.setAccessible(true);
-            try {
-                if (!(sourceField.get(sourceBean) == null)) {
-                    targetField.set(targetBean, sourceField.get(sourceBean));
+                //鏌ヨ搴旀敹銆佸疄鏀舵�婚噾棰�(澶ц)
+                List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepaymentList = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryAllPayFeeDetailPrepayment(reportFeeMonthStatisticsPrepaymentDto);
+                //鏌ヨ(浼樻儬銆佸噺鍏嶃�佹粸绾抽噾銆佺┖缃埧鎵撴姌銆佺┖缃埧鍑忓厤閲戦绛�)澶ц鎬婚噾棰�
+                List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepaymentSum = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryPayFeeDetailPrepaymentSum(reportFeeMonthStatisticsPrepaymentDto);
+                //搴旀敹鎬婚噾棰�(澶ц)
+                Double allReceivableAmount = 0.0;
+                //瀹炴敹閲戦(澶ц)
+                Double allReceivedAmount = 0.0;
+                //浼樻儬閲戦(澶ц)
+                Double allPreferentialAmount = 0.0;
+                //鍑忓厤閲戦(澶ц)
+                Double allDeductionAmount = 0.0;
+                //婊炵撼閲�(澶ц)
+                Double allLateFee = 0.0;
+                //绌虹疆鎴挎墦鎶�(澶ц)
+                Double allVacantHousingDiscount = 0.0;
+                //绌虹疆鎴垮噺鍏�(澶ц)
+                Double allVacantHousingReduction = 0.0;
+                //璧犻�侀噾棰�(澶ц)
+                Double allGiftAmount = 0.0;
+                //娆犺垂閲戦(澶ц)
+                Double allOweAmount = 0.0;
+                //搴旂即閲戦(澶ц)
+                Double allPayableAmount = 0.0;
+                allReceivableAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllReceivableAmount());
+                allReceivedAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllReceivedAmount());
+                allOweAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllOweAmount());
+                allPayableAmount = Double.valueOf(reportFeeMonthStatisticsPrepaymentList.get(0).getAllPayableAmount());
+                for (ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatisticsPrepayment : reportFeeMonthStatisticsPrepaymentSum) {
+                    //杩欓噷鏄煡璇㈠嚭鐨勯噾棰濇�诲拰
+                    String discountPrice = reportFeeMonthStatisticsPrepayment.getDiscountPrice();
+                    // discountSmallType 1: 鎵撴姌  2:鍑忓厤  3:婊炵撼閲�  4:绌虹疆鎴挎墦鎶�  5:绌虹疆鎴垮噺鍏�  6:璧犻��
+                    //浼樻儬閲戦(澶ц)
+                    if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("1")) {
+                        Double aDouble = Double.valueOf(discountPrice);
+                        allPreferentialAmount = allPreferentialAmount + aDouble;
+                    }
+                    //鍑忓厤閲戦(澶ц)
+                    if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("2")) {
+                        Double aDouble = Double.valueOf(discountPrice);
+                        allDeductionAmount = allDeductionAmount + aDouble;
+                    }
+                    //婊炵撼閲�(澶ц)
+                    if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("3")) {
+                        Double aDouble = Double.valueOf(discountPrice);
+                        allLateFee = allLateFee + aDouble;
+                    }
+                    //绌虹疆鎴挎墦鎶橀噾棰�(澶ц)
+                    if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("4")) {
+                        Double aDouble = Double.valueOf(discountPrice);
+                        allVacantHousingDiscount = allVacantHousingDiscount + aDouble;
+                    }
+                    //绌虹疆鎴垮噺鍏嶉噾棰�(澶ц)
+                    if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("5")) {
+                        Double aDouble = Double.valueOf(discountPrice);
+                        allVacantHousingReduction = allVacantHousingReduction + aDouble;
+                    }
+                    //璧犻�侀噾棰�(澶ц)
+                    if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(reportFeeMonthStatisticsPrepayment.getDiscountSmallType()) && reportFeeMonthStatisticsPrepayment.getDiscountSmallType().equals("6")) {
+                        Double aDouble = Double.valueOf(discountPrice);
+                        allGiftAmount = allGiftAmount + aDouble;
+                    }
                 }
-            } catch (IllegalArgumentException | IllegalAccessException e) {
-                e.printStackTrace();
+                ReportFeeMonthStatisticsPrepaymentDto feeMonthStatistics = new ReportFeeMonthStatisticsPrepaymentDto();
+                //璐圭敤鍚嶇О
+                feeMonthStatistics.setFeeName(reportFeeMonthStatisticsPrepaymentDtos.get(0).getFeeName());
+                feeMonthStatistics.setFeeTypeCd(reportFeeMonthStatisticsPrepaymentDtos.get(0).getFeeTypeCd());
+                feeMonthStatistics.setFeeTypeCdName(reportFeeMonthStatisticsPrepaymentDtos.get(0).getFeeTypeCdName());
+                //搴旀敹閲戦(澶ц)
+                feeMonthStatistics.setAllReceivableAmount(String.format("%.2f", allReceivableAmount));
+                //娆犺垂閲戦(澶ц)
+                feeMonthStatistics.setAllOweAmount(String.format("%.2f", allOweAmount));
+                //搴旂即閲戦(澶ц)
+                feeMonthStatistics.setAllPayableAmount(String.format("%.2f", allPayableAmount));
+                //瀹炴敹閲戦(澶ц)
+                feeMonthStatistics.setAllReceivedAmount(String.format("%.2f", allReceivedAmount));
+                //浼樻儬閲戦(澶ц)
+                feeMonthStatistics.setAllPreferentialAmount(String.format("%.2f", allPreferentialAmount));
+                //鍑忓厤閲戦(澶ц)
+                feeMonthStatistics.setAllDeductionAmount(String.format("%.2f", allDeductionAmount));
+                //婊炵撼閲�(澶ц)
+                feeMonthStatistics.setAllLateFee(String.format("%.2f", allLateFee));
+                //绌虹疆鎴挎墦鎶橀噾棰�(澶ц)
+                feeMonthStatistics.setAllVacantHousingDiscount(String.format("%.2f", allVacantHousingDiscount));
+                //绌虹疆鎴垮噺鍏嶉噾棰�(澶ц)
+                feeMonthStatistics.setAllVacantHousingReduction(String.format("%.2f", allVacantHousingReduction));
+                //璧犻�佽鍒欓噾棰�(澶ц)
+                feeMonthStatistics.setAllGiftAmount(String.format("%.2f", allGiftAmount));
+                reportList.add(feeMonthStatistics);
             }
+        } else {
+            reportList = new ArrayList<>();
         }
-        return targetBean;
+        //鑾峰彇鏀惰垂鐘跺喌琛ㄥぇ璁°�佸皬璁�
+        ReportFeeMonthStatisticsPrepaymentTotalDto reportFeeMonthStatisticsPrepaymentTotal = getReportFeeMonthStatisticsPrepaymentTotal(feeMonthStatisticsPrepayment);
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsPrepaymentDto.getRow()), count, reportList, reportFeeMonthStatisticsPrepaymentTotal);
+        return resultVo;
     }
+
+    //鑾峰彇鏀惰垂鐘跺喌琛ㄥぇ璁°�佸皬璁�
+    private ReportFeeMonthStatisticsPrepaymentTotalDto getReportFeeMonthStatisticsPrepaymentTotal(ReportFeeMonthStatisticsPrepaymentDto reportFeeMonthStatisticsPrepaymentDto) {
+        ReportFeeMonthStatisticsPrepaymentTotalDto reportFeeMonthStatisticsPrepaymentTotal = new ReportFeeMonthStatisticsPrepaymentTotalDto();
+        //鏌ヨ搴旂即銆佸簲鏀躲�佸疄鏀躲�佹瑺璐归噾棰�(灏忚)
+        if (reportFeeMonthStatisticsPrepaymentDto.getPage() == 0) {
+            reportFeeMonthStatisticsPrepaymentDto.setPage(1);
+        }
+        List<ReportFeeMonthStatisticsPrepaymentDto> feeMonthStatisticsPrepaymentDtos = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryAllPrepaymentConfigs(reportFeeMonthStatisticsPrepaymentDto);
+        if (feeMonthStatisticsPrepaymentDtos != null && feeMonthStatisticsPrepaymentDtos.size() == 1) {
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalPayableAmount(feeMonthStatisticsPrepaymentDtos.get(0).getAllPayableAmount()); //搴旂即閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalReceivableAmount(feeMonthStatisticsPrepaymentDtos.get(0).getAllReceivableAmount()); //搴旀敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalReceivedAmount(feeMonthStatisticsPrepaymentDtos.get(0).getAllReceivedAmount()); //瀹炴敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalOweAmount(feeMonthStatisticsPrepaymentDtos.get(0).getAllOweAmount()); //娆犺垂閲戦(灏忚)
+        } else {
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalPayableAmount("0.0"); //搴旂即閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalReceivableAmount("0.0"); //搴旀敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalReceivedAmount("0.0"); //瀹炴敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalOweAmount("0.0"); //娆犺垂閲戦(灏忚)
+        }
+        //鏌ヨ搴旂即銆佸簲鏀躲�佸疄鏀躲�佹瑺璐归噾棰�(澶ц)
+        reportFeeMonthStatisticsPrepaymentDto.setPage(PageDto.DEFAULT_PAGE);
+        List<ReportFeeMonthStatisticsPrepaymentDto> feeMonthStatisticsPrepayments = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryAllPrepaymentConfigs(reportFeeMonthStatisticsPrepaymentDto);
+        if (feeMonthStatisticsPrepayments != null && feeMonthStatisticsPrepayments.size() == 1) {
+            reportFeeMonthStatisticsPrepaymentTotal.setAllPayableAmount(feeMonthStatisticsPrepayments.get(0).getAllPayableAmount()); //搴旂即閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllReceivableAmount(feeMonthStatisticsPrepayments.get(0).getAllReceivableAmount()); //搴旀敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllReceivedAmount(feeMonthStatisticsPrepayments.get(0).getAllReceivedAmount()); //瀹炴敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllOweAmount(feeMonthStatisticsPrepayments.get(0).getAllOweAmount()); //娆犺垂閲戦(灏忚)
+        } else {
+            reportFeeMonthStatisticsPrepaymentTotal.setAllPayableAmount("0.0"); //搴旂即閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllReceivableAmount("0.0"); //搴旀敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllReceivedAmount("0.0"); //瀹炴敹閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllOweAmount("0.0"); //娆犺垂閲戦(灏忚)
+        }
+        //鏌ヨ浼樻儬銆佽繚绾﹂噾棰�(灏忚)
+        if (reportFeeMonthStatisticsPrepaymentDto.getPage() == 0) {
+            reportFeeMonthStatisticsPrepaymentDto.setPage(1);
+        }
+        List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepayments = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryAllPrepaymentDiscounts(reportFeeMonthStatisticsPrepaymentDto);
+        if (reportFeeMonthStatisticsPrepayments != null && reportFeeMonthStatisticsPrepayments.size() > 0) {
+            for (ReportFeeMonthStatisticsPrepaymentDto feeMonthStatisticsPrepayment : reportFeeMonthStatisticsPrepayments) {
+                //鑾峰彇鎶樻墸绫诲瀷
+                String discountSmallType = feeMonthStatisticsPrepayment.getDiscountSmallType();
+                //鑾峰彇鎶樻墸閲戦
+                String discountPrice = feeMonthStatisticsPrepayment.getDiscountPrice();
+                // discountSmallType 1: 鎵撴姌  2:鍑忓厤  3:婊炵撼閲�  4:绌虹疆鎴挎墦鎶�  5:绌虹疆鎴垮噺鍏�  6:璧犻��
+                //浼樻儬閲戦(灏忚)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("1")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setTotalPreferentialAmount(discountPrice); //浼樻儬閲戦(灏忚)
+                }
+                //鍑忓厤閲戦(灏忚)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("2")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setTotalDeductionAmount(discountPrice); //鍑忓厤閲戦(灏忚)
+                }
+                //婊炵撼閲�(灏忚)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("3")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setTotalLateFee(discountPrice); //婊炵撼閲�(灏忚)
+                }
+                //绌虹疆鎴挎墦鎶橀噾棰�(灏忚)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("4")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setTotalVacantHousingDiscount(discountPrice); //绌虹疆鎴挎墦鎶橀噾棰�(灏忚)
+                }
+                //绌虹疆鎴垮噺鍏嶉噾棰�(灏忚)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("5")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setTotalVacantHousingReduction(discountPrice); //绌虹疆鎴垮噺鍏嶉噾棰�(灏忚)
+                }
+                //璧犻�侀噾棰�(灏忚)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("6")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setTotalGiftAmount(discountPrice); //璧犻�侀噾棰�(灏忚)
+                }
+            }
+        } else {
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalPreferentialAmount("0.0"); //浼樻儬閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalDeductionAmount("0.0"); //鍑忓厤閲戦(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalLateFee("0.0"); //婊炵撼閲�(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalVacantHousingDiscount("0.0"); //绌虹疆鎴挎墦鎶橀噾棰�(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalVacantHousingReduction("0.0"); //绌虹疆鎴垮噺鍏嶉噾棰�(灏忚)
+            reportFeeMonthStatisticsPrepaymentTotal.setTotalGiftAmount("0.0"); //璧犻�侀噾棰�(灏忚)
+        }
+        //鏌ヨ浼樻儬銆佽繚绾﹂噾棰�(澶ц)
+        reportFeeMonthStatisticsPrepaymentDto.setPage(PageDto.DEFAULT_PAGE);
+        List<ReportFeeMonthStatisticsPrepaymentDto> reportFeeMonthStatisticsPrepaymentDtos = reportFeeMonthStatisticsPrepaymentInnerServiceSMOImpl.queryAllPrepaymentDiscounts(reportFeeMonthStatisticsPrepaymentDto);
+        if (reportFeeMonthStatisticsPrepaymentDtos != null && reportFeeMonthStatisticsPrepaymentDtos.size() > 0) {
+            for (ReportFeeMonthStatisticsPrepaymentDto feeMonthStatisticsPrepaymentDto : reportFeeMonthStatisticsPrepaymentDtos) {
+                //鑾峰彇鎶樻墸绫诲瀷
+                String discountSmallType = feeMonthStatisticsPrepaymentDto.getDiscountSmallType();
+                //鑾峰彇鎶樻墸閲戦
+                String discountPrice = feeMonthStatisticsPrepaymentDto.getDiscountPrice();
+                // discountSmallType 1: 鎵撴姌  2:鍑忓厤  3:婊炵撼閲�  4:绌虹疆鎴挎墦鎶�  5:绌虹疆鎴垮噺鍏�  6:璧犻��
+                //浼樻儬閲戦(澶ц)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("1")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setAllPreferentialAmount(discountPrice); //浼樻儬閲戦(澶ц)
+                }
+                //鍑忓厤閲戦(澶ц)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("2")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setAllDeductionAmount(discountPrice); //鍑忓厤閲戦(澶ц)
+                }
+                //婊炵撼閲�(澶ц)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("3")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setAllLateFee(discountPrice); //婊炵撼閲�(澶ц)
+                }
+                //绌虹疆鎴挎墦鎶橀噾棰�(澶ц)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("4")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setAllVacantHousingDiscount(discountPrice); //绌虹疆鎴挎墦鎶橀噾棰�(澶ц)
+                }
+                //绌虹疆鎴垮噺鍏嶉噾棰�(澶ц)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("5")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setAllVacantHousingReduction(discountPrice); //绌虹疆鎴垮噺鍏嶉噾棰�(澶ц)
+                }
+                //璧犻�侀噾棰�(澶ц)
+                if (!StringUtil.isEmpty(discountPrice) && !StringUtil.isEmpty(discountSmallType) && discountSmallType.equals("6")) {
+                    reportFeeMonthStatisticsPrepaymentTotal.setAllGiftAmount(discountPrice); //璧犻�侀噾棰�(澶ц)
+                }
+            }
+        } else {
+            reportFeeMonthStatisticsPrepaymentTotal.setAllPreferentialAmount("0.0"); //浼樻儬閲戦(澶ц)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllDeductionAmount("0.0"); //鍑忓厤閲戦(澶ц)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllLateFee("0.0"); //婊炵撼閲�(澶ц)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllVacantHousingDiscount("0.0"); //绌虹疆鎴挎墦鎶橀噾棰�(澶ц)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllVacantHousingReduction("0.0"); //绌虹疆鎴垮噺鍏嶉噾棰�(澶ц)
+            reportFeeMonthStatisticsPrepaymentTotal.setAllGiftAmount("0.0"); //璧犻�侀噾棰�(澶ц)
+        }
+        return reportFeeMonthStatisticsPrepaymentTotal;
+    }
+
+
 }

--
Gitblit v1.8.0