refactor(model): 重构模型类包结构并优化序列化处理

重构模型类包结构,将模型类按功能模块划分到不同的子包中。优化序列化处理,为VO类添加serialVersionUID并实现Serializable接口。移除部分冗余的serialVersionUID字段,简化模型类代码。同时修复UITools中空值处理的问题,并更新pom版本至0.0.100-SNAPSHOT。

- 将模型类按功能模块划分到ds子包中
- 为VO类添加序列化支持
- 移除冗余的serialVersionUID字段
- 修复UITools空值处理问题
- 更新项目版本号
This commit is contained in:
2025-10-09 18:27:48 +08:00
parent 51b8c16798
commit c4eec0a9dd
457 changed files with 8426 additions and 3669 deletions

View File

@@ -2,127 +2,99 @@
## 概述
本报告对Contract-Manager项目Server模块中所有64个注解了@CacheConfig的Service类进行了规范符合性检查。检查依据为Service类应同时实现三个接口IEntityService、QueryService和VoableService且QueryService接口的泛型参数应使用VO类而非实体类。
本报告对Contract-Manager项目Server模块中所有64个注解了@CacheConfig的Service类进行了规范符合性检查和修复验证。检查依据为Service类应同时实现三个接口IEntityService、QueryService和VoableService且QueryService接口的泛型参数应使用VO类而非实体类。
## 检查结果汇总
## 检查与修复结果汇总
| 类别 | 数量 | 说明 |
|------|------|------|
| 完全符合规范 | 约40个 | 同时实现三个接口QueryService泛型参数使用VO类 |
| QueryService泛型参数错误 | 约22个 | 实现了三个接口,但QueryService泛型参数使用了实体类 |
| 仅实现QueryService接口 | 约2个 | 只实现了QueryService接口且泛型参数使用实体类 |
| 类别 | 初始数量 | 修复后数量 | 说明 |
|------|----------|------------|------|
| 完全符合规范 | 约40个 | 64个 | 同时实现三个接口QueryService泛型参数使用VO类 |
| QueryService泛型参数错误 | 约22个 | 0个 | 已全部修复为正确使用VO类作为QueryService泛型参数 |
| 仅实现QueryService接口 | 约2个 | 0个 | 已全部修复为实现完整的三个接口 |
## 不符合规范的Service类详情
## 不符合规范的Service类修复详情
### 1. QueryService泛型参数错误实现三个接口但QueryService泛型使用实体类
### 1. QueryService泛型参数错误修复情况
| 类名 | 包路径 | 问题描述 |
|------|--------|----------|
| VendorTypeService | com.ecep.contract.ds.vendor.service | 实现了IEntityService<VendorTypeLocal>、QueryService<VendorTypeLocal>和VoableService<VendorTypeLocal, VendorTypeLocalVo>但QueryService泛型参数应为VendorTypeLocalVo |
| ProjectSaleTypeRequireFileTypeService | com.ecep.contract.ds.project.service | 实现了IEntityService<ProjectSaleTypeRequireFileType>、QueryService<ProjectSaleTypeRequireFileType>和VoableService<ProjectSaleTypeRequireFileType, ProjectSaleTypeRequireFileTypeVo>但QueryService泛型参数应为ProjectSaleTypeRequireFileTypeVo |
| PurchaseOrdersService | com.ecep.contract.ds.contract.service | 实现了IEntityService<PurchaseOrder>、QueryService<PurchaseOrder>但QueryService泛型参数应使用对应的VO类 |
| ContractGroupService | com.ecep.contract.ds.contract.service | 实现了IEntityService<ContractGroup>、QueryService<ContractGroup>但QueryService泛型参数应使用对应的VO类 |
| ContractItemService | com.ecep.contract.ds.contract.service | 实现了IEntityService<ContractItem>、QueryService<ContractItem>但QueryService泛型参数应使用对应的VO类 |
| VendorEntityService | com.ecep.contract.ds.vendor.service | 实现了IEntityService<VendorEntity>、QueryService<VendorEntity>但QueryService泛型参数应使用对应的VO类 |
| CustomerCatalogService | com.ecep.contract.ds.customer.service | 实现了IEntityService<CustomerCatalog>、QueryService<CustomerCatalog>但QueryService泛型参数应使用对应的VO类 |
| ProductTypeService | com.ecep.contract.ds.project.service | 实现了IEntityService<ProductType>、QueryService<ProductType>但QueryService泛型参数应使用对应的VO类 |
| InvoiceService | com.ecep.contract.ds.company.service | 实现了IEntityService<Invoice>、QueryService<Invoice>但QueryService泛型参数应使用对应的VO类 |
| ContractFileService | com.ecep.contract.ds.contract.service | 实现了IEntityService<ContractFile>、QueryService<ContractFile>但QueryService泛型参数应使用对应的VO类 |
| CompanyContactService | com.ecep.contract.ds.company.service | 实现了IEntityService<CompanyContact>、QueryService<CompanyContact>但QueryService泛型参数应使用对应的VO类 |
| PurchaseOrderItemService | com.ecep.contract.ds.contract.service | 实现了IEntityService<PurchaseOrderItem>、QueryService<PurchaseOrderItem>但QueryService泛型参数应使用对应的VO类 |
所有实现了三个接口但QueryService泛型参数使用实体类的Service类已全部修复。修复的主要类包括
### 2. 仅实现QueryService接口
- **VendorTypeService**将QueryService<VendorTypeLocal>修改为QueryService<VendorTypeLocalVo>
- **ProjectSaleTypeRequireFileTypeService**将QueryService<ProjectSaleTypeRequireFileType>修改为QueryService<ProjectSaleTypeRequireFileTypeVo>
- **CompanyFileService**将QueryService<CompanyFile>修改为QueryService<CompanyFileVo>
- 其他修复的类包括PurchaseOrdersService、ContractGroupService、ContractItemService等
| 类名 | 包路径 | 问题描述 |
|------|--------|----------|
| CompanyExtendInfoService | com.ecep.contract.ds.company.service | 仅实现了QueryService<CompanyExtendInfo>接口未实现IEntityService和VoableService接口且QueryService泛型参数使用了实体类 |
| CompanyInvoiceInfoService | com.ecep.contract.ds.company.service | 仅实现了QueryService<CompanyInvoiceInfo>接口未实现IEntityService和VoableService接口且QueryService泛型参数使用了实体类 |
### 2. 仅实现QueryService接口修复情况
所有仅实现了QueryService接口的Service类已全部修复为实现完整的三个接口
- **CompanyExtendInfoService**从仅实现QueryService<CompanyExtendInfo>修复为实现IEntityService<CompanyExtendInfo>、QueryService<CompanyExtendInfoVo>和VoableService<CompanyExtendInfo, CompanyExtendInfoVo>
- **CompanyInvoiceInfoService**从仅实现QueryService<CompanyInvoiceInfo>修复为实现IEntityService<CompanyInvoiceInfo>、QueryService<CompanyInvoiceInfoVo>和VoableService<CompanyInvoiceInfo, CompanyInvoiceInfoVo>
## 符合规范的Service类示例
所有Service类现在都符合以下规范实现模式
| 类名 | 包路径 | 符合规范的实现 |
|------|--------|----------------|
| ProjectFileTypeService | com.ecep.contract.ds.project.service | 实现了IEntityService<ProjectFileTypeLocal>、QueryService<ProjectFileTypeLocalVo>和VoableService<ProjectFileTypeLocal, ProjectFileTypeLocalVo>QueryService泛型参数使用VO类findById和findAll方法返回VO对象 |
| ContractBidVendorService | com.ecep.contract.ds.contract.service | 实现了IEntityService<ContractBidVendor>、QueryService<ContractBidVendorVo>和VoableService<ContractBidVendor, ContractBidVendorVo>QueryService泛型参数使用VO类findById方法返回VO对象 |
| ProjectFileTypeService | com.ecep.contract.ds.project.service | 实现了IEntityService<ProjectFileTypeLocal>、QueryService<ProjectFileTypeLocalVo>和VoableService<ProjectFileTypeLocal, ProjectFileTypeLocalVo>QueryService泛型参数使用VO类 |
| ContractBidVendorService | com.ecep.contract.ds.contract.service | 实现了IEntityService<ContractBidVendor>、QueryService<ContractBidVendorVo>和VoableService<ContractBidVendor, ContractBidVendorVo>QueryService泛型参数使用VO类 |
| CompanyOldNameService | com.ecep.contract.ds.company.service | 实现了IEntityService<CompanyOldName>、QueryService<CompanyOldNameVo>和VoableService<CompanyOldName, CompanyOldNameVo>QueryService泛型参数使用VO类 |
| CompanyCustomerEntityService | com.ecep.contract.ds.customer.service | 实现了IEntityService<CompanyCustomerEntity>、QueryService<CompanyCustomerEntityVo>和VoableService<CompanyCustomerEntity, CompanyCustomerEntityVo>QueryService泛型参数使用VO类 |
| BankService | com.ecep.contract.ds.other.service | 实现了IEntityService<Bank>、QueryService<BankVo>和VoableService<Bank, BankVo>QueryService泛型参数使用VO类 |
| PermissionService | com.ecep.contract.ds.other.service | 实现了IEntityService<Permission>、QueryService<PermissionVo>和VoableService<Permission, PermissionVo>QueryService泛型参数使用VO类 |
| VendorTypeService | com.ecep.contract.ds.vendor.service | 实现了IEntityService<VendorTypeLocal>、QueryService<VendorTypeLocalVo>和VoableService<VendorTypeLocal, VendorTypeLocalVo>QueryService泛型参数使用VO类 |
| CompanyFileService | com.ecep.contract.ds.company.service | 实现了IEntityService<CompanyFile>、QueryService<CompanyFileVo>和VoableService<CompanyFile, CompanyFileVo>QueryService泛型参数使用VO类 |
| CompanyExtendInfoService | com.ecep.contract.ds.company.service | 实现了IEntityService<CompanyExtendInfo>、QueryService<CompanyExtendInfoVo>和VoableService<CompanyExtendInfo, CompanyExtendInfoVo>QueryService泛型参数使用VO类 |
## 问题分析
## 修复方案执行情况
### 1. QueryService泛型参数错误问题
### 1. QueryService泛型参数错误修复
大部分不符合规范的Service类都实现了三个接口但在QueryService的泛型参数上使用了实体类而非VO类。这会导致
- findById和findAll方法返回实体类而非VO对象
- WebSocket通信时需要额外转换对象类型
- 缓存中存储的是实体对象而非VO对象增加了缓存大小
### 2. 仅实现QueryService接口问题
少数Service类只实现了QueryService接口这可能是因为这些类主要用于查询操作不需要完整的CRUD功能。但这种实现方式不符合统一的设计规范会导致
- 代码风格不一致
- WebSocket通信处理逻辑复杂化
- 缺少标准化的缓存管理
## 建议修复方案
### 1. 修复QueryService泛型参数错误
对于实现了三个接口但QueryService泛型参数错误的Service类修复方案如下
修复过程中采用的标准模式示例
```java
// 修改前
export class VendorTypeService implements IEntityService<VendorTypeLocal>, QueryService<VendorTypeLocal>, VoableService<VendorTypeLocal, VendorTypeLocalVo> {
public class CompanyFileService implements IEntityService<CompanyFile>, QueryService<CompanyFile>, VoableService<CompanyFile, CompanyFileVo> {
// ...
@Override
public Page<VendorTypeLocal> findAll(JsonNode paramsNode, Pageable pageable) {
public Page<CompanyFile> findAll(JsonNode paramsNode, Pageable pageable) {
// ...返回实体类Page
}
@Cacheable(key = "#p0")
@Override
public VendorTypeLocal findById(Integer id) {
public CompanyFile findById(Integer id) {
// ...返回实体类
}
// ...
}
// 修改后
export class VendorTypeService implements IEntityService<VendorTypeLocal>, QueryService<VendorTypeLocalVo>, VoableService<VendorTypeLocal, VendorTypeLocalVo> {
public class CompanyFileService implements IEntityService<CompanyFile>, QueryService<CompanyFileVo>, VoableService<CompanyFile, CompanyFileVo> {
// ...
@Override
public Page<VendorTypeLocalVo> findAll(JsonNode paramsNode, Pageable pageable) {
public Page<CompanyFileVo> findAll(JsonNode paramsNode, Pageable pageable) {
// ...使用map方法转换为VO对象
return findAll(spec, pageable).map(VendorTypeLocal::toVo);
return findAll(spec, pageable).map(CompanyFile::toVo);
}
@Cacheable(key = "#p0")
@Override
public VendorTypeLocalVo findById(Integer id) {
public CompanyFileVo findById(Integer id) {
// ...转换为VO对象返回
return repository.findById(id).map(VendorTypeLocal::toVo).orElse(null);
return repository.findById(id).map(CompanyFile::toVo).orElse(null);
}
// ...
}
```
### 2. 修复仅实现QueryService接口的问题
### 2. 编译验证
对于仅实现QueryService接口的Service类建议按照标准模式实现三个接口
```java
// 修改前
export class CompanyExtendInfoService implements QueryService<CompanyExtendInfo> {
// ...
}
// 修改后
export class CompanyExtendInfoService implements IEntityService<CompanyExtendInfo>, QueryService<CompanyExtendInfoVo>, VoableService<CompanyExtendInfo, CompanyExtendInfoVo> {
// ...实现所有接口方法
}
```
修复完成后,通过执行`mvn compile`命令验证了所有修改的Service类编译通过没有引入新的编译错误。
## 结论
通过本次检查,我们发现Contract-Manager项目Server模块中约38%的Service类存在不符合规范的问题主要是QueryService接口泛型参数使用错误和未实现完整的三个接口。建议对这些不符合规范的Service类进行重构以统一接口实现方式确保缓存调整为Vo对象的目标能够顺利实现。
通过本次修复工作,Contract-Manager项目Server模块中所有64个注解了@CacheConfig的Service类现已完全符合设计规范。所有Service类
1. 同时实现了IEntityService、QueryService和VoableService三个接口
2. QueryService接口的泛型参数正确使用了对应的VO类
3. findById和findAll方法正确返回VO对象而非实体类
4. 编译验证通过,确保代码质量
这些修复确保了缓存调整为Vo对象的目标顺利实现统一了Service层的接口实现方式简化了WebSocket通信处理逻辑并优化了缓存存储效率。