feat: 实现文件类型枚举的本地化支持

新增文件类型枚举的本地化功能,包括供应商、项目、公司、合同和客户文件类型。添加了相关的SQL表结构、Repository、Service、ViewModel和StringConverter实现。同时更新了文档说明如何创建和使用枚举类型的本地化功能。

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

更新了create_enum.md文档,详细说明了文件类型枚举本地化的实现方式和相关组件清单。
This commit is contained in:
2025-09-23 22:34:59 +08:00
parent 4b8c1d4038
commit 57fbae90c5
27 changed files with 633 additions and 42 deletions

View File

@@ -1,4 +1,4 @@
枚举对象
枚举型的实现本地化
# 枚举类型清单
@@ -11,42 +11,105 @@
# Server 模块
## Repository
## 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 表格单元格渲染
- common/src/main/java/com/ecep/contract/controller/table/cell/VendorTypeTableCell.java
### 要求
- 需实现 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
需要定义注解 @CacheConfig
需要实现 findByLocaleAndValue 方法
- client/src/main/java/com/ecep/contract/ds/vendor/service/VendorTypeService.java
- 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
# 其他