chengf
2025-09-15 ebf6117ccea680eae81a91f2fa355ce3a76eb621
service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java
@@ -161,13 +161,14 @@
        List<String> carTypes = Arrays.asList("临时停车费", "业主产权过道停车费", "小业主产权车辆管理费","地下停车费","地面停车费");
        List<String> contractTypes = Arrays.asList("垃圾清运费","其他收入","补贴费用","场地使用费","电梯广告(业委会)","快递柜","电梯广告(联讯)","房产中介","非机动车管理费","其他广告");
        FeeConfigDto feeConfigDto = new FeeConfigDto();
        feeConfigDto.setFeeName(data.getString("secondaryFeeTypeCd"));
        feeConfigDto.setFeeTypeCds(new String[]{"630000007","630000017"});
        feeConfigDto.setCommunityId(importRoomFee.getCommunityId());
        feeConfigDto.setFeeNameEq(data.getString("secondaryFeeTypeCd"));
//        feeConfigDto.setFeeTypeCds(new String[]{"630000007","630000017"});
        importRoomFee.setInvoiceNo(data.getString("invoiceReceiptNo"));
        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
        if(feeConfigDtos.size() > 0){
            for(FeeConfigDto feeConfigDto1 : feeConfigDtos){
                if(feeConfigDto1.getSecondaryFeeTypeCdName() != null && (feeConfigDto1.getSecondaryFeeTypeCdName().equals("电费及管理费-合同") || feeConfigDto1.getSecondaryFeeTypeCdName().equals("代收水费-合同"))){
                if(feeConfigDto1.getIsContractFee() != null && feeConfigDto1.getIsContractFee().equals("true")){
                    importRoomFee.setObjType("7777");
                }
            }
@@ -233,6 +234,9 @@
                LocalDateTime startDate = LocalDateTime.parse(importRoomFee.getStartTime(), formatter);
                LocalDateTime endDate = LocalDateTime.parse(importRoomFee.getEndTime(), formatter);
                importRoomFee.setCycle(String.valueOf(ChronoUnit.MONTHS.between(startDate, endDate)));
                if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){
                    importRoomFee.setCycle("-"+importRoomFee.getCycle());
                }
//            if(importRoomFee.getPayerObjName())
                importCarFees.add(importRoomFee);
            }
@@ -253,6 +257,9 @@
                LocalDateTime startDate = LocalDateTime.parse(importRoomFee.getStartTime(), formatter);
                LocalDateTime endDate = LocalDateTime.parse(importRoomFee.getEndTime(), formatter);
                importRoomFee.setCycle(String.valueOf(ChronoUnit.MONTHS.between(startDate, endDate)));
                if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){
                    importRoomFee.setCycle("-"+importRoomFee.getCycle());
                }
                importCarFees.add(importRoomFee);
            }
            else{
@@ -450,15 +457,21 @@
            }
        }
        feeDto2.setCommunityId(importRoomFee.getCommunityId());
        feeDto2.setStatusCd("0");
        feeDto2.setUseStart(DateUtil.getDateFromStringA(importRoomFee.getStartTime()));
        feeDto2.setUseEnd(DateUtil.getDateFromStringA(importRoomFee.getEndTime()));
        if (new BigDecimal(importRoomFee.getAmount()).doubleValue() >= 0){
            feeDto2.setStatusCd("0");
            feeDto2.setUseStart(DateUtil.getDateFromStringA(importRoomFee.getStartTime()));
            feeDto2.setUseEnd(DateUtil.getDateFromStringA(importRoomFee.getEndTime()));
        }
        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto2);
        feeDtos.removeIf(feeDto -> "2009001".equals(feeDto.getState()));
        if (new BigDecimal(importRoomFee.getAmount()).doubleValue() >= 0) {
            feeDtos.removeIf(feeDto -> "2009001".equals(feeDto.getState()));
        }
        if(feeDtos.size() == 0){
            updateImportLogDetailState(importRoomFee.getDetailId(),new IllegalArgumentException("费用项"+importRoomFee.getFeeName()+"不存在"));
            throw new IllegalArgumentException("费用记录"+importRoomFee.getFeeName()+"不存在");
        }else if(feeDtos.size() > 1){
            throw new IllegalArgumentException("存在多条记录");
        }
//        if (ListUtil.isNull(feeDtos)) {
//            throw new IllegalArgumentException("查询不到该记录的费用项:"+importRoomFee.getFeeName());
@@ -534,6 +547,12 @@
        PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
        if(importRoomFee.getInvoiceNo() != null){
            payFeeDetailPo.setInvoiceNo(importRoomFee.getInvoiceNo());
            payFeeDetailPo.setOpenInvoice("Y");
        }else{
            payFeeDetailPo.setOpenInvoice("N");
        }
        payFeeDetailPo.setCommunityId(importRoomFee.getCommunityId());
        payFeeDetailPo.setReceivedAmount(importRoomFee.getAmount());
        payFeeDetailPo.setPrimeRate("1.0");
@@ -549,6 +568,11 @@
                DateUtil.getDateFromStringA(payFeeDetailPo.getStartTime()),
                DateUtil.getDateFromStringA(importRoomFee.getEndTime())
        ));
        if (new BigDecimal(payFeeDetailPo.getReceivedAmount()).doubleValue() < 0){
            cycle = cycle - cycle - cycle;
            payFeeDetailPo.setState("1300");
        }
        int count = feeDetailInnerServiceSMOImpl.queryFeeDetailsCountByVo(payFeeDetailPo);
        payFeeDetailPo.setPayableAmount(importRoomFee.getAmount());
@@ -561,6 +585,16 @@
            throw new IllegalStateException("重复的缴费记录");
        }
        if (new BigDecimal(payFeeDetailPo.getPayableAmount()).doubleValue() < 0) {
            payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
            payFeeDetailPo.setReceivableAmount("-" + computeFeeByCycle(tmpFeeDto,importRoomFee)+"");
            payFeeDetailPo.setDiscountAmount("0");
            payFeeDetailPo.setState("1300");
            int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo);
            return;
        }
        PayFeeDetailDiscountPo payFeeDetailDiscount = new PayFeeDetailDiscountPo();
        try {
            Map feePriceAll = computeFeeSMOImpl.getFeePrice(tmpFeeDto);
@@ -595,9 +629,6 @@
        payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
        if(importRoomFee.getInvoiceNo() != null){
            payFeeDetailPo.setOpenInvoice(importRoomFee.getInvoiceNo());
        }
        int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo);
@@ -620,6 +651,7 @@
        if (saved < 1) {
            return;
        }
        FeeDto fee = new FeeDto();
        fee.setFeeId(tmpFeeDto.getFeeId());
        FeeDto feeInfo = feeInnerServiceSMOImpl.queryFees(fee).get(0);