feat: 收款流水同步落库匹配与结算金额字段

This commit is contained in:
刘泉佳
2026-10-29 16:04:24 +08:00
parent d4666557bc
commit 06a007666e
4 changed files with 101 additions and 1 deletions
@@ -72,6 +72,26 @@ public class KingdeeReceiptFlow extends TenantEntity {
* 未匹配收款金额(A301-1 unmatchamountrec,认领上限口径)
*/
private BigDecimal unclaimedAmount;
/**
* 已匹配收款金额(A301-1 matchamountrec)
*/
private BigDecimal matchAmountRec;
/**
* 已匹配付款金额(A301-1 matchamountpay)
*/
private BigDecimal matchAmountPay;
/**
* 未匹配付款金额(A301-1 unmatchamountpay)
*/
private BigDecimal unmatchAmountPay;
/**
* 已结算金额(A301-1 settleamount)
*/
private BigDecimal settleAmount;
/**
* 未结算金额(A301-1 unsettleamount)
*/
private BigDecimal unsettleAmount;
/**
* 手续费(A301-1 fee)
*/
@@ -69,6 +69,7 @@ import org.springframework.transaction.support.TransactionTemplate;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -838,6 +839,13 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl<KingdeeReceiptFlowMa
target.setDetailSerialNo(row.detailSerialNo());
// 未匹配收款金额(认领上限口径)
target.setUnclaimedAmount(money(source.getUnmatchamountrec()));
// 已匹配收款金额 / 已匹配付款金额 / 未匹配付款金额
target.setMatchAmountRec(money(source.getMatchamountrec()));
target.setMatchAmountPay(money(source.getMatchamountpay()));
target.setUnmatchAmountPay(money(source.getUnmatchamountpay()));
// 已结算金额 / 未结算金额
target.setSettleAmount(money(source.getSettleamount()));
target.setUnsettleAmount(money(source.getUnsettleamount()));
// 手续费
target.setFee(source.getFee() == null ? null : source.getFee().setScale(2, RoundingMode.HALF_UP));
// 来源更新时间
@@ -75,7 +75,12 @@ A301-1 收款单查询(业务日期窗口取 `thirdParty.bfi.recBillSync.days`
| kingdee_bill_status | `billstatus` 映射 | A/B已提交→pushed、C已审核→approved、D已收款→received、其余(含G退单)→failed |
| detail_serial_no | 主单 `billno` | 明细流水号=收款单号,**幂等键**;主单粒度,一张收款单一条流水,不展开流水分录 |
| receipt_amount | 主单 `actrecamt` | 收款金额(金蝶收款金额口径) |
| unclaimed_amount | `unmatchamountrec` | 未匹配收款金额,**认领上限口径** |
| unclaimed_amount | `unmatchamountrec` | 未匹配收款金额(认领上限口径) |
| match_amount_rec | `matchamountrec` | 已匹配收款金额 |
| match_amount_pay | `matchamountpay` | 已匹配付款金额 |
| unmatch_amount_pay | `unmatchamountpay` | 未匹配付款金额 |
| settle_amount | `settleamount` | 已结算金额 |
| unsettle_amount | `unsettleamount` | 未结算金额 |
| payer_name / counterparty_name | `payername` | 付款人名称 |
| payee_name | `org_name` | 收款人(收款公司名称) |
| org_number | `org_number` | 收款人(公司).编码 |
@@ -0,0 +1,67 @@
-- 收款流水表增加金蝶收款单匹配/结算金额字段(A301-1 收款单查询同步落库)
-- unmatchamountrec 未匹配收款金额已由 unclaimed_amount 承载,不重复加列
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_kingdee_receipt_flow` ADD COLUMN `match_amount_rec` decimal(19, 2) DEFAULT NULL COMMENT ''已匹配收款金额(A301-1 matchamountrec)'' AFTER `unclaimed_amount`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_kingdee_receipt_flow'
AND COLUMN_NAME = 'match_amount_rec'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_kingdee_receipt_flow` ADD COLUMN `match_amount_pay` decimal(19, 2) DEFAULT NULL COMMENT ''已匹配付款金额(A301-1 matchamountpay)'' AFTER `match_amount_rec`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_kingdee_receipt_flow'
AND COLUMN_NAME = 'match_amount_pay'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_kingdee_receipt_flow` ADD COLUMN `unmatch_amount_pay` decimal(19, 2) DEFAULT NULL COMMENT ''未匹配付款金额(A301-1 unmatchamountpay)'' AFTER `match_amount_pay`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_kingdee_receipt_flow'
AND COLUMN_NAME = 'unmatch_amount_pay'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_kingdee_receipt_flow` ADD COLUMN `settle_amount` decimal(19, 2) DEFAULT NULL COMMENT ''已结算金额(A301-1 settleamount)'' AFTER `unmatch_amount_pay`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_kingdee_receipt_flow'
AND COLUMN_NAME = 'settle_amount'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_kingdee_receipt_flow` ADD COLUMN `unsettle_amount` decimal(19, 2) DEFAULT NULL COMMENT ''未结算金额(A301-1 unsettleamount)'' AFTER `settle_amount`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_kingdee_receipt_flow'
AND COLUMN_NAME = 'unsettle_amount'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;