12 KiB

Matrix: REV-004 第一批次真实迁移映射矩阵细化版 v1

1. 目标

本矩阵用于把第一批次迁移对象细化到“可以直接指导脚本设计”的程度。

第一批次范围限定为:

  • AT_CHARGES
  • AT_CHARGE_DETAILS
  • CT_ACCOUNTS

本版重点不是覆盖旧表所有字段,而是先锁定:

  • 主键与核心业务标识
  • 核心业务字段
  • 关键状态字段
  • 必要关系字段
  • 映射落库要求

2. 第一批次总原则

  • 账单主明细和账户对象属于在线主模型优先承接范围。
  • 旧主键和旧业务标识必须进入映射层,不允许只保留新主键。
  • 当前不能稳定落入主表的旧字段,先进入映射层或历史只读层,不强行污染主对象。
  • 第一批次试迁后必须能回答:原账单是谁、原账户是谁、新对象是谁、金额和状态是否一致。

3. 表级落位总览

旧表 目标主对象 目标映射对象 当前 backend 证据 当前结论
AT_CHARGES biz_charge legacy_charge_mapping ChargeDO.java 可直接作为第一批次主对象
AT_CHARGE_DETAILS biz_charge_detail legacy_charge_detail_mapping ChargeDetailDO.java 可直接作为第一批次明细对象
CT_ACCOUNTS biz_account legacy_account_mapping AccountDO.java 可直接作为第一批次账户对象

4. AT_CHARGES -> biz_charge 细化映射

4.1 主键与标识

旧字段 新字段/位置 策略 备注
FeeId biz_charge.id 直接承接或保留旧值映射 是否复用旧主键需由迁移脚本策略决定,但映射表必须保留
FeeId legacy_charge_mapping.legacyId 必填 新旧账单主线标识
原账单号(如存在) legacy_charge_mapping.legacyBizNo 必填 若旧表无独立账单号,可用 FeeId 兼任
新账单号(如生成) legacy_charge_mapping.targetBizNo 选填 若新系统仅用主键,可暂为空

4.2 核心业务字段

旧字段 新字段 策略 备注
RecordId recordId 直接映射 抄表记录引用
BillMonth billMonth 直接映射 核心账期字段
OrgId deptId 转换映射 旧站点字段名与新部门字段名不同
BookId bookId 直接映射 册本引用
BookSortIndex bookSortIndex 直接映射 册内顺序
CustId custId 直接映射 客户主键
CustCode custCode 直接映射 客户编号
CustName custName 直接映射 客户名称
CustAddress custAddress 直接映射 客户地址
Populine population 字段改名映射 旧字段拼写与新字段不同
PayMethod payMethod 直接/枚举转换 需核对枚举值是否一致
LastReading lastReading 类型转换映射 int 到新 BigDecimal
LastChildReading lastChildReading 类型转换映射 同上
LastReadWater lastReadWater 类型转换映射 同上
LastReadDate lastReadDate 直接映射 时间字段
LastReadStateId lastReadStateId 直接映射 状态引用
Reading reading 类型转换映射 int 到新 BigDecimal
ChildReading childReading 类型转换映射 同上
ReadWater readWater 类型转换映射 同上
ReadDate readDate 直接映射 时间字段
ReadStateId readStateId 直接映射 状态引用
ReadTimes readTimes 直接映射 抄次
MeterReaderId meterReaderId 直接映射 抄表员
PriceListId adjustmentSnapCode 或扩展映射 暂按转换映射 旧调价号是 int,新对象用 String adjustmentSnapCode
PriceCode priceTemplateCode 转换映射 旧用水性质编码映射到新价格模板编码
TotalWater totalWater 类型转换映射 int 到新 BigDecimal
ReplaceWater replaceWater 类型转换映射 同上
BillWater billWater 类型转换映射 同上
BillAmount billAmount 直接映射 金额核心字段
ExtendedAmount extendedAmount 直接映射 应收金额核心字段
LastChange lastChange 直接映射 零头字段
Change change 直接映射 零头字段
BillerId billerId 直接映射 开账人
BillDate billDate 直接映射 开账时间
LateFeeBeginDate lateFeeBeginDate 直接映射 滞纳金起算日
LateFee lateFee 直接映射 核心金额字段
CashierId cashierId 直接映射 收费员
PayDate payDate 直接映射 收费时间
CheckoutDate checkoutDate 直接映射 结账时间
ChargeMethod chargeMethod 直接/枚举转换 需核对枚举
ChargeWay chargeWay 直接/枚举转换 需核对枚举

4.3 状态与结果字段

旧字段 新字段/位置 策略 备注
PayState biz_charge.payState 状态转换 必须按状态矩阵归并
FeeState biz_charge.feeStatelegacyState 状态转换 + 保留旧值 若新字段无法完整表达,保留旧值
InvoiceState biz_charge.invoiceState + 发票映射层 状态转换 需与发票主对象一致
InvoiceError biz_charge.invoiceError 直接映射 开票失败原因
PrintState biz_charge.printState 直接映射 打印状态
PrintTimes biz_charge.printTimes 直接映射 打印次数
LockNum biz_charge.lockNum 直接映射 锁定编号
LockoutEndTime biz_charge.lockoutEndTime 直接映射 锁定时间

4.4 关系和追溯字段

旧字段 新字段/位置 策略 备注
AdjustType biz_charge.adjustType + tracePayload.adjustType 直接映射 + 追溯保留 当前新对象已有该字段
ContrastFeeId biz_charge.contrastFeeId + legacy_charge_mapping.relatedFeeId 直接映射 + 映射保留 调整前后关系
ParentFeeId legacy_charge_mapping.sourceFeeId 追溯保留 ChargeDO 未见同名字段,必须进映射层
InvoiceCode biz_charge.invoiceCode 直接映射 发票代码
InvoiceDate biz_charge.invoiceDate 直接映射 开票日期
InvoiceNumber biz_charge.invoiceNumber 直接映射 发票号码
RefundWater biz_charge.refundWater + tracePayload.refundWater 直接映射 + 追溯保留 当前新对象已有该字段

4.5 第一批次对 AT_CHARGES 的直接建议

  • AT_CHARGES 可直接作为第一批次最优先迁移主表。
  • 需要额外设计:
    • PriceListId -> adjustmentSnapCode
    • PriceCode -> priceTemplateCode
    • ParentFeeId 的映射层保留
    • PayState / FeeState / InvoiceState 的状态归并规则

5. AT_CHARGE_DETAILS -> biz_charge_detail 细化映射

5.1 主键与关系

旧字段 新字段/位置 策略 备注
明细主键 Id biz_charge_detail.id 直接承接或映射保留 视脚本主键策略决定
FeeId biz_charge_detail.feeId 直接映射 必须保持主明细关系
明细主键 legacy_charge_detail_mapping.legacyId 必填 保留旧明细主键

5.2 核心业务字段

旧字段 新字段 策略 备注
PriceListId adjustmentSnapCode 转换映射 与主账一致,需要调价号转换
PriceCode priceTemplateCode 转换映射 与主账一致
PriceDetailId costAdjustmentId 或扩展字段 tbd 需进一步确认新字段语义是否等价
PriceItemId costComponentCode 转换映射 旧费用组成 ID 到新费用组成编码
CalcMode calcMode 直接映射 计费方式
LevelType levelType 直接映射 阶梯模式
LevelIndex levelIndex 直接映射 阶梯级别
StartMonth startMonth 直接映射 开始月份
EndMonth endMonth 直接映射 结束月份
StartWater startWater 类型转换映射 int 到新 BigDecimal
EndWater endWater 类型转换映射 同上
SettleMethod settleMethod 直接映射 分摊方式
SettleValues settleValues 类型转换映射 float 到新 BigDecimal
Price price 直接映射 单价
Water water 类型转换映射 应收水量
DiscountWater discountWater 类型转换映射 优惠水量
WaterNum waterNum 直接映射 水量系数
Money money 直接映射 明细金额
State state 状态转换 明细状态需核对枚举
IsPreferential isPreferential 直接映射 是否优惠
BasicNumber basicNumber 直接映射 基数
InvoicedState invoicedState 状态转换 开票状态
DiscountMoney discountMoney 直接映射 优惠金额
OriginalMoney originalMoney 直接映射 优惠前金额
IsWaterOver isWaterOver 直接映射 是否超计划
ItemInvoiceError itemInvoiceError 直接映射 明细开票错误
ItemInvoiceState itemInvoiceState 直接映射 明细开票状态
ItemInvoiceType itemInvoiceType 直接映射 明细开票类型

5.3 第一批次对 AT_CHARGE_DETAILS 的直接建议

  • 明细对象整体与 ChargeDetailDO 对应度较高,可以直接进入第一批次。
  • 主要需要额外确认的点:
    • PriceDetailId -> costAdjustmentId 是否语义等价
    • PriceItemId -> costComponentCode 的编码转换规则

6. CT_ACCOUNTS -> biz_account 细化映射

6.1 主键与关系

旧字段 新字段/位置 策略 备注
AccountId biz_account.id 直接承接或映射保留 是否复用旧主键由脚本策略决定
AccountId legacy_account_mapping.legacyId 必填 账户迁移主线
原账户编号 legacy_account_mapping.legacyBizNo 选填 若旧系统无独立业务账户号,可用主键兼任
CustId biz_account.custId 直接映射 账户与客户关系核心字段

6.2 核心业务字段

旧字段 新字段 策略 备注
Deposit deposit 直接映射 预存余额
UnCheckMoney uncheckMoney 直接映射 未到账金额
Overdraft overdraft 直接映射 透支额度
AccountState status 状态转换 旧账户状态需与新 status 枚举核对

6.3 第一批次对 CT_ACCOUNTS 的直接建议

  • CT_ACCOUNTSAccountDO 的字段匹配度较高,可以直接进入第一批次。
  • 关键点不在字段缺失,而在于:
    • AccountState -> status 的枚举值核对
    • 账户与客户主数据的一致性校验

7. 第一批次试迁时必须同步落库的映射对象

建议至少同时生成以下映射记录:

映射对象 作用
legacy_charge_mapping 保留旧账单到新账单关系
legacy_charge_detail_mapping 保留旧账单明细到新明细关系
legacy_account_mapping 保留旧账户到新账户关系

每条映射记录最少包括:

  • legacyTable
  • legacyId
  • legacyBizNo
  • targetDomain
  • targetId
  • targetBizNo
  • migrationBatchNo
  • mappingStatus

8. 第一批次最小脚本出口条件

在进入实际试迁脚本开发前,第一批次至少应满足:

  • AT_CHARGES 字段映射规则已稳定
  • AT_CHARGE_DETAILS 字段映射规则已稳定
  • CT_ACCOUNTS 字段映射规则已稳定
  • 三类主对象的状态映射规则已确认
  • 三类主对象的标识映射结构已确认

9. 当前仍待补的小项

本版之后,第一批次还建议继续补两项:

  1. PriceListId / PriceCode / PriceItemId 的编码转换字典
  2. PayState / FeeState / AccountState 的枚举值对照表