Your Name
2023-07-25 0fea532b07be89978343cb4aede3693af99f5656
service-fee/src/main/java/com/java110/fee/cmd/fee/ListMonthFeeCmd.java
@@ -116,16 +116,38 @@
        // todo 处理 多个房屋
        morePayerObjIds(reqJson, payFeeDetailMonthDto);
        int count = payFeeDetailMonthInnerServiceSMOImpl.queryPayFeeDetailMonthsCount(payFeeDetailMonthDto);
        int count = payFeeDetailMonthInnerServiceSMOImpl.queryPagePayFeeDetailMonthsCount(payFeeDetailMonthDto);
        List<PayFeeDetailMonthDto> payFeeDetailMonthDtos = null;
        if (count > 0) {
            payFeeDetailMonthDtos = payFeeDetailMonthInnerServiceSMOImpl.queryPayFeeDetailMonths(payFeeDetailMonthDto);//查询费用项目
            //freshFeeAttrs(fees, feeDtos);
            payFeeDetailMonthDtos = payFeeDetailMonthInnerServiceSMOImpl.queryPagePayFeeDetailMonths(payFeeDetailMonthDto);//查询费用项目
            //todo 根据配置处理小数点
            doScale(payFeeDetailMonthDtos);
            //todo 将 费用下的属性刷入进去,方便前段展示使用
            freshFeeAttrs(payFeeDetailMonthDtos);
        } else {
            payFeeDetailMonthDtos = new ArrayList<>();
        }
        context.setResponseEntity(ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, payFeeDetailMonthDtos));
    }
    /**
     * 处理应收小数点
     *
     * @param payFeeDetailMonthDtos
     */
    private void doScale(List<PayFeeDetailMonthDto> payFeeDetailMonthDtos) {
        if (payFeeDetailMonthDtos == null || payFeeDetailMonthDtos.size() < 1) {
            return;
        }
        double amount = 0.0;
        for (PayFeeDetailMonthDto payFeeDetailMonthDto : payFeeDetailMonthDtos) {
            amount = MoneyUtil.computePriceScale(Double.parseDouble(payFeeDetailMonthDto.getReceivableAmount()),
                    payFeeDetailMonthDto.getScale(),
                    Integer.parseInt(payFeeDetailMonthDto.getDecimalPlace()));
            payFeeDetailMonthDto.setReceivableAmount(amount + "");
        }
    }
    /**
@@ -188,61 +210,30 @@
        }
    }
    private void freshFeeAttrs(List<ApiFeeDataVo> fees, List<FeeDto> feeDtos) {
        String link = "";
        for (FeeDto feeDto : feeDtos) {
            if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) { //房屋
                OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
                ownerRoomRelDto.setRoomId(feeDto.getPayerObjId());
                List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
                if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) {
                    continue;
                }
                OwnerDto ownerDto = new OwnerDto();
                ownerDto.setMemberId(ownerRoomRelDtos.get(0).getOwnerId());
                List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
                Assert.listOnlyOne(ownerDtos, "查询业主错误!");
                link = ownerDtos.get(0).getLink();
            } else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) {
                OwnerCarDto ownerCarDto = new OwnerCarDto();
                ownerCarDto.setMemberId(feeDto.getPayerObjId());
                List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
                Assert.listOnlyOne(ownerCarDtos, "查询业主车辆表错误!");
                OwnerDto ownerDto = new OwnerDto();
                ownerDto.setMemberId(ownerCarDtos.get(0).getOwnerId());
                List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
                Assert.listOnlyOne(ownerDtos, "查询业主错误!");
                link = ownerDtos.get(0).getLink();
            }
            FeeAttrDto feeAttrDto = new FeeAttrDto();
            feeAttrDto.setFeeId(feeDto.getFeeId());
            List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
            if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
                continue;
            }
            for (FeeAttrDto feeAttr : feeAttrDtos) {
                if (!FeeAttrDto.SPEC_CD_OWNER_LINK.equals(feeAttr.getSpecCd())) { //联系方式
                    continue;
                }
                if (feeAttr.getValue().equals(link)) {
                    continue;
                }
                FeeAttrPo feeAttrPo = new FeeAttrPo();
                feeAttrPo.setAttrId(feeAttr.getAttrId());
                feeAttrPo.setValue(link);
                int flag = feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
                if (flag < 1) {
                    throw new CmdException("更新业主联系方式失败");
                }
            }
    private void freshFeeAttrs(List<PayFeeDetailMonthDto> payFeeDetailMonthDtos) {
        List<String> feeIds = new ArrayList<>();
        for (PayFeeDetailMonthDto feeDto : payFeeDetailMonthDtos) {
            feeIds.add(feeDto.getFeeId());
        }
        for (ApiFeeDataVo apiFeeDataVo : fees) {
            for (FeeDto feeDto : feeDtos) {
                if (apiFeeDataVo.getFeeId().equals(feeDto.getFeeId())) {
                    apiFeeDataVo.setFeeAttrs(feeDto.getFeeAttrDtos());
        FeeAttrDto feeAttrDto = new FeeAttrDto();
        feeAttrDto.setFeeIds(feeIds.toArray(new String[feeIds.size()]));
        List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
        if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
            return;
        }
        List<FeeAttrDto> tmpFeeAttrDtos = null;
        for (PayFeeDetailMonthDto feeDto : payFeeDetailMonthDtos) {
            tmpFeeAttrDtos = new ArrayList<>();
            for (FeeAttrDto tmpFeeAttrDto : feeAttrDtos) {
                if (!feeDto.getFeeId().equals(tmpFeeAttrDto.getFeeId())) {
                    continue;
                }
                tmpFeeAttrDtos.add(tmpFeeAttrDto);
            }
            feeDto.setFeeAttrs(tmpFeeAttrDtos);
        }
    }
}