zhangback
2026-03-30 f0570bd1986323562fa041e4e1e03607e7899ea3
tms/src/main/java/com/ruoyi/tms/service/impl/TmsReceivableFeeServiceImpl.java
@@ -271,7 +271,10 @@
        tmsArBill.setSettleAmount(BigDecimal.ZERO);
        tmsReceivableFees.forEach(item ->{
            List<TmsReceivableFeeItem> tmsReceivableFeeItems = tmsReceivableFeeItemMapper.selectTmsReceivableFeeItemList(new TmsReceivableFeeItem() {{
                setHeadId(item.getId());
            }});
            item.setItems(tmsReceivableFeeItems);
            BigDecimal rmbAmount = item.getReceivableHKBAmount()
                    .multiply(exchangeRate)
                    .setScale(2, RoundingMode.HALF_UP);
@@ -323,8 +326,8 @@
        }).collect(Collectors.toList());
        tmsArBillItemMapper.insertTmsArBillItemBatch(rmb);
        //todo 向外部系统推送数据
//        pushToExternalSystem(tmsArBill, tmsReceivableFees);
        // 向外部系统推送数据
        pushToExternalSystem(tmsArBill, tmsReceivableFees);
        
        return AjaxResult.success();
    }
@@ -371,7 +374,7 @@
            billMap.put("billDueDate", "");
            billMap.put("settlementCategory", "");
            billMap.put("settlementPeriod", "");
            billMap.put("status", "draft");
            billMap.put("status", "0");
            billMap.put("remark", "");
            
            // 构建fees部分
@@ -382,8 +385,8 @@
                feeMap.put("serialNumber", String.format("%03d", i + 1));
                feeMap.put("relatedBillNo", "");
                feeMap.put("sourceSystem", "TMS");
                feeMap.put("businessSector", "");
                feeMap.put("documentType", "");
                feeMap.put("businessSector", "0");
                feeMap.put("documentType", "0");
                feeMap.put("documentNo", fee.getDispatchNo() != null ? fee.getDispatchNo() : "");
                feeMap.put("isInternalSettlement", "0");
                feeMap.put("internalSettlementUnit", "");
@@ -391,26 +394,43 @@
                feeMap.put("projectName", fee.getProjectName() != null ? fee.getProjectName() : "");
                feeMap.put("businessTime", fee.getDispatchConfirmTime());
                feeMap.put("receivableConfirmTime", fee.getDispatchConfirmTime());
                feeMap.put("receivableAmount", fee.getReceivableRmbSumAmount());
                feeMap.put("status", "confirmed");
                feeMap.put("receivableAmount", fee.getReceivableRMBAmount().add(fee.getReceivableHKBAmount()));
                // 构建receivableAmountStr
                BigDecimal rmbAmount = fee.getReceivableRMBAmount();
                BigDecimal hkbAmount = fee.getReceivableHKBAmount();
                StringBuilder amountStr = new StringBuilder();
                if (rmbAmount.compareTo(BigDecimal.ZERO) > 0) {
                    amountStr.append(rmbAmount).append("人民币");
                }
                if (hkbAmount.compareTo(BigDecimal.ZERO) > 0) {
                    if (amountStr.length() > 0) {
                        amountStr.append(" ");
                    }
                    amountStr.append(hkbAmount).append("港币");
                }
                feeMap.put("receivableAmountStr", amountStr.toString());
                feeMap.put("status", "1");
                feeMap.put("remark", "");
                
                // 构建feeDetails部分
                List<java.util.Map<String, Object>> feeDetailsList = new java.util.ArrayList<>();
                java.util.Map<String, Object> feeDetailMap = new java.util.HashMap<>();
                feeDetailMap.put("serialNumber", String.format("%03d-01", i + 1));
                feeDetailMap.put("feeType", "");
                feeDetailMap.put("feeName", "");
                feeDetailMap.put("billingUnit", "");
                feeDetailMap.put("unitPrice", 0.00);
                feeDetailMap.put("billingQuantity", 0.00);
                feeDetailMap.put("billingAmount", fee.getReceivableRmbSumAmount());
                feeDetailMap.put("actualAmount", fee.getReceivableRmbSumAmount());
                feeDetailMap.put("currency", "RMB");
                feeDetailMap.put("feeRegTime", "");
                feeDetailMap.put("remark", "");
                feeDetailsList.add(feeDetailMap);
                List<TmsReceivableFeeItem> items = fee.getItems();
                for (TmsReceivableFeeItem item : items) {
                    java.util.Map<String, Object> feeDetailMap = new java.util.HashMap<>();
                    feeDetailMap.put("feeType", item.getFeeType());
                    feeDetailMap.put("feeName", item.getFeeName());
                    feeDetailMap.put("billingUnit", "次");
                    feeDetailMap.put("unitPrice", item.getRegisterAmount());
                    feeDetailMap.put("billingQuantity", item.getRegisterAmount());
                    feeDetailMap.put("billingAmount", item.getRegisterAmount());
                    feeDetailMap.put("actualAmount", item.getRegisterAmount());
                    feeDetailMap.put("currency", item.getCurrency());
                    feeDetailMap.put("feeRegTime", item.getRegisterTime());
                    feeDetailMap.put("remark", "");
                    feeDetailsList.add(feeDetailMap);
                }
                feeMap.put("feeDetails", feeDetailsList);
                feesList.add(feeMap);
            }