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

116 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

按枚举型的实现本地化
# 枚举类型清单
- 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
# 其他
本文中的所有文件在项目路径下