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