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

58
.trae/rules/vo_rules.md Normal file
View File

@@ -0,0 +1,58 @@
# VO类规则
## 1. 目录结构
- VO类统一放置在 `common/src/main/java/com/ecep/contract/vo/` 目录下
- 按业务领域组织,不使用子目录
## 2. 命名规范
- 类名使用驼峰命名法首字母大写以Vo结尾`ContractVo.java``CompanyVo.java`
## 3. 继承与接口实现
- **必须实现** `java.io.Serializable` 接口,用于对象序列化
- **通常实现** `IdentityEntity` 接口提供主键ID的getter/setter方法
- **可能实现** `NamedEntity` 接口提供name属性的getter/setter方法适用于有名称的VO
- **可能实现**特定领域接口,如:
- `CompanyBasedVo`提供companyId属性的getter/setter方法
- `ProjectBasedVo`提供project属性的getter/setter方法
- `ContractBasedVo`提供contractId属性的getter/setter方法
- 其他类似的基于特定实体的接口
## 4. 注解规范
- 通常使用Lombok的 `@Data` 注解自动生成getter、setter、equals、hashCode和toString方法
## 5. 序列化规范
- **必须包含** `private static final long serialVersionUID = 1L;` 字段,用于版本控制
- 所有字段类型必须是可序列化的
## 6. 字段规范
- 字段类型:
- 整数类型:可使用 `Integer` 包装类型或 `int` 原始类型
- 布尔类型:可使用 `Boolean` 包装类型或 `boolean` 原始类型
- 时间类型:使用 `java.time.LocalDate`(日期)或 `java.time.LocalDateTime`(日期时间)
- 字符串类型:使用 `String`
- 浮点数类型:使用 `double``Double`
- 关联关系:
- 通常只包含关联实体的ID字段`companyId``project``contractId`
- 不包含实体对象的直接引用
- 默认值:
- 布尔类型字段通常有默认值(如 `false`
- 其他类型根据业务需求设置默认值
## 7. 注释规范
- 类注释使用JavaDoc格式描述VO类的用途`/** 项目报价视图对象 */`
- 字段注释使用JavaDoc格式描述字段的含义、用途或业务规则
- 关键字段(如外键、状态字段)应提供清晰的注释说明
## 8. 最佳实践
- VO类应保持简洁只包含数据和基本的数据访问方法
- 避免在VO类中包含复杂的业务逻辑
- 字段命名应与对应的实体类保持一致或有明确的映射关系
- 确保所有字段都是可序列化的
- 对于有默认值的字段,应在声明时初始化
## 9. 与实体类的区别
- **序列化**VO类必须实现 `Serializable` 接口并包含 `serialVersionUID` 字段,而实体类不包含
- **用途**VO类主要用于数据传输和展示实体类主要用于持久化
- **关联关系**VO类通常只包含关联实体的ID实体类包含实体对象的引用
- **注解**VO类主要使用Lombok注解实体类使用JPA注解和Lombok注解
- **方法**VO类通常只有getter/setter方法实体类可能包含更多业务相关方法