# 任务管理时间字段更新说明 ## 修改概述 为了确保在任务管理的增删改查操作中,`create_time` 和 `update_time` 字段能够正确更新,我们对以下文件进行了修改: ## 1. 数据库表结构修改 ### 文件:`sql/task_tables.sql` - 为 `create_time` 字段添加默认值:`DEFAULT CURRENT_TIMESTAMP` - 为 `update_time` 字段添加默认值和自动更新:`DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP` ### 文件:`sql/fix_update_time.sql` - 创建了数据库修复脚本,用于更新现有数据库表结构 ## 2. MyBatis 映射文件修改 ### 文件:`ruoyi-system/src/main/resources/mapper/system/SysTaskMapper.xml` #### 插入操作 (`insertSysTask`) - 修改前:只有当 `updateTime` 不为 null 时才包含该字段 - 修改后:总是包含 `update_time` 字段,使用 `now()` 函数设置当前时间 #### 更新操作 (`updateSysTask`) - 保持原有逻辑,通过 Service 层设置 `updateTime` #### 分配任务操作 (`assignTask`) - 修改前:使用 `now()` 函数 - 修改后:使用 `#{updateTime}` 参数,由 Service 层控制 #### 状态变更操作 (`updateTaskStatus`) - 修改前:使用 `now()` 函数 - 修改后:使用 `#{updateTime}` 参数,由 Service 层控制 #### 删除操作 (`deleteSysTaskByTaskId` 和 `deleteSysTaskByTaskIds`) - 添加 `update_time = now()` 确保删除时也更新时间 ## 3. Service 层修改 ### 文件:`ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java` #### 新增任务 (`insertSysTask`) - 添加 `task.setUpdateTime(DateUtils.getNowDate())` 确保创建时也设置更新时间 #### 修改任务 (`updateSysTask`) - 保持原有逻辑,正确设置 `updateTime` #### 分配任务 (`assignTask`) - 添加 `task.setUpdateTime(DateUtils.getNowDate())` 确保分配时更新时间 #### 状态变更 (`changeTaskStatus`) - 添加 `task.setUpdateTime(DateUtils.getNowDate())` 确保状态变更时更新时间 ## 4. 时间字段更新规则 ### 创建操作 - `create_time`:设置为当前时间 - `update_time`:设置为当前时间 - `create_by`:设置为当前用户 - `update_by`:设置为当前用户 ### 更新操作 - `update_time`:设置为当前时间 - `update_by`:设置为当前用户 ### 删除操作 - `update_time`:设置为当前时间(通过 SQL 的 `now()` 函数) ### 分配操作 - `update_time`:设置为当前时间 - `update_by`:设置为当前用户 ### 状态变更操作 - `update_time`:设置为当前时间 - `update_by`:设置为当前用户 - 根据状态可能设置 `actual_start_time` 或 `actual_end_time` ## 5. 执行步骤 ### 对于新部署 1. 直接使用修改后的 `sql/task_tables.sql` 创建表 ### 对于现有数据库 1. 执行 `sql/fix_update_time.sql` 脚本修复现有表结构 2. 重新部署应用程序 ## 6. 验证方法 ### 数据库验证 ```sql -- 查看表结构 SHOW CREATE TABLE sys_task; -- 验证字段定义 DESCRIBE sys_task; ``` ### 功能验证 1. 创建新任务,检查 `create_time` 和 `update_time` 是否正确设置 2. 修改任务,检查 `update_time` 是否正确更新 3. 删除任务,检查 `update_time` 是否正确更新 4. 分配任务,检查 `update_time` 是否正确更新 5. 变更任务状态,检查 `update_time` 是否正确更新 ## 7. 注意事项 1. **数据库兼容性**:修改后的 SQL 语句兼容 MySQL 5.7+ 版本 2. **时区设置**:确保数据库和应用服务器的时区设置一致 3. **性能影响**:使用 `now()` 函数对性能影响很小 4. **数据一致性**:所有时间字段都使用统一的时间源,确保数据一致性 ## 8. 相关文件清单 - `sql/task_tables.sql` - 数据库表结构定义 - `sql/fix_update_time.sql` - 数据库修复脚本 - `ruoyi-system/src/main/resources/mapper/system/SysTaskMapper.xml` - MyBatis 映射文件 - `ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java` - Service 实现类