refactor(jackson): Jackson 2 → Jackson 3 全项目迁移(含 Bug #681 根治) #11
Reference in New Issue
Block a user
No description provided.
Delete Branch "refactor/jackson3-migration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
摘要
Jackson 2 → Jackson 3 全项目迁移,彻底解决 Bug #681(门诊收费 encounterId undefined)的根因:Spring Boot 4.0.6 默认引入 Jackson 3.1.2,但项目原有 1018 处
@JsonSerialize(ToStringSerializer)使用的是 Jackson 2 的com.fasterxml.jackson.*包,注解被忽略,Long 字段序列化为裸数字,引发前端 JS Number 精度丢失风险。改动范围
后端(448 文件)
com.fasterxml.jackson.databind.*→tools.jackson.databind.*ObjectMapper.configure()→JsonMapper.builder().disable(...).build()等tools.jackson.coreJavaTimeModule注册(Jackson 3 内置 JavaTime 支持)前端(5 文件)
views/charge/cliniccharge/index.vueclickRow 加encId ?? idbug-681-e2e.spec.tsbug-630.spec.ts后端端口18082 → 18080验证
mvn compile全 11 模块通过mvn packagefat JAR 生成encounterId: "2032288214655660033"(字符串,@JsonSerialize 生效)patientId: "2026486681850499074"(字符串,@JsonSerialize 生效)Commits(5 个)
acf685fbafix(#681): 门诊收费点击已收费患者增加 encounterId 兜底d12b77f81test(#681): 添加 Playwright E2E 验证 clickRow 兜底逻辑919778f5arefactor(jackson): Jackson 2 → Jackson 3 全项目迁移(448 文件)8ceea81f4test(e2e): 清理 debug 测试 + 修 bug-630 端口 + 新增 #681 E2E3e018025astyle(App): 统一代码风格和导入语句格式关联
Review 重点
ApplicationConfig.java(Jackson 3 Customizer + 自定义 LocalDateTime 序列化)FastJson2JsonRedisSerializer.java(Redis 序列化改用 BasicPolymorphicTypeValidator)JsonUtils.java(ObjectMapper 改用 builder 模式)风险
com.fasterxml.jackson.annotation.*和jackson-annotations-2.21.jar(Jackson 3 仍用同包名)3e018025abto601be0d66bPull request closed