Files
contract-manager/docs/create_enum.md
songqq 57fbae90c5 feat: 实现文件类型枚举的本地化支持
新增文件类型枚举的本地化功能,包括供应商、项目、公司、合同和客户文件类型。添加了相关的SQL表结构、Repository、Service、ViewModel和StringConverter实现。同时更新了文档说明如何创建和使用枚举类型的本地化功能。

修改了客户文件类型的相关代码,统一使用CustomerFileTypeLocalVo替代原有的CompanyCustomerFileTypeLocal,优化了代码结构和一致性。添加了文件类型枚举的缓存支持,提高了性能。

更新了create_enum.md文档,详细说明了文件类型枚举本地化的实现方式和相关组件清单。
2025-09-23 22:34:59 +08:00

5.7 KiB
Raw Blame History

按枚举型的实现本地化

枚举类型清单

  • common/src/main/java/com/ecep/contract/VendorType.java
  • common/src/main/java/com/ecep/contract/VendorFileType.java
  • common/src/main/java/com/ecep/contract/ProjectFileType.java
  • common/src/main/java/com/ecep/contract/CompanyFileType.java
  • common/src/main/java/com/ecep/contract/ContractFileType.java
  • common/src/main/java/com/ecep/contract/CustomerFIleType.java

Server 模块

Repository

  • server/src/main/java/com/ecep/contract/ds/vendor/repository/VendorTypeLocalRepository.java
  • server/src/main/java/com/ecep/contract/ds/vendor/repository/VendorFileTypeLocalRepository.java
  • server/src/main/java/com/ecep/contract/ds/project/repository/ProjectFileTypeLocalRepository.java
  • server/src/main/java/com/ecep/contract/ds/company/repository/CompanyFileTypeLocalRepository.java
  • server/src/main/java/com/ecep/contract/ds/contract/repository/ContractFileTypeLocalRepository.java
  • server/src/main/java/com/ecep/contract/ds/customer/repository/CustomerFileTypeLocalRepository.java

Service

  • server/src/main/java/com/ecep/contract/ds/vendor/service/VendorTypeService.java
  • server/src/main/java/com/ecep/contract/ds/vendor/service/VendorFileTypeService.java
  • server/src/main/java/com/ecep/contract/ds/project/service/ProjectFileTypeService.java
  • server/src/main/java/com/ecep/contract/ds/company/service/CompanyFileTypeService.java
  • server/src/main/java/com/ecep/contract/ds/contract/service/ContractFileTypeService.java
  • server/src/main/java/com/ecep/contract/ds/customer/service/CustomerFileTypeService.java

Client 模块

View Model

  • 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm
  • extends EnumViewModel<枚举类, Vo>

清单

  • client\src\main\java\com\ecep\contract\vm\VendorTypeLocalViewModel.java
  • client\src/main/java/com/ecep/contract/vm/VendorFileTypeLocalViewModel.java
  • client\src/main/java/com/ecep/contract/vm/ProjectFileTypeLocalViewModel.java
  • client\src/main/java/com/ecep/contract/vm/CompanyFileTypeLocalViewModel.java
  • client\src/main/java/com/ecep/contract/vm/ContractFileTypeLocalViewModel.java
  • client\src/main/java/com/ecep/contract/vm/CustomerFileTypeLocalViewModel.java

StringConverter

所在目录 client/src/main/java/com/ecep/contract/converter/ package com.ecep.contract.converter;

清单

  • client/src/main/java/com/ecep/contract/converter/VendorTypeStringConverter.java
  • client/src/main/java/com/ecep/contract/converter/VendorFileTypeStringConverter.java
  • client/src/main/java/com/ecep/contract/converter/ProjectFileTypeStringConverter.java
  • client/src/main/java/com/ecep/contract/converter/CompanyFileTypeStringConverter.java
  • client/src/main/java/com/ecep/contract/converter/ContractFileTypeStringConverter.java
  • client/src/main/java/com/ecep/contract/converter/CustomerFileTypeStringConverter.java

TableCell 表格单元格渲染

要求

  • 需实现 forTableColumn 静态方法,用于创建表格列的单元格工厂。
  • 表格列的单元格工厂需要接收一个 Service 实例,用于从数据库中获取枚举类型的本地化信息。
  • 表格列的单元格工厂需要实现 Callback 接口,用于创建单元格实例。
  • 表格列的单元格工厂需要在 forTableColumn 方法中接收 Service 实例,用于从数据库中获取枚举类型的本地化信息。

清单

  • client/src/main/java/com/ecep/contract/controller/table/cell/VendorTypeTableCell.java
  • client/src/main/java/com/ecep/contract/controller/table/cell/VendorFileTypeTableCell.java
  • client/src/main/java/com/ecep/contract/controller/table/cell/ProjectFileTypeTableCell.java
  • client/src/main/java/com/ecep/contract/controller/table/cell/CompanyFileTypeTableCell.java
  • client/src/main/java/com/ecep/contract/controller/table/cell/ContractFileTypeTableCell.java
  • client/src/main/java/com/ecep/contract/controller/table/cell/CustomerFileTypeTableCell.java

Service

需要定义注解 @CacheConfig 需要实现 findByLocaleAndValue 方法

  • client/src/main/java/com/ecep/contract/service/VendorTypeService.java
  • client/src/main/java/com/ecep/contract/service/VendorFileTypeService.java
  • client/src/main/java/com/ecep/contract/service/ProjectFileTypeService.java
  • client/src/main/java/com/ecep/contract/service/CompanyFileTypeService.java
  • client/src/main/java/com/ecep/contract/service/ContractFileTypeService.java
  • client/src/main/java/com/ecep/contract/service/CompanyCustomerFileTypeService.java

Common 模块

Entity 类, 枚举类型的本地化

  • common/src/main/java/com/ecep/contract/model/VendorTypeLocal.java
  • common/src/main/java/com/ecep/contract/model/VendorFileTypeLocal.java
  • common/src/main/java/com/ecep/contract/model/ProjectFileTypeLocal.java
  • common/src/main/java/com/ecep/contract/model/CompanyFileTypeLocal.java
  • common/src/main/java/com/ecep/contract/model/ContractFileTypeLocal.java
  • common/src/main/java/com/ecep/contract/model/CustomerFileTypeLocal.java

SQL

每个Entity类创建一个对应的SQL文件文件名格式为Entity类名 + .sql例如VendorTypeLocal.sql 存储在 docs/db/ 目录下 数据表名已经定义在 Entity 类的 @Table 注解中 字段名已经定义在 Entity 类的 @Column 注解中,包括父类的字段

VOView Object

  • common/src/main/java/com/ecep/contract/vo/VendorTypeLocalVo.java
  • common/src/main/java/com/ecep/contract/vo/VendorFileTypeLocalVo.java
  • common/src/main/java/com/ecep/contract/vo/ProjectFileTypeLocalVo.java
  • common/src/main/java/com/ecep/contract/vo/CompanyFileTypeLocalVo.java
  • common/src/main/java/com/ecep/contract/vo/ContractFileTypeLocalVo.java
  • common/src/main/java/com/ecep/contract/vo/CustomerFileTypeLocalVo.java

其他

本文中的所有文件在项目路径下