-- 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)';