编辑 | blame | 历史 | 原始文档

任务管理时间字段更新说明

修改概述

为了确保在任务管理的增删改查操作中,create_timeupdate_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 层控制

删除操作 (deleteSysTaskByTaskIddeleteSysTaskByTaskIds)

  • 添加 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_timeactual_end_time

5. 执行步骤

对于新部署

  1. 直接使用修改后的 sql/task_tables.sql 创建表

对于现有数据库

  1. 执行 sql/fix_update_time.sql 脚本修复现有表结构
  2. 重新部署应用程序

6. 验证方法

数据库验证

-- 查看表结构
SHOW CREATE TABLE sys_task;

-- 验证字段定义
DESCRIBE sys_task;

功能验证

  1. 创建新任务,检查 create_timeupdate_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 实现类