From 6e8c95d31d85b53857e4e3ce12ea303eb0ea42eb Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 19 八月 2021 00:47:48 +0800
Subject: [PATCH] 优化代码

---
 service-report/src/main/java/com/java110/report/bmo/reportFeeMonthStatistics/impl/GetReportFeeMonthStatisticsBMOImpl.java |  503 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 485 insertions(+), 18 deletions(-)

diff --git a/service-report/src/main/java/com/java110/report/bmo/reportFeeMonthStatistics/impl/GetReportFeeMonthStatisticsBMOImpl.java b/service-report/src/main/java/com/java110/report/bmo/reportFeeMonthStatistics/impl/GetReportFeeMonthStatisticsBMOImpl.java
old mode 100644
new mode 100755
index 6706d60..7522812
--- a/service-report/src/main/java/com/java110/report/bmo/reportFeeMonthStatistics/impl/GetReportFeeMonthStatisticsBMOImpl.java
+++ b/service-report/src/main/java/com/java110/report/bmo/reportFeeMonthStatistics/impl/GetReportFeeMonthStatisticsBMOImpl.java
@@ -1,12 +1,19 @@
 package com.java110.report.bmo.reportFeeMonthStatistics.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.smo.IComputeFeeSMO;
+import com.java110.dto.PageDto;
+import com.java110.dto.RoomDto;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.dto.report.ReportDeposit;
 import com.java110.dto.reportFeeMonthStatistics.ReportFeeMonthStatisticsDto;
 import com.java110.dto.reportFeeMonthStatistics.ReportFeeMonthStatisticsTotalDto;
+import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.report.IReportFeeMonthStatisticsInnerServiceSMO;
 import com.java110.report.bmo.reportFeeMonthStatistics.IGetReportFeeMonthStatisticsBMO;
+import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
@@ -17,10 +24,14 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service("getReportFeeMonthStatisticsBMOImpl")
 public class GetReportFeeMonthStatisticsBMOImpl implements IGetReportFeeMonthStatisticsBMO {
@@ -29,6 +40,12 @@
 
     @Autowired
     private IReportFeeMonthStatisticsInnerServiceSMO reportFeeMonthStatisticsInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
+
+    @Autowired
+    private IComputeFeeSMO computeFeeSMOImpl;
 
     /**
      * @param reportFeeMonthStatisticsDto
@@ -57,9 +74,26 @@
     public ResponseEntity<String> queryReportFeeSummary(ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto) {
         int count = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportFeeSummaryCount(reportFeeMonthStatisticsDto);
 
-        List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos = null;
+        List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos = new ArrayList<>();
         if (count > 0) {
-            reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportFeeSummary(reportFeeMonthStatisticsDto);
+            List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsList = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportFeeSummary(reportFeeMonthStatisticsDto);
+            for (ReportFeeMonthStatisticsDto reportFeeMonthStatistics : reportFeeMonthStatisticsList) {
+                //鑾峰彇搴旀敹閲戦
+                double receivableAmount = Double.parseDouble(reportFeeMonthStatistics.getReceivableAmount());
+                //鑾峰彇瀹炴敹閲戦
+                double receivedAmount = Double.parseDouble(reportFeeMonthStatistics.getReceivedAmount());
+                double chargeRate = (receivedAmount / receivableAmount) * 100.0;
+                reportFeeMonthStatistics.setChargeRate(String.format("%.2f", chargeRate) + "%");
+                reportFeeMonthStatisticsDtos.add(reportFeeMonthStatistics);
+            }
+            ReportFeeMonthStatisticsDto tmpReportFeeMonthStatisticsDto = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportFeeSummaryMajor(reportFeeMonthStatisticsDto);
+            if (reportFeeMonthStatisticsList != null && reportFeeMonthStatisticsList.size() > 0) {
+                for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto1 : reportFeeMonthStatisticsList) {
+                    reportFeeMonthStatisticsDto1.setAllReceivableAmount(tmpReportFeeMonthStatisticsDto.getAllReceivableAmount());
+                    reportFeeMonthStatisticsDto1.setAllReceivedAmount(tmpReportFeeMonthStatisticsDto.getAllReceivedAmount());
+                    reportFeeMonthStatisticsDto1.setAllOweAmount(tmpReportFeeMonthStatisticsDto.getAllOweAmount());
+                }
+            }
         } else {
             reportFeeMonthStatisticsDtos = new ArrayList<>();
         }
@@ -78,6 +112,14 @@
         List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos = null;
         if (count > 0) {
             reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportFloorUnitFeeSummary(reportFeeMonthStatisticsDto);
+            ReportFeeMonthStatisticsDto tmpReportFeeMonthStatisticsDto = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportFloorUnitFeeSummaryMajor(reportFeeMonthStatisticsDto);
+            if (reportFeeMonthStatisticsDtos != null && reportFeeMonthStatisticsDtos.size() > 0) {
+                for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto1 : reportFeeMonthStatisticsDtos) {
+                    reportFeeMonthStatisticsDto1.setAllReceivableAmount(tmpReportFeeMonthStatisticsDto.getAllReceivableAmount());
+                    reportFeeMonthStatisticsDto1.setAllReceivedAmount(tmpReportFeeMonthStatisticsDto.getAllReceivedAmount());
+                    reportFeeMonthStatisticsDto1.setAllOweAmount(tmpReportFeeMonthStatisticsDto.getAllOweAmount());
+                }
+            }
         } else {
             reportFeeMonthStatisticsDtos = new ArrayList<>();
         }
@@ -96,6 +138,14 @@
         List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos = null;
         if (count > 0) {
             reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryFeeBreakdown(reportFeeMonthStatisticsDto);
+            ReportFeeMonthStatisticsDto tmpReportFeeMonthStatisticsDto = reportFeeMonthStatisticsInnerServiceSMOImpl.queryFeeBreakdownMajor(reportFeeMonthStatisticsDto);
+            if (reportFeeMonthStatisticsDtos != null && reportFeeMonthStatisticsDtos.size() > 0) {
+                for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto1 : reportFeeMonthStatisticsDtos) {
+                    reportFeeMonthStatisticsDto1.setAllReceivableAmount(tmpReportFeeMonthStatisticsDto.getAllReceivableAmount());
+                    reportFeeMonthStatisticsDto1.setAllReceivedAmount(tmpReportFeeMonthStatisticsDto.getAllReceivedAmount());
+                    reportFeeMonthStatisticsDto1.setAllOweAmount(tmpReportFeeMonthStatisticsDto.getAllOweAmount());
+                }
+            }
         } else {
             reportFeeMonthStatisticsDtos = new ArrayList<>();
         }
@@ -178,7 +228,14 @@
         List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos = null;
         if (count > 0) {
             reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryOweFeeDetail(reportFeeMonthStatisticsDto);
-
+            ReportFeeMonthStatisticsDto tmpReportFeeMonthStatisticsDto = reportFeeMonthStatisticsInnerServiceSMOImpl.queryOweFeeDetailMajor(reportFeeMonthStatisticsDto);
+            if (reportFeeMonthStatisticsDtos != null && reportFeeMonthStatisticsDtos.size() > 0) {
+                for (ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto1 : reportFeeMonthStatisticsDtos) {
+                    reportFeeMonthStatisticsDto1.setAllReceivableAmount(tmpReportFeeMonthStatisticsDto.getAllReceivableAmount());
+                    reportFeeMonthStatisticsDto1.setAllReceivedAmount(tmpReportFeeMonthStatisticsDto.getAllReceivedAmount());
+                    reportFeeMonthStatisticsDto1.setAllOweAmount(tmpReportFeeMonthStatisticsDto.getAllOweAmount());
+                }
+            }
             freshReportOweDay(reportFeeMonthStatisticsDtos);
         } else {
             reportFeeMonthStatisticsDtos = new ArrayList<>();
@@ -193,6 +250,7 @@
 
     @Override
     public ResponseEntity<String> queryPayFeeDetail(ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto) {
+
         JSONObject countInfo = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetailCount(reportFeeMonthStatisticsDto);
 
         int count = Integer.parseInt(countInfo.get("count").toString());
@@ -218,9 +276,17 @@
         Double allVacantHousingDiscount = 0.0;
         //绌虹疆鎴垮噺鍏�(澶ц)
         Double allVacantHousingReduction = 0.0;
+        int size = 0;
         if (count > 0) {
             //鏌ヨ缂磋垂鏄庣粏
             reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetail(reportFeeMonthStatisticsDto);
+            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();
+            }
             //鏌ヨ搴旀敹銆佸疄鏀舵�婚噾棰�(澶ц)
             List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsList = reportFeeMonthStatisticsInnerServiceSMOImpl.queryAllPayFeeDetail(reportFeeMonthStatisticsDto);
             //鏌ヨ(浼樻儬銆佸噺鍏嶃�佹粸绾抽噾銆佺┖缃埧鎵撴姌銆佺┖缃埧鍑忓厤閲戦绛�)澶ц鎬婚噾棰�
@@ -279,9 +345,8 @@
                     totalPreferentialAmount = totalPreferentialAmount + discountPrice;
                     //浼樻儬閲戦
                     reportFeeMonthStatistics.setPreferentialAmount(reportFeeMonthStatistics.getDiscountPrice());
-                }else{
+                } else {
                     reportFeeMonthStatistics.setPreferentialAmount("0");
-
                 }
                 //鍑忓厤閲戦
                 if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("2")) {
@@ -290,17 +355,17 @@
                     totalDeductionAmount = totalDeductionAmount + discountPrice;
                     //鍑忓厤閲戦
                     reportFeeMonthStatistics.setDeductionAmount(reportFeeMonthStatistics.getDiscountPrice());
-                }else{
+                } else {
                     reportFeeMonthStatistics.setDeductionAmount("0");
                 }
                 //婊炵撼閲�
                 if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("3")) {
                     //鑾峰彇婊炵撼閲戦噾棰�
-                    Double discountPrice = Double.valueOf(reportFeeMonthStatistics.getDiscountPrice());
+                    Double discountPrice = (Double.valueOf(reportFeeMonthStatistics.getDiscountPrice())) * (-1);
                     totalLateFee = totalLateFee + discountPrice;
                     //婊炵撼閲�
                     reportFeeMonthStatistics.setLateFee(reportFeeMonthStatistics.getDiscountPrice());
-                }else{
+                } else {
                     reportFeeMonthStatistics.setLateFee("0");
                 }
                 //绌虹疆鎴挎墦鎶�
@@ -310,7 +375,7 @@
                     totalVacantHousingDiscount = totalVacantHousingDiscount + discountPrice;
                     //绌虹疆鎴挎墦鎶�
                     reportFeeMonthStatistics.setVacantHousingDiscount(reportFeeMonthStatistics.getDiscountPrice());
-                }else{
+                } else {
                     reportFeeMonthStatistics.setVacantHousingDiscount("0");
                 }
                 //绌虹疆鎴垮噺鍏�
@@ -320,22 +385,22 @@
                     totalVacantHousingReduction = totalVacantHousingReduction + discountPrice;
                     //绌虹疆鎴垮噺鍏�
                     reportFeeMonthStatistics.setVacantHousingReduction(reportFeeMonthStatistics.getDiscountPrice());
-                }else{
+                } else {
                     reportFeeMonthStatistics.setVacantHousingReduction("0");
                 }
-
                 if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(reportFeeMonthStatistics.getPayerObjType())) {
                     reportFeeMonthStatistics.setObjName(reportFeeMonthStatistics.getFloorNum()
                             + "鏍�" + reportFeeMonthStatistics.getUnitNum()
                             + "鍗曞厓" + reportFeeMonthStatistics.getRoomNum() + "瀹�");
-                } else {
+                } 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);
                 reportList.add(reportFeeMonthStatistics);
@@ -374,10 +439,7 @@
             reportFeeMonthStatisticsTotalDto = new ReportFeeMonthStatisticsTotalDto();
         }
 
-        /*FeeDetailResultVo resultVo = new FeeDetailResultVo(countInfo.getDouble("totalReceivableAmount"), countInfo.getDouble("totalReceivedAmount"),
-                (int) Math.ceil((double) count / (double) reportFeeMonthStatisticsDto.getRow()), count, reportList);*/
-
-        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsDto.getRow()), count, reportList, reportFeeMonthStatisticsTotalDto);
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) size / (double) reportFeeMonthStatisticsDto.getRow()), size, reportList, reportFeeMonthStatisticsTotalDto);
 
         ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
 
@@ -461,6 +523,411 @@
         return responseEntity;
     }
 
+    /**
+     * 鏌ヨ鎶ヨ〃涓撳 缁熻淇℃伅
+     *
+     * @param reportFeeMonthStatisticsDto
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> queryReportProficientCount(ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto) {
+        JSONObject result = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportProficientCount(reportFeeMonthStatisticsDto);
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(result.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    /**
+     * 鏌ヨ鎶ヤ慨淇℃伅
+     *
+     * @param repairUserDto
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> queryRepair(RepairUserDto repairUserDto) {
+        //鏌ヨ鍛樺伐鎶ヤ慨琛ㄥ憳宸ヤ俊鎭�
+        List<RepairUserDto> repairUsers = reportFeeMonthStatisticsInnerServiceSMOImpl.queryRepairForStaff(repairUserDto);
+        int count = repairUsers.size();
+        //鑾峰彇鍛樺伐id鍜屽鍚嶉泦鍚�
+        List<RepairUserDto> staffs;
+        if (StringUtil.isEmpty(repairUserDto.getStaffId())) {
+            repairUserDto.setPage(-1);
+            staffs = reportFeeMonthStatisticsInnerServiceSMOImpl.queryRepairForStaff(repairUserDto);
+        } else {
+            repairUserDto.setPage(-1);
+            repairUserDto.setStaffId(null);
+            staffs = reportFeeMonthStatisticsInnerServiceSMOImpl.queryRepairForStaff(repairUserDto);
+        }
+        List<RepairUserDto> repairUserList = new ArrayList<>();
+        //澶勭悊涓�绘暟閲�
+        int dealNumber = 0;
+        //缁撳崟鎬绘暟閲�
+        int statementNumber = 0;
+        //閫�鍗曟�绘暟閲�
+        int chargebackNumber = 0;
+        //杞崟鎬绘暟閲�
+        int transferOrderNumber = 0;
+        //娲惧崟鎬绘暟閲�
+        int dispatchNumber = 0;
+        //宸插洖璁挎�绘暟閲�
+        int returnNumber = 0;
+        if (count > 0) {
+            for (RepairUserDto repairUser : repairUsers) {
+                RepairUserDto repairUserInfo = new RepairUserDto();
+                //鍛樺伐id
+                repairUserDto.setStaffId(repairUser.getStaffId());
+                List<RepairUserDto> repairUserDtoList = reportFeeMonthStatisticsInnerServiceSMOImpl.queryRepairWithOutPage(repairUserDto);
+                if (repairUserDtoList != null && repairUserDtoList.size() > 0) {
+                    //澶勭悊涓暟閲�
+                    int dealAmount = 0;
+                    //缁撳崟鏁伴噺
+                    int statementAmount = 0;
+                    //閫�鍗曟暟閲�
+                    int chargebackAmount = 0;
+                    //杞崟鏁伴噺
+                    int transferOrderAmount = 0;
+                    //娲惧崟鏁伴噺
+                    int dispatchAmount = 0;
+                    //鍥炶鏁伴噺
+                    int returnAmount = 0;
+                    //璇勫垎
+                    String score = "";
+                    for (RepairUserDto repair : repairUserDtoList) {
+                        //澶勭悊涓姸鎬�
+                        if (repair.getState().equals("10001")) {
+                            //鑾峰彇鏁伴噺
+                            int amount = Integer.parseInt(repair.getAmount());
+                            dealAmount = dealAmount + amount;
+                        } else if (repair.getState().equals("10002")) {  //缁撳崟鐘舵��
+                            //鑾峰彇鏁伴噺
+                            int amount = Integer.parseInt(repair.getAmount());
+                            statementAmount = statementAmount + amount;
+                        } else if (repair.getState().equals("10003")) {  //閫�鍗曠姸鎬�
+                            //鑾峰彇鏁伴噺
+                            int amount = Integer.parseInt(repair.getAmount());
+                            chargebackAmount = chargebackAmount + amount;
+                        } else if (repair.getState().equals("10004")) {  //杞崟鐘舵��
+                            //鑾峰彇鏁伴噺
+                            int amount = Integer.parseInt(repair.getAmount());
+                            transferOrderAmount = transferOrderAmount + amount;
+                        } else if (repair.getState().equals("10006")) {  //娲惧崟鐘舵��
+                            int amount = Integer.parseInt(repair.getAmount());
+                            dispatchAmount = dispatchAmount + amount;
+                        } else if (repair.getState().equals("10008")) {  //宸插洖璁跨姸鎬�
+                            int amount = Integer.parseInt(repair.getAmount());
+                            returnAmount = returnAmount + amount;
+                        }
+                        if (!StringUtil.isEmpty(repair.getScore())) {
+                            score = repair.getScore();
+                        }
+                    }
+                    //鍛樺伐id
+                    repairUserInfo.setStaffId(repairUser.getStaffId());
+                    //鍛樺伐濮撳悕
+                    repairUserInfo.setStaffName(repairUser.getStaffName());
+                    //澶勭悊涓姤淇暟閲�
+                    repairUserInfo.setDealAmount(Integer.toString(dealAmount));
+                    //澶勭悊涓姤淇�绘暟閲�
+                    repairUserInfo.setDealNumber(Integer.toString(dealNumber));
+                    //缁撳崟鎶ヤ慨鏁伴噺
+                    repairUserInfo.setStatementAmount(Integer.toString(statementAmount));
+                    //缁撳崟鎶ヤ慨鎬绘暟閲�
+                    repairUserInfo.setStatementNumber(Integer.toString(statementNumber));
+                    //閫�鍗曟姤淇暟閲�
+                    repairUserInfo.setChargebackAmount(Integer.toString(chargebackAmount));
+                    //閫�鍗曟姤淇�绘暟閲�
+                    repairUserInfo.setChargebackNumber(Integer.toString(chargebackNumber));
+                    //杞崟鎶ヤ慨鏁伴噺
+                    repairUserInfo.setTransferOrderAmount(Integer.toString(transferOrderAmount));
+                    //杞崟鎶ヤ慨鎬绘暟閲�
+                    repairUserInfo.setTransferOrderNumber(Integer.toString(transferOrderNumber));
+                    //娲惧崟鎶ヤ慨鏁伴噺
+                    repairUserInfo.setDispatchAmount(Integer.toString(dispatchAmount));
+                    //娲惧崟鎶ヤ慨鎬绘暟閲�
+                    repairUserInfo.setDispatchNumber(Integer.toString(dispatchNumber));
+                    //鍥炶鏁伴噺
+                    repairUserInfo.setReturnAmount(Integer.toString(returnAmount));
+                    //鍥炶鎬绘暟閲�
+                    repairUserInfo.setReturnNumber(Integer.toString(returnNumber));
+                    //鍛樺伐id鍜屽鍚嶄俊鎭泦鍚�
+                    repairUserInfo.setRepairList(staffs);
+                    //鍛樺伐璇勫垎
+                    repairUserInfo.setScore(score);
+                    repairUserList.add(repairUserInfo);
+                } else {
+                    continue;
+                }
+                dealNumber = Integer.parseInt(repairUserInfo.getDealAmount()) + dealNumber;
+                statementNumber = Integer.parseInt(repairUserInfo.getStatementAmount()) + statementNumber;
+                chargebackNumber = Integer.parseInt(repairUserInfo.getChargebackAmount()) + chargebackNumber;
+                transferOrderNumber = Integer.parseInt(repairUserInfo.getTransferOrderAmount()) + transferOrderNumber;
+                dispatchNumber = Integer.parseInt(repairUserInfo.getDispatchAmount()) + dispatchNumber;
+                returnNumber = Integer.parseInt(repairUserInfo.getReturnAmount()) + returnNumber;
+            }
+        } else {
+            repairUserList = new ArrayList<>();
+        }
+
+        RepairUserDto repairUser = new RepairUserDto();
+        repairUser.setDealNumber(Integer.toString(dealNumber));
+        repairUser.setStatementNumber(Integer.toString(statementNumber));
+        repairUser.setChargebackNumber(Integer.toString(chargebackNumber));
+        repairUser.setTransferOrderNumber(Integer.toString(transferOrderNumber));
+        repairUser.setDispatchNumber(Integer.toString(dispatchNumber));
+        repairUser.setReturnNumber(Integer.toString(returnNumber));
+
+        //鑾峰彇鎬绘潯鏁�
+        int size = staffs.size();
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) size / (double) repairUserDto.getRow()), repairUserList.size(), repairUserList, staffs, repairUser);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> queryNoFeeRooms(RoomDto roomDto) {
+        int count = reportFeeMonthStatisticsInnerServiceSMOImpl.queryNoFeeRoomsCount(roomDto);
+
+        List<RoomDto> roomDtos = null;
+        if (count > 0) {
+            roomDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryNoFeeRooms(roomDto);
+        } else {
+            roomDtos = new ArrayList<>();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) roomDto.getRow()), count, roomDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> queryPayFeeDeposit(ReportDeposit reportDeposit) {
+        //鏌ヨ鎶奸噾
+        List<ReportDeposit> reportDeposits = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDeposit(reportDeposit);
+        //鏌ヨ鎶奸噾閫�璐规�婚噾棰�
+        List<ReportDeposit> reportDepositAmounts = reportFeeMonthStatisticsInnerServiceSMOImpl.queryFeeDepositAmount(reportDeposit);
+
+        //鏌ヨ鎶奸噾璐圭敤椤�
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setCommunityId(reportDeposit.getCommunityId());
+        feeConfigDto.setFeeTypeCd("888800010006");
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+
+        List<ReportDeposit> newReportDeposits = new ArrayList<>();
+        BigDecimal unpaidfeeAmount = new BigDecimal(0);//鏈氦璐�
+        BigDecimal unpaidfeeAmounts = new BigDecimal(0);//鏈即璐规�婚噾棰�
+        BigDecimal paidfeeAmount = new BigDecimal(0);//宸茬即璐�
+        BigDecimal paidfeeAmounts = new BigDecimal(0);//宸茬即璐规�婚噾棰�
+        BigDecimal refundedAmount = new BigDecimal(0);//宸查��璐�
+        BigDecimal refundedAmounts = new BigDecimal(0);//宸查��璐规�婚噾棰�
+        BigDecimal refundInProgressAmount = new BigDecimal(0); //閫�璐逛腑
+        BigDecimal refundInProgressAmounts = new BigDecimal(0);//閫�璐逛腑鎬婚噾棰�
+        BigDecimal refundFailedAmount = new BigDecimal(0); //閫�璐瑰け璐�
+        BigDecimal refundFailedAmounts = new BigDecimal(0);//閫�璐瑰け璐ユ�婚噾棰�
+        for (ReportDeposit deposit : reportDeposits) {
+            deposit.setFeeConfigDtos(feeConfigDtos);
+            newReportDeposits.add(deposit);
+            if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(deposit.getPayerObjType())) {
+                deposit.setObjName(deposit.getFloorNum()
+                        + "鏍�" + deposit.getUnitNum()
+                        + "鍗曞厓" + deposit.getRoomNum() + "瀹�");
+            } else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(deposit.getPayerObjType())) {
+                deposit.setObjName(deposit.getCarNum());
+            }
+            //鏀惰垂涓紙鏈氦璐癸級
+            if ("2008001".equals(deposit.getState())) {
+                unpaidfeeAmount = unpaidfeeAmount.add(new BigDecimal(deposit.getAdditionalAmount()));
+            }
+            //鏀惰垂缁撴潫锛堝凡鏀惰垂锛�
+            if ("2009001".equals(deposit.getState()) && !StringUtil.isEmpty(deposit.getDetailState()) && "1400".equals(deposit.getDetailState())) {
+                paidfeeAmount = paidfeeAmount.add(new BigDecimal(deposit.getAdditionalAmount()));
+            }
+            if (!StringUtil.isEmpty(deposit.getDetailState()) && "1100".equals(deposit.getDetailState())) {//宸查��璐�
+                refundedAmount = refundedAmount.add(new BigDecimal(deposit.getAdditionalAmount()));
+            }
+            if (!StringUtil.isEmpty(deposit.getDetailState()) && "1000".equals(deposit.getDetailState())) {//閫�璐逛腑
+                refundInProgressAmount = refundInProgressAmount.add(new BigDecimal(deposit.getAdditionalAmount()));
+            }
+            if (!StringUtil.isEmpty(deposit.getDetailState()) && "1200".equals(deposit.getDetailState())) {//閫�璐瑰け璐�
+                refundFailedAmount = refundFailedAmount.add(new BigDecimal(deposit.getAdditionalAmount()));
+            }
+        }
+        for (ReportDeposit reportDeposit1 : reportDepositAmounts) {
+            if (StringUtil.isEmpty(reportDeposit1.getAllAmount())) {
+                throw new IllegalArgumentException("鏌ヨ鎬婚噾棰濋敊璇紒");
+            }
+            //鑾峰彇鎬婚噾棰�
+            BigDecimal bd = new BigDecimal(reportDeposit1.getAllAmount());
+            if (StringUtil.isEmpty(reportDeposit1.getDetailState())) { //鑾峰彇鏈即璐规�婚噾棰�
+                unpaidfeeAmounts = bd;
+            } else if (reportDeposit1.getDetailState().equals("1000")) { //鑾峰彇閫�璐逛腑鎬婚噾棰�
+                refundInProgressAmounts = bd;
+            } else if (reportDeposit1.getDetailState().equals("1100")) { //鑾峰彇宸查��璐规�婚噾棰�
+                refundedAmounts = bd;
+            } else if (reportDeposit1.getDetailState().equals("1200")) { //鑾峰彇閫�璐瑰け璐ユ�婚噾棰�
+                refundFailedAmounts = bd;
+            } else if (reportDeposit1.getDetailState().equals("1400")) { //鑾峰彇宸茬即璐规�婚噾棰�
+                paidfeeAmounts = bd;
+            }
+        }
+        HashMap<String, String> mp = new HashMap<>();
+        mp.put("unpaidfeeAmount", unpaidfeeAmount.toString());
+        mp.put("paidfeeAmount", paidfeeAmount.toString());
+        mp.put("refundedAmount", refundedAmount.toString());
+        mp.put("refundInProgressAmount", refundInProgressAmount.toString());
+        mp.put("refundFailedAmount", refundFailedAmount.toString());
+        mp.put("unpaidfeeAmounts", unpaidfeeAmounts.toString());
+        mp.put("paidfeeAmounts", paidfeeAmounts.toString());
+        mp.put("refundedAmounts", refundedAmounts.toString());
+        mp.put("refundInProgressAmounts", refundInProgressAmounts.toString());
+        mp.put("refundFailedAmounts", refundFailedAmounts.toString());
+        int size = 0;
+        if (newReportDeposits != null && newReportDeposits.size() > 0) {
+            //鏌ヨ鎵�鏈夋潯鏁�
+            reportDeposit.setPage(PageDto.DEFAULT_PAGE);
+            List<ReportDeposit> reportDeposits1 = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDeposit(reportDeposit);
+            size = reportDeposits1.size();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) size / (double) reportDeposit.getRow()), size, newReportDeposits, mp);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> queryHuaningOweFee(ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto) {
+        int count = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningOweFeeCount(reportFeeMonthStatisticsDto);
+
+        List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsDtos = null;
+        if (count > 0) {
+            reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningOweFee(reportFeeMonthStatisticsDto);
+        } else {
+            reportFeeMonthStatisticsDtos = new ArrayList<>();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsDto.getRow()), count, reportFeeMonthStatisticsDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    @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);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> queryHuaningPayFeeTwo(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.queryHuaningPayFeeTwoCount(paramInfo);
+
+        List<Map> reportFeeMonthStatisticsDtos = null;
+        if (count > 0) {
+            reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningPayFeeTwo(paramInfo);
+        } else {
+            reportFeeMonthStatisticsDtos = new ArrayList<>();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (int) paramInfo.get("row")), count, reportFeeMonthStatisticsDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> queryHuaningOweFeeDetail(Map paramInfo) {
+        Calendar calendar = Calendar.getInstance();
+        int count = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningOweFeeDetailCount(paramInfo);
+        List<Map> reportFeeMonthStatisticsDtos = null;
+        if (count > 0) {
+            reportFeeMonthStatisticsDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryHuaningOweFeeDetail(paramInfo);
+            refreshOweFee(reportFeeMonthStatisticsDtos, paramInfo);
+        } else {
+            reportFeeMonthStatisticsDtos = new ArrayList<>();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (int) paramInfo.get("row")), count, reportFeeMonthStatisticsDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    private void refreshOweFee(List<Map> reportFeeMonthStatisticsDtos, Map paramInfo) {
+        Date startTime = null;
+        Date endTime = null;
+        Calendar calendar = Calendar.getInstance();
+        int curMonth = calendar.get(Calendar.MONTH) + 1;
+        calendar.set(Calendar.MONTH, 0);
+        Date curStart = calendar.getTime();
+
+
+        for (Map paramIn : reportFeeMonthStatisticsDtos) {
+
+            startTime = (Date) paramIn.get("startTime");
+            endTime = (Date) paramIn.get("startTime");
+            BigDecimal money = (BigDecimal) paramIn.get("oweAmount");
+            double month = Math.ceil(computeFeeSMOImpl.dayCompare(startTime, endTime));
+            if (month < 1) {
+                paramIn.put("btAmount", 0);
+                paramIn.put("bfAmount", 0);
+                continue;
+            }
+
+            //姣忔湀閲戦
+            BigDecimal monthAmount = money.divide(new BigDecimal(month), 2, BigDecimal.ROUND_HALF_EVEN);
+
+            if (startTime.getTime() < curStart.getTime()) {
+                BigDecimal btAmountDec = monthAmount.multiply(new BigDecimal(curMonth)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+                paramIn.put("btAmount", btAmountDec.doubleValue());
+                double preMonth = Math.ceil(computeFeeSMOImpl.dayCompare(startTime, curStart));
+                BigDecimal bfAmountDec = monthAmount.multiply(new BigDecimal(preMonth)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+                paramIn.put("bfAmount", bfAmountDec.doubleValue());
+                continue;
+            }
+
+            if (startTime.getTime() >= curStart.getTime()) {
+                paramIn.put("btAmount", money.doubleValue());
+                paramIn.put("bfAmount", 0);
+            }
+        }
+
+    }
+
     @Override
     public ResponseEntity<String> queryPrePayment(ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto) {
 

--
Gitblit v1.8.0