1.9 KiB
1.9 KiB
分期方案保存时付款明细外键类型修复说明
问题描述
在保存分期方案时,需要同时保存调整的分期政策付款明细相关信息,但发现外键类型不一致的问题:
t_periodicpolicy表主键id类型为CHAR(36)(UUID字符串)t_policy表外键periodicPolicyId类型为INT(整数)t_payment_details表外键policyId类型为INT(整数)
修复方案
1. 数据库表结构修改
- 修改
t_policy表的periodicPolicyId字段类型从INT改为CHAR(36) - 修改
t_payment_details表的policyId字段类型从INT改为CHAR(36)
2. Java实体类修改
TPolicy.java:periodicPolicyId字段保持String类型(已正确匹配)TPaymentDetails.java:policyid字段类型从Long改为StringTPaymentDetailsBo.java:policyid字段类型从Long改为StringTPaymentDetailsVo.java:policyid字段类型从Long改为String
3. 前端类型定义修改
paymentDetails/types.ts:policyid字段类型从string | number改为string
4. 前端数据处理逻辑调整
- 移除不必要的
.toString()转换 - 确保所有ID值作为字符串处理
- 调整数值精度处理方式
执行步骤
数据库执行
-- 执行修复脚本
source script/sql/fix_foreign_key_types.sql
后端重启
重启后端服务以应用实体类变更
前端验证
- 访问 http://localhost:81/
- 创建新的分期方案
- 添加分期政策和付款明细
- 保存并验证数据完整性
数据兼容性
- 现有数据需要迁移处理(如有需要可创建数据迁移脚本)
- 新系统将使用UUID字符串作为主键
- 所有外键引用将保持一致性
验证要点
- 分期方案创建成功
- 分期政策与分期方案正确关联
- 付款明细与分期政策正确关联
- 数据查询和展示正常
- 编辑和删除功能正常