diff --git a/finance/src/main/java/com/baiyue/finance/service/FinanceSettlementService.java b/finance/src/main/java/com/baiyue/finance/service/FinanceSettlementService.java index dcbd5fc5f..0dadafc8e 100644 --- a/finance/src/main/java/com/baiyue/finance/service/FinanceSettlementService.java +++ b/finance/src/main/java/com/baiyue/finance/service/FinanceSettlementService.java @@ -93,8 +93,8 @@ public class FinanceSettlementService { int inserted = jdbc.update( "INSERT INTO fin_settlement_line(tenant_id,settlement_id,fee_source_id,amount,currency_code,created_at) " + "SELECT bl.tenant_id,?,f.id,bl.amount,bl.currency_code,CURRENT_TIMESTAMP(3) FROM fin_bill_line bl " + - "JOIN fin_fee_source f ON f.customer_id=bl.tenant_id AND f.source_fee_id=bl.source_id " + - "AND f.source_fee_version=bl.source_version WHERE bl.tenant_id=? AND bl.bill_id=?", + "JOIN fin_fee_source f ON f.customer_id=bl.tenant_id AND f.id=bl.source_id " + + "WHERE bl.tenant_id=? AND bl.bill_id=?", settlementId, customerId, request.reconciliationStatementId()); if (inserted != lineCount) throw error("FIN_409", "对账单费用来源快照不完整"); audit(customerId, settlementId, "CREATE", null, null, settlementSnapshot(total, BigDecimal.ZERO), operatorId); @@ -118,8 +118,10 @@ public class FinanceSettlementService { "SELECT id,customer_id,direction,currency_code,status,amount,source_snapshot," + "JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.reviewStatus')) review_status," + "JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.settlementIncluded')) settlement_included," + - "CAST(JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.supplierId')) AS UNSIGNED) supplier_id," + - "JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.supplierName')) supplier_name " + + "CAST(COALESCE(JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.supplierId'))," + + "JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.partnerId'))) AS UNSIGNED) supplier_id," + + "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.supplierName'))," + + "JSON_UNQUOTE(JSON_EXTRACT(source_snapshot,'$.partnerName'))) supplier_name " + "FROM fin_fee_source WHERE id IN (" + placeholders + ") FOR UPDATE", args.toArray()); if (sources.size() != ids.size() || sources.stream().anyMatch(row -> number(row, "customer_id").longValue() != customerId)) { throw error("FIN_404", "费用来源不存在或不属于客户");