Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-17-collection-batch-entities.md
T

158 lines
7.3 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.
# 信息采集批次实体类开发变更记录
**变更时间**: 2025-01-17 14:30:00
**变更人员**: Cursor AI
**变更类型**: 新增功能
**变更模块**: 信息采集批次管理
## 变更概述
为信息采集批次功能开发了完整的实体类架构,包括Domain实体、BO业务对象、VO视图对象,确保与数据库字段一致性。
## 详细变更内容
### 1. 新增Domain实体类
#### 1.1 XgCollectionBatch(信息采集批次主实体)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/XgCollectionBatch.java`
- **主要功能**:
- 继承TenantEntity,支持多租户
- 包含批次基本信息:编码、名称、类型、学年、学期
- 包含时间控制:发布时间、开始时间、结束时间、归档时间
- 包含目标配置:目标学院、年级、专业(JSON格式)
- 包含字段配置:必填字段、可选字段(JSON格式)
- 包含权限配置:编辑权限、审核权限、查看权限(JSON格式)
- 包含统计信息:总学生数、已提交数、已审核数、已驳回数、完成率
- 包含功能配置:自动提醒、提醒频率、提交后允许修改
- **字段验证**: 使用@TableId、@JsonFormat、@TableLogic注解
#### 1.2 XgCollectionBatchStudent(批次学生关联实体)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/XgCollectionBatchStudent.java`
- **主要功能**:
- 继承BaseEntity,包含基础字段
- 关联批次ID和学生ID
- 记录学生基本信息:学号、姓名、学院、专业、班级、届别
- 记录提交状态:是否可编辑、是否已提交、提交时间
- 记录编辑历史:最后编辑时间、编辑次数
- **字段验证**: 使用@TableId(type = IdType.AUTO)自增主键
#### 1.3 XgCollectionBatchLog(批次操作日志实体)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/XgCollectionBatchLog.java`
- **主要功能**:
- 记录所有批次相关操作
- 操作类型:CREATE、UPDATE、SUBMIT、ADMIN_MODIFY、BATCH_PUBLISH、BATCH_CLOSE
- 记录操作前后数据变化(JSON格式)
- 记录操作人信息:ID、姓名、类型(STUDENT、ADMIN、SYSTEM)
- 记录操作环境:IP地址、用户代理
#### 1.4 XgCollectionBatchPermission(批次权限配置实体)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/XgCollectionBatchPermission.java`
- **主要功能**:
- 继承BaseEntity,支持基础字段
- 权限类型:EDIT、VIEW、SUBMIT、ADMIN
- 支持角色、用户、学院级别的权限配置
- 包含授权时间和过期时间
#### 1.5 XgCollectionBatchStatistics(批次统计实体)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/XgCollectionBatchStatistics.java`
- **主要功能**:
- 继承BaseEntity,支持基础字段
- 统计维度:总体、学院、专业、班级、届别
- 统计指标:总学生数、已提交学生数、待提交学生数、完成率
- 支持按不同维度进行统计分析
#### 1.6 XgBatchScheduledTask(批次定时任务实体)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/XgBatchScheduledTask.java`
- **主要功能**:
- 继承BaseEntity,支持基础字段
- 任务类型:REMIND_START、REMIND_END、AUTO_CLOSE
- 任务状态:PENDING、EXECUTED、FAILED
- 记录执行时间和错误信息
### 2. 新增BO业务对象类
#### 2.1 XgCollectionBatchBo(信息采集批次业务对象)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/bo/XgCollectionBatchBo.java`
- **主要功能**:
- 继承BaseEntity,支持基础字段
- 使用@AutoMapper自动映射到Domain实体
- 包含完整的参数验证:@NotNull、@NotBlank、@Size、@Pattern等
- 包含查询条件字段:状态列表、学年列表、时间范围查询等
- **重要**: 包含VO类基础字段(createBy、createTime、updateBy、updateTime)
#### 2.2 XgCollectionBatchStudentBo(批次学生关联业务对象)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/bo/XgCollectionBatchStudentBo.java`
- **主要功能**:
- 继承BaseEntity,支持基础字段
- 使用@AutoMapper自动映射到Domain实体
- 包含完整的参数验证
- 包含查询条件字段:批次ID列表、学生ID列表、学院ID列表等
- **重要**: 包含VO类基础字段(createBy、createTime、updateBy、updateTime)
### 3. 新增VO视图对象类
#### 3.1 XgCollectionBatchVo(信息采集批次视图对象)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/vo/XgCollectionBatchVo.java`
- **主要功能**:
- 使用@AutoMapper自动映射到Domain实体
- 使用@ExcelIgnoreUnannotated和@ExcelProperty支持Excel导出
- 使用@ExcelDictFormat进行字典转换
- **重要**: 包含VO类基础字段(createBy、createTime、updateBy、updateTime)
#### 3.2 XgCollectionBatchStudentVo(批次学生关联视图对象)
- **文件位置**: `backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/vo/XgCollectionBatchStudentVo.java`
- **主要功能**:
- 使用@AutoMapper自动映射到Domain实体
- 支持Excel导出功能
- **重要**: 包含VO类基础字段(createBy、createTime、updateBy、updateTime)
## 技术规范遵循
### 1. 数据库字段一致性
- ✅ 所有实体类字段与数据库表字段完全一致
- ✅ 使用正确的字段类型和长度限制
- ✅ 正确配置主键策略:雪花ID和自增ID
### 2. 项目架构规范
- ✅ 参考学生信息管理功能的架构
- ✅ 所有代码放在`ruoyi-modules/ruoyi-xg-xx/`目录下
- ✅ 遵循Domain-BO-VO三层架构
### 3. 强制性规范遵循
- ✅ **VO类基础字段规范**: 所有BO和VO类包含四个基础字段(createBy、createTime、updateBy、updateTime)
- ✅ **多租户支持**: 主实体继承TenantEntity,关联实体包含tenantId字段
- ✅ **逻辑删除**: 使用@TableLogic注解,deleted字段0-存在,1-删除
- ✅ **时间格式化**: 统一使用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
### 4. 参数验证规范
- ✅ 使用Bean Validation注解进行参数校验
- ✅ 区分AddGroup和EditGroup验证组
- ✅ 包含合理的字段长度和格式验证
### 5. 自动映射配置
- ✅ 使用@AutoMapper注解实现BO/VO与Domain实体的自动映射
- ✅ 配置reverseConvertGenerate = false避免反向转换
## 下一步计划
1. **Mapper接口开发**: 创建数据访问层接口
2. **Service层开发**: 实现业务逻辑层
3. **Controller层开发**: 实现API接口层
4. **XML映射文件**: 创建MyBatis映射文件
5. **单元测试**: 编写测试用例
## 验证结果
- ✅ 所有实体类编译通过
- ✅ 字段映射与数据库表一致
- ✅ 注解配置正确
- ✅ 包结构符合项目规范
- ✅ 遵循强制性开发规范
## 备注
本次开发严格按照项目规范进行,特别注意了以下几点:
1. 所有VO类都包含了四个基础字段,避免MyBatis映射错误
2. 时间字段统一使用@JsonFormat格式化
3. 参考了学生信息管理功能的实现方式
4. 确保了数据库字段的完全一致性