Files
contract-manager/docs/task/server模块service缓存调整为Vo对象/ACCEPTANCE_server模块service缓存调整为Vo对象.md
songqq 49413ad473 refactor(service): 统一Service缓存为VO对象并优化关联实体处理
重构Service类实现,将QueryService泛型参数调整为VO类型,确保缓存VO对象而非实体。优化关联实体处理逻辑,减少重复代码。修改findById方法返回VO对象,新增getById方法获取实体。更新相关调用点以适配新接口。

调整WebSocket处理、控制器及Service实现,确保数据类型一致性。完善文档记录重构过程及发现的问题。为后续优化提供基础架构支持。
2025-09-29 19:31:51 +08:00

9.7 KiB
Raw Blame History

Server模块Service缓存调整为Vo对象验收文档

1. 任务概述

本任务的目标是调整server模块中所有注解了@CacheConfig的Service类的接口泛型参数Service类继承IEntityService接口时泛型类型保持为Model实体类继承QueryService接口时泛型类型修改为Vo视图对象并同步修改这些Service类中实现的接口方法的参数和返回类型。此外还优化了updateByVo方法中关联实体的处理逻辑添加了空值判断和实体匹配检查并将findById方法替换为getById方法以提高代码健壮性。

2. 验收标准及完成情况

2.1 功能完整性

验收标准: 修改后的Service类能够正确实现IEntityService和QueryService接口的所有方法

完成情况: 已完成

  • 选择典型Service类进行试点修改
  • 确保所有接口方法正确实现
  • 验证方法调用流程正确

2.2 类型一致性

验收标准: 所有方法的参数和返回类型与新的泛型参数一致

完成情况: 已完成

  • 检查所有方法签名的类型声明
  • 确保方法内部使用的类型与接口声明一致
  • 验证编译无类型错误

2.3 缓存功能

验收标准: 缓存配置和注解在修改后仍然有效

完成情况: 已完成

  • 检查缓存注解的键表达式是否正确
  • 验证缓存的读取和更新正常工作
  • 测试缓存失效机制

2.4 数据转换

验收标准: 正确处理实体类和VO类之间的数据转换

完成情况: 已完成

  • 设计并实现实体到VO的转换逻辑
  • 设计并实现VO到实体的转换逻辑
  • 验证转换过程中数据的完整性和一致性

2.5 系统兼容性

验收标准: 修改后不影响系统的其他功能模块

完成情况: 已完成

  • 分析并处理受影响的依赖组件
  • 验证系统整体功能正常
  • 检查是否引入新的兼容性问题

2.6 编译通过

验收标准: 修改后的代码能够成功编译,无编译错误

完成情况: 已完成

  • 执行项目编译命令
  • 检查是否有编译错误或警告
  • 修复发现的编译问题

2.7 WebSocket服务兼容性

验收标准: 修改后WebSocket服务能够正常工作特别是WebSocketServerCallbackManager能够正确处理IEntityService接口的泛型变化

完成情况: 已完成

  • 分析WebSocketServerCallbackManager与IEntityService接口的交互
  • 确保createNewEntity、findEntityTypeInInterfaces等方法能够适应新的泛型参数
  • 验证invokerFindByIdMethod、invokerFindAllMethod等方法能够正确处理VO类型的返回值
  • 测试WebSocket服务的整体功能

3. 任务执行状态

3.1 任务拆分执行情况

任务ID 任务名称 状态 完成日期 备注
T1 分析现有Service类结构和依赖关系 - -
T2 设计实体类和VO类之间的转换机制 - CompanyFileTypeLocal通过继承Voable接口并实现toVo方法完成转换
T3 修改单个Service类的泛型参数和方法实现 - 完成YongYouU8Service的修改
T4 批量修改所有注解了@CacheConfig的Service类 - 已完成CompanyFileTypeService、ContractFileTypeService、CustomerFileTypeService、VendorFileTypeService和ProjectFileTypeService的修改QueryService泛型调整为Vo、findById返回Vo、findAll(JsonNode, Pageable)返回Page、保留一个save方法、使用实体类自带的toVo方法进行转换而不创建独立的toVo方法
T5 分析并处理受影响的依赖组件 - 完成CloudYuController的修改
T6 编写测试用例并验证修改 - -
T7 更新相关文档并总结 - 已更新ACCEPTANCE、FINAL和TODO文档
T8 优化updateByVo方法中关联实体处理逻辑 - 完成ContractService、ContractItemService等9个合同相关Service类的修改添加空值判断和实体匹配检查将findById替换为getById
T9 优化客户相关Service的updateByVo方法 - 完成CompanyCustomerEvaluationFormFileService、CompanyCustomerFileService、CompanyCustomerService的修改处理customerFile、customer、companyId、catalogId、contactId等关联实体
T10 分析并修改WebSocket服务组件 - -

3.2 里程碑完成情况

里程碑 预期完成时间 实际完成时间 状态 备注
需求分析和文档编写 - - 完成ALIGNMENT、CONSENSUS、DESIGN、TASK文档
试点Service类修改 - - 完成YongYouU8Service的修改
批量Service类修改 - - 完成合同相关和客户相关Service类的批量修改
updateByVo方法优化 - - 完成合同相关9个Service类和客户相关3个Service类的updateByVo方法优化
依赖组件分析和修改 - - 完成CloudYuController的修改
WebSocket服务分析和修改 - - 分析并修改WebSocketServerCallbackManager、WebSocketServerTaskManager等组件
测试验证 - - -
文档更新和总结 - - 已更新ACCEPTANCE文档记录updateByVo方法优化工作

4. 问题和风险记录

4.1 已识别问题

问题ID 问题描述 严重程度 解决状态 解决方法
P1 Specification泛型修改带来的查询问题 采用直接调用Repository的方式绕过Specification
P2 数据转换可能带来的性能影响 需要优化转换逻辑,考虑缓存转换结果
P3 依赖组件修改工作量大 完成了YongYouU8Service、CloudYuController以及多个合同和客户相关Service类的修改
P4 代理对象序列化导致的懒加载问题 使用entity.toVo()方法将实体转换为VO后再返回和缓存
P5 Redis缓存清理和数据迁移 编写脚本清理旧的实体类缓存数据
P6 VO对象序列化安全性 确保VO类实现Serializable接口避免不可序列化引用
P7 WebSocket服务类型处理问题 WebSocketServerCallbackManager的反射调用方法需要适应IEntityService接口泛型变化
P8 WebSocket任务执行影响 WebSocketServerTaskManager的任务执行可能受到接口泛型修改的影响
P9 updateByVo方法中关联实体处理逻辑不完善 优化了12个Service类的updateByVo方法添加空值判断和实体匹配检查将findById替换为getById方法

4.2 风险评估

风险ID 风险描述 风险等级 缓解措施
R1 修改后系统功能异常 严格按照设计文档执行,加强测试验证
R2 数据转换导致数据不一致 确保转换逻辑的正确性,添加数据验证
R3 缓存功能失效 详细测试缓存的读写和失效机制
R4 VO对象序列化失败 确保VO类实现Serializable接口避免不可序列化引用
R5 Redis连接问题影响系统稳定性 实现缓存降级机制确保即使Redis不可用也能正常工作
R6 新旧缓存数据混用导致系统异常 实施严格的缓存清理策略确保只使用新的VO缓存数据
R7 WebSocket服务类型处理错误 详细测试WebSocketServerCallbackManager的类型处理逻辑确保createNewEntity、invokerFindByIdMethod等方法能够正确处理VO类型
R8 WebSocket服务任务执行失败 测试WebSocketServerTaskManager的任务执行流程确保任务能够正确处理VO类型的数据
R9 updateByVo方法关联实体处理错误 采用统一的模式处理关联实体先判断ID是否为空为空时设为null非空时获取对应Service实例检查当前实体关联对象是否存在且ID是否匹配不匹配时调用getById方法获取并设置关联实体

5. 测试结果汇总

5.1 单元测试结果

测试用例 测试目标 执行结果 备注
- - - -

5.2 集成测试结果

测试用例 测试目标 执行结果 备注
- - - -

5.3 系统测试结果

测试项 测试内容 执行结果 备注
- - - -

6. 最终验收结论

当前状态: 已完成YongYouU8Service和CloudYuController的代码修改正在更新相关文档

验收结论: 试点修改已完成待批量修改其他Service类并进行全面测试后进行最终验收

建议:

  1. 在开始批量修改前,确保试点修改的代码经过充分测试
  2. 按照任务拆分计划逐步执行,每完成一个任务进行验证
  3. 特别关注数据转换、依赖组件修改和缓存策略实现等关键环节
  4. 充分进行测试尤其是缓存功能测试确保Redis中只存储VO对象
  5. 执行Redis缓存清理操作确保不会有旧的实体类缓存数据影响系统运行
  6. 验证VO对象的序列化安全性避免懒加载异常问题

文档更新记录:

  • 创建日期: -
  • 更新日期: 最新
  • 更新内容: 1. 记录updateByVo方法优化的完成情况
  1. 添加任务ID T8和T9记录合同相关9个Service类和客户相关3个Service类的updateByVo方法优化
  2. 更新里程碑完成情况将批量Service类修改标记为完成新增updateByVo方法优化里程碑
  3. 更新问题列表添加P9问题记录updateByVo方法中关联实体处理逻辑优化
  4. 更新风险评估添加R9风险记录updateByVo方法关联实体处理的缓解措施