-- 1. device_data表新增8Multi字段（逐条执行，已存在会报错可忽略）
ALTER TABLE `device_data` ADD COLUMN `f1` DECIMAL(10,2) DEFAULT NULL COMMENT '测频1(Hz)';
ALTER TABLE `device_data` ADD COLUMN `f2` DECIMAL(10,2) DEFAULT NULL COMMENT '测频2(Hz)';
ALTER TABLE `device_data` ADD COLUMN `cn_reg` INT DEFAULT NULL COMMENT '屏幕状态';
ALTER TABLE `device_data` ADD COLUMN `do_reg` VARCHAR(16) DEFAULT NULL COMMENT '状态输出';
ALTER TABLE `device_data` ADD COLUMN `reg1` DECIMAL(12,3) DEFAULT NULL COMMENT '从机数据1';
ALTER TABLE `device_data` ADD COLUMN `reg2` DECIMAL(12,3) DEFAULT NULL COMMENT '从机数据2';
ALTER TABLE `device_data` ADD COLUMN `tv` INT DEFAULT NULL COMMENT '显示';
ALTER TABLE `device_data` ADD COLUMN `save_flag` INT DEFAULT NULL COMMENT '边缘存储';
ALTER TABLE `device_data` ADD COLUMN `oee` INT DEFAULT NULL COMMENT 'OEE计算值';
ALTER TABLE `device_data` ADD COLUMN `dt` INT DEFAULT NULL COMMENT '采样间隔(秒)';
ALTER TABLE `device_data` ADD COLUMN `power1` DECIMAL(12,3) DEFAULT NULL COMMENT '功率1';
ALTER TABLE `device_data` ADD COLUMN `power2` DECIMAL(12,3) DEFAULT NULL COMMENT '功率2';

-- 2. 触发器（8AdPro计数器累计）
DROP TRIGGER IF EXISTS `update_counter_totals_on_insert`;

DELIMITER $$
CREATE TRIGGER `update_counter_totals_on_insert` 
BEFORE INSERT ON `device_data` 
FOR EACH ROW 
BEGIN
    DECLARE last_c1 BIGINT UNSIGNED DEFAULT 0;
    DECLARE last_c2 BIGINT UNSIGNED DEFAULT 0;
    DECLARE proto VARCHAR(16) DEFAULT '8ADPRO';
    
    SELECT IFNULL(protocol_type, '8ADPRO') INTO proto FROM device WHERE id = NEW.device_id LIMIT 1;
    
    IF proto = '8ADPRO' OR proto IS NULL THEN
        SELECT IFNULL(counter1_total, 0), IFNULL(counter2_total, 0) INTO last_c1, last_c2
        FROM device_data WHERE device_id = NEW.device_id ORDER BY collected_at DESC LIMIT 1;
        
        SET NEW.counter1_total = IF(NEW.counter1 > 0, last_c1 + NEW.counter1, last_c1);
        SET NEW.counter2_total = IF(NEW.counter2 > 0, last_c2 + NEW.counter2, last_c2);
    END IF;
END$$
DELIMITER ;

-- =====================================================
-- 3. cn_reg 屏幕状态值说明（下位机已处理，直接使用）
-- =====================================================
-- cn_reg状态值定义：
-- 0 = 计划停机
-- 1 = 正常工作
-- 2 = 待机
-- 3 = 故障
-- 4 = 在修
-- 5 = 缺人
-- 6 = 缺料
-- 7 = 清零
-- 注：8Multi协议使用cn_reg替代status_work/status_stop/status_fault等字段

-- =====================================================
-- 4. 更新cn_reg字段注释（可选）
-- =====================================================
ALTER TABLE `device_data` MODIFY COLUMN `cn_reg` INT DEFAULT NULL COMMENT '屏幕状态(0计划停机/1正常工作/2待机/3故障/4在修/5缺人/6缺料/7清零)';

-- =====================================================
-- 5. 8Multi V2.8 废弃字段说明（保留兼容，不删除）
-- =====================================================
-- 以下字段在8Multi V2.8协议中不再使用，但保留以兼容8ADPRO和旧版本：
-- 
-- | 废弃字段                    | 替代方案           | 说明                    |
-- |-----------------------------|--------------------|-----------------------|
-- | current1_raw, current2_raw  | current1_value     | 下位机已换算，直接传实际值  |
-- | quality1_raw, quality2_raw  | quality1_value     | 下位机已换算，直接传实际值  |
-- | status_work/stop/fault/reset| cn_reg (0-7)       | 统一用屏幕状态            |
-- | frequency1, frequency2      | f1, f2             | 使用新测频字段            |
-- | counter1_current/delta      | counter1           | 直接使用计数增量          |
-- | counter2_current/delta      | counter2           | 直接使用计数增量          |
-- | counter1_total_8multi       | counter1_total     | 统一用counter1_total     |
-- | counter2_total_8multi       | counter2_total     | 统一用counter2_total     |
-- | relay_power/alarm           | do_reg             | 统一用状态输出            |
-- | do_soft_start, do_stop      | do_reg             | 统一用状态输出            |
-- | slave_data1, slave_data2    | reg1, reg2         | 使用新从机数据字段         |
-- | touchscreen_data            | tv                 | 使用新显示字段            |

-- =====================================================
-- 6. 8Multi卡号ID格式说明
-- =====================================================
-- 卡号ID共12位: 品牌1位 + 年份1位 + 月日4位 + 用户号2位 + 序号4位
-- 示例: 101126010002
--   1    - 品牌前缀
--   0    - 年份(0=2025, 1=2026, 2=2027...)
--   1126 - 月日(11月26日)
--   01   - 用户号
--   0002 - 设备序号（后端使用后4位作为设备号）

-- =====================================================
-- 7. 设备扩展字段（设备位置、品牌、型号、车间、工段）
-- =====================================================
ALTER TABLE `device` ADD COLUMN `location` VARCHAR(255) DEFAULT NULL COMMENT '设备位置';
ALTER TABLE `device` ADD COLUMN `brand` VARCHAR(128) DEFAULT NULL COMMENT '设备品牌';
ALTER TABLE `device` ADD COLUMN `model` VARCHAR(128) DEFAULT NULL COMMENT '设备型号';
ALTER TABLE `device` ADD COLUMN `workshop_id` BIGINT DEFAULT NULL COMMENT '车间ID(关联md_workshop)';
ALTER TABLE `device` ADD COLUMN `section` VARCHAR(64) DEFAULT NULL COMMENT '工段(关联pro_process)';