service-report/src/main/java/com/java110/report/bmo/reportFeeMonthStatistics/impl/GetReportFeeMonthStatisticsBMOImpl.java
@@ -6,13 +6,20 @@
import com.java110.dto.RoomDto;
import com.java110.dto.fee.FeeConfigDto;
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.repair.RepairUserDto;
import com.java110.dto.report.ReportDeposit;
import com.java110.dto.reportFeeMonthStatistics.ReportFeeMonthStatisticsDto;
import com.java110.dto.reportFeeMonthStatistics.ReportFeeMonthStatisticsTotalDto;
import com.java110.intf.community.IRepairInnerServiceSMO;
import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
import com.java110.intf.report.IReportFeeMonthStatisticsInnerServiceSMO;
import com.java110.intf.user.IOwnerInnerServiceSMO;
import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
import com.java110.report.bmo.reportFeeMonthStatistics.IGetReportFeeMonthStatisticsBMO;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
@@ -45,6 +52,14 @@
    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
    @Autowired
    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
    @Autowired
    private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
    @Autowired
    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
    private IComputeFeeSMO computeFeeSMOImpl;
    /**
@@ -403,6 +418,64 @@
                }
                //费用项目
                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 (!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("查询业主房屋关系表错误!");
                        }
                    }
                }
                reportList.add(reportFeeMonthStatistics);
            }
            //应收总金额(小计)
@@ -900,7 +973,7 @@
            startTime = (Date) paramIn.get("startTime");
            endTime = (Date) paramIn.get("startTime");
            double money = (double) paramIn.get("oweAmount");
            BigDecimal money = (BigDecimal) paramIn.get("oweAmount");
            double month = Math.ceil(computeFeeSMOImpl.dayCompare(startTime, endTime));
            if (month < 1) {
                paramIn.put("btAmount", 0);
@@ -909,7 +982,7 @@
            }
            //每月金额
            BigDecimal monthAmount = new BigDecimal(money).divide(new BigDecimal(month), 2, BigDecimal.ROUND_HALF_EVEN);
            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);
@@ -921,7 +994,7 @@
            }
            if (startTime.getTime() >= curStart.getTime()) {
                paramIn.put("btAmount", money);
                paramIn.put("btAmount", money.doubleValue());
                paramIn.put("bfAmount", 0);
            }
        }