-- =====================================================
-- 技术建议探讨优化 SQL
-- 作者: 周启威
-- 日期: 2026-01-14
-- 版本: v1.6.004
-- =====================================================

-- =====================================================
-- 1. 设备列表状态字典（核心、正常、停用、报废）
-- 说明：复用equipment_status字典，删除旧数据(关机/待机/运行中/故障)，新增新数据
-- =====================================================

-- 1.1 删除旧的设备状态字典数据（关机A、待机B、运行中C、故障D）
DELETE FROM `sys_dict_data` WHERE `dict_type` = 'equipment_status';

-- 1.2 添加新的设备状态字典数据（核心、正常、停用、报废）
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (0, '核心', 'core', 'equipment_status', NULL, 'danger', 'N', '0', 'admin', NOW(), '核心设备');
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (1, '正常', 'normal', 'equipment_status', NULL, 'success', 'Y', '0', 'admin', NOW(), '正常使用设备');
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (2, '停用', 'disabled', 'equipment_status', NULL, 'warning', 'N', '0', 'admin', NOW(), '停用设备');
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (3, '报废', 'scrapped', 'equipment_status', NULL, 'info', 'N', '0', 'admin', NOW(), '报废设备');

-- =====================================================
-- 2. 点检结果字典（正常/异常）
-- 说明：点检记录专用，替代inspection_result中的正常/异常
-- =====================================================

-- 2.1 添加点检结果字典类型
INSERT IGNORE INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('点检结果', 'spotcheck_result', '0', 'admin', NOW(), '点检结果：正常/异常');

-- 2.2 添加点检结果字典数据
INSERT IGNORE INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (0, '正常', 'normal', 'spotcheck_result', NULL, 'success', 'Y', '0', 'admin', NOW(), '点检正常');
INSERT IGNORE INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (1, '异常', 'abnormal', 'spotcheck_result', NULL, 'danger', 'N', '0', 'admin', NOW(), '点检异常');

-- =====================================================
-- 3. 巡检结果字典（合格/不合格）
-- 说明：巡检记录专用，替代inspection_result中的合格/不合格
-- =====================================================

-- 3.1 添加巡检结果字典类型
INSERT IGNORE INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('巡检结果', 'patrol_result', '0', 'admin', NOW(), '巡检结果：合格/不合格');

-- 3.2 添加巡检结果字典数据
INSERT IGNORE INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (0, '合格', 'qualified', 'patrol_result', NULL, 'success', 'Y', '0', 'admin', NOW(), '巡检合格');
INSERT IGNORE INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (1, '不合格', 'unqualified', 'patrol_result', NULL, 'danger', 'N', '0', 'admin', NOW(), '巡检不合格');

-- =====================================================
-- 4. 设备维修明细来源字段
-- =====================================================

-- 4.1 添加设备维修明细来源字典类型
INSERT IGNORE INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES ('维修明细来源', 'repair_entry_source', '0', 'admin', NOW(), '设备维修明细来源：点检/巡检/手动添加');

-- 4.2 添加设备维修明细来源字典数据
INSERT IGNORE INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (0, '点检', 'spotcheck', 'repair_entry_source', NULL, 'success', 'N', '0', 'admin', NOW(), '来源于点检');
INSERT IGNORE INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (1, '巡检', 'inspection', 'repair_entry_source', NULL, 'primary', 'N', '0', 'admin', NOW(), '来源于巡检');
INSERT IGNORE INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES (2, '手动添加', 'manual', 'repair_entry_source', NULL, 'info', 'Y', '0', 'admin', NOW(), '手动添加');

-- 4.3 设备维修明细表添加来源字段
SET @dbname = DATABASE();
SET @tablename = 'dm_repair_order_entry';

-- 添加 source_type 字段
SET @columnname = 'source_type';
SET @preparedStatement = (SELECT IF(
  (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) > 0,
  'SELECT 1',
  CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' VARCHAR(32) DEFAULT ''manual'' COMMENT ''来源类型：spotcheck-点检, inspection-巡检, manual-手动添加''')
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

-- 添加 source_record_id 字段
SET @columnname = 'source_record_id';
SET @preparedStatement = (SELECT IF(
  (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) > 0,
  'SELECT 1',
  CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' BIGINT DEFAULT NULL COMMENT ''来源记录ID（点检/巡检记录ID）''')
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

-- =====================================================
-- 回滚脚本（如需回滚请执行以下语句）
-- =====================================================
/*
-- 删除设备列表状态字典
DELETE FROM `sys_dict_data` WHERE `dict_type` = 'equipment_list_status';
DELETE FROM `sys_dict_type` WHERE `dict_type` = 'equipment_list_status';

-- 删除点检结果字典
DELETE FROM `sys_dict_data` WHERE `dict_type` = 'spotcheck_result';
DELETE FROM `sys_dict_type` WHERE `dict_type` = 'spotcheck_result';

-- 删除巡检结果字典
DELETE FROM `sys_dict_data` WHERE `dict_type` = 'patrol_result';
DELETE FROM `sys_dict_type` WHERE `dict_type` = 'patrol_result';

-- 删除维修明细来源字典
DELETE FROM `sys_dict_data` WHERE `dict_type` = 'repair_entry_source';
DELETE FROM `sys_dict_type` WHERE `dict_type` = 'repair_entry_source';

-- 删除维修明细表来源字段
ALTER TABLE `dm_repair_order_entry` DROP COLUMN `source_type`;
ALTER TABLE `dm_repair_order_entry` DROP COLUMN `source_record_id`;
*/


-- =====================================================
-- 5. 点检/巡检/保养频率字典标签更新
-- 说明：更新inspection_plan_frequency字典的label，添加具体执行时间
-- =====================================================

UPDATE `sys_dict_data` SET `dict_label` = '每日9点' WHERE `dict_type` = 'inspection_plan_frequency' AND `dict_value` = 'daily';
UPDATE `sys_dict_data` SET `dict_label` = '每周一14点' WHERE `dict_type` = 'inspection_plan_frequency' AND `dict_value` = 'weekly';
UPDATE `sys_dict_data` SET `dict_label` = '每月第一周周一14点' WHERE `dict_type` = 'inspection_plan_frequency' AND `dict_value` = 'monthly';
UPDATE `sys_dict_data` SET `dict_label` = '每季度第一周周一14点' WHERE `dict_type` = 'inspection_plan_frequency' AND `dict_value` = 'quarterly';
UPDATE `sys_dict_data` SET `dict_label` = '每年第一周周一14点' WHERE `dict_type` = 'inspection_plan_frequency' AND `dict_value` = 'yearly';
