zhangback
2026-03-30 f0570bd1986323562fa041e4e1e03607e7899ea3
tms/src/main/java/com/ruoyi/tms/service/impl/TmsPayableFeeServiceImpl.java
@@ -276,7 +276,10 @@
        tmsApBill.setSettleAmount(BigDecimal.ZERO);
        tmsPayableFeeList.forEach(item ->{
            List<TmsPayableFeeItem> tmsPayableFeeItems = tmsPayableFeeItemMapper.selectTmsPayableFeeItemList(new TmsPayableFeeItem() {{
                setHeadId(item.getId());
            }});
            item.setPayableFeeItems(tmsPayableFeeItems);
            BigDecimal rmbAmount = item.getPayableHkbAmount()
                    .multiply(exchangeRate)
                    .setScale(2, RoundingMode.HALF_UP);
@@ -324,8 +327,8 @@
            tmsApBillItemMapper.insertTmsApBillItemBatch(rmb);
        }
        
        //todo 向外部系统推送数据
//        pushPayableToExternalSystem(tmsApBill, tmsPayableFeeList);
        //向外部系统推送数据
        pushPayableToExternalSystem(tmsApBill, tmsPayableFeeList);
        
        return AjaxResult.success();
    }
@@ -348,7 +351,7 @@
            billMap.put("supplierName", tmsApBill.getServiceProviderName());
            billMap.put("totalAmount", tmsApBill.getSettleAmount());
            billMap.put("currency", "RMB");
            billMap.put("status", "draft");
            billMap.put("status", "0");
            billMap.put("isInternalSettlement", "0");
            billMap.put("internalSettlementUnit", tmsApBill.getServiceProviderName());
            billMap.put("documentCount", tmsPayableFeeList.size());
@@ -375,34 +378,50 @@
                feeMap.put("sourceSystem", "TMS");
                feeMap.put("documentNo", fee.getDispatchNo() != null ? fee.getDispatchNo() : "");
                feeMap.put("supplierName", tmsApBill.getServiceProviderName());
                feeMap.put("payableAmount", fee.getPayableRmbSumAmount());
                feeMap.put("payableAmount", fee.getPayableRmbAmount().add(fee.getPayableHkbAmount()));
                BigDecimal rmbAmount = fee.getPayableRmbAmount();
                BigDecimal hkbAmount = fee.getPayableHkbAmount();
                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("payableAmountStr", amountStr.toString());
                feeMap.put("serialNumber", String.format("%03d", i + 1));
                feeMap.put("relatedBillNo", "");
                feeMap.put("businessSector", "");
                feeMap.put("documentType", "");
                feeMap.put("businessSector", "0");
                feeMap.put("documentType", "0");
                feeMap.put("isInternalSettlement", "0");
                feeMap.put("internalSettlementUnit", "");
                feeMap.put("projectName", fee.getProjectName() != null ? fee.getProjectName() : "");
                feeMap.put("businessTime", fee.getDispatchConfirmTime());
                feeMap.put("payableConfirmTime", fee.getDispatchConfirmTime());
                feeMap.put("status", "confirmed");
                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("feeType", "运输费");
                feeDetailMap.put("feeName", "干线运输费");
                feeDetailMap.put("unitPrice", 1200.00);
                feeDetailMap.put("billingQuantity", 5.00);
                feeDetailMap.put("billingAmount", fee.getPayableRmbSumAmount());
                feeDetailMap.put("serialNumber", String.format("%03d-01", i + 1));
                feeDetailMap.put("billingUnit", "车次");
                feeDetailMap.put("actualAmount", fee.getPayableRmbSumAmount());
                feeDetailMap.put("currency", "RMB");
                feeDetailMap.put("feeRegTime", "");
                feeDetailMap.put("remark", "");
                feeDetailsList.add(feeDetailMap);
                List<TmsPayableFeeItem> payableFeeItems = fee.getPayableFeeItems();
                for (TmsPayableFeeItem payableFeeItem : payableFeeItems) {
                    java.util.Map<String, Object> feeDetailMap = new java.util.HashMap<>();
                    feeDetailMap.put("feeType", payableFeeItem.getFeeType());
                    feeDetailMap.put("feeName", payableFeeItem.getFeeName());
                    feeDetailMap.put("unitPrice", payableFeeItem.getRegisterAmount());
                    feeDetailMap.put("billingQuantity", payableFeeItem.getRegisterAmount());
                    feeDetailMap.put("billingAmount", payableFeeItem.getRegisterAmount());
                    feeDetailMap.put("billingUnit", "次");
                    feeDetailMap.put("actualAmount", payableFeeItem.getRegisterAmount());
                    feeDetailMap.put("currency", payableFeeItem.getCurrency());
                    feeDetailMap.put("feeRegTime",payableFeeItem.getRegisterTime());
                    feeDetailMap.put("remark", "");
                    feeDetailsList.add(feeDetailMap);
                }
                
                feeMap.put("feeDetails", feeDetailsList);
                feesList.add(feeMap);