|
|
@@ -0,0 +1,423 @@
|
|
|
+package com.java110.report.smo.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.java110.core.smo.IComputeFeeSMO;
|
|
|
+import com.java110.dto.fee.FeeConfigDto;
|
|
|
+import com.java110.dto.fee.FeeDetailDto;
|
|
|
+import com.java110.dto.fee.FeeDto;
|
|
|
+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.intf.community.IRepairInnerServiceSMO;
|
|
|
+import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
|
|
|
+import com.java110.intf.report.IQueryPayFeeDetailInnerServiceSMO;
|
|
|
+import com.java110.intf.report.IReportFeeMonthStatisticsInnerServiceSMO;
|
|
|
+import com.java110.intf.user.IOwnerInnerServiceSMO;
|
|
|
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
|
|
|
+import com.java110.utils.util.Assert;
|
|
|
+import com.java110.utils.util.StringUtil;
|
|
|
+import com.java110.vo.ResultVo;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.lang.reflect.Field;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 查询缴费明细
|
|
|
+ *
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+public class QueryPayFeeDetailInnerServiceSMOImpl implements IQueryPayFeeDetailInnerServiceSMO{
|
|
|
+
|
|
|
+ private int MAX_ROWS = 500; // 最大行数
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IReportFeeMonthStatisticsInnerServiceSMO reportFeeMonthStatisticsInnerServiceSMOImpl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IComputeFeeSMO computeFeeSMOImpl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
|
|
|
+
|
|
|
+ @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<>();
|
|
|
+ //查询该小区下的费用项目
|
|
|
+ FeeConfigDto feeConfigDto = new FeeConfigDto();
|
|
|
+ feeConfigDto.setCommunityId(reportFeeMonthStatisticsDto.getCommunityId());
|
|
|
+ List<FeeConfigDto> feeConfigDtos = reportFeeMonthStatisticsInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
|
|
|
+ //应收总金额(大计)
|
|
|
+ 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;
|
|
|
+ //吴学文 注释 感觉和上面的369 功能重复
|
|
|
+ //int size = 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();
|
|
|
+// }
|
|
|
+ //查询应收、实收总金额(大计)
|
|
|
+ List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsList = reportFeeMonthStatisticsInnerServiceSMOImpl.queryAllPayFeeDetail(reportFeeMonthStatisticsDto);
|
|
|
+ //查询(优惠、减免、滞纳金、空置房打折、空置房减免金额等)大计总金额
|
|
|
+ List<ReportFeeMonthStatisticsDto> reportFeeMonthStatisticsSum = reportFeeMonthStatisticsInnerServiceSMOImpl.queryPayFeeDetailSum(reportFeeMonthStatisticsDto);
|
|
|
+ allReceivableAmount = Double.valueOf(reportFeeMonthStatisticsList.get(0).getAllReceivableAmount());
|
|
|
+ allReceivedAmount = Double.valueOf(reportFeeMonthStatisticsList.get(0).getAllReceivedAmount());
|
|
|
+ for (ReportFeeMonthStatisticsDto reportFeeMonthStatistics : reportFeeMonthStatisticsSum) {
|
|
|
+ //这里是查询出的金额总和
|
|
|
+ String discountPrice = reportFeeMonthStatistics.getDiscountPrice();
|
|
|
+ //优惠金额(大计)
|
|
|
+ if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("1")) {
|
|
|
+ allPreferentialAmount = Double.valueOf(discountPrice);
|
|
|
+ }
|
|
|
+ //减免金额(大计)
|
|
|
+ if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("2")) {
|
|
|
+ allDeductionAmount = Double.valueOf(discountPrice);
|
|
|
+ }
|
|
|
+ //滞纳金(大计)
|
|
|
+ if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("3")) {
|
|
|
+ allLateFee = Double.valueOf(discountPrice);
|
|
|
+ }
|
|
|
+ //空置房打折金额(大计)
|
|
|
+ if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("4")) {
|
|
|
+ allVacantHousingDiscount = Double.valueOf(discountPrice);
|
|
|
+ }
|
|
|
+ //空置房减免金额(大计)
|
|
|
+ if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("5")) {
|
|
|
+ allVacantHousingReduction = Double.valueOf(discountPrice);
|
|
|
+ }
|
|
|
+ //赠送金额(大计)
|
|
|
+ if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("6")) {
|
|
|
+ allGiftAmount = Double.valueOf(discountPrice);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //应收总金额(小计)
|
|
|
+ Double totalReceivableAmount = 0.0;
|
|
|
+ //实收总金额(小计)
|
|
|
+ Double totalReceivedAmount = 0.0;
|
|
|
+ //优惠金额(小计)
|
|
|
+ Double totalPreferentialAmount = 0.0;
|
|
|
+ //减免金额(小计)
|
|
|
+ Double totalDeductionAmount = 0.0;
|
|
|
+ //空置房打折金额(小计)
|
|
|
+ Double totalVacantHousingDiscount = 0.0;
|
|
|
+ //空置房减免金额(小计)
|
|
|
+ Double totalVacantHousingReduction = 0.0;
|
|
|
+ //赠送金额(小计)
|
|
|
+ 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 receivableAmount = Double.valueOf(reportFeeMonthStatistics.getReceivableAmount());
|
|
|
+ //实收金额
|
|
|
+ Double receivedAmount = Double.valueOf(reportFeeMonthStatistics.getReceivedAmount());
|
|
|
+ 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;
|
|
|
+ //优惠金额
|
|
|
+ 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;
|
|
|
+ //减免金额
|
|
|
+ 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;
|
|
|
+ //滞纳金
|
|
|
+ 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;
|
|
|
+ //空置房打折
|
|
|
+ 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;
|
|
|
+ //空置房减免
|
|
|
+ reportFeeMonthStatistics.setVacantHousingReduction(reportFeeMonthStatistics.getDiscountPrice());
|
|
|
+ } else {
|
|
|
+ reportFeeMonthStatistics.setVacantHousingReduction("0");
|
|
|
+ }
|
|
|
+ //赠送金额
|
|
|
+ if (!StringUtil.isEmpty(reportFeeMonthStatistics.getDiscountSmallType()) && reportFeeMonthStatistics.getDiscountSmallType().equals("6")) {
|
|
|
+ //赠送金额
|
|
|
+ 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 (!hasInReportListAndMerge(reportList, reportFeeMonthStatistics)) {
|
|
|
+ reportList.add(reportFeeMonthStatistics);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果是车位刷房屋信息
|
|
|
+ if (ownerIds.size() > 0) {
|
|
|
+ refreshReportFeeMonthStatistics(ownerIds, reportFeeMonthStatisticsDtos);
|
|
|
+ }
|
|
|
+
|
|
|
+ //应收总金额(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalReceivableAmount(String.format("%.2f", totalReceivableAmount));
|
|
|
+ //实收金额(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalReceivedAmount(String.format("%.2f", totalReceivedAmount));
|
|
|
+ //优惠金额(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalPreferentialAmount(String.format("%.2f", totalPreferentialAmount));
|
|
|
+ //减免金额(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalDeductionAmount(String.format("%.2f", totalDeductionAmount));
|
|
|
+ //滞纳金(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalLateFee(String.format("%.2f", totalLateFee));
|
|
|
+ //空置房打折(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalVacantHousingDiscount(String.format("%.2f", totalVacantHousingDiscount));
|
|
|
+ //空置房减免(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalVacantHousingReduction(String.format("%.2f", totalVacantHousingReduction));
|
|
|
+ //赠送规则金额(小计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setTotalGiftAmount(String.format("%.2f", totalGiftAmount));
|
|
|
+ //应收金额(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllReceivableAmount(String.format("%.2f", allReceivableAmount));
|
|
|
+ //实收金额(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllReceivedAmount(String.format("%.2f", allReceivedAmount));
|
|
|
+ //优惠金额(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllPreferentialAmount(String.format("%.2f", allPreferentialAmount));
|
|
|
+ //减免金额(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllDeductionAmount(String.format("%.2f", allDeductionAmount));
|
|
|
+ //滞纳金(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllLateFee(String.format("%.2f", allLateFee));
|
|
|
+ //空置房打折金额(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllVacantHousingDiscount(String.format("%.2f", allVacantHousingDiscount));
|
|
|
+ //空置房减免金额(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllVacantHousingReduction(String.format("%.2f", allVacantHousingReduction));
|
|
|
+ //赠送规则金额(大计)
|
|
|
+ reportFeeMonthStatisticsTotalDto.setAllGiftAmount(String.format("%.2f", allGiftAmount));
|
|
|
+ } else {
|
|
|
+ reportFeeMonthStatisticsDtos = new ArrayList<>();
|
|
|
+ reportList.addAll(reportFeeMonthStatisticsDtos);
|
|
|
+ reportFeeMonthStatisticsTotalDto = new ReportFeeMonthStatisticsTotalDto();
|
|
|
+ }
|
|
|
+
|
|
|
+ ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportFeeMonthStatisticsDto.getRow()), count, reportList, reportFeeMonthStatisticsTotalDto);
|
|
|
+
|
|
|
+ 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())) {
|
|
|
+ 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));
|
|
|
+ }
|
|
|
+ } catch (IllegalArgumentException | IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return targetBean;
|
|
|
+ }
|
|
|
+}
|