risk_special_equipment_maintenance.sql 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. -- ============================================
  2. -- 特种设备维护模块 - 数据结构升级
  3. -- 按用户需求明确存取逻辑:
  4. -- 1. 维护记录存 risk_equipment_maintenance(多条,不变)
  5. -- 2. 设备主表存 next_maintenance_date + maintenance_status(冗余字段,便于列表查询)
  6. -- 3. 维护状态动态判定:
  7. -- - 最新记录='维护中' → '维护中'
  8. -- - 最新记录='已维护' 且 next_maintenance_date < NOW() → '待维护'
  9. -- - 最新记录='已维护' 且 next_maintenance_date >= NOW() → '正常'
  10. -- - 无维护记录 → '未维护'
  11. -- ============================================
  12. -- 1. 设备表新增:下次维护时间 + 维护状态
  13. ALTER TABLE risk_special_equipment
  14. ADD COLUMN `next_maintenance_date` DATE DEFAULT NULL
  15. COMMENT '下次维护时间(完成维护时由用户录入)' AFTER `install_date`,
  16. ADD COLUMN `maintenance_status` VARCHAR(20) DEFAULT '未维护'
  17. COMMENT '维护状态(未维护/待维护/维护中/正常)' AFTER `next_maintenance_date`,
  18. ADD KEY `idx_maintenance_status` (`maintenance_status`),
  19. ADD KEY `idx_next_maintenance_date` (`next_maintenance_date`);
  20. -- 2. 维护记录表加:预计维护日期(用于列表显示)
  21. -- (plan_start_time/plan_end_time 已存在,可作为预计时间)
  22. -- 加 next_maintenance_date 字段:维护完成时录入的下次维护时间(冗余到记录表,便于历史追溯)
  23. ALTER TABLE risk_equipment_maintenance
  24. ADD COLUMN `next_maintenance_date` DATE DEFAULT NULL
  25. COMMENT '下次维护时间(维护完成时录入)' AFTER `actual_end_time`;
  26. -- 3. 初始化历史数据
  27. UPDATE risk_special_equipment
  28. SET maintenance_status = '未维护'
  29. WHERE maintenance_status IS NULL OR maintenance_status = '';
  30. -- ============================================
  31. -- 4. 字典 seed:维护状态 maintenance_status
  32. -- (待维护/维护中/已维护 已有,此处补"未维护")
  33. -- ============================================
  34. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_dept, create_by, create_time, remark)
  35. SELECT 0, '未维护', '未维护', 'maintenance_status', '', 'info', 'N', '0', 103, 1, NOW(), '设备从未做过维护'
  36. FROM DUAL
  37. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'maintenance_status' AND dict_value = '未维护');
  38. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_dept, create_by, create_time, remark)
  39. SELECT 10, '待维护', '待维护', 'maintenance_status', '', 'warning', 'N', '0', 103, 1, NOW(), '下一次维护时间已过'
  40. FROM DUAL
  41. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'maintenance_status' AND dict_value = '待维护');
  42. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_dept, create_by, create_time, remark)
  43. SELECT 20, '维护中', '维护中', 'maintenance_status', '', 'primary', 'N', '0', 103, 1, NOW(), '正在进行维护作业'
  44. FROM DUAL
  45. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'maintenance_status' AND dict_value = '维护中');
  46. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_dept, create_by, create_time, remark)
  47. SELECT 30, '已维护', '已维护', 'maintenance_status', '', 'success', 'N', '0', 103, 1, NOW(), '本次维护已完成且尚未到期'
  48. FROM DUAL
  49. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'maintenance_status' AND dict_value = '已维护');