-- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TI_ACCUML AFTER INSERT ON accuml FOR EACH ROW BEGIN /* * 触发器命名规则 * 命名规则,数据库表格:数据库名.表名,小写 * 局部变量驼峰写法, * 列名:大写加下划线 */ /* * 生成Acc后, * 1,自动生成Acc_limit_info的记录, * 2,ANALOG_MAP_TO_FES中添加一条记录 */ IF COALESCE(NEW.IS_LIMIT,0) <> 0 THEN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO accuml_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, '1', '1', 0, 0, 0, 0, 0, 0, 5, 5, 0, 1, '', 5, 0, 1, 0, 0, NEW.POINT_TP_NAME ); ELSE INSERT INTO accuml_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, 0, ALARM_PRIORITY, '', ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, NEW.POINT_TP_NAME FROM accuml_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME ; END IF; END IF; IF COALESCE(NEW.IS_SAMPLE,0) <> 0 THEN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES ( NEW.TAG_NAME, NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD,NEW.SAMPLE_DEADBAND, 0, 0, 0 ); END IF; IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO accuml_map_to_fes ( KEY_ID_TAG, LOCATION_ID, SUB_SYSTEM, RTU_TAG, DOT_NO, BASE, COEFF, RANGE_UP, RANGE_LOW, IS_FILTER, PERCENT, DEV_TYPE, POINT_TP_NAME, DESCRIPTION) VALUES ( concat('accuml' , '.' , NEW.TAG_NAME), NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.RTU_TAG , '-1', '0', '1',99999999999999.9, 0, 1, 20, NEW.DEV_TYPE,NEW.POINT_TP_NAME,NEW.DESCRIPTION ); ELSE INSERT INTO accuml_map_to_fes ( KEY_ID_TAG, LOCATION_ID, SUB_SYSTEM, RTU_TAG, DOT_NO, BASE, COEFF, RANGE_UP, RANGE_LOW, IS_FILTER, PERCENT, DEV_TYPE, POINT_TP_NAME, DESCRIPTION) SELECT concat('accuml' , '.' , NEW.TAG_NAME), NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.RTU_TAG , '-1', '0', '1', RANGE_UP,RANGE_LOW, IS_FILTER, PERCENT, NEW.DEV_TYPE,NEW.POINT_TP_NAME,NEW.DESCRIPTION FROM accuml_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'accuml', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('accuml')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TU_ACCUML AFTER UPDATE ON accuml FOR EACH ROW BEGIN #由limit变不limit IF COALESCE(OLD.IS_LIMIT,0) != 0 AND COALESCE(NEW.IS_LIMIT,0) = 0 THEN BEGIN DELETE FROM accuml_limit_info WHERE TAG_NAME=OLD.TAG_NAME; END; #由不limit变limit ELSEIF COALESCE(OLD.IS_LIMIT,0) = 0 AND COALESCE(NEW.IS_LIMIT,0) != 0 THEN BEGIN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO accuml_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, '1', '1', 0, 0, 0, 0, 0, 0, 5, 5, 0, 1, '', 5, 0, 1, 0, 0, NEW.POINT_TP_NAME ); ELSE INSERT INTO accuml_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, 0, ALARM_PRIORITY, '', ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, NEW.POINT_TP_NAME FROM accuml_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME ; END IF; END; #更新limit表 ELSE BEGIN IF NEW.TAG_NAME <> OLD.TAG_NAME OR NEW.LOCATION_ID <> OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.POINT_TP_NAME <> OLD.POINT_TP_NAME THEN BEGIN UPDATE accuml_limit_info SET accuml_limit_info.TAG_NAME = NEW.TAG_NAME, accuml_limit_info.LOCATION_ID = NEW.LOCATION_ID, accuml_limit_info.SUB_SYSTEM = NEW.SUB_SYSTEM, accuml_limit_info.POINT_TP_NAME = NEW.POINT_TP_NAME WHERE accuml_limit_info.TAG_NAME = OLD.TAG_NAME; END; END IF; END; END IF; #sample变成不采样 IF COALESCE(OLD.IS_SAMPLE,0) != 0 AND COALESCE(NEW.IS_SAMPLE,0) = 0 THEN BEGIN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END; #由不采样变成采样 ELSEIF COALESCE(OLD.IS_SAMPLE,0) = 0 AND COALESCE(NEW.IS_SAMPLE,0) != 0 THEN BEGIN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES (NEW.TAG_NAME, NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD,NEW.SAMPLE_DEADBAND, 0, 0, 0 ); END; #更新采样表 ELSE BEGIN IF NEW.TAG_NAME<>OLD.TAG_NAME OR NEW.DESCRIPTION<>OLD.DESCRIPTION OR NEW.LOCATION_ID<>OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.DEVICE<>OLD.DEVICE OR NEW.POINT_TYPE<>OLD.POINT_TYPE OR NEW.SAMPLE_PERIOD<>OLD.SAMPLE_PERIOD OR NEW.SAMPLE_DEADBAND<>OLD.SAMPLE_DEADBAND THEN BEGIN UPDATE sample_define SET sample_define.TAG_NAME = NEW.TAG_NAME , sample_define.DESCRIPTION = NEW.DESCRIPTION , sample_define.LOCATION_ID = NEW.LOCATION_ID , sample_define.SUB_SYSTEM = NEW.SUB_SYSTEM , sample_define.DEVICE_TAG = NEW.DEVICE, sample_define.POINT_TYPE = NEW.POINT_TYPE , sample_define.SAMPLE_PERIOD = NEW.SAMPLE_PERIOD , sample_define.SAMPLE_DEADBAND = NEW.SAMPLE_DEADBAND WHERE TAG_NAME= OLD.TAG_NAME; END; END IF; END; END IF; IF NEW.TAG_NAME <> OLD.TAG_NAME OR NEW.LOCATION_ID <> OLD.LOCATION_ID OR NEW.SUB_SYSTEM <> OLD.SUB_SYSTEM OR NEW.RTU_TAG <> OLD.RTU_TAG OR NEW.DEV_TYPE <> OLD.DEV_TYPE OR NEW.POINT_TP_NAME <> OLD.POINT_TP_NAME OR NEW.DESCRIPTION <> OLD.DESCRIPTION THEN BEGIN UPDATE accuml_map_to_fes SET KEY_ID_TAG = concat('accuml' , '.' , NEW.TAG_NAME), LOCATION_ID =NEW.LOCATION_ID, SUB_SYSTEM = NEW.SUB_SYSTEM, RTU_TAG = NEW.RTU_TAG, DEV_TYPE = NEW.DEV_TYPE, POINT_TP_NAME = NEW.POINT_TP_NAME, DESCRIPTION = NEW.DESCRIPTION WHERE KEY_ID_TAG=concat('accuml' , '.' , OLD.TAG_NAME) ; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'accuml', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('accuml')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_ACCUML BEFORE DELETE ON accuml FOR EACH ROW BEGIN IF COALESCE(OLD.IS_LIMIT,0) <> 0 THEN DELETE FROM accuml_limit_info WHERE TAG_NAME=OLD.TAG_NAME ; END IF; IF COALESCE(OLD.IS_SAMPLE,0) <> 0 THEN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END IF; DELETE FROM accuml_map_to_fes WHERE KEY_ID_TAG=concat('accuml' , '.' , OLD.TAG_NAME); END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ACCUML` AFTER DELETE ON `accuml` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'accuml', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('accuml')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ACS_DEVICE_INFO` AFTER INSERT ON `acs_device_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'acs_device_info', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('acs_device_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ACS_DEVICE_INFO` AFTER UPDATE ON `acs_device_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'acs_device_info', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('acs_device_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ACS_DEVICE_INFO` AFTER DELETE ON `acs_device_info` FOR EACH ROW BEGIN delete from acs_device_node_map where ACS_DEVICE_TAG = old.TAG_NAME; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'acs_device_info', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('acs_device_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ACS_DEVICE_NODE_MAP` AFTER INSERT ON `acs_device_node_map` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'acs_device_node_map', 'NODE_NAME', '', NEW.NODE_NAME, getTableSubSystem('acs_device_node_map')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ACS_DEVICE_NODE_MAP` AFTER UPDATE ON `acs_device_node_map` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'acs_device_node_map', 'NODE_NAME', OLD.NODE_NAME, NEW.NODE_NAME, getTableSubSystem('acs_device_node_map')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ACS_DEVICE_NODE_MAP` AFTER DELETE ON `acs_device_node_map` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'acs_device_node_map', 'NODE_NAME', OLD.NODE_NAME, '', getTableSubSystem('acs_device_node_map')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ALARM_ACTION_DEFINE` AFTER INSERT ON `alarm_action_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'alarm_action_define', 'action_id', '', NEW.ACTION_ID, getTableSubSystem('alarm_action_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ALARM_ACTION_DEFINE` AFTER UPDATE ON `alarm_action_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'alarm_action_define', 'action_id', OLD.ACTION_ID, NEW.ACTION_ID, getTableSubSystem('alarm_action_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ALARM_ACTION_DEFINE` AFTER DELETE ON `alarm_action_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'alarm_action_define', 'action_id', OLD.ACTION_ID, '', getTableSubSystem('alarm_action_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ALARM_KEYWORD_DEFINE` AFTER INSERT ON `alarm_keyword_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'alarm_keyword_define', 'keyword_id', '', NEW.KEYWORD_ID, getTableSubSystem('alarm_keyword_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ALARM_KEYWORD_DEFINE` AFTER UPDATE ON `alarm_keyword_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'alarm_keyword_define', 'keyword_id', OLD.KEYWORD_ID, NEW.KEYWORD_ID, getTableSubSystem('alarm_keyword_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ALARM_KEYWORD_DEFINE` AFTER DELETE ON `alarm_keyword_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'alarm_keyword_define', 'keyword_id', OLD.KEYWORD_ID, '', getTableSubSystem('alarm_keyword_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ALARM_LEVEL_DEFINE` AFTER INSERT ON `alarm_level_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'alarm_level_define', 'priority_id', '', NEW.PRIORITY_ID, getTableSubSystem('alarm_level_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ALARM_LEVEL_DEFINE` AFTER UPDATE ON `alarm_level_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'alarm_level_define', 'priority_id', OLD.PRIORITY_ID, NEW.PRIORITY_ID, getTableSubSystem('alarm_level_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ALARM_LEVEL_DEFINE` AFTER DELETE ON `alarm_level_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'alarm_level_define', 'priority_id', OLD.PRIORITY_ID, '', getTableSubSystem('alarm_level_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ALARM_LEVEL_SOUND_DEF` AFTER INSERT ON `alarm_level_sound_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'alarm_level_sound_def', 'priority_id,region_id', '', concat(NEW.PRIORITY_ID,',',NEW.REGION_ID), getTableSubSystem('alarm_level_sound_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ALARM_LEVEL_SOUND_DEF` AFTER UPDATE ON `alarm_level_sound_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'alarm_level_sound_def', 'priority_id,region_id', concat(OLD.PRIORITY_ID,',',OLD.REGION_ID), concat(NEW.PRIORITY_ID,',',NEW.REGION_ID), getTableSubSystem('alarm_level_sound_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ALARM_LEVEL_SOUND_DEF` AFTER DELETE ON `alarm_level_sound_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'alarm_level_sound_def', 'priority_id,region_id', concat(OLD.PRIORITY_ID,',',OLD.REGION_ID), '', getTableSubSystem('alarm_level_sound_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ALARM_MANNER_DEFINE` AFTER INSERT ON `alarm_manner_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'alarm_manner_define', 'manner_id', '', NEW.MANNER_ID, getTableSubSystem('alarm_manner_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ALARM_MANNER_DEFINE` AFTER UPDATE ON `alarm_manner_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'alarm_manner_define', 'manner_id', OLD.MANNER_ID, NEW.MANNER_ID, getTableSubSystem('alarm_manner_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ALARM_MANNER_DEFINE` AFTER DELETE ON `alarm_manner_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'alarm_manner_define', 'manner_id', OLD.MANNER_ID, '', getTableSubSystem('alarm_manner_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ALARM_STATUS_DEFINE` AFTER INSERT ON `alarm_status_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'alarm_status_define', 'alarm_type,status_value', '', concat(NEW.ALARM_TYPE,',',NEW.STATUS_VALUE), getTableSubSystem('alarm_status_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ALARM_STATUS_DEFINE` AFTER UPDATE ON `alarm_status_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'alarm_status_define', 'alarm_type,status_value', concat(OLD.ALARM_TYPE,',',OLD.STATUS_VALUE), concat(NEW.ALARM_TYPE,',',NEW.STATUS_VALUE), getTableSubSystem('alarm_status_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ALARM_STATUS_DEFINE` AFTER DELETE ON `alarm_status_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'alarm_status_define', 'alarm_type,status_value', concat(OLD.ALARM_TYPE,',',OLD.STATUS_VALUE), '', getTableSubSystem('alarm_status_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_ALARM_TYPE_DEFINE` AFTER INSERT ON `alarm_type_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'alarm_type_define', 'type_id', '', NEW.TYPE_ID, getTableSubSystem('alarm_type_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_ALARM_TYPE_DEFINE` AFTER UPDATE ON `alarm_type_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'alarm_type_define', 'type_id', OLD.TYPE_ID, NEW.TYPE_ID, getTableSubSystem('alarm_type_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ALARM_TYPE_DEFINE` AFTER DELETE ON `alarm_type_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'alarm_type_define', 'type_id', OLD.TYPE_ID, '', getTableSubSystem('alarm_type_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TI_ANALOG AFTER INSERT ON analog FOR EACH ROW BEGIN IF COALESCE(NEW.IS_CONTROL,0) <> 0 THEN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO analog_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) values ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM,0, 1, 30, 30, 0, 1, 9999999.9, 0, 0.01, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME ); ELSE INSERT INTO analog_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM,CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME FROM analog_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; END IF; IF COALESCE(NEW.IS_LIMIT,0) <> 0 THEN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO analog_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, 1, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 1, '', 5, 0, 1, 0, 0, NEW.POINT_TP_NAME ); ELSE INSERT INTO analog_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, 0, ALARM_PRIORITY, '', ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, NEW.POINT_TP_NAME FROM analog_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME ; END IF; END IF; IF COALESCE(NEW.IS_SAMPLE,0) <> 0 THEN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES ( NEW.TAG_NAME, NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD,NEW.SAMPLE_DEADBAND, 0, 0, 0 ); END IF; IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO analog_map_to_fes ( KEY_ID_TAG, LOCATION_ID, SUB_SYSTEM, DEV_TYPE, POINT_TP_NAME, RTU_TAG, DOT_NO, IS_FILTER, PERCENT, IS_VALID, DEADBAND, ZEROBAND, BASE, COEFF, RANGE_UP, RANGE_LOW, DESCRIPTION) VALUES ( concat('analog' , '.' , NEW.TAG_NAME), NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEV_TYPE, NEW.POINT_TP_NAME, NEW.RTU_TAG, '-1', 1, 20, 1, 0.01, 0.0001, 0, 1, 9999999.9, 0, NEW.DESCRIPTION ); ELSE INSERT INTO analog_map_to_fes ( KEY_ID_TAG, LOCATION_ID, SUB_SYSTEM, DEV_TYPE, POINT_TP_NAME, RTU_TAG, DOT_NO, IS_FILTER, PERCENT, IS_VALID, DEADBAND, ZEROBAND, BASE, COEFF, RANGE_UP, RANGE_LOW, DESCRIPTION) SELECT concat('analog' , '.' , NEW.TAG_NAME), NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEV_TYPE, NEW.POINT_TP_NAME, NEW.RTU_TAG, '-1', IS_FILTER, PERCENT, IS_VALID, DEADBAND, ZEROBAND, BASE, COEFF, RANGE_UP, RANGE_LOW, NEW.DESCRIPTION FROM analog_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'analog', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('analog')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TU_ANALOG AFTER UPDATE ON analog FOR EACH ROW BEGIN IF COALESCE(OLD.IS_CONTROL,0) != 0 AND COALESCE(NEW.IS_CONTROL,0) = 0 THEN BEGIN DELETE FROM analog_control WHERE TAG_NAME=OLD.TAG_NAME; DELETE FROM opt_interlock_para WHERE TAG_NAME=OLD.TAG_NAME; END; ELSEIF COALESCE(OLD.IS_CONTROL,0) = 0 AND COALESCE(NEW.IS_CONTROL,0) != 0 THEN BEGIN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO analog_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) values ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM,0, 1, 30, 30, 0, 1, 9999999.9, 0, 0.01, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME ); ELSE INSERT INTO analog_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM,CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME FROM analog_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; END; ELSE BEGIN IF NEW.TAG_NAME <> OLD.TAG_NAME OR NEW.LOCATION_ID <> OLD.LOCATION_ID OR NEW.SUB_SYSTEM <> OLD.SUB_SYSTEM OR NEW.POINT_TP_NAME <> OLD.POINT_TP_NAME OR NEW.RTU_TAG <> OLD.RTU_TAG THEN UPDATE analog_control SET analog_control.TAG_NAME = NEW.TAG_NAME, analog_control.LOCATION_ID = NEW.LOCATION_ID, analog_control.SUB_SYSTEM = NEW.SUB_SYSTEM, analog_control.POINT_TP_NAME = NEW.POINT_TP_NAME, analog_control.RTU_TAG = NEW.RTU_TAG WHERE analog_control.TAG_NAME = OLD.TAG_NAME; END IF; END; END IF; IF COALESCE(OLD.IS_LIMIT,0) != 0 AND COALESCE(NEW.IS_LIMIT,0) = 0 THEN BEGIN DELETE FROM analog_limit_info WHERE TAG_NAME=OLD.TAG_NAME; END; ELSEIF COALESCE(OLD.IS_LIMIT,0) = 0 AND COALESCE(NEW.IS_LIMIT,0) != 0 THEN BEGIN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO analog_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, 1, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 1, '', 5, 0, 1, 0, 0, NEW.POINT_TP_NAME ); ELSE INSERT INTO analog_limit_info ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, CROSS_TIME, ALARM_PRIORITY, PIC_NAME, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, 0, ALARM_PRIORITY, '', ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, NEW.POINT_TP_NAME FROM analog_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME ; END IF; END; ELSE BEGIN IF NEW.TAG_NAME <> OLD.TAG_NAME OR NEW.LOCATION_ID <> OLD.LOCATION_ID OR NEW.SUB_SYSTEM <> OLD.SUB_SYSTEM OR NEW.POINT_TP_NAME <> OLD.POINT_TP_NAME THEN UPDATE analog_limit_info SET analog_limit_info.TAG_NAME = NEW.TAG_NAME , analog_limit_info.LOCATION_ID = NEW.LOCATION_ID , analog_limit_info.SUB_SYSTEM = NEW.SUB_SYSTEM , analog_limit_info.POINT_TP_NAME = NEW.POINT_TP_NAME WHERE analog_limit_info.TAG_NAME = OLD.TAG_NAME; END IF; END; END IF; IF COALESCE(OLD.IS_SAMPLE,0) != 0 AND COALESCE(NEW.IS_SAMPLE,0) = 0 THEN BEGIN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END; ELSEIF COALESCE(OLD.IS_SAMPLE,0) = 0 AND COALESCE(NEW.IS_SAMPLE,0) != 0 THEN BEGIN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES ( NEW.TAG_NAME, NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD,NEW.SAMPLE_DEADBAND, 0, 0, 0 ); END; ELSE BEGIN IF NEW.TAG_NAME <> OLD.TAG_NAME OR NEW.DESCRIPTION <> OLD.DESCRIPTION OR NEW.LOCATION_ID <> OLD.LOCATION_ID OR NEW.SUB_SYSTEM <> OLD.SUB_SYSTEM OR NEW.DEVICE <> OLD.DEVICE OR NEW.POINT_TYPE <> OLD.POINT_TYPE OR NEW.SAMPLE_PERIOD <> OLD.SAMPLE_PERIOD OR NEW.SAMPLE_DEADBAND <> OLD.SAMPLE_DEADBAND THEN UPDATE sample_define SET sample_define.TAG_NAME = NEW.TAG_NAME , sample_define.DESCRIPTION = NEW.DESCRIPTION , sample_define.LOCATION_ID = NEW.LOCATION_ID , sample_define.SUB_SYSTEM = NEW.SUB_SYSTEM , sample_define.DEVICE_TAG = NEW.DEVICE, sample_define.POINT_TYPE = NEW.POINT_TYPE , sample_define.SAMPLE_PERIOD = NEW.SAMPLE_PERIOD , sample_define.SAMPLE_DEADBAND = NEW.SAMPLE_DEADBAND WHERE TAG_NAME= OLD.TAG_NAME; END IF; END; END IF; IF NEW.TAG_NAME <> OLD.TAG_NAME OR NEW.LOCATION_ID <> OLD.LOCATION_ID OR NEW.SUB_SYSTEM <> OLD.SUB_SYSTEM OR NEW.DEV_TYPE <> OLD.DEV_TYPE OR NEW.RTU_TAG <> OLD.RTU_TAG OR NEW.POINT_TYPE <> OLD.POINT_TYPE OR NEW.POINT_TP_NAME <> OLD.POINT_TP_NAME OR NEW.DESCRIPTION <> OLD.DESCRIPTION THEN UPDATE analog_map_to_fes SET KEY_ID_TAG = concat('analog' , '.' , NEW.TAG_NAME), LOCATION_ID =NEW.LOCATION_ID, SUB_SYSTEM = NEW.SUB_SYSTEM, DEV_TYPE = NEW.DEV_TYPE, POINT_TP_NAME = NEW.POINT_TP_NAME, RTU_TAG = NEW.RTU_TAG, DESCRIPTION = NEW.DESCRIPTION WHERE KEY_ID_TAG=concat('analog' , '.' , OLD.TAG_NAME) ; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'analog', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('analog')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_ANALOG BEFORE DELETE ON analog FOR EACH ROW BEGIN IF COALESCE(OLD.IS_CONTROL,0) <> 0 THEN DELETE FROM analog_control WHERE TAG_NAME=OLD.TAG_NAME ; END IF; IF COALESCE(OLD.IS_LIMIT,0) <> 0 THEN DELETE FROM analog_limit_info WHERE TAG_NAME=OLD.TAG_NAME ; END IF; IF COALESCE(OLD.IS_SAMPLE,0) <> 0 THEN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END IF; DELETE FROM analog_map_to_fes WHERE KEY_ID_TAG=concat('analog' , '.' , OLD.TAG_NAME) ; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_ANALOG` AFTER DELETE ON `analog` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'analog', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('analog')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_BAS_CRAFT_DEF` AFTER INSERT ON `bas_craft_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'bas_craft_def', 'id', '', NEW.ID, getTableSubSystem('bas_craft_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_BAS_CRAFT_DEF` AFTER UPDATE ON `bas_craft_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'bas_craft_def', 'id', OLD.ID, NEW.ID, getTableSubSystem('bas_craft_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_BAS_CRAFT_DEF` AFTER DELETE ON `bas_craft_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'bas_craft_def', 'id', OLD.ID, '', getTableSubSystem('bas_craft_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_BAS_MODE_DEF` AFTER INSERT ON `bas_mode_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'bas_mode_def', 'id,location_id,craft_id,mode_no', '', concat(NEW.ID,',',NEW.LOCATION_ID,',',NEW.CRAFT_ID,',',NEW.MODE_NO), getTableSubSystem('bas_mode_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_BAS_MODE_DEF` AFTER UPDATE ON `bas_mode_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'bas_mode_def', 'id,location_id,craft_id,mode_no', concat(OLD.ID,',',OLD.LOCATION_ID,',',OLD.CRAFT_ID,',',OLD.MODE_NO), concat(NEW.ID,',',NEW.LOCATION_ID,',',NEW.CRAFT_ID,',',NEW.MODE_NO), getTableSubSystem('bas_mode_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_BAS_MODE_DEF` AFTER DELETE ON `bas_mode_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'bas_mode_def', 'id,location_id,craft_id,mode_no', concat(OLD.ID,',',OLD.LOCATION_ID,',',OLD.CRAFT_ID,',',OLD.MODE_NO), '', getTableSubSystem('bas_mode_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_BAS_MODE_TYPE` AFTER INSERT ON `bas_mode_type` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'bas_mode_type', 'id', '', NEW.ID, getTableSubSystem('bas_mode_type')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_BAS_MODE_TYPE` AFTER UPDATE ON `bas_mode_type` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'bas_mode_type', 'id', OLD.ID, NEW.ID, getTableSubSystem('bas_mode_type')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_BAS_MODE_TYPE` AFTER DELETE ON `bas_mode_type` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'bas_mode_type', 'id', OLD.ID, '', getTableSubSystem('bas_mode_type')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DEV_GROUP` AFTER INSERT ON `dev_group` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dev_group', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('dev_group')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_DEV_GROUP AFTER UPDATE ON dev_group FOR EACH ROW BEGIN IF NEW.TAG_NAME <> OLD.TAG_NAME THEN BEGIN UPDATE dev_info SET GROUP_TAG_NAME = NEW.TAG_NAME WHERE GROUP_TAG_NAME = OLD.TAG_NAME; END; END IF; IF NEW.RTU_NO <> COALESCE(OLD.RTU_NO,-1) THEN BEGIN DECLARE rtuTag varchar(64) DEFAULT ''; SELECT TAG_NAME INTO rtuTag FROM fes_rtu_para WHERE fes_rtu_para.RTU_NO = NEW.RTU_NO; UPDATE accuml,dev_info SET accuml.RTU_TAG = rtuTag WHERE dev_info.GROUP_TAG_NAME = NEW.TAG_NAME AND accuml.DEVICE = dev_info.TAG_NAME; UPDATE analog,dev_info SET analog.RTU_TAG = rtuTag WHERE dev_info.GROUP_TAG_NAME = NEW.TAG_NAME AND analog.DEVICE = dev_info.TAG_NAME; UPDATE digital,dev_info SET digital.RTU_TAG = rtuTag WHERE dev_info.GROUP_TAG_NAME = NEW.TAG_NAME AND digital.DEVICE = dev_info.TAG_NAME; UPDATE mix,dev_info SET mix.RTU_TAG = rtuTag WHERE dev_info.GROUP_TAG_NAME = NEW.TAG_NAME AND mix.DEVICE = dev_info.TAG_NAME; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dev_group', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('dev_group')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_DEV_GROUP AFTER DELETE ON dev_group FOR EACH ROW BEGIN DELETE FROM dev_info WHERE GROUP_TAG_NAME = OLD.TAG_NAME; #前置的设备先不删除 IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dev_group', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('dev_group')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TI_DEV_INFO AFTER INSERT ON dev_info FOR EACH ROW BEGIN INSERT INTO accuml( TAG_NAME, DESCRIPTION, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, RTU_TAG, GRAY, CONTRAST, QCOLOR, RAW_VALUE, VALUE, STATUS, LAST_UPDATE_TIME, LAST_CHANGE_TIME, UNIT_ID, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, REGION_ID, OPT_HANDOVER_GROUP, IS_LIMIT, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, DEV_TYPE, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND, CAMERA_TAG, PRESET_ID) SELECT concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)),DESCRIPTION, NEW.TAG_NAME,SEQ_NO, NEW.LOCATION_ID, NEW.SUB_SYSTEM, '', NEW.GRAY, NEW.CONTRAST, NEW.QCOLOR,'0', NEW.VALUE, NEW.STATUS, 0, 0, UNIT_ID, '', '', '', NEW.REGION_ID, NEW.OPT_HANDOVER_GROUP, IS_LIMIT, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, NEW.DEV_TYPE, TAG_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND, '', '' FROM accuml_temp_define WHERE DEV_TP_NAME=NEW.DEV_TP_NAME; INSERT INTO analog( TAG_NAME, DESCRIPTION, RTU_TAG, DEV_TYPE, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, IS_CONTROL,GRAY, CONTRAST, QCOLOR, VALUE, STATUS, LAST_UPDATE_TIME, LAST_CHANGE_TIME, UNIT_ID, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, REGION_ID, OPT_HANDOVER_GROUP, IS_LIMIT, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND, CAMERA_TAG, PRESET_ID) SELECT concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)), DESCRIPTION , '', NEW.DEV_TYPE,NEW.TAG_NAME,SEQ_NO, NEW.LOCATION_ID,NEW.SUB_SYSTEM,IS_CONTROL,NEW.GRAY,NEW.CONTRAST,NEW.QCOLOR,NEW.VALUE,NEW.STATUS,'0', '0', UNIT_ID, '', '', '', NEW.REGION_ID,NEW.OPT_HANDOVER_GROUP,IS_LIMIT, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, TAG_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND, '', '' FROM analog_temp_define WHERE DEV_TP_NAME=NEW.DEV_TP_NAME; INSERT INTO digital( TAG_NAME, DESCRIPTION, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, RTU_TAG, IS_CONTROL, STATE_TEXT_NAME, VALUE_NUM, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, LAST_UPDATE_TIME, VALUE1, STATUS1, LAST_CHANGE_TIME1, VALUE2, STATUS2, LAST_CHANGE_TIME2, VALUE3, STATUS3, LAST_CHANGE_TIME3, VALUE4, STATUS4, LAST_CHANGE_TIME4, VALUE5, STATUS5, LAST_CHANGE_TIME5, ALARM_PRIORITY, PIC_NAME, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, ALARM_DELAY_TIME,INPUT_DELAY_TIME, IS_WATER_ALM,IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TYPE, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, IS_ALARM_FREQ, ALARM_FREQ, ALARM_FREQ_DESC, IS_ALARM_TIME, ALARM_TIME, ALARM_TIME_DESC, ALARM_FREQ_RANGE, INFER_NAME, POINT_TYPE,POINT_CLASS, POINT_PROPERTY, POINT_SORT, CAMERA_TAG, PRESET_ID ) SELECT concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)),DESCRIPTION, NEW.TAG_NAME,SEQ_NO, NEW.LOCATION_ID,NEW.SUB_SYSTEM,'', IS_CONTROL, STATE_TEXT_NAME, VALUE_NUM, NEW.GRAY,NEW.CONTRAST,NEW.QCOLOR,NEW.VALUE,NEW.STATUS,'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', ALARM_PRIORITY, '', '', '', '', ALARM_DELAY_TIME,INPUT_DELAY_TIME, IS_WATER_ALM,IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, NEW.REGION_ID,NEW.OPT_HANDOVER_GROUP,IS_SUMMARY, NEW.SUMMARY_VALUE,NEW.SUMMARY_STATUS,NEW.DEV_TYPE,TAG_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, IS_ALARM_FREQ, ALARM_FREQ, ALARM_FREQ_DESC, IS_ALARM_TIME, ALARM_TIME, ALARM_TIME_DESC, ALARM_FREQ_RANGE, '', POINT_TYPE,POINT_CLASS, POINT_PROPERTY, POINT_SORT, '', '' FROM digital_temp_define WHERE DEV_TP_NAME=NEW.DEV_TP_NAME; INSERT INTO mix( TAG_NAME, DESCRIPTION, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, RTU_TAG, IS_CONTROL, STATE_TEXT_NAME, GRAY, CONTRAST, QCOLOR, RAW_VALUE, VALUE, STATUS, LAST_UPDATE_TIME, LAST_CHANGE_TIME, METHOD, ALARM_PRIORITY, PIC_NAME, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, ALARM_DELAY_TIME, IS_WATER_ALM,IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TYPE, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, POINT_TYPE,POINT_CLASS, POINT_PROPERTY, POINT_SORT, CAMERA_TAG, PRESET_ID) SELECT concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)),DESCRIPTION, NEW.TAG_NAME,SEQ_NO, NEW.LOCATION_ID,NEW.SUB_SYSTEM,'', IS_CONTROL, STATE_TEXT_NAME, NEW.GRAY,NEW.CONTRAST,NEW.QCOLOR,'0', NEW.VALUE,NEW.STATUS, '0', '0' , '', ALARM_PRIORITY, '', '', '', '', ALARM_DELAY_TIME, IS_WATER_ALM,IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, NEW.REGION_ID,NEW.OPT_HANDOVER_GROUP,NEW.IS_SUMMARY,NEW.SUMMARY_VALUE,NEW.SUMMARY_STATUS,NEW.DEV_TYPE,TAG_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, POINT_TYPE,POINT_CLASS, POINT_PROPERTY, POINT_SORT, '', '' FROM mix_temp_define WHERE DEV_TP_NAME=NEW.DEV_TP_NAME; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dev_info', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('dev_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TU_DEV_INFO AFTER UPDATE ON dev_info FOR EACH ROW label_body:BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dev_info', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('dev_info')); END IF; IF OLD.CONTRAST = NEW.CONTRAST AND OLD.DESCRIPTION = NEW.DESCRIPTION AND OLD.DEV_TYPE = NEW.DEV_TYPE AND OLD.GRAY = NEW.GRAY AND OLD.LOCATION_ID = NEW.LOCATION_ID AND OLD.OPT_HANDOVER_GROUP = NEW.OPT_HANDOVER_GROUP AND OLD.QCOLOR = NEW.QCOLOR AND OLD.REGION_ID = NEW.REGION_ID AND OLD.STATUS = NEW.STATUS AND OLD.SUB_SYSTEM = NEW.SUB_SYSTEM AND OLD.TAG_NAME = NEW.TAG_NAME AND OLD.VALUE = NEW.VALUE THEN LEAVE label_body; END IF; UPDATE accuml SET DEVICE=NEW.TAG_NAME, LOCATION_ID=NEW.LOCATION_ID, SUB_SYSTEM=NEW.SUB_SYSTEM, GRAY=NEW.GRAY, CONTRAST=NEW.CONTRAST, QCOLOR=NEW.QCOLOR, VALUE=NEW.VALUE, STATUS=NEW.STATUS, REGION_ID=NEW.REGION_ID, OPT_HANDOVER_GROUP=NEW.OPT_HANDOVER_GROUP, DEV_TYPE= NEW.DEV_TYPE , TAG_NAME=concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)), DESCRIPTION = DESCRIPTION WHERE DEVICE=OLD.TAG_NAME ; UPDATE analog SET DEVICE=NEW.TAG_NAME, LOCATION_ID=NEW.LOCATION_ID, SUB_SYSTEM=NEW.SUB_SYSTEM, GRAY=NEW.GRAY, CONTRAST=NEW.CONTRAST, QCOLOR=NEW.QCOLOR, VALUE=NEW.VALUE, STATUS=NEW.STATUS, REGION_ID=NEW.REGION_ID, OPT_HANDOVER_GROUP=NEW.OPT_HANDOVER_GROUP, DEV_TYPE= NEW.DEV_TYPE , TAG_NAME=concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)), DESCRIPTION = DESCRIPTION WHERE DEVICE=OLD.TAG_NAME ; UPDATE digital SET DEVICE=NEW.TAG_NAME, LOCATION_ID=NEW.LOCATION_ID, SUB_SYSTEM=NEW.SUB_SYSTEM, GRAY=NEW.GRAY, CONTRAST=NEW.CONTRAST, QCOLOR=NEW.QCOLOR, VALUE=NEW.VALUE, STATUS=NEW.STATUS, REGION_ID=NEW.REGION_ID, OPT_HANDOVER_GROUP=NEW.OPT_HANDOVER_GROUP, DEV_TYPE= NEW.DEV_TYPE , TAG_NAME=concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)), DESCRIPTION = DESCRIPTION WHERE DEVICE=OLD.TAG_NAME ; UPDATE mix SET DEVICE=NEW.TAG_NAME, LOCATION_ID=NEW.LOCATION_ID, SUB_SYSTEM=NEW.SUB_SYSTEM, GRAY=NEW.GRAY, CONTRAST=NEW.CONTRAST, QCOLOR=NEW.QCOLOR, VALUE=NEW.VALUE, STATUS=NEW.STATUS, REGION_ID=NEW.REGION_ID, OPT_HANDOVER_GROUP=NEW.OPT_HANDOVER_GROUP, DEV_TYPE= NEW.DEV_TYPE , TAG_NAME=concat(NEW.TAG_NAME, '.' , getAfterLastDot(TAG_NAME)), DESCRIPTION = DESCRIPTION WHERE DEVICE=OLD.TAG_NAME ; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_DEV_INFO BEFORE DELETE ON dev_info FOR EACH ROW BEGIN DELETE FROM accuml WHERE DEVICE = OLD.TAG_NAME; DELETE FROM analog WHERE DEVICE = OLD.TAG_NAME; DELETE FROM digital WHERE DEVICE = OLD.TAG_NAME; DELETE FROM mix WHERE DEVICE = OLD.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DEV_INFO` AFTER DELETE ON `dev_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dev_info', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('dev_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DEV_TOPO_VER` AFTER INSERT ON `dev_topo_ver` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dev_topo_ver', 'LOCATION_ID', '',NEW.LOCATION_ID, getTableSubSystem('dev_topo_ver')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_DEV_TOPO_VER` AFTER UPDATE ON `dev_topo_ver` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dev_topo_ver', 'LOCATION_ID', OLD.LOCATION_ID, NEW.LOCATION_ID, getTableSubSystem('dev_topo_ver')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DEV_TOPO_VER` AFTER DELETE ON `dev_topo_ver` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dev_topo_ver', 'LOCATION_ID', OLD.LOCATION_ID, '', getTableSubSystem('dev_topo_ver')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DEV_TYPE_DEF` AFTER INSERT ON `dev_type_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dev_type_def', 'dev_type_id', '', NEW.DEV_TYPE_ID, getTableSubSystem('dev_type_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_DEV_TYPE_DEF` AFTER UPDATE ON `dev_type_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dev_type_def', 'dev_type_id', OLD.DEV_TYPE_ID, NEW.DEV_TYPE_ID, getTableSubSystem('dev_type_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DEV_TYPE_DEF` AFTER DELETE ON `dev_type_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dev_type_def', 'dev_type_id', OLD.DEV_TYPE_ID, '', getTableSubSystem('dev_type_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DICT_MENU_INFO` AFTER INSERT ON `dict_menu_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dict_menu_info', 'menu_name,actual_value', '', concat(NEW.MENU_NAME,',',NEW.ACTUAL_VALUE), getTableSubSystem('dict_menu_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_DICT_MENU_INFO` AFTER UPDATE ON `dict_menu_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dict_menu_info', 'menu_name,actual_value', concat(OLD.MENU_NAME,',',OLD.ACTUAL_VALUE), concat(NEW.MENU_NAME,',',NEW.ACTUAL_VALUE), getTableSubSystem('dict_menu_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DICT_MENU_INFO` AFTER DELETE ON `dict_menu_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dict_menu_info', 'menu_name,actual_value', concat(OLD.MENU_NAME,',',OLD.ACTUAL_VALUE), '', getTableSubSystem('dict_menu_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DICT_STATE_TEXT_INFO` AFTER INSERT ON `dict_state_text_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dict_state_text_info', 'state_text_name,actual_value', '', concat(NEW.STATE_TEXT_NAME,',',NEW.ACTUAL_VALUE), getTableSubSystem('dict_state_text_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_DICT_STATE_TEXT_INFO` AFTER UPDATE ON `dict_state_text_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dict_state_text_info', 'state_text_name,actual_value', concat(OLD.STATE_TEXT_NAME,',',OLD.ACTUAL_VALUE), concat(NEW.STATE_TEXT_NAME,',',NEW.ACTUAL_VALUE), getTableSubSystem('dict_state_text_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DICT_STATE_TEXT_INFO` AFTER DELETE ON `dict_state_text_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dict_state_text_info', 'state_text_name,actual_value', concat(OLD.STATE_TEXT_NAME,',',OLD.ACTUAL_VALUE), '', getTableSubSystem('dict_state_text_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DICT_TEXT_DEFINE` AFTER INSERT ON `dict_text_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dict_text_define', 'class_name,actual_value', '', concat(NEW.CLASS_NAME,',',NEW.ACTUAL_VALUE), getTableSubSystem('dict_text_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_DICT_TEXT_DEFINE` AFTER UPDATE ON `dict_text_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dict_text_define', 'class_name,actual_value', concat(OLD.CLASS_NAME,',',OLD.ACTUAL_VALUE), concat(NEW.CLASS_NAME,',',NEW.ACTUAL_VALUE), getTableSubSystem('dict_text_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DICT_TEXT_DEFINE` AFTER DELETE ON `dict_text_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dict_text_define', 'class_name,actual_value', concat(OLD.CLASS_NAME,',',OLD.ACTUAL_VALUE), '', getTableSubSystem('dict_text_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DICT_UNIT_INFO` AFTER INSERT ON `dict_unit_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dict_unit_info', 'unit_id', '', NEW.UNIT_ID, getTableSubSystem('dict_unit_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_DICT_UNIT_INFO` AFTER UPDATE ON `dict_unit_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dict_unit_info', 'unit_id', OLD.UNIT_ID, NEW.UNIT_ID, getTableSubSystem('dict_unit_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DICT_UNIT_INFO` AFTER DELETE ON `dict_unit_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dict_unit_info', 'unit_id', OLD.UNIT_ID, '', getTableSubSystem('dict_unit_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_DICT_VOL_LEVEL` AFTER INSERT ON `dict_vol_level` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'dict_vol_level', 'vl_id', '', NEW.VL_ID, getTableSubSystem('dict_vol_level')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_DICT_VOL_LEVEL` AFTER UPDATE ON `dict_vol_level` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'dict_vol_level', 'vl_id', OLD.VL_ID, NEW.VL_ID, getTableSubSystem('dict_vol_level')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DICT_VOL_LEVEL` AFTER DELETE ON `dict_vol_level` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'dict_vol_level', 'vl_id', OLD.VL_ID, '', getTableSubSystem('dict_vol_level')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TI_DIGITAL AFTER INSERT ON digital FOR EACH ROW BEGIN IF COALESCE(NEW.IS_CONTROL,0) <> 0 THEN BEGIN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO digital_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, RTU_TAG, OFFSET_NUM, OFFSET_NO1, OFFSET_NO2, OFFSET_NO3, OFFSET_NO4, OFFSET_NO5, CTRL_ALIAS, IS_CHECK_PREVENTION, POINT_TP_NAME, CTRL_TYPE) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, '', 1, 30, 30, 30, NEW.RTU_TAG, 1, '-1', '-1', '-1', '-1', '-1', '', 0 , NEW.POINT_TP_NAME,0 ); ELSE INSERT INTO digital_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, RTU_TAG, OFFSET_NUM, OFFSET_NO1, OFFSET_NO2, OFFSET_NO3, OFFSET_NO4, OFFSET_NO5, CTRL_ALIAS, IS_CHECK_PREVENTION, POINT_TP_NAME, CTRL_TYPE) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, CTRL_ACT_NAME, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, NEW.RTU_TAG, OFFSET_NUM, '-1', '-1', '-1', '-1', '-1', '', IS_CHECK_PREVENTION , NEW.POINT_TP_NAME,CTRL_TYPE FROM digital_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; END; END IF; IF COALESCE(NEW.IS_SAMPLE,0) <> 0 THEN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES (NEW.TAG_NAME,NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD, 0, 0, 0, 0 ); END IF; INSERT INTO digital_map_to_fes ( KEY_ID_TAG, LOCATION_ID, SUB_SYSTEM, DEV_TYPE, POINT_TP_NAME, VALUE_NUM, RTU_TAG, DOT_NO1, DOT_NO2, DOT_NO3, DOT_NO4, DOT_NO5, IS_FILTER_ERR, IS_FILTER_DISTURB, DISTURB_TIME, POLARITY, DESCRIPTION) VALUES ( concat('digital' , '.' , NEW.TAG_NAME), NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEV_TYPE, NEW.POINT_TP_NAME, NEW.VALUE_NUM , NEW.RTU_TAG, '-1', '-1' , '-1' , '-1', '-1', '0' , '0' , '0' , '0', NEW.DESCRIPTION ); IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'digital', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('digital')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TU_DIGITAL AFTER UPDATE ON digital FOR EACH ROW BEGIN IF COALESCE(OLD.IS_CONTROL,0) != 0 AND COALESCE(NEW.IS_CONTROL,0) = 0 THEN BEGIN DELETE FROM digital_control WHERE TAG_NAME=OLD.TAG_NAME; DELETE FROM opt_interlock_para WHERE TAG_NAME=OLD.TAG_NAME; END; ELSEIF COALESCE(OLD.IS_CONTROL,0) = 0 AND COALESCE(NEW.IS_CONTROL,0) != 0 THEN BEGIN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO digital_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, RTU_TAG, OFFSET_NUM, OFFSET_NO1, OFFSET_NO2, OFFSET_NO3, OFFSET_NO4, OFFSET_NO5, CTRL_ALIAS, IS_CHECK_PREVENTION, POINT_TP_NAME, CTRL_TYPE) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, '', 1, 30, 30, 30, NEW.RTU_TAG, 1, '-1', '-1', '-1', '-1', '-1', '', 0 , NEW.POINT_TP_NAME,0 ); ELSE INSERT INTO digital_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, RTU_TAG, OFFSET_NUM, OFFSET_NO1, OFFSET_NO2, OFFSET_NO3, OFFSET_NO4, OFFSET_NO5, CTRL_ALIAS, IS_CHECK_PREVENTION, POINT_TP_NAME, CTRL_TYPE) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, CTRL_ACT_NAME, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, NEW.RTU_TAG, OFFSET_NUM, '-1', '-1', '-1', '-1', '-1', '', IS_CHECK_PREVENTION , NEW.POINT_TP_NAME,CTRL_TYPE FROM digital_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; END; ELSE BEGIN IF NEW.TAG_NAME<>OLD.TAG_NAME OR NEW.LOCATION_ID<>OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.RTU_TAG<>OLD.RTU_TAG OR NEW.POINT_TP_NAME<>OLD.POINT_TP_NAME THEN UPDATE digital_control SET digital_control.TAG_NAME = NEW.TAG_NAME, digital_control.LOCATION_ID = NEW.LOCATION_ID, digital_control.SUB_SYSTEM = NEW.SUB_SYSTEM, digital_control.RTU_TAG = NEW.RTU_TAG , digital_control.POINT_TP_NAME = NEW.POINT_TP_NAME WHERE digital_control.TAG_NAME = OLD.TAG_NAME; END IF; END; END IF; IF COALESCE(OLD.IS_SAMPLE,0) != 0 AND COALESCE(NEW.IS_SAMPLE,0) = 0 THEN BEGIN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END; ELSEIF COALESCE(OLD.IS_SAMPLE,0) = 0 AND COALESCE(NEW.IS_SAMPLE,0) != 0 THEN BEGIN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES (NEW.TAG_NAME,NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD,0, 0, 0, 0 ); END; ELSE BEGIN IF NEW.TAG_NAME<>OLD.TAG_NAME OR NEW.DESCRIPTION<>OLD.DESCRIPTION OR NEW.LOCATION_ID<>OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.DEVICE<>OLD.DEVICE OR NEW.POINT_TYPE<>OLD.POINT_TYPE OR NEW.SAMPLE_PERIOD<>OLD.SAMPLE_PERIOD THEN UPDATE sample_define SET sample_define.TAG_NAME = NEW.TAG_NAME, sample_define.DESCRIPTION = NEW.DESCRIPTION , sample_define.LOCATION_ID = NEW.LOCATION_ID , sample_define.SUB_SYSTEM = NEW.SUB_SYSTEM , sample_define.DEVICE_TAG = NEW.DEVICE, sample_define.POINT_TYPE = NEW.POINT_TYPE, sample_define.SAMPLE_PERIOD = NEW.SAMPLE_PERIOD WHERE TAG_NAME= OLD.TAG_NAME; END IF; END; END IF; IF NEW.TAG_NAME<>OLD.TAG_NAME OR NEW.RTU_TAG<>OLD.RTU_TAG OR NEW.LOCATION_ID<>OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.DEV_TYPE<>OLD.DEV_TYPE OR NEW.POINT_TP_NAME<>OLD.POINT_TP_NAME OR NEW.DESCRIPTION<>OLD.DESCRIPTION THEN UPDATE digital_map_to_fes SET KEY_ID_TAG = concat('digital' , '.' , NEW.TAG_NAME), RTU_TAG = NEW.RTU_TAG, LOCATION_ID =NEW.LOCATION_ID, SUB_SYSTEM = NEW.SUB_SYSTEM, DEV_TYPE = NEW.DEV_TYPE, POINT_TP_NAME = NEW.POINT_TP_NAME, DESCRIPTION = NEW.DESCRIPTION WHERE KEY_ID_TAG=concat('digital' , '.' , OLD.TAG_NAME) ; END IF; IF NEW.VALUE_NUM<>OLD.VALUE_NUM THEN BEGIN IF NEW.VALUE_NUM = 1 THEN BEGIN UPDATE digital_map_to_fes SET VALUE_NUM = NEW.VALUE_NUM, DOT_NO2 = '-1', DOT_NO3 = '-1', DOT_NO4 = '-1', DOT_NO5 = '-1' WHERE KEY_ID_TAG=concat('digital' , '.' , OLD.TAG_NAME); END; ELSEIF NEW.VALUE_NUM = 2 THEN BEGIN UPDATE digital_map_to_fes SET VALUE_NUM = NEW.VALUE_NUM, DOT_NO3 = '-1', DOT_NO4 = '-1', DOT_NO5 = '-1' WHERE KEY_ID_TAG=concat('digital' , '.' , OLD.TAG_NAME); END; ELSEIF NEW.VALUE_NUM = 3 THEN BEGIN UPDATE digital_map_to_fes SET VALUE_NUM = NEW.VALUE_NUM, DOT_NO4 = '-1', DOT_NO5 = '-1' WHERE KEY_ID_TAG=concat('digital' , '.' , OLD.TAG_NAME); END; ELSEIF NEW.VALUE_NUM = 4 THEN BEGIN UPDATE digital_map_to_fes SET VALUE_NUM = NEW.VALUE_NUM, DOT_NO5 = '-1' WHERE KEY_ID_TAG=concat('digital' , '.' , OLD.TAG_NAME); END; ELSE BEGIN UPDATE digital_map_to_fes SET VALUE_NUM = NEW.VALUE_NUM WHERE KEY_ID_TAG=concat('digital' , '.' , OLD.TAG_NAME); END; END IF; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'digital', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('digital')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_DIGITAL BEFORE DELETE ON digital FOR EACH ROW BEGIN IF COALESCE(OLD.IS_CONTROL,0) <> 0 THEN DELETE FROM digital_control WHERE TAG_NAME=OLD.TAG_NAME ; END IF; IF COALESCE(OLD.IS_SAMPLE,0) <> 0 THEN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END IF; DELETE FROM digital_map_to_fes WHERE KEY_ID_TAG=concat('digital' , '.' , OLD.TAG_NAME); END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_DIGITAL` AFTER DELETE ON `digital` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'digital', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('digital')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TIA_FBD_GROUP AFTER INSERT ON FBD_GROUP FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'fbd_group', 'id', '', NEW.ID, getTableSubSystem('fbd_group')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_FBD_GROUP AFTER UPDATE ON FBD_GROUP FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'fbd_group', 'id', OLD.ID, NEW.ID, getTableSubSystem('fbd_group')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_FBD_GROUP AFTER DELETE ON FBD_GROUP FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'fbd_group', 'id', OLD.ID, '', getTableSubSystem('fbd_group')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_HMI_TYPE_INFO` AFTER INSERT ON `hmi_type_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'hmi_type_info', 'hmi_id', '', NEW.HMI_ID, getTableSubSystem('hmi_type_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_HMI_TYPE_INFO` AFTER UPDATE ON `hmi_type_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'hmi_type_info', 'hmi_id', OLD.HMI_ID, NEW.HMI_ID, getTableSubSystem('hmi_type_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_HMI_TYPE_INFO AFTER DELETE ON hmi_type_info FOR EACH ROW BEGIN #1是报表,0是HMI画面 DECLARE num int; SET num = (OLD.HMI_ID-1) DIV 32; #角色表的修改 IF num = 0 THEN UPDATE rm_role_hmi_info SET PERM_INFO1 = resetBit(PERM_INFO1,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO1,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 1 THEN UPDATE rm_role_hmi_info SET PERM_INFO2 = resetBit(PERM_INFO2,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO2,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 2 THEN UPDATE rm_role_hmi_info SET PERM_INFO3 = resetBit(PERM_INFO3,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO3,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 3 THEN UPDATE rm_role_hmi_info SET PERM_INFO4 = resetBit(PERM_INFO4,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO4,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 4 THEN UPDATE rm_role_hmi_info SET PERM_INFO5 = resetBit(PERM_INFO5,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO5,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 5 THEN UPDATE rm_role_hmi_info SET PERM_INFO6 = resetBit(PERM_INFO6,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO6,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 6 THEN UPDATE rm_role_hmi_info SET PERM_INFO7 = resetBit(PERM_INFO7,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO7,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 7 THEN UPDATE rm_role_hmi_info SET PERM_INFO8 = resetBit(PERM_INFO8,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO8,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 8 THEN UPDATE rm_role_hmi_info SET PERM_INFO9 = resetBit(PERM_INFO9,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO9,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 9 THEN UPDATE rm_role_hmi_info SET PERM_INFO10 = resetBit(PERM_INFO10,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO10,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 10 THEN UPDATE rm_role_hmi_info SET PERM_INFO11 = resetBit(PERM_INFO11,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO11,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 11 THEN UPDATE rm_role_hmi_info SET PERM_INFO12 = resetBit(PERM_INFO12,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO12,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 12 THEN UPDATE rm_role_hmi_info SET PERM_INFO13 = resetBit(PERM_INFO13,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO13,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 13 THEN UPDATE rm_role_hmi_info SET PERM_INFO14 = resetBit(PERM_INFO14,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO14,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 14 THEN UPDATE rm_role_hmi_info SET PERM_INFO15 = resetBit(PERM_INFO15,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO15,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 15 THEN UPDATE rm_role_hmi_info SET PERM_INFO16 = resetBit(PERM_INFO16,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO16,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; END IF; #用户组表的修改 IF num = 0 THEN UPDATE rm_userg_hmi_info SET PERM_INFO1 = resetBit(PERM_INFO1,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO1,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 1 THEN UPDATE rm_userg_hmi_info SET PERM_INFO2 = resetBit(PERM_INFO2,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO2,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 2 THEN UPDATE rm_userg_hmi_info SET PERM_INFO3 = resetBit(PERM_INFO3,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO3,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 3 THEN UPDATE rm_userg_hmi_info SET PERM_INFO4 = resetBit(PERM_INFO4,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO4,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 4 THEN UPDATE rm_userg_hmi_info SET PERM_INFO5 = resetBit(PERM_INFO5,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO5,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 5 THEN UPDATE rm_userg_hmi_info SET PERM_INFO6 = resetBit(PERM_INFO6,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO6,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 6 THEN UPDATE rm_userg_hmi_info SET PERM_INFO7 = resetBit(PERM_INFO7,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO7,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 7 THEN UPDATE rm_userg_hmi_info SET PERM_INFO8 = resetBit(PERM_INFO8,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO8,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 8 THEN UPDATE rm_userg_hmi_info SET PERM_INFO9 = resetBit(PERM_INFO9,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO9,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 9 THEN UPDATE rm_userg_hmi_info SET PERM_INFO10 = resetBit(PERM_INFO10,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO10,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 10 THEN UPDATE rm_userg_hmi_info SET PERM_INFO11 = resetBit(PERM_INFO11,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO11,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 11 THEN UPDATE rm_userg_hmi_info SET PERM_INFO12 = resetBit(PERM_INFO12,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO12,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 12 THEN UPDATE rm_userg_hmi_info SET PERM_INFO13 = resetBit(PERM_INFO13,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO13,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 13 THEN UPDATE rm_userg_hmi_info SET PERM_INFO14 = resetBit(PERM_INFO14,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO14,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 14 THEN UPDATE rm_userg_hmi_info SET PERM_INFO15 = resetBit(PERM_INFO15,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO15,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; ELSEIF num = 15 THEN UPDATE rm_userg_hmi_info SET PERM_INFO16 = resetBit(PERM_INFO16,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) WHERE testNumber(PERM_INFO16,IF(OLD.HMI_ID%32=0,32,OLD.HMI_ID%32)) AND PERM_TYPE = '0'; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'hmi_type_info', 'hmi_id', OLD.HMI_ID, '', getTableSubSystem('hmi_type_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_IA_DISPOSAL_PLAN` AFTER INSERT ON `ia_disposal_plan` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'ia_disposal_plan', 'KEY_ID_TAG', '',NEW.KEY_ID_TAG, getTableSubSystem('ia_disposal_plan')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_IA_DISPOSAL_PLAN` AFTER UPDATE ON `ia_disposal_plan` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'ia_disposal_plan', 'KEY_ID_TAG', OLD.KEY_ID_TAG, NEW.KEY_ID_TAG, getTableSubSystem('ia_disposal_plan')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_IA_DISPOSAL_PLAN` AFTER DELETE ON `ia_disposal_plan` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'ia_disposal_plan', 'KEY_ID_TAG', OLD.KEY_ID_TAG, '', getTableSubSystem('ia_disposal_plan')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TI_MIX AFTER INSERT ON mix FOR EACH ROW BEGIN IF COALESCE(NEW.IS_CONTROL,0) <> 0 THEN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO mix_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, CTRL_TOLERANCE, RANGE_UP, RANGE_LOW, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, '', 0, 1, 30, 30, 0, 1, 0.01, 65536, 0, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME ); ELSE INSERT INTO mix_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, CTRL_TOLERANCE, RANGE_UP, RANGE_LOW, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, CTRL_TOLERANCE, RANGE_UP, RANGE_LOW, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME FROM mix_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; END IF; IF COALESCE(NEW.IS_SAMPLE,0) <> 0 THEN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES (NEW.TAG_NAME, NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD, 0, 0, 0, 0 ); END IF; IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO mix_map_to_fes ( KEY_ID_TAG, LOCATION_ID, SUB_SYSTEM, DEV_TYPE, POINT_TP_NAME, RTU_TAG, DOT_NO, BASE, COEFF, RANGE_UP, RANGE_LOW, IS_FILTER_ERROR, IS_FILTER_DISTURB, DISTURB_TIME, DESCRIPTION) VALUES ( concat('mix' , '.' , NEW.TAG_NAME), NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEV_TYPE, NEW.POINT_TP_NAME, NEW.RTU_TAG, '-1', 0, 1, 65535, 0, 1, 1, 5, NEW.DESCRIPTION ); ELSE INSERT INTO mix_map_to_fes ( KEY_ID_TAG, LOCATION_ID, SUB_SYSTEM, DEV_TYPE, POINT_TP_NAME, RTU_TAG, DOT_NO, BASE, COEFF, RANGE_UP, RANGE_LOW, IS_FILTER_ERROR, IS_FILTER_DISTURB, DISTURB_TIME, DESCRIPTION) SELECT concat('mix' , '.' , NEW.TAG_NAME), NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEV_TYPE, NEW.POINT_TP_NAME, NEW.RTU_TAG, '-1', BASE, COEFF, RANGE_UP, RANGE_LOW, IS_FILTER_ERROR, IS_FILTER_DISTURB, DISTURB_TIME, NEW.DESCRIPTION FROM mix_temp_define WHERE TAG_NAME = NEW.POINT_TP_NAME; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'mix', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('mix')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TU_MIX AFTER UPDATE ON mix FOR EACH ROW BEGIN IF COALESCE(OLD.IS_CONTROL,0) != 0 AND COALESCE(NEW.IS_CONTROL,0) = 0 THEN BEGIN DELETE FROM mix_control WHERE TAG_NAME=OLD.TAG_NAME; DELETE FROM opt_interlock_para WHERE TAG_NAME=OLD.TAG_NAME; END; ELSEIF COALESCE(OLD.IS_CONTROL,0) = 0 AND COALESCE(NEW.IS_CONTROL,0) != 0 THEN BEGIN IF COALESCE(NEW.POINT_TP_NAME,'') = '' THEN INSERT INTO mix_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, CTRL_TOLERANCE, RANGE_UP, RANGE_LOW, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) VALUES ( NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, '', 0, 1, 30, 30, 0, 1, 0.01, 65536, 0, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME ); ELSE INSERT INTO mix_control( TAG_NAME, LOCATION_ID, SUB_SYSTEM, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, CTRL_TOLERANCE, RANGE_UP, RANGE_LOW, RTU_TAG, OFFSET_NO, CTRL_ALIAS, POINT_TP_NAME) SELECT NEW.TAG_NAME, NEW.LOCATION_ID, NEW.SUB_SYSTEM, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, CTRL_TOLERANCE, RANGE_UP, RANGE_LOW, NEW.RTU_TAG, '-1', '', NEW.POINT_TP_NAME FROM mix_temp_define WHERE TAG_NAME=NEW.POINT_TP_NAME; END IF; END; ELSE BEGIN IF NEW.TAG_NAME<>OLD.TAG_NAME OR NEW.LOCATION_ID<>OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.RTU_TAG<>OLD.RTU_TAG THEN UPDATE mix_control SET TAG_NAME = NEW.TAG_NAME, LOCATION_ID = NEW.LOCATION_ID, SUB_SYSTEM = NEW.SUB_SYSTEM, RTU_TAG = NEW.RTU_TAG, POINT_TP_NAME = NEW.POINT_TP_NAME WHERE TAG_NAME = OLD.TAG_NAME; END IF; END; END IF; IF COALESCE(OLD.IS_SAMPLE,0) != 0 AND COALESCE(NEW.IS_SAMPLE,0) = 0 THEN BEGIN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END; ELSEIF COALESCE(OLD.IS_SAMPLE,0) = 0 AND COALESCE(NEW.IS_SAMPLE,0) != 0 THEN BEGIN INSERT INTO sample_define ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, DEVICE_TAG, POINT_TYPE, SAMPLE_PERIOD, SAMPLE_DEADBAND, VALUE, STATUS, UPDATE_TIME) VALUES ( NEW.TAG_NAME, NEW.DESCRIPTION, NEW.LOCATION_ID, NEW.SUB_SYSTEM, NEW.DEVICE, NEW.POINT_TYPE, NEW.SAMPLE_PERIOD, 0, 0, 0, 0 ); END; ELSE BEGIN IF NEW.TAG_NAME<>OLD.TAG_NAME OR NEW.DESCRIPTION<>OLD.DESCRIPTION OR NEW.LOCATION_ID<>OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.DEVICE<>OLD.DEVICE OR NEW.POINT_TYPE<>OLD.POINT_TYPE OR NEW.SAMPLE_PERIOD<>OLD.SAMPLE_PERIOD THEN UPDATE sample_define SET sample_define.TAG_NAME = NEW.TAG_NAME , sample_define.DESCRIPTION = NEW.DESCRIPTION , sample_define.LOCATION_ID = NEW.LOCATION_ID , sample_define.SUB_SYSTEM = NEW.SUB_SYSTEM , sample_define.DEVICE_TAG = NEW.DEVICE, sample_define.POINT_TYPE = NEW.POINT_TYPE, sample_define.SAMPLE_PERIOD = NEW.SAMPLE_PERIOD WHERE TAG_NAME= OLD.TAG_NAME; END IF; END; END IF; IF NEW.TAG_NAME<>OLD.TAG_NAME OR NEW.LOCATION_ID<>OLD.LOCATION_ID OR NEW.SUB_SYSTEM<>OLD.SUB_SYSTEM OR NEW.DEV_TYPE<>OLD.DEV_TYPE OR NEW.POINT_TP_NAME<>OLD.POINT_TP_NAME OR NEW.RTU_TAG<>OLD.RTU_TAG OR NEW.POINT_TYPE<>OLD.POINT_TYPE OR NEW.DESCRIPTION<>OLD.DESCRIPTION THEN UPDATE mix_map_to_fes SET KEY_ID_TAG = concat('mix' , '.' , NEW.TAG_NAME), LOCATION_ID =NEW.LOCATION_ID, SUB_SYSTEM = NEW.SUB_SYSTEM, DEV_TYPE = NEW.DEV_TYPE, POINT_TP_NAME = NEW.POINT_TP_NAME, RTU_TAG = NEW.RTU_TAG, DESCRIPTION = NEW.DESCRIPTION WHERE KEY_ID_TAG=concat('mix' , '.' , OLD.TAG_NAME); END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'mix', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('mix')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_MIX BEFORE DELETE ON mix FOR EACH ROW BEGIN IF COALESCE(OLD.IS_CONTROL,0) <> 0 THEN DELETE FROM mix_control WHERE TAG_NAME=OLD.TAG_NAME; END IF; IF COALESCE(OLD.IS_SAMPLE,0) <> 0 THEN DELETE FROM sample_define WHERE TAG_NAME= OLD.TAG_NAME ; END IF; DELETE FROM mix_map_to_fes WHERE KEY_ID_TAG=concat('mix' , '.' , OLD.TAG_NAME); END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_MIX` AFTER DELETE ON `mix` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'mix', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('mix')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_CTRL_ACT_DEFINE` AFTER INSERT ON `opt_ctrl_act_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_ctrl_act_define', 'ctrl_grp_name,ctrl_grp_no', '', concat(NEW.CTRL_GRP_NAME,',',NEW.CTRL_GRP_NO), getTableSubSystem('opt_ctrl_act_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_CTRL_ACT_DEFINE` AFTER UPDATE ON `opt_ctrl_act_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_ctrl_act_define', 'ctrl_grp_name,ctrl_grp_no', concat(OLD.CTRL_GRP_NAME,',',OLD.CTRL_GRP_NO), concat(NEW.CTRL_GRP_NAME,',',NEW.CTRL_GRP_NO), getTableSubSystem('opt_ctrl_act_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_CTRL_ACT_DEFINE` AFTER DELETE ON `opt_ctrl_act_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_ctrl_act_define', 'ctrl_grp_name,ctrl_grp_no', concat(OLD.CTRL_GRP_NAME,',',OLD.CTRL_GRP_NO), '', getTableSubSystem('opt_ctrl_act_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_HANDOVER_GRP` AFTER INSERT ON `opt_handover_grp` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_handover_grp', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('opt_handover_grp')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_HANDOVER_GRP` AFTER UPDATE ON `opt_handover_grp` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_handover_grp', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('opt_handover_grp')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_HANDOVER_GRP` AFTER DELETE ON `opt_handover_grp` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_handover_grp', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('opt_handover_grp')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_INTERLOCK_DEFINE` AFTER INSERT ON `opt_interlock_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_interlock_define', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('opt_interlock_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_INTERLOCK_DEFINE` AFTER UPDATE ON `opt_interlock_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_interlock_define', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('opt_interlock_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_INTERLOCK_DEFINE` AFTER DELETE ON `opt_interlock_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_interlock_define', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('opt_interlock_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_INTERLOCK_PARA` AFTER INSERT ON `opt_interlock_para` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_interlock_para', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('opt_interlock_para')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_INTERLOCK_PARA` AFTER UPDATE ON `opt_interlock_para` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_interlock_para', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('opt_interlock_para')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_INTERLOCK_PARA` AFTER DELETE ON `opt_interlock_para` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_interlock_para', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('opt_interlock_para')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_SHIELD_DEFINE` AFTER INSERT ON `opt_shield_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_shield_define', 'shield_id', '', NEW.SHIELD_ID, getTableSubSystem('opt_shield_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_SHIELD_DEFINE` AFTER UPDATE ON `opt_shield_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_shield_define', 'shield_id', OLD.SHIELD_ID, NEW.SHIELD_ID, getTableSubSystem('opt_shield_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_SHIELD_DEFINE` AFTER DELETE ON `opt_shield_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_shield_define', 'shield_id', OLD.SHIELD_ID, '', getTableSubSystem('opt_shield_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_SHIELD_INFO` AFTER INSERT ON `opt_shield_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_shield_info', 'shield_id', '', NEW.SHIELD_ID, getTableSubSystem('opt_shield_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_SHIELD_INFO` AFTER UPDATE ON `opt_shield_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_shield_info', 'shield_id', OLD.SHIELD_ID, NEW.SHIELD_ID, getTableSubSystem('opt_shield_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_SHIELD_INFO` AFTER DELETE ON `opt_shield_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_shield_info', 'shield_id', OLD.SHIELD_ID, '', getTableSubSystem('opt_shield_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_SHIELD_OBJ` AFTER INSERT ON `opt_shield_obj` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_shield_obj', 'shield_id,key_id_tag', '', concat(NEW.SHIELD_ID,',',NEW.KEY_ID_TAG), getTableSubSystem('opt_shield_obj')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_SHIELD_OBJ` AFTER UPDATE ON `opt_shield_obj` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_shield_obj', 'shield_id,key_id_tag', concat(OLD.SHIELD_ID,',',OLD.KEY_ID_TAG), concat(NEW.SHIELD_ID,',',NEW.KEY_ID_TAG), getTableSubSystem('opt_shield_obj')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_SHIELD_OBJ` AFTER DELETE ON `opt_shield_obj` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_shield_obj', 'shield_id,key_id_tag', concat(OLD.SHIELD_ID,',',OLD.KEY_ID_TAG), '', getTableSubSystem('opt_shield_obj')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_SHIELD_TIME` AFTER INSERT ON `opt_shield_time` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_shield_time', 'time_id', '', NEW.TIME_ID, getTableSubSystem('opt_shield_time')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_SHIELD_TIME` AFTER UPDATE ON `opt_shield_time` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_shield_time', 'time_id', OLD.TIME_ID, NEW.TIME_ID, getTableSubSystem('opt_shield_time')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_SHIELD_TIME` AFTER DELETE ON `opt_shield_time` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_shield_time', 'time_id', OLD.TIME_ID, '', getTableSubSystem('opt_shield_time')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_TAG_INFO` AFTER INSERT ON `opt_tag_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_tag_info', 'key_id_tag,tag_type', '', concat(NEW.KEY_ID_TAG,',',NEW.TAG_TYPE), getTableSubSystem('opt_tag_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_TAG_INFO` AFTER UPDATE ON `opt_tag_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_tag_info', 'key_id_tag,tag_type', concat(OLD.KEY_ID_TAG,',',OLD.TAG_TYPE), concat(NEW.KEY_ID_TAG,',',NEW.TAG_TYPE), getTableSubSystem('opt_tag_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_TAG_INFO` AFTER DELETE ON `opt_tag_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_tag_info', 'key_id_tag,tag_type', concat(OLD.KEY_ID_TAG,',',OLD.TAG_TYPE), '', getTableSubSystem('opt_tag_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_TOKEN_DEFINE` AFTER INSERT ON `opt_token_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_token_define', 'token_id', '', NEW.TOKEN_ID, getTableSubSystem('opt_token_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_TOKEN_DEFINE` AFTER UPDATE ON `opt_token_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_token_define', 'token_id', OLD.TOKEN_ID, NEW.TOKEN_ID, getTableSubSystem('opt_token_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_TOKEN_DEFINE` AFTER DELETE ON `opt_token_define` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_token_define', 'token_id', OLD.TOKEN_ID, '', getTableSubSystem('opt_token_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_OPT_TOKEN_INFO` AFTER INSERT ON `opt_token_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'opt_token_info', 'token_id,key_id_tag', '', concat(NEW.TOKEN_ID,',',NEW.KEY_ID_TAG), getTableSubSystem('opt_token_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_OPT_TOKEN_INFO` AFTER UPDATE ON `opt_token_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'opt_token_info', 'token_id,key_id_tag', concat(OLD.TOKEN_ID,',',OLD.KEY_ID_TAG), concat(NEW.TOKEN_ID,',',NEW.KEY_ID_TAG), getTableSubSystem('opt_token_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_OPT_TOKEN_INFO` AFTER DELETE ON `opt_token_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'opt_token_info', 'token_id,key_id_tag', concat(OLD.TOKEN_ID,',',OLD.KEY_ID_TAG), '', getTableSubSystem('opt_token_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_REGION_INFO` AFTER INSERT ON `region_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'region_info', 'region_id', '', NEW.REGION_ID, getTableSubSystem('region_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_REGION_INFO` AFTER UPDATE ON `region_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'region_info', 'region_id', OLD.REGION_ID, NEW.REGION_ID, getTableSubSystem('region_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_REGION_INFO` AFTER DELETE ON `region_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'region_info', 'region_id', OLD.REGION_ID, '', getTableSubSystem('region_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_REPORT_TYPE_INFO` AFTER INSERT ON `report_type_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'report_type_info', 'report_id', '', NEW.REPORT_ID, getTableSubSystem('report_type_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_REPORT_TYPE_INFO` AFTER UPDATE ON `report_type_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'report_type_info', 'report_id', OLD.REPORT_ID, NEW.REPORT_ID, getTableSubSystem('report_type_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_REPORT_TYPE_INFO AFTER DELETE ON report_type_info FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 DECLARE num int; SET num = (OLD.REPORT_ID-1) DIV 32; #角色表的修改 IF num = 0 THEN UPDATE rm_role_hmi_info SET PERM_INFO1 = resetBit(PERM_INFO1,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO1,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 1 THEN UPDATE rm_role_hmi_info SET PERM_INFO2 = resetBit(PERM_INFO2,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO2,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 2 THEN UPDATE rm_role_hmi_info SET PERM_INFO3 = resetBit(PERM_INFO3,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO3,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 3 THEN UPDATE rm_role_hmi_info SET PERM_INFO4 = resetBit(PERM_INFO4,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO4,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 4 THEN UPDATE rm_role_hmi_info SET PERM_INFO5 = resetBit(PERM_INFO5,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO5,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 5 THEN UPDATE rm_role_hmi_info SET PERM_INFO6 = resetBit(PERM_INFO6,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO6,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 6 THEN UPDATE rm_role_hmi_info SET PERM_INFO7 = resetBit(PERM_INFO7,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO7,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 7 THEN UPDATE rm_role_hmi_info SET PERM_INFO8 = resetBit(PERM_INFO8,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO8,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 8 THEN UPDATE rm_role_hmi_info SET PERM_INFO9 = resetBit(PERM_INFO9,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO9,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 9 THEN UPDATE rm_role_hmi_info SET PERM_INFO10 = resetBit(PERM_INFO10,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO10,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 10 THEN UPDATE rm_role_hmi_info SET PERM_INFO11 = resetBit(PERM_INFO11,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO11,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 11 THEN UPDATE rm_role_hmi_info SET PERM_INFO12 = resetBit(PERM_INFO12,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO12,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 12 THEN UPDATE rm_role_hmi_info SET PERM_INFO13 = resetBit(PERM_INFO13,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO13,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 13 THEN UPDATE rm_role_hmi_info SET PERM_INFO14 = resetBit(PERM_INFO14,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO14,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 14 THEN UPDATE rm_role_hmi_info SET PERM_INFO15 = resetBit(PERM_INFO15,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO15,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 15 THEN UPDATE rm_role_hmi_info SET PERM_INFO16 = resetBit(PERM_INFO16,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO16,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; END IF; #用户组表的修改 IF num = 0 THEN UPDATE rm_userg_hmi_info SET PERM_INFO1 = resetBit(PERM_INFO1,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO1,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 1 THEN UPDATE rm_userg_hmi_info SET PERM_INFO2 = resetBit(PERM_INFO2,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO2,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 2 THEN UPDATE rm_userg_hmi_info SET PERM_INFO3 = resetBit(PERM_INFO3,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO3,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 3 THEN UPDATE rm_userg_hmi_info SET PERM_INFO4 = resetBit(PERM_INFO4,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO4,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 4 THEN UPDATE rm_userg_hmi_info SET PERM_INFO5 = resetBit(PERM_INFO5,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO5,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 5 THEN UPDATE rm_userg_hmi_info SET PERM_INFO6 = resetBit(PERM_INFO6,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO6,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 6 THEN UPDATE rm_userg_hmi_info SET PERM_INFO7 = resetBit(PERM_INFO7,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO7,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 7 THEN UPDATE rm_userg_hmi_info SET PERM_INFO8 = resetBit(PERM_INFO8,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO8,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 8 THEN UPDATE rm_userg_hmi_info SET PERM_INFO9 = resetBit(PERM_INFO9,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO9,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 9 THEN UPDATE rm_userg_hmi_info SET PERM_INFO10 = resetBit(PERM_INFO10,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO10,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 10 THEN UPDATE rm_userg_hmi_info SET PERM_INFO11 = resetBit(PERM_INFO11,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO11,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 11 THEN UPDATE rm_userg_hmi_info SET PERM_INFO12 = resetBit(PERM_INFO12,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO12,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 12 THEN UPDATE rm_userg_hmi_info SET PERM_INFO13 = resetBit(PERM_INFO13,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO13,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 13 THEN UPDATE rm_userg_hmi_info SET PERM_INFO14 = resetBit(PERM_INFO14,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO14,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 14 THEN UPDATE rm_userg_hmi_info SET PERM_INFO15 = resetBit(PERM_INFO15,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO15,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; ELSEIF num = 15 THEN UPDATE rm_userg_hmi_info SET PERM_INFO16 = resetBit(PERM_INFO16,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) WHERE testNumber(PERM_INFO16,IF(OLD.REPORT_ID%32=0,32,OLD.REPORT_ID%32)) AND PERM_TYPE = '1'; END IF; DELETE FROM t_sys_table_file_tree WHERE TREECODE = OLD.REPORT_DEFINE; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'report_type_info', 'report_id', OLD.REPORT_ID, '', getTableSubSystem('report_type_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_DEPT_DEF` AFTER INSERT ON `rm_dept_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_dept_def', 'dept_id', '', NEW.DEPT_ID, getTableSubSystem('rm_dept_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_RM_DEPT_DEF AFTER UPDATE ON rm_dept_def FOR EACH ROW BEGIN DECLARE oldNum int; DECLARE newNum int; SET oldNum = (OLD.DEPT_ID-1) DIV 32; SET newNum = (NEW.DEPT_ID-1) DIV 32; IF NEW.DEPT_ID <> OLD.DEPT_ID THEN BEGIN #应该先赋值新的,再删除删除旧的,避免先删除旧的,无法再定位该为哪个用户赋新值 IF oldNum = 0 THEN UPDATE rm_user_def SET PERM_DEPT1 = IF(newNum=0, setBit(PERM_DEPT1,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT1), PERM_DEPT2 = IF(newNum=1, setBit(PERM_DEPT2,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT2), PERM_DEPT3 = IF(newNum=2, setBit(PERM_DEPT3,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT3), PERM_DEPT4 = IF(newNum=3, setBit(PERM_DEPT4,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT4) WHERE testNumber(PERM_DEPT1,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF oldNum = 1 THEN UPDATE rm_user_def SET PERM_DEPT1 = IF(newNum=0, setBit(PERM_DEPT1,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT1), PERM_DEPT2 = IF(newNum=1, setBit(PERM_DEPT2,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT2), PERM_DEPT3 = IF(newNum=2, setBit(PERM_DEPT3,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT3), PERM_DEPT4 = IF(newNum=3, setBit(PERM_DEPT4,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT4) WHERE testNumber(PERM_DEPT2,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF oldNum = 2 THEN UPDATE rm_user_def SET PERM_DEPT1 = IF(newNum=0, setBit(PERM_DEPT1,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT1), PERM_DEPT2 = IF(newNum=1, setBit(PERM_DEPT2,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT2), PERM_DEPT3 = IF(newNum=2, setBit(PERM_DEPT3,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT3), PERM_DEPT4 = IF(newNum=3, setBit(PERM_DEPT4,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT4) WHERE testNumber(PERM_DEPT3,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF oldNum = 3 THEN UPDATE rm_user_def SET PERM_DEPT1 = IF(newNum=0, setBit(PERM_DEPT1,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT1), PERM_DEPT2 = IF(newNum=1, setBit(PERM_DEPT2,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT2), PERM_DEPT3 = IF(newNum=2, setBit(PERM_DEPT3,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT3), PERM_DEPT4 = IF(newNum=3, setBit(PERM_DEPT4,IF(NEW.DEPT_ID%32=0,32,NEW.DEPT_ID%32)), PERM_DEPT4) WHERE testNumber(PERM_DEPT4,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); END IF; #赋值新的之后,删除旧的 IF oldNum = 0 THEN UPDATE rm_user_def SET PERM_DEPT1 = resetBit(PERM_DEPT1,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT1,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF oldNum = 1 THEN UPDATE rm_user_def SET PERM_DEPT2 = resetBit(PERM_DEPT2,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT2,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF oldNum = 2 THEN UPDATE rm_user_def SET PERM_DEPT3 = resetBit(PERM_DEPT3,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT3,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF oldNum = 3 THEN UPDATE rm_user_def SET PERM_DEPT4 = resetBit(PERM_DEPT4,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT4,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); END IF; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_dept_def', 'dept_id', OLD.DEPT_ID, NEW.DEPT_ID, getTableSubSystem('rm_dept_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_DEPT_DEF` AFTER DELETE ON `rm_dept_def` FOR EACH ROW BEGIN #删除引用了该部门的用户 DECLARE num int; SET num = (OLD.DEPT_ID-1) DIV 32; IF num = 0 THEN UPDATE rm_user_def SET PERM_DEPT1 = resetBit(PERM_DEPT1,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT1,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF num = 1 THEN UPDATE rm_user_def SET PERM_DEPT2 = resetBit(PERM_DEPT2,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT2,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF num = 2 THEN UPDATE rm_user_def SET PERM_DEPT3 = resetBit(PERM_DEPT3,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT3,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); ELSEIF num = 3 THEN UPDATE rm_user_def SET PERM_DEPT4 = resetBit(PERM_DEPT4,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)) WHERE testNumber(PERM_DEPT4,IF(OLD.DEPT_ID%32=0,32,OLD.DEPT_ID%32)); END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_dept_def', 'dept_id', OLD.DEPT_ID, '', getTableSubSystem('rm_dept_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_NORM_FUNC_DEF` AFTER INSERT ON `rm_norm_func_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_norm_func_def', 'func_id', '', NEW.FUNC_ID, getTableSubSystem('rm_norm_func_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_NORM_FUNC_DEF` AFTER UPDATE ON `rm_norm_func_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_norm_func_def', 'func_id', OLD.FUNC_ID, NEW.FUNC_ID, getTableSubSystem('rm_norm_func_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_NORM_FUNC_DEF` AFTER DELETE ON `rm_norm_func_def` FOR EACH ROW BEGIN #删除引用了该功能的角色 DECLARE num int; SET num = (OLD.FUNC_ID-1) DIV 32; IF num = 0 THEN UPDATE rm_role_def SET PERM_NOM_FUNC1 = resetBit(PERM_NOM_FUNC1,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC1,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); ELSEIF num = 1 THEN UPDATE rm_role_def SET PERM_NOM_FUNC2 = resetBit(PERM_NOM_FUNC2,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC2,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); ELSEIF num = 2 THEN UPDATE rm_role_def SET PERM_NOM_FUNC3 = resetBit(PERM_NOM_FUNC3,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC3,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); ELSEIF num = 3 THEN UPDATE rm_role_def SET PERM_NOM_FUNC4 = resetBit(PERM_NOM_FUNC4,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC4,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); ELSEIF num = 4 THEN UPDATE rm_role_def SET PERM_NOM_FUNC5 = resetBit(PERM_NOM_FUNC5,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC5,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); ELSEIF num = 5 THEN UPDATE rm_role_def SET PERM_NOM_FUNC6 = resetBit(PERM_NOM_FUNC6,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC6,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); ELSEIF num = 6 THEN UPDATE rm_role_def SET PERM_NOM_FUNC7 = resetBit(PERM_NOM_FUNC7,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC7,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); ELSEIF num = 7 THEN UPDATE rm_role_def SET PERM_NOM_FUNC8 = resetBit(PERM_NOM_FUNC8,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)) WHERE testNumber(PERM_NOM_FUNC8,IF(OLD.FUNC_ID%32=0,32,OLD.FUNC_ID%32)); END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_norm_func_def', 'func_id', OLD.FUNC_ID, '', getTableSubSystem('rm_norm_func_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_ROLE_DB_INFO` AFTER INSERT ON `rm_role_db_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_role_db_info', 'perm_role,perm_table_name', '', concat(NEW.PERM_ROLE,',',NEW.PERM_TABLE_NAME), getTableSubSystem('rm_role_db_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_ROLE_DB_INFO` AFTER UPDATE ON `rm_role_db_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_role_db_info', 'perm_role,perm_table_name', concat(OLD.PERM_ROLE,',',OLD.PERM_TABLE_NAME), concat(NEW.PERM_ROLE,',',NEW.PERM_TABLE_NAME), getTableSubSystem('rm_role_db_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_ROLE_DB_INFO` AFTER DELETE ON `rm_role_db_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_role_db_info', 'perm_role,perm_table_name', concat(OLD.PERM_ROLE,',',OLD.PERM_TABLE_NAME), '', getTableSubSystem('rm_role_db_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_ROLE_DEF` AFTER INSERT ON `rm_role_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_role_def', 'perm_id', '', NEW.PERM_ID, getTableSubSystem('rm_role_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_ROLE_DEF` AFTER UPDATE ON `rm_role_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_role_def', 'perm_id', OLD.PERM_ID, NEW.PERM_ID, getTableSubSystem('rm_role_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_ROLE_DEF` AFTER DELETE ON `rm_role_def` FOR EACH ROW BEGIN #删除引用了该角色的数据 #用户组 DECLARE num int; SET num = (OLD.PERM_ID-1) DIV 32; IF num = 0 THEN UPDATE rm_userg_def SET PERM_ROLE1 = resetBit(PERM_ROLE1,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE1,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 1 THEN UPDATE rm_userg_def SET PERM_ROLE2 = resetBit(PERM_ROLE2,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE2,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 2 THEN UPDATE rm_userg_def SET PERM_ROLE3 = resetBit(PERM_ROLE3,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE3,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 3 THEN UPDATE rm_userg_def SET PERM_ROLE4 = resetBit(PERM_ROLE4,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE4,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 4 THEN UPDATE rm_userg_def SET PERM_ROLE5 = resetBit(PERM_ROLE5,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE5,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 5 THEN UPDATE rm_userg_def SET PERM_ROLE6 = resetBit(PERM_ROLE6,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE6,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 6 THEN UPDATE rm_userg_def SET PERM_ROLE7 = resetBit(PERM_ROLE7,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE7,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 7 THEN UPDATE rm_userg_def SET PERM_ROLE8 = resetBit(PERM_ROLE8,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_ROLE8,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); END IF; #rm_role_db_info DELETE FROM rm_role_db_info WHERE PERM_ROLE = OLD.PERM_ID; #rm_role_hmi_info DELETE FROM rm_role_hmi_info WHERE PERM_ROLE = OLD.PERM_ID; #rm_role_spef_reg DELETE FROM rm_role_spef_reg WHERE PERM_ROLE = OLD.PERM_ID; #rm_userg_rsp_info DELETE FROM rm_userg_rsp_info WHERE PERM_ROLE = OLD.PERM_ID; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_role_def', 'perm_id', OLD.PERM_ID, '', getTableSubSystem('rm_role_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TIA_RM_ROLE_HMI_INFO AFTER INSERT ON rm_role_hmi_info FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info DECLARE num int; DECLARE pos int; SET num = (NEW.PERM_ROLE-1) DIV 32; SET pos = IF(NEW.PERM_ROLE%32=0,32,NEW.PERM_ROLE%32); IF NEW.PERM_TYPE = '1' THEN BEGIN #先删除关联了此角色的用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE EXISTS ( SELECT rm_userg_def.PERM_ID FROM rm_userg_def WHERE rm_userg_report_info.PERM_USER_GROUP = rm_userg_def.PERM_ID AND testNumber(elt(num+1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8),pos) ); #重新把对应的报表浏览权限写入 INSERT INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT rm_userg_def.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_userg_def,rm_userg_hmi_info ,report_type_info WHERE testNumber(elt(num+1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8),pos) AND rm_userg_def.PERM_ID = rm_userg_hmi_info.PERM_USER_GROUP AND rm_userg_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); #假如该用户组,还包含其他角色,其他角色的权限也要插入 INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT rm_userg_def.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_role_hmi_info, rm_userg_def,report_type_info WHERE testNumber(elt( ((PERM_ROLE-1) DIV 32) +1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)) ; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_role_hmi_info', 'perm_role,perm_type', '', concat(NEW.PERM_ROLE,',',NEW.PERM_TYPE), getTableSubSystem('rm_role_hmi_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_RM_ROLE_HMI_INFO AFTER UPDATE ON rm_role_hmi_info FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info DECLARE oldNum int; DECLARE oldPos int; DECLARE newNum int; DECLARE newPos int; SET oldNum = (OLD.PERM_ROLE-1) DIV 32; SET oldPos = IF(OLD.PERM_ROLE%32=0,32,OLD.PERM_ROLE%32); SET newNum = (NEW.PERM_ROLE-1) DIV 32; SET newPos = IF(NEW.PERM_ROLE%32=0,32,NEW.PERM_ROLE%32); IF NEW.PERM_TYPE = '1' AND OLD.PERM_TYPE='1' THEN BEGIN #先删除关联了此角色的用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE EXISTS ( SELECT rm_userg_def.PERM_ID FROM rm_userg_def WHERE rm_userg_report_info.PERM_USER_GROUP = rm_userg_def.PERM_ID AND testNumber(elt(oldNum+1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8),oldPos) ); #重新把对应的报表浏览权限写入 INSERT INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT rm_userg_def.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_userg_def,rm_userg_hmi_info ,report_type_info WHERE testNumber(elt(newNum+1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8),newPos) AND rm_userg_def.PERM_ID = rm_userg_hmi_info.PERM_USER_GROUP AND rm_userg_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); #假如该用户组,还包含其他角色,其他角色的权限也要插入 INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT rm_userg_def.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_role_hmi_info, rm_userg_def,report_type_info WHERE testNumber(elt( ((PERM_ROLE-1) DIV 32) +1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)) ; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_role_hmi_info', 'perm_role,perm_type', concat(OLD.PERM_ROLE,',',OLD.PERM_TYPE), concat(NEW.PERM_ROLE,',',NEW.PERM_TYPE), getTableSubSystem('rm_role_hmi_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_RM_ROLE_HMI_INFO AFTER DELETE ON rm_role_hmi_info FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info DECLARE num int; DECLARE pos int; SET num = (OLD.PERM_ROLE-1) DIV 32; SET pos = IF(OLD.PERM_ROLE%32=0,32,OLD.PERM_ROLE%32); IF OLD.PERM_TYPE = '1' THEN BEGIN #先删除关联了此角色的用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE EXISTS ( SELECT rm_userg_def.PERM_ID FROM rm_userg_def WHERE rm_userg_report_info.PERM_USER_GROUP = rm_userg_def.PERM_ID AND testNumber(elt(num+1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8),pos) ); #重新把对应的报表浏览权限写入 INSERT INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT rm_userg_def.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_userg_def,rm_userg_hmi_info ,report_type_info WHERE testNumber(elt(num+1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8),pos) AND rm_userg_def.PERM_ID = rm_userg_hmi_info.PERM_USER_GROUP AND rm_userg_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); #假如该用户组,还包含其他角色,其他角色的权限也要插入 INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT rm_userg_def.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_role_hmi_info, rm_userg_def,report_type_info WHERE testNumber(elt( ((PERM_ROLE-1) DIV 32) +1,PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)) ; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_role_hmi_info', 'perm_role,perm_type', concat(OLD.PERM_ROLE,',',OLD.PERM_TYPE), '', getTableSubSystem('rm_role_hmi_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_ROLE_SPEF_REG` AFTER INSERT ON `rm_role_spef_reg` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_role_spef_reg', 'perm_role,perm_spefunc', '', concat(NEW.PERM_ROLE,',',NEW.PERM_SPEFUNC), getTableSubSystem('rm_role_spef_reg')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_ROLE_SPEF_REG` AFTER UPDATE ON `rm_role_spef_reg` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_role_spef_reg', 'perm_role,perm_spefunc', concat(OLD.PERM_ROLE,',',OLD.PERM_SPEFUNC), concat(NEW.PERM_ROLE,',',NEW.PERM_SPEFUNC), getTableSubSystem('rm_role_spef_reg')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_ROLE_SPEF_REG` AFTER DELETE ON `rm_role_spef_reg` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_role_spef_reg', 'perm_role,perm_spefunc', concat(OLD.PERM_ROLE,',',OLD.PERM_SPEFUNC), '', getTableSubSystem('rm_role_spef_reg')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_SECURITY_DEF` AFTER INSERT ON `rm_security_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_security_def', 'perm_id', '', NEW.PERM_ID, getTableSubSystem('rm_security_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_SECURITY_DEF` AFTER UPDATE ON `rm_security_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_security_def', 'perm_id', OLD.PERM_ID, NEW.PERM_ID, getTableSubSystem('rm_security_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_SECURITY_DEF` AFTER DELETE ON `rm_security_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_security_def', 'perm_id', OLD.PERM_ID, '', getTableSubSystem('rm_security_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_SPCL_FUNC_DEF` AFTER INSERT ON `rm_spcl_func_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_spcl_func_def', 'perm_id', '', NEW.PERM_ID, getTableSubSystem('rm_spcl_func_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_SPCL_FUNC_DEF` AFTER UPDATE ON `rm_spcl_func_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_spcl_func_def', 'perm_id', OLD.PERM_ID, NEW.PERM_ID, getTableSubSystem('rm_spcl_func_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_SPCL_FUNC_DEF` AFTER DELETE ON `rm_spcl_func_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_spcl_func_def', 'perm_id', OLD.PERM_ID, '', getTableSubSystem('rm_spcl_func_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_USER_DEF` AFTER INSERT ON `rm_user_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_user_def', 'perm_id', '', NEW.PERM_ID, getTableSubSystem('rm_user_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_USER_DEF` AFTER UPDATE ON `rm_user_def` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_user_def', 'perm_id', OLD.PERM_ID, NEW.PERM_ID, getTableSubSystem('rm_user_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_USER_DEF` AFTER DELETE ON `rm_user_def` FOR EACH ROW BEGIN delete from rm_user_finger_print_info where USER_ID = old.PERM_ID; delete from rm_user_face_info where USER_ID = old.PERM_ID; delete from rm_user_signature_info where USER_ID = old.PERM_ID; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_user_def', 'perm_id', OLD.PERM_ID, '', getTableSubSystem('rm_user_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_USERG_DB_INFO` AFTER INSERT ON `rm_userg_db_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_userg_db_info', 'perm_user_group,perm_table_name', '', concat(NEW.PERM_USER_GROUP,',',NEW.PERM_TABLE_NAME), getTableSubSystem('rm_userg_db_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_USERG_DB_INFO` AFTER UPDATE ON `rm_userg_db_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_userg_db_info', 'perm_user_group,perm_table_name', concat(OLD.PERM_USER_GROUP,',',OLD.PERM_TABLE_NAME), concat(NEW.PERM_USER_GROUP,',',NEW.PERM_TABLE_NAME), getTableSubSystem('rm_userg_db_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_USERG_DB_INFO` AFTER DELETE ON `rm_userg_db_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_userg_db_info', 'perm_user_group,perm_table_name', concat(OLD.PERM_USER_GROUP,',',OLD.PERM_TABLE_NAME), '', getTableSubSystem('rm_userg_db_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TIA_RM_USERG_DEF AFTER INSERT ON rm_userg_def FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info #先删除关联了此用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE PERM_USER_GROUP = NEW.PERM_ID; #重新把对应的报表浏览权限写入 INSERT INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_userg_hmi_info, report_type_info WHERE rm_userg_hmi_info.PERM_USER_GROUP = NEW.PERM_ID AND rm_userg_hmi_info.PERM_TYPE = '1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_role_hmi_info,report_type_info WHERE testNumber(elt( ((PERM_ROLE-1) DIV 32) +1, NEW.PERM_ROLE1,NEW.PERM_ROLE2,NEW.PERM_ROLE3,NEW.PERM_ROLE4,NEW.PERM_ROLE5,NEW.PERM_ROLE6,NEW.PERM_ROLE7,NEW.PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND rm_role_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); INSERT INTO rm_userg_hmi_info(PERM_USER_GROUP,PERM_TYPE,PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8,PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16,PERM_ATTRIBUTE) VALUES(NEW.PERM_ID,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1) ; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_userg_def', 'perm_id', '', NEW.PERM_ID, getTableSubSystem('rm_userg_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_RM_USERG_DEF AFTER UPDATE ON rm_userg_def FOR EACH ROW BEGIN IF NEW.PERM_ID <> OLD.PERM_ID OR NEW.PERM_ROLE1 <> OLD.PERM_ROLE1 OR NEW.PERM_ROLE2 <> OLD.PERM_ROLE2 OR NEW.PERM_ROLE3 <> OLD.PERM_ROLE3 OR NEW.PERM_ROLE4 <> OLD.PERM_ROLE4 OR NEW.PERM_ROLE5 <> OLD.PERM_ROLE5 OR NEW.PERM_ROLE6 <> OLD.PERM_ROLE6 OR NEW.PERM_ROLE7 <> OLD.PERM_ROLE7 OR NEW.PERM_ROLE8 <> OLD.PERM_ROLE8 THEN BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info #先删除关联了此用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE PERM_USER_GROUP = OLD.PERM_ID; #重新把对应的报表浏览权限写入 INSERT INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_userg_hmi_info, report_type_info WHERE rm_userg_hmi_info.PERM_USER_GROUP = NEW.PERM_ID AND rm_userg_hmi_info.PERM_TYPE = '1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_ID,report_type_info.REPORT_DEFINE FROM rm_role_hmi_info,report_type_info WHERE testNumber(elt( ((PERM_ROLE-1) DIV 32) +1, NEW.PERM_ROLE1,NEW.PERM_ROLE2,NEW.PERM_ROLE3,NEW.PERM_ROLE4,NEW.PERM_ROLE5,NEW.PERM_ROLE6,NEW.PERM_ROLE7,NEW.PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND rm_role_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)) ; END; END IF; IF NEW.PERM_LOCATION1 <> OLD.PERM_LOCATION1 OR NEW.PERM_LOCATION2 <> OLD.PERM_LOCATION2 OR NEW.PERM_LOCATION3 <> OLD.PERM_LOCATION3 OR NEW.PERM_LOCATION4 <> OLD.PERM_LOCATION4 OR NEW.PERM_LOCATION5 <> OLD.PERM_LOCATION5 OR NEW.PERM_LOCATION6 <> OLD.PERM_LOCATION6 OR NEW.PERM_LOCATION7 <> OLD.PERM_LOCATION7 OR NEW.PERM_LOCATION8 <> OLD.PERM_LOCATION8 THEN BEGIN UPDATE rm_userg_rsp_info SET PERM_LOCATION1 = NEW.PERM_LOCATION1,PERM_LOCATION2 = NEW.PERM_LOCATION2,PERM_LOCATION3 = NEW.PERM_LOCATION3,PERM_LOCATION4 = NEW.PERM_LOCATION4, PERM_LOCATION5 = NEW.PERM_LOCATION5,PERM_LOCATION6 = NEW.PERM_LOCATION6,PERM_LOCATION7 = NEW.PERM_LOCATION7,PERM_LOCATION8 = NEW.PERM_LOCATION8 WHERE PERM_USER_GROUP = OLD.PERM_ID; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_userg_def', 'perm_id', OLD.PERM_ID, NEW.PERM_ID, getTableSubSystem('rm_userg_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_RM_USERG_DEF AFTER DELETE ON rm_userg_def FOR EACH ROW BEGIN #删除用户中的用户组 DECLARE num int; SET num = (OLD.PERM_ID-1) DIV 32; IF num = 0 THEN UPDATE rm_user_def SET PERM_USER_GROUP1 = resetBit(PERM_USER_GROUP1,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP1,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 1 THEN UPDATE rm_user_def SET PERM_USER_GROUP2 = resetBit(PERM_USER_GROUP2,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP2,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 2 THEN UPDATE rm_user_def SET PERM_USER_GROUP3 = resetBit(PERM_USER_GROUP3,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP3,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 3 THEN UPDATE rm_user_def SET PERM_USER_GROUP4 = resetBit(PERM_USER_GROUP4,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP4,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 4 THEN UPDATE rm_user_def SET PERM_USER_GROUP5 = resetBit(PERM_USER_GROUP5,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP5,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 5 THEN UPDATE rm_user_def SET PERM_USER_GROUP6 = resetBit(PERM_USER_GROUP6,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP6,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 6 THEN UPDATE rm_user_def SET PERM_USER_GROUP7 = resetBit(PERM_USER_GROUP7,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP7,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 7 THEN UPDATE rm_user_def SET PERM_USER_GROUP8 = resetBit(PERM_USER_GROUP8,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP8,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 8 THEN UPDATE rm_user_def SET PERM_USER_GROUP9 = resetBit(PERM_USER_GROUP9,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP9,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 9 THEN UPDATE rm_user_def SET PERM_USER_GROUP10 = resetBit(PERM_USER_GROUP10,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP10,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 10 THEN UPDATE rm_user_def SET PERM_USER_GROUP11 = resetBit(PERM_USER_GROUP11,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP11,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 11 THEN UPDATE rm_user_def SET PERM_USER_GROUP12 = resetBit(PERM_USER_GROUP12,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP12,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 12 THEN UPDATE rm_user_def SET PERM_USER_GROUP13 = resetBit(PERM_USER_GROUP13,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP13,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 13 THEN UPDATE rm_user_def SET PERM_USER_GROUP14 = resetBit(PERM_USER_GROUP14,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP14,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 14 THEN UPDATE rm_user_def SET PERM_USER_GROUP15 = resetBit(PERM_USER_GROUP15,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP15,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); ELSEIF num = 15 THEN UPDATE rm_user_def SET PERM_USER_GROUP16 = resetBit(PERM_USER_GROUP16,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)) WHERE testNumber(PERM_USER_GROUP16,IF(OLD.PERM_ID%32=0,32,OLD.PERM_ID%32)); END IF; #rm_userg_rsp_info DELETE FROM rm_userg_rsp_info WHERE PERM_USER_GROUP = OLD.PERM_ID; #rm_userg_db_info DELETE FROM rm_userg_db_info WHERE PERM_USER_GROUP = OLD.PERM_ID; #rm_userg_hmi_info DELETE FROM rm_userg_hmi_info WHERE PERM_USER_GROUP = OLD.PERM_ID; #rm_userg_report_info DELETE FROM rm_userg_report_info WHERE PERM_USER_GROUP = OLD.PERM_ID; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_userg_def', 'perm_id', OLD.PERM_ID, '', getTableSubSystem('rm_userg_def')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TIA_RM_USERG_HMI_INFO AFTER INSERT ON rm_userg_hmi_info FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info IF NEW.PERM_TYPE = '1' THEN BEGIN #先删除关联了此用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE PERM_USER_GROUP = NEW.PERM_USER_GROUP; #重新把对应的报表浏览权限写入 INSERT INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_USER_GROUP,report_type_info.REPORT_DEFINE FROM report_type_info WHERE testNumber(elt( ((REPORT_ID-1) DIV 32) +1, NEW.PERM_INFO1,NEW.PERM_INFO2,NEW.PERM_INFO3,NEW.PERM_INFO4,NEW.PERM_INFO5,NEW.PERM_INFO6,NEW.PERM_INFO7,NEW.PERM_INFO8, NEW.PERM_INFO9,NEW.PERM_INFO10,NEW.PERM_INFO11,NEW.PERM_INFO12,NEW.PERM_INFO13,NEW.PERM_INFO14,NEW.PERM_INFO15,NEW.PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_USER_GROUP,report_type_info.REPORT_DEFINE FROM rm_userg_def,rm_role_hmi_info,report_type_info WHERE rm_userg_def.PERM_ID = NEW.PERM_USER_GROUP AND testNumber(elt( ((PERM_ROLE-1) DIV 32) +1, PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND rm_role_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)) ; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_userg_hmi_info', 'perm_user_group,perm_type,perm_attribute', '', concat(NEW.PERM_USER_GROUP,',',NEW.PERM_TYPE,',',NEW.PERM_ATTRIBUTE), getTableSubSystem('rm_userg_hmi_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_RM_USERG_HMI_INFO AFTER UPDATE ON rm_userg_hmi_info FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info IF NEW.PERM_TYPE = '1' AND OLD.PERM_TYPE = '1' THEN BEGIN #先删除关联了此用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE PERM_USER_GROUP = OLD.PERM_USER_GROUP; #重新把对应的报表浏览权限写入 INSERT INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_USER_GROUP,report_type_info.REPORT_DEFINE FROM report_type_info WHERE testNumber(elt( ((REPORT_ID-1) DIV 32) +1, NEW.PERM_INFO1,NEW.PERM_INFO2,NEW.PERM_INFO3,NEW.PERM_INFO4,NEW.PERM_INFO5,NEW.PERM_INFO6,NEW.PERM_INFO7,NEW.PERM_INFO8, NEW.PERM_INFO9,NEW.PERM_INFO10,NEW.PERM_INFO11,NEW.PERM_INFO12,NEW.PERM_INFO13,NEW.PERM_INFO14,NEW.PERM_INFO15,NEW.PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)); INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT NEW.PERM_USER_GROUP,report_type_info.REPORT_DEFINE FROM rm_userg_def,rm_role_hmi_info,report_type_info WHERE rm_userg_def.PERM_ID = NEW.PERM_USER_GROUP AND testNumber(elt( ((PERM_ROLE-1) DIV 32) +1, PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND rm_role_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)) ; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_userg_hmi_info', 'perm_user_group,perm_type,perm_attribute', concat(OLD.PERM_USER_GROUP,',',OLD.PERM_TYPE,',',OLD.PERM_ATTRIBUTE), concat(NEW.PERM_USER_GROUP,',',NEW.PERM_TYPE,',',NEW.PERM_ATTRIBUTE), getTableSubSystem('rm_userg_hmi_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_RM_USERG_HMI_INFO AFTER DELETE ON rm_userg_hmi_info FOR EACH ROW BEGIN #PERM_TYPE = 1是报表,0是HMI画面 #先清除,后插入rm_userg_report_info IF OLD.PERM_TYPE = '1' THEN BEGIN #先删除关联了此用户组的在rm_userg_report_info中的报表浏览权限 DELETE FROM rm_userg_report_info WHERE PERM_USER_GROUP = OLD.PERM_USER_GROUP; #重新把对应的报表浏览权限写入 INSERT IGNORE INTO rm_userg_report_info(PERM_USER_GROUP,REPORT_CODE) SELECT OLD.PERM_USER_GROUP,report_type_info.REPORT_DEFINE FROM rm_userg_def,rm_role_hmi_info,report_type_info WHERE rm_userg_def.PERM_ID = OLD.PERM_USER_GROUP AND testNumber(elt( ((PERM_ROLE-1) DIV 32) +1, PERM_ROLE1,PERM_ROLE2,PERM_ROLE3,PERM_ROLE4,PERM_ROLE5,PERM_ROLE6,PERM_ROLE7,PERM_ROLE8), IF(PERM_ROLE%32=0,32,PERM_ROLE%32)) AND rm_role_hmi_info.PERM_TYPE='1' AND testNumber(elt( ((REPORT_ID-1) DIV 32) +1, PERM_INFO1,PERM_INFO2,PERM_INFO3,PERM_INFO4,PERM_INFO5,PERM_INFO6,PERM_INFO7,PERM_INFO8, PERM_INFO9,PERM_INFO10,PERM_INFO11,PERM_INFO12,PERM_INFO13,PERM_INFO14,PERM_INFO15,PERM_INFO16) ,IF(REPORT_ID%32=0,32,REPORT_ID%32)) ; END; END IF; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_userg_hmi_info', 'perm_user_group,perm_type,perm_attribute', concat(OLD.PERM_USER_GROUP,',',OLD.PERM_TYPE,',',OLD.PERM_ATTRIBUTE), '', getTableSubSystem('rm_userg_hmi_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_RM_USERG_RSP_INFO` AFTER INSERT ON `rm_userg_rsp_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'rm_userg_rsp_info', 'perm_user_group,perm_role,perm_spefunc', '', concat(NEW.PERM_USER_GROUP,',',NEW.PERM_ROLE,',',NEW.PERM_SPEFUNC), getTableSubSystem('rm_userg_rsp_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_RM_USERG_RSP_INFO` AFTER UPDATE ON `rm_userg_rsp_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'rm_userg_rsp_info', 'perm_user_group,perm_role,perm_spefunc', concat(OLD.PERM_USER_GROUP,',',OLD.PERM_ROLE,',',OLD.PERM_SPEFUNC), concat(NEW.PERM_USER_GROUP,',',NEW.PERM_ROLE,',',NEW.PERM_SPEFUNC), getTableSubSystem('rm_userg_rsp_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_RM_USERG_RSP_INFO` AFTER DELETE ON `rm_userg_rsp_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'rm_userg_rsp_info', 'perm_user_group,perm_role,perm_spefunc', concat(OLD.PERM_USER_GROUP,',',OLD.PERM_ROLE,',',OLD.PERM_SPEFUNC), '', getTableSubSystem('rm_userg_rsp_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TIA_SAFETY_DAY AFTER INSERT ON safety_day FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'safety_day', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('safety_day')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_SAFETY_DAY AFTER UPDATE ON safety_day FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'safety_day', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('safety_day')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_SAFETY_DAY AFTER DELETE ON safety_day FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'safety_day', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('safety_day')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TIA_SAMPLE_DEFINE AFTER INSERT ON sample_define FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sample_define', 'tag_name', '', NEW.TAG_NAME, getTableSubSystem('sample_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TUA_SAMPLE_DEFINE AFTER UPDATE ON sample_define FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sample_define', 'tag_name', OLD.TAG_NAME, NEW.TAG_NAME, getTableSubSystem('sample_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TDA_SAMPLE_DEFINE AFTER DELETE ON sample_define FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sample_define', 'tag_name', OLD.TAG_NAME, '', getTableSubSystem('sample_define')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_APP_INFO` AFTER INSERT ON `sys_model_app_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_app_info', 'app_id', '', NEW.APP_ID, getTableSubSystem('sys_model_app_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_APP_INFO` AFTER UPDATE ON `sys_model_app_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_app_info', 'app_id', OLD.APP_ID, NEW.APP_ID, getTableSubSystem('sys_model_app_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_APP_INFO` AFTER DELETE ON `sys_model_app_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_app_info', 'app_id', OLD.APP_ID, '', getTableSubSystem('sys_model_app_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_DBCONFIG_DOMAIN` AFTER INSERT ON `sys_model_dbconfig_domain` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_dbconfig_domain', 'domain_id', '', NEW.DOMAIN_ID, getTableSubSystem('sys_model_dbconfig_domain')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_DBCONFIG_DOMAIN` AFTER UPDATE ON `sys_model_dbconfig_domain` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_dbconfig_domain', 'domain_id', OLD.DOMAIN_ID, NEW.DOMAIN_ID, getTableSubSystem('sys_model_dbconfig_domain')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_DBCONFIG_DOMAIN` AFTER DELETE ON `sys_model_dbconfig_domain` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_dbconfig_domain', 'domain_id', OLD.DOMAIN_ID, '', getTableSubSystem('sys_model_dbconfig_domain')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_DBCONFIG_NODE` AFTER INSERT ON `sys_model_dbconfig_node` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_dbconfig_node', 'node_name', '', NEW.NODE_NAME, getTableSubSystem('sys_model_dbconfig_node')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_DBCONFIG_NODE` AFTER UPDATE ON `sys_model_dbconfig_node` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_dbconfig_node', 'node_name', OLD.NODE_NAME, NEW.NODE_NAME, getTableSubSystem('sys_model_dbconfig_node')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_DBCONFIG_NODE` AFTER DELETE ON `sys_model_dbconfig_node` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_dbconfig_node', 'node_name', OLD.NODE_NAME, '', getTableSubSystem('sys_model_dbconfig_node')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_DEPLOY_INFO` AFTER INSERT ON `sys_model_deploy_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_deploy_info', 'domain_id,app_id', '', concat(NEW.DOMAIN_ID,',',NEW.APP_ID), getTableSubSystem('sys_model_deploy_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_DEPLOY_INFO` AFTER UPDATE ON `sys_model_deploy_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_deploy_info', 'domain_id,app_id', concat(OLD.DOMAIN_ID,',',OLD.APP_ID), concat(NEW.DOMAIN_ID,',',NEW.APP_ID), getTableSubSystem('sys_model_deploy_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_DEPLOY_INFO` AFTER DELETE ON `sys_model_deploy_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_deploy_info', 'domain_id,app_id', concat(OLD.DOMAIN_ID,',',OLD.APP_ID), '', getTableSubSystem('sys_model_deploy_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_DOMAIN_INFO` AFTER INSERT ON `sys_model_domain_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_domain_info', 'domain_id', '', NEW.DOMAIN_ID, getTableSubSystem('sys_model_domain_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_DOMAIN_INFO` AFTER UPDATE ON `sys_model_domain_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_domain_info', 'domain_id', OLD.DOMAIN_ID, NEW.DOMAIN_ID, getTableSubSystem('sys_model_domain_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_DOMAIN_INFO` AFTER DELETE ON `sys_model_domain_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_domain_info', 'domain_id', OLD.DOMAIN_ID, '', getTableSubSystem('sys_model_domain_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_LOCATION_INFO` AFTER INSERT ON `sys_model_location_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_location_info', 'location_id', '', NEW.LOCATION_ID, getTableSubSystem('sys_model_location_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_LOCATION_INFO` AFTER UPDATE ON `sys_model_location_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_location_info', 'location_id', OLD.LOCATION_ID, NEW.LOCATION_ID, getTableSubSystem('sys_model_location_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_LOCATION_INFO` AFTER DELETE ON `sys_model_location_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_location_info', 'location_id', OLD.LOCATION_ID, '', getTableSubSystem('sys_model_location_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_MSG_RELAY` AFTER INSERT ON `sys_model_msg_relay` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_msg_relay', 'src_domain_id,dst_domain_id,sub_app_id', '', concat(NEW.SRC_DOMAIN_ID,',',NEW.DST_DOMAIN_ID,',',NEW.SUB_APP_ID), getTableSubSystem('sys_model_msg_relay')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_MSG_RELAY` AFTER UPDATE ON `sys_model_msg_relay` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_msg_relay', 'src_domain_id,dst_domain_id,sub_app_id', concat(OLD.SRC_DOMAIN_ID,',',OLD.DST_DOMAIN_ID,',',OLD.SUB_APP_ID), concat(NEW.SRC_DOMAIN_ID,',',NEW.DST_DOMAIN_ID,',',NEW.SUB_APP_ID), getTableSubSystem('sys_model_msg_relay')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_MSG_RELAY` AFTER DELETE ON `sys_model_msg_relay` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_msg_relay', 'src_domain_id,dst_domain_id,sub_app_id', concat(OLD.SRC_DOMAIN_ID,',',OLD.DST_DOMAIN_ID,',',OLD.SUB_APP_ID), '', getTableSubSystem('sys_model_msg_relay')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_NODE_INFO` AFTER INSERT ON `sys_model_node_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_node_info', 'node_name', '', NEW.NODE_NAME, getTableSubSystem('sys_model_node_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_NODE_INFO` AFTER UPDATE ON `sys_model_node_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_node_info', 'node_name', OLD.NODE_NAME, NEW.NODE_NAME, getTableSubSystem('sys_model_node_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_NODE_INFO` AFTER DELETE ON `sys_model_node_info` FOR EACH ROW BEGIN delete from acs_device_node_map where NODE_NAME = old.NODE_NAME; IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_node_info', 'node_name', OLD.NODE_NAME, '', getTableSubSystem('sys_model_node_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_PROCESS_INFO` AFTER INSERT ON `sys_model_process_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_process_info', 'proc_alias', '', NEW.PROC_ALIAS, getTableSubSystem('sys_model_process_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_PROCESS_INFO` AFTER UPDATE ON `sys_model_process_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_process_info', 'proc_alias', OLD.PROC_ALIAS, NEW.PROC_ALIAS, getTableSubSystem('sys_model_process_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_PROCESS_INFO` AFTER DELETE ON `sys_model_process_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_process_info', 'proc_alias', OLD.PROC_ALIAS, '', getTableSubSystem('sys_model_process_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TIA_SYS_MODEL_SUB_SYSTEM_INFO` AFTER INSERT ON `sys_model_sub_system_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('insert'),'sys_model_sub_system_info', 'sub_system_id', '', NEW.SUB_SYSTEM_ID, getTableSubSystem('sys_model_sub_system_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TUA_SYS_MODEL_SUB_SYSTEM_INFO` AFTER UPDATE ON `sys_model_sub_system_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('update'),'sys_model_sub_system_info', 'sub_system_id', OLD.SUB_SYSTEM_ID, NEW.SUB_SYSTEM_ID, getTableSubSystem('sys_model_sub_system_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER `TDA_SYS_MODEL_SUB_SYSTEM_INFO` AFTER DELETE ON `sys_model_sub_system_info` FOR EACH ROW BEGIN IF getTriggerFlag() = TRUE THEN INSERT INTO sys_trigger_info(ACT_ID, OP_TYPE, TABLE_NAME,KEY_COLUMN_NAME,KEY_OLD_VALUE,KEY_NEW_VALUE,SUBSYSTEM_FLAG) VALUES (getMaxTriggerId(),getOpType('delete'),'sys_model_sub_system_info', 'sub_system_id', OLD.SUB_SYSTEM_ID, '', getTableSubSystem('sys_model_sub_system_info')); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TU_TEMP_PLUGIN AFTER UPDATE ON TEMP_PLUGIN FOR EACH ROW BEGIN UPDATE temp_plugin_dev_map SET PLUGIN_NAME = NEW.TAG_NAME WHERE PLUGIN_NAME = OLD.TAG_NAME; UPDATE temp_plugin_fes_dev_map SET PLUGIN_NAME = NEW.TAG_NAME WHERE PLUGIN_NAME = OLD.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_TEMP_PLUGIN AFTER DELETE ON TEMP_PLUGIN FOR EACH ROW BEGIN DELETE FROM temp_plugin_dev_map WHERE PLUGIN_NAME = OLD.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TI_TEMP_PLUGIN_DEV_MAP AFTER INSERT ON temp_plugin_dev_map FOR EACH ROW body:BEGIN IF myTriggerIsDisable() = 1 THEN LEAVE body; END IF; #生成对应的测点 INSERT INTO temp_plugin_point_map_acc (PLUGIN_NAME, TEMP_NAME, TEMP_POINT_NAME, FES_TEMP_NAME, FES_TEMP_POINT_NAME) SELECT NEW.PLUGIN_NAME,NEW.TEMP_NAME,getAfterLastDot(TAG_NAME),'', '' FROM accuml_temp_define WHERE DEV_TP_NAME = NEW.TEMP_NAME; INSERT INTO temp_plugin_point_map_ana (PLUGIN_NAME, TEMP_NAME, TEMP_POINT_NAME, FES_TEMP_NAME, FES_TEMP_POINT_NAME,FES_TEMP_OUT_NAME) SELECT NEW.PLUGIN_NAME,NEW.TEMP_NAME,getAfterLastDot(TAG_NAME),'', '', '' FROM analog_temp_define WHERE DEV_TP_NAME = NEW.TEMP_NAME; INSERT INTO temp_plugin_point_map_dig (PLUGIN_NAME, TEMP_NAME, TEMP_POINT_NAME, FES_TEMP_NAME, FES_TEMP_POINT_NAME1, FES_TEMP_POINT_NAME2, FES_TEMP_POINT_NAME3, FES_TEMP_POINT_NAME4, FES_TEMP_POINT_NAME5, FES_TEMP_OUT_NAME1, FES_TEMP_OUT_NAME2, FES_TEMP_OUT_NAME3, FES_TEMP_OUT_NAME4, FES_TEMP_OUT_NAME5) SELECT NEW.PLUGIN_NAME,NEW.TEMP_NAME,getAfterLastDot(TAG_NAME),'', '', '', '', '', '', '', '', '', '', '' FROM digital_temp_define WHERE DEV_TP_NAME = NEW.TEMP_NAME; INSERT INTO temp_plugin_point_map_mix (PLUGIN_NAME, TEMP_NAME, TEMP_POINT_NAME, FES_TEMP_NAME, FES_TEMP_POINT_NAME,FES_TEMP_OUT_NAME) SELECT NEW.PLUGIN_NAME,NEW.TEMP_NAME,getAfterLastDot(TAG_NAME),'', '', '' FROM mix_temp_define WHERE DEV_TP_NAME = NEW.TEMP_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_TEMP_PLUGIN_DEV_MAP AFTER DELETE ON temp_plugin_dev_map FOR EACH ROW BEGIN DELETE FROM temp_plugin_fes_dev_map WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; DELETE FROM temp_plugin_point_map_acc WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; DELETE FROM temp_plugin_point_map_ana WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; DELETE FROM temp_plugin_point_map_dig WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; DELETE FROM temp_plugin_point_map_mix WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TU_TEMP_PLUGIN_FES_DEV_MAP AFTER UPDATE ON TEMP_PLUGIN_FES_DEV_MAP FOR EACH ROW BEGIN #分两种一种是更新plugin_name和temp_name,另外的是更新fes_temp_name #已temp_plugin_point_map_acc为例,在此表中存在已关联的和未关联的两种情况,即FES_TEMP_NAME可能为空 IF OLD.PLUGIN_NAME != NEW.PLUGIN_NAME OR OLD.TEMP_NAME != NEW.TEMP_NAME THEN BEGIN UPDATE temp_plugin_point_map_acc SET PLUGIN_NAME = NEW.PLUGIN_NAME, TEMP_NAME = NEW.TEMP_NAME WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; UPDATE temp_plugin_point_map_ana SET PLUGIN_NAME = NEW.PLUGIN_NAME, TEMP_NAME = NEW.TEMP_NAME WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; UPDATE temp_plugin_point_map_dig SET PLUGIN_NAME = NEW.PLUGIN_NAME, TEMP_NAME = NEW.TEMP_NAME WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; UPDATE temp_plugin_point_map_mix SET PLUGIN_NAME = NEW.PLUGIN_NAME, TEMP_NAME = NEW.TEMP_NAME WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME; END; END IF; #上面的更新完成后,就可以统一使用新的plugin_name和temp_name IF OLD.FES_TEMP_NAME != NEW.FES_TEMP_NAME THEN BEGIN UPDATE temp_plugin_point_map_acc SET FES_TEMP_NAME = NEW.FES_TEMP_NAME WHERE PLUGIN_NAME = NEW.PLUGIN_NAME AND TEMP_NAME = NEW.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; UPDATE temp_plugin_point_map_ana SET FES_TEMP_NAME = NEW.FES_TEMP_NAME WHERE PLUGIN_NAME = NEW.PLUGIN_NAME AND TEMP_NAME = NEW.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; UPDATE temp_plugin_point_map_dig SET FES_TEMP_NAME = NEW.FES_TEMP_NAME WHERE PLUGIN_NAME = NEW.PLUGIN_NAME AND TEMP_NAME = NEW.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; UPDATE temp_plugin_point_map_mix SET FES_TEMP_NAME = NEW.FES_TEMP_NAME WHERE PLUGIN_NAME = NEW.PLUGIN_NAME AND TEMP_NAME = NEW.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; END; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DELIMITER $$ CREATE TRIGGER TD_TEMP_PLUGIN_FES_DEV_MAP AFTER DELETE ON TEMP_PLUGIN_FES_DEV_MAP FOR EACH ROW BEGIN #直接把相关关联去除 UPDATE temp_plugin_point_map_acc SET FES_TEMP_NAME = '', FES_TEMP_POINT_NAME = '' WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; UPDATE temp_plugin_point_map_ana SET FES_TEMP_NAME = '', FES_TEMP_POINT_NAME = '', FES_TEMP_OUT_NAME = '' WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; UPDATE temp_plugin_point_map_dig SET FES_TEMP_NAME = '', FES_TEMP_POINT_NAME1 = '', FES_TEMP_POINT_NAME2 = '', FES_TEMP_POINT_NAME3 = '', FES_TEMP_POINT_NAME4 = '', FES_TEMP_POINT_NAME5 = '', FES_TEMP_OUT_NAME1 = '', FES_TEMP_OUT_NAME2 = '', FES_TEMP_OUT_NAME3 = '', FES_TEMP_OUT_NAME4 = '', FES_TEMP_OUT_NAME5 = '' WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; UPDATE temp_plugin_point_map_mix SET FES_TEMP_NAME = '', FES_TEMP_POINT_NAME = '', FES_TEMP_OUT_NAME = '' WHERE PLUGIN_NAME = OLD.PLUGIN_NAME AND TEMP_NAME = OLD.TEMP_NAME AND FES_TEMP_NAME = OLD.FES_TEMP_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `findPsc3000Tag`; DELIMITER $$ CREATE FUNCTION `findPsc3000Tag`(pointDesc varchar(128),pointRemoteNo decimal(10,0), pointDevId decimal(10,0),tableName varchar(64)) RETURNS varchar(64) CHARSET utf8 BEGIN #在对应的PSC3000的测点表中查找对应测点的TAG DECLARE tempVar varchar(64) DEFAULT ''; IF tableName='psc_acc' THEN SET tempVar =(SELECT TAG_NAME FROM psc3000_acc WHERE DESCRIPTION = pointDesc AND pointRemoteNo = REMOTE_NO AND pointDevId = DEV_ID); ELSEIF tableName='psc_ana' THEN SET tempVar =(SELECT TAG_NAME FROM psc3000_ana WHERE DESCRIPTION = pointDesc AND pointRemoteNo = REMOTE_NO AND pointDevId = DEV_ID); ELSEIF tableName='psc_dig' THEN SET tempVar =(SELECT TAG_NAME FROM psc3000_dig WHERE DESCRIPTION = pointDesc AND pointRemoteNo = REMOTE_NO AND pointDevId = DEV_ID); END IF; IF tempVar IS NULL THEN SET tempVar = ''; END IF; #自增 RETURN tempVar; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getAfterFirstDot`; DELIMITER $$ CREATE FUNCTION `getAfterFirstDot`( ds varchar(128)) RETURNS varchar(128) CHARSET utf8 BEGIN /* * 返回第一个.号之后的字符串 */ DECLARE tempVar varchar(128); DECLARE countStr int; DECLARE countFirstStr int; SET tempVar = ds; IF locate('.',ds) = 0 THEN RETURN tempVar; ELSE BEGIN SET tempVar = substring_index( ds, '.' , 1); SET countStr = char_length(ds); SET countFirstStr = char_length(tempVar); SET countFirstStr = countFirstStr + 1; SET tempVar = right(ds,countStr - countFirstStr); RETURN tempVar; END; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getAfterLastDot`; DELIMITER $$ CREATE FUNCTION `getAfterLastDot`( ds varchar(128)) RETURNS varchar(128) CHARSET utf8 BEGIN /* * 返回最后一个.号之后的数据 */ DECLARE tempVar varchar(128); SET tempVar = ''; IF locate('.',ds) = 0 THEN RETURN tempVar; ELSE RETURN substring_index( ds, '.' , -1); END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getBeforeFirstDot`; DELIMITER $$ CREATE FUNCTION `getBeforeFirstDot`( ds varchar(128)) RETURNS varchar(128) CHARSET utf8 BEGIN /* * 返回第一个.号之前的字符串 */ IF locate('.',ds) = 0 THEN RETURN ''; ELSE BEGIN RETURN substring_index( ds, '.' , 1); END; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getBeforeLastDot`; DELIMITER $$ CREATE FUNCTION `getBeforeLastDot`( ds varchar(128)) RETURNS varchar(128) CHARSET utf8 BEGIN /* * 返回最后一个.之前的字符串 */ DECLARE tempVar varchar(128); DECLARE countStr int; DECLARE countLastStr int; SET tempVar = ds; IF locate('.',ds) = 0 THEN RETURN tempVar; ELSE BEGIN SET tempVar = substring_index( ds, '.' , -1); SET countStr = char_length(ds); SET countLastStr = char_length(tempVar); SET countLastStr = countLastStr + 1; SET tempVar = left(ds,countStr - countLastStr); RETURN tempVar; END; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getFesPointType`; DELIMITER $$ CREATE FUNCTION `getFesPointType`( flag varchar(64)) RETURNS decimal(10,0) BEGIN /* * 返回flag指定的点类型 * * FES_ACC:0 * FES_ANA:1 * FES_DIG:2 * FES_MIX:3 * FES_ANA_CTRL:4 * FES_DIG_CTRL:5 * FES_MIX_CTRL:6 */ DECLARE tempVar decimal(10,0) DEFAULT 0; IF flag='FES_ACC' THEN SET tempVar =0; END IF; IF flag='FES_ANA' THEN SET tempVar =1; END IF; IF flag='FES_DIG' THEN SET tempVar =2; END IF; IF flag='FES_MIX' THEN SET tempVar =3; END IF; IF flag='FES_ANA_CTRL' THEN SET tempVar =4; END IF; IF flag='FES_DIG_CTRL' THEN SET tempVar =5; END IF; IF flag='FES_MIX_CTRL' THEN SET tempVar =6; END IF; IF flag='FES_CONST' THEN SET tempVar =7; END IF; RETURN tempVar; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getMaxDefaultDevSeqNo`; DELIMITER $$ CREATE FUNCTION `getMaxDefaultDevSeqNo`( defaultDevTagName varchar(64), dotType decimal(10,0)) RETURNS decimal(10,0) BEGIN /* * 返回指定defaultDevTagName的最大SeqNo */ DECLARE tempVar decimal(10,0) DEFAULT 0; IF dotType=getFesPointType('FES_ACC') THEN SET tempVar =(SELECT max(SEQ_NO) FROM fes_accuml WHERE DEV_TAG=defaultDevTagName); END IF; IF dotType=getFesPointType('FES_ANA') THEN SET tempVar =(SELECT max(SEQ_NO) FROM fes_analog WHERE DEV_TAG=defaultDevTagName); END IF; IF dotType=getFesPointType('FES_DIG') THEN SET tempVar =(SELECT max(SEQ_NO) FROM fes_digital WHERE DEV_TAG=defaultDevTagName); END IF; IF dotType=getFesPointType('FES_MIX') THEN SET tempVar =(SELECT max(SEQ_NO) FROM fes_mix WHERE DEV_TAG=defaultDevTagName); END IF; IF dotType=getFesPointType('FES_ANA_CTRL') THEN SET tempVar =(SELECT max(SEQ_NO) FROM fes_analog_ctrl WHERE DEV_TAG=defaultDevTagName); END IF; IF dotType=getFesPointType('FES_DIG_CTRL') THEN SET tempVar =(SELECT max(SEQ_NO) FROM fes_digital_ctrl WHERE DEV_TAG=defaultDevTagName); END IF; IF dotType=getFesPointType('FES_MIX_CTRL') THEN SET tempVar =(SELECT max(SEQ_NO) FROM fes_mix_ctrl WHERE DEV_TAG=defaultDevTagName); END IF; IF tempVar IS NULL THEN SET tempVar = 0; END IF; RETURN tempVar + 1; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getMaxRtuDotNo`; DELIMITER $$ CREATE FUNCTION `getMaxRtuDotNo`( rtuTagName varchar(64), dotType decimal(10,0)) RETURNS decimal(10,0) BEGIN /* * 返回指定rtuTagName的最大点号 * dotType可取三个值,0,1,2 * 0表示FES_ACC * 1表示FES_ANA * 2表示FES_DIG * 3表示FES_MIX */ DECLARE tempVar decimal(10,0) DEFAULT 0; IF dotType=getFesPointType('FES_ACC') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_accuml WHERE RTU_TAG=rtuTagName); END IF; IF dotType=getFesPointType('FES_ANA') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_analog WHERE RTU_TAG=rtuTagName); END IF; IF dotType=getFesPointType('FES_DIG') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_digital WHERE RTU_TAG=rtuTagName); END IF; IF dotType=getFesPointType('FES_MIX') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_mix WHERE RTU_TAG=rtuTagName); END IF; IF dotType=getFesPointType('FES_ANA_CTRL') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_analog_ctrl WHERE RTU_TAG=rtuTagName); END IF; IF dotType=getFesPointType('FES_DIG_CTRL') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_digital_ctrl WHERE RTU_TAG=rtuTagName); END IF; IF dotType=getFesPointType('FES_MIX_CTRL') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_mix_ctrl WHERE RTU_TAG=rtuTagName); END IF; IF dotType=getFesPointType('FES_CONST') THEN SET tempVar =(SELECT max(DOT_NO) FROM fes_const WHERE RTU_TAG=rtuTagName); END IF; IF tempVar IS NULL THEN SET tempVar = -1; END IF; #自增 RETURN tempVar + 1; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getMaxSeq`; DELIMITER $$ CREATE FUNCTION `getMaxSeq`(devTag varchar(64), tableName varchar(64)) RETURNS decimal(10,0) BEGIN #获取指定设备的最大索引号 DECLARE temp decimal(10) DEFAULT 0; IF tableName = 'accuml' THEN SELECT max(SEQ_NO) INTO temp FROM accuml WHERE DEVICE = devTag; ELSEIF tableName = 'analog' THEN SELECT max(SEQ_NO) INTO temp FROM analog WHERE DEVICE = devTag; ELSEIF tableName = 'digital' THEN SELECT max(SEQ_NO) INTO temp FROM digital WHERE DEVICE = devTag; ELSEIF tableName = 'mix' THEN SELECT max(SEQ_NO) INTO temp FROM mix WHERE DEVICE = devTag; END IF; RETURN COALESCE(temp,0); END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getMaxTriggerId`; DELIMITER $$ CREATE FUNCTION `getMaxTriggerId`() RETURNS decimal(10,0) BEGIN #分割字符串,返回第strCount个子串 DECLARE maxId decimal(10,0) DEFAULT 0; SELECT (max(ACT_ID)) INTO maxId FROM sys_trigger_info; IF COALESCE(maxId,0) = 0 THEN SET maxId = 0; END IF; SET maxId = maxId + 1; RETURN maxId; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getOpType`; DELIMITER $$ CREATE FUNCTION `getOpType`(opName varchar(32)) RETURNS decimal(10,0) BEGIN #获取操作类型 DECLARE flag decimal(10,0) DEFAULT -1; IF opName = 'insert' THEN SET flag = 0; ELSEIF opName = 'delete' THEN SET flag = 1; ELSEIF opName = 'update' THEN SET flag = 2; ELSE SET flag = -1; END IF; RETURN flag; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getTableSubSystem`; DELIMITER $$ CREATE FUNCTION `getTableSubSystem`( tableName varchar(100)) RETURNS decimal(10,0) BEGIN DECLARE subSystemFlag decimal(10,0) DEFAULT 0; RETURN subSystemFlag; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `getTriggerFlag`; DELIMITER $$ CREATE FUNCTION `getTriggerFlag`() RETURNS tinyint(1) BEGIN #分割字符串,返回第strCount个子串 DECLARE flag boolean DEFAULT FALSE; SELECT FLAG_ID INTO flag FROM sys_trigger_flag WHERE FLAG_ID = 1; IF COALESCE(flag,FALSE) = FALSE THEN SET flag = FALSE; END IF; RETURN flag; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `myTriggerIsDisable`; DELIMITER $$ CREATE FUNCTION `myTriggerIsDisable`() RETURNS int(11) BEGIN #触发器开关状态,返回1时 IF COALESCE(@disableMyTrrigger,0) = 0 THEN RETURN 0; ELSE RETURN 1; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `resetBit`; DELIMITER $$ CREATE FUNCTION `resetBit`( num int ,pos int) RETURNS int(11) BEGIN #设置num的pos位为0,pos从1开始数 #要求输入和输出都是Int范围的数 DECLARE strNum varchar(64); SET strNum = bin(num); SET strNum = lpad(strNum,64,'0'); SET strNum = concat(left(strNum,64-pos),'0',right(strNum,pos-1)); SET strNum = right(strNum,32); #周工那边是用Int,而不是uint,所以这里控制范围 SET strNum = lpad(strNum,64,left(strNum,1)); RETURN CAST(CONV(CAST(strNum AS binary),2,10) AS signed); END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `setBit`; DELIMITER $$ CREATE FUNCTION `setBit`( num int ,pos int) RETURNS int(11) BEGIN #设置num的pos位为1,pos从1开始数 #要求输入和输出都是Int范围的数 DECLARE strNum varchar(64); SET strNum = bin(num); SET strNum = lpad(strNum,64,'0'); SET strNum = concat(left(strNum,64-pos),'1',right(strNum,pos-1)); SET strNum = right(strNum,32); SET strNum = lpad(strNum,64,left(strNum,1)); RETURN CAST(CONV(CAST(strNum AS binary),2,10) AS signed); END$$ DELIMITER ; -- ------------------------------------------------------ DROP FUNCTION IF EXISTS `testNumber`; DELIMITER $$ CREATE FUNCTION `testNumber`( num decimal(10,0), pos int) RETURNS tinyint(1) BEGIN #返回num的第pos位是否为1,pos从1开始数 DECLARE tempStr varchar(64) DEFAULT ''; SET tempStr = bin(num); IF pos > length(tempStr) THEN RETURN FALSE; END IF; IF pos < 1 THEN RETURN FALSE; END IF; IF mid(tempStr,length(tempStr) - pos + 1,1)='1' THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `autoRelationByPlugin`; DELIMITER $$ CREATE PROCEDURE `autoRelationByPlugin`(pluginName varchar(64)) body:BEGIN #自动形成套件中后台对前置的关联 #清除本套件中的关联关系 UPDATE temp_plugin_point_map_acc SET FES_TEMP_NAME = '',FES_TEMP_POINT_NAME = '' WHERE PLUGIN_NAME = pluginName; UPDATE temp_plugin_point_map_ana SET FES_TEMP_NAME = '',FES_TEMP_POINT_NAME = '',FES_TEMP_OUT_NAME = '' WHERE PLUGIN_NAME = pluginName; UPDATE temp_plugin_point_map_dig SET FES_TEMP_NAME = '', FES_TEMP_OUT_NAME1 = '', FES_TEMP_OUT_NAME2 = '', FES_TEMP_OUT_NAME3 = '', FES_TEMP_OUT_NAME4 = '', FES_TEMP_OUT_NAME5 = '', FES_TEMP_POINT_NAME1 = '', FES_TEMP_POINT_NAME2 = '', FES_TEMP_POINT_NAME3 = '', FES_TEMP_POINT_NAME4 = '', FES_TEMP_POINT_NAME5 = '' WHERE PLUGIN_NAME = pluginName; UPDATE temp_plugin_point_map_mix SET FES_TEMP_NAME = '',FES_TEMP_POINT_NAME = '',FES_TEMP_OUT_NAME = '' WHERE PLUGIN_NAME = pluginName; #关联 #accuml UPDATE (temp_plugin_point_map_acc INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_acc.PLUGIN_NAME = pluginName AND temp_plugin_point_map_acc.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_acc.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_ACC') AND temp_plugin_point_map_acc.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_acc.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_acc.FES_TEMP_POINT_NAME = temp_plugin_point_map_acc.TEMP_POINT_NAME; #analog UPDATE (temp_plugin_point_map_ana INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_ana.PLUGIN_NAME = pluginName AND temp_plugin_point_map_ana.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_ana.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_ANA') AND temp_plugin_point_map_ana.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_ana.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_ana.FES_TEMP_POINT_NAME = temp_plugin_point_map_ana.TEMP_POINT_NAME; #digital,只关联第一个分量 UPDATE (temp_plugin_point_map_dig INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_dig.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_DIG') AND temp_plugin_point_map_dig.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_dig.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_dig.FES_TEMP_POINT_NAME1 = temp_plugin_point_map_dig.TEMP_POINT_NAME; UPDATE (temp_plugin_point_map_mix INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_mix.PLUGIN_NAME = pluginName AND temp_plugin_point_map_mix.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_mix.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_MIX') AND temp_plugin_point_map_mix.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_mix.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_mix.FES_TEMP_POINT_NAME = temp_plugin_point_map_mix.TEMP_POINT_NAME; /*以下操作转到代码实现 #经过以上操作后台和前置同名的测点已经关联,下面处理特殊的点 wz-->posOn,posOff CREATE TEMPORARY TABLE IF NOT EXISTS tmpAutoRelationPluginTbl( PLUGIN_NAME varchar(64), TEMP_NAME varchar(64), TEMP_POINT_NAME varchar(64), FES_TEMP_NAME varchar(64), FES_POINT1 varchar(64), FES_POINT2 varchar(64) ); DELETE FROM tmpAutoRelationPluginTbl; INSERT INTO tmpAutoRelationPluginTbl(PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_POINT1,FES_POINT2) SELECT A.PLUGIN_NAME,A.TEMP_NAME,A.TEMP_POINT_NAME,temp_plugin_fes_dev_map.FES_TEMP_NAME,'','' FROM (SELECT PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME FROM temp_plugin_point_map_dig WHERE PLUGIN_NAME = pluginName AND TEMP_POINT_NAME = 'pos') AS A LEFT JOIN temp_plugin_fes_dev_map ON A.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND A.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME; UPDATE tmpAutoRelationPluginTbl INNER JOIN fes_dev_pt_temp_def ON fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND tmpAutoRelationPluginTbl.FES_TEMP_NAME = fes_dev_pt_temp_def.DEV_TP_NAME AND getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME) = 'posOn' SET tmpAutoRelationPluginTbl.FES_POINT1 = getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME); UPDATE tmpAutoRelationPluginTbl INNER JOIN fes_dev_pt_temp_def ON fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND tmpAutoRelationPluginTbl.FES_TEMP_NAME = fes_dev_pt_temp_def.DEV_TP_NAME AND getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME) = 'posOff' SET tmpAutoRelationPluginTbl.FES_POINT2 = getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME); UPDATE tmpAutoRelationPluginTbl INNER JOIN temp_plugin_point_map_dig ON tmpAutoRelationPluginTbl.PLUGIN_NAME = temp_plugin_point_map_dig.PLUGIN_NAME AND tmpAutoRelationPluginTbl.TEMP_NAME = temp_plugin_point_map_dig.TEMP_NAME AND tmpAutoRelationPluginTbl.TEMP_POINT_NAME = temp_plugin_point_map_dig.TEMP_POINT_NAME SET temp_plugin_point_map_dig.FES_TEMP_NAME = tmpAutoRelationPluginTbl.FES_TEMP_NAME, temp_plugin_point_map_dig.FES_TEMP_POINT_NAME1 = tmpAutoRelationPluginTbl.FES_POINT1, temp_plugin_point_map_dig.FES_TEMP_POINT_NAME2 = tmpAutoRelationPluginTbl.FES_POINT2; DELETE FROM tmpAutoRelationPluginTbl; */ END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `autoRelationByPluginDev`; DELIMITER $$ CREATE PROCEDURE `autoRelationByPluginDev`(pluginName varchar(64),devTag varchar(64)) body:BEGIN /* * 仅自动关联套件中的devTag指定的设备 */ #清除本套件中的关联关系 UPDATE temp_plugin_point_map_acc SET FES_TEMP_NAME = '',FES_TEMP_POINT_NAME = '' WHERE PLUGIN_NAME = pluginName AND TEMP_NAME = devTag; UPDATE temp_plugin_point_map_ana SET FES_TEMP_NAME = '',FES_TEMP_POINT_NAME = '',FES_TEMP_OUT_NAME = '' WHERE PLUGIN_NAME = pluginName AND TEMP_NAME = devTag; UPDATE temp_plugin_point_map_dig SET FES_TEMP_NAME = '', FES_TEMP_OUT_NAME1 = '', FES_TEMP_OUT_NAME2 = '', FES_TEMP_OUT_NAME3 = '', FES_TEMP_OUT_NAME4 = '', FES_TEMP_OUT_NAME5 = '', FES_TEMP_POINT_NAME1 = '', FES_TEMP_POINT_NAME2 = '', FES_TEMP_POINT_NAME3 = '', FES_TEMP_POINT_NAME4 = '', FES_TEMP_POINT_NAME5 = '' WHERE PLUGIN_NAME = pluginName AND TEMP_NAME = devTag; UPDATE temp_plugin_point_map_mix SET FES_TEMP_NAME = '',FES_TEMP_POINT_NAME = '',FES_TEMP_OUT_NAME = '' WHERE PLUGIN_NAME = pluginName AND TEMP_NAME = devTag; #关联 #accuml UPDATE (temp_plugin_point_map_acc INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_acc.PLUGIN_NAME = pluginName AND temp_plugin_point_map_acc.TEMP_NAME = devTag AND temp_plugin_point_map_acc.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_acc.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_ACC') AND temp_plugin_point_map_acc.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_acc.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_acc.FES_TEMP_POINT_NAME = temp_plugin_point_map_acc.TEMP_POINT_NAME; #analog UPDATE (temp_plugin_point_map_ana INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_ana.PLUGIN_NAME = pluginName AND temp_plugin_point_map_ana.TEMP_NAME = devTag AND temp_plugin_point_map_ana.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_ana.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_ANA') AND temp_plugin_point_map_ana.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_ana.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_ana.FES_TEMP_POINT_NAME = temp_plugin_point_map_ana.TEMP_POINT_NAME; #digital,只关联第一个分量 UPDATE (temp_plugin_point_map_dig INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = devTag AND temp_plugin_point_map_dig.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_dig.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_DIG') AND temp_plugin_point_map_dig.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_dig.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_dig.FES_TEMP_POINT_NAME1 = temp_plugin_point_map_dig.TEMP_POINT_NAME; UPDATE (temp_plugin_point_map_mix INNER JOIN temp_plugin_fes_dev_map ON temp_plugin_point_map_mix.PLUGIN_NAME = pluginName AND temp_plugin_point_map_mix.TEMP_NAME = devTag AND temp_plugin_point_map_mix.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND temp_plugin_point_map_mix.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME )INNER JOIN fes_dev_pt_temp_def ON DEV_TP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME AND POINT_TYPE = getFesPointType('FES_MIX') AND temp_plugin_point_map_mix.TEMP_POINT_NAME = getAfterLastDot(TAG_NAME) SET temp_plugin_point_map_mix.FES_TEMP_NAME = temp_plugin_fes_dev_map.FES_TEMP_NAME, temp_plugin_point_map_mix.FES_TEMP_POINT_NAME = temp_plugin_point_map_mix.TEMP_POINT_NAME; /*以下操作转代码实现 #经过以上操作后台和前置同名的测点已经关联,下面处理特殊的点 wz-->posOn,posOff CREATE TEMPORARY TABLE IF NOT EXISTS tmpAutoRelationPluginTbl( PLUGIN_NAME varchar(64), TEMP_NAME varchar(64), TEMP_POINT_NAME varchar(64), FES_TEMP_NAME varchar(64), FES_POINT1 varchar(64), FES_POINT2 varchar(64) ); DELETE FROM tmpAutoRelationPluginTbl; INSERT INTO tmpAutoRelationPluginTbl(PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_POINT1,FES_POINT2) SELECT A.PLUGIN_NAME,A.TEMP_NAME,A.TEMP_POINT_NAME,temp_plugin_fes_dev_map.FES_TEMP_NAME,'','' FROM (SELECT PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME FROM temp_plugin_point_map_dig WHERE PLUGIN_NAME = pluginName AND TEMP_NAME = devTag AND TEMP_POINT_NAME = 'pos') AS A LEFT JOIN temp_plugin_fes_dev_map ON A.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME AND A.TEMP_NAME = temp_plugin_fes_dev_map.TEMP_NAME; UPDATE tmpAutoRelationPluginTbl INNER JOIN fes_dev_pt_temp_def ON fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND tmpAutoRelationPluginTbl.FES_TEMP_NAME = fes_dev_pt_temp_def.DEV_TP_NAME AND getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME) = 'posOn' SET tmpAutoRelationPluginTbl.FES_POINT1 = getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME); UPDATE tmpAutoRelationPluginTbl INNER JOIN fes_dev_pt_temp_def ON fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND tmpAutoRelationPluginTbl.FES_TEMP_NAME = fes_dev_pt_temp_def.DEV_TP_NAME AND getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME) = 'posOff' SET tmpAutoRelationPluginTbl.FES_POINT2 = getAfterLastDot(fes_dev_pt_temp_def.TAG_NAME); UPDATE tmpAutoRelationPluginTbl INNER JOIN temp_plugin_point_map_dig ON tmpAutoRelationPluginTbl.PLUGIN_NAME = temp_plugin_point_map_dig.PLUGIN_NAME AND tmpAutoRelationPluginTbl.TEMP_NAME = temp_plugin_point_map_dig.TEMP_NAME AND tmpAutoRelationPluginTbl.TEMP_POINT_NAME = temp_plugin_point_map_dig.TEMP_POINT_NAME SET temp_plugin_point_map_dig.FES_TEMP_NAME = tmpAutoRelationPluginTbl.FES_TEMP_NAME, temp_plugin_point_map_dig.FES_TEMP_POINT_NAME1 = tmpAutoRelationPluginTbl.FES_POINT1, temp_plugin_point_map_dig.FES_TEMP_POINT_NAME2 = tmpAutoRelationPluginTbl.FES_POINT2; DELETE FROM tmpAutoRelationPluginTbl; */ END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `bingRtu`; DELIMITER $$ CREATE PROCEDURE `bingRtu`(devTagName varchar(64), rtuTagName varchar(64)) BEGIN #先把RTU置空,促使触发器对对应点置空 UPDATE accuml SET RTU_TAG = '' WHERE DEVICE = devTagName; UPDATE analog SET RTU_TAG = '' WHERE DEVICE = devTagName; UPDATE digital SET RTU_TAG = '' WHERE DEVICE = devTagName; UPDATE mix SET RTU_TAG = '' WHERE DEVICE = devTagName; #再关联 UPDATE accuml SET RTU_TAG = rtuTagName WHERE DEVICE = devTagName; UPDATE analog SET RTU_TAG = rtuTagName WHERE DEVICE = devTagName; UPDATE digital SET RTU_TAG = rtuTagName WHERE DEVICE = devTagName; UPDATE mix SET RTU_TAG = rtuTagName WHERE DEVICE = devTagName; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `closeMyTrigger`; DELIMITER $$ CREATE PROCEDURE `closeMyTrigger`(closeFlag int) body:BEGIN /* * 设置某些触发器的开关,获取开关状态使用myTriggerIsDisable * 目前支持本触发器开关的触发器有TI_TEMP_PLUGIN_DEV_MAP * 一般本存储过程需要成对使用时 */ IF closeFlag = 1 THEN SET @disableMyTrrigger = 1; ELSE SET @disableMyTrrigger = 0; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `copyDevGroup`; DELIMITER $$ CREATE PROCEDURE `copyDevGroup`(srcGroupName varchar(64),dstGroupName varchar(64),dstGroupDesc varchar(64)) body:BEGIN /* * 复制整个设备组 */ DECLARE totalInst int DEFAULT 1; IF COALESCE(srcGroupName,'') = '' OR COALESCE(dstGroupName,'')='' OR COALESCE(dstGroupDesc,'') = '' THEN LEAVE body; END IF; IF EXISTS (SELECT * FROM dev_group WHERE TAG_NAME = dstGroupName) THEN LEAVE body; END IF; #先插入目标设备组 INSERT INTO dev_group ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, REGION_ID, PGROUP_TAG_NAME, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, GROUP_TAG) SELECT dstGroupName, dstGroupDesc, LOCATION_ID, SUB_SYSTEM, REGION_ID, PGROUP_TAG_NAME, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, GROUP_TAG FROM dev_group WHERE TAG_NAME = srcGroupName; SELECT count(*) INTO totalInst FROM dev_info WHERE TAG_NAME LIKE '%Gcp%'; SET totalInst = totalInst + 1; #复制设备 INSERT INTO dev_info( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME) SELECT concat(TAG_NAME,'Gcp',totalInst), concat(DESCRIPTION,'Gcp'), LOCATION_ID, SUB_SYSTEM, dstGroupName, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME FROM dev_info WHERE dev_info.GROUP_TAG_NAME = srcGroupName ; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `copyDevInst`; DELIMITER $$ CREATE PROCEDURE `copyDevInst`( srcDevTagName varchar(64), dstDevTagName varchar(64), dstDesc varchar(64),dstLocation decimal(10,0), dstGroupTagName varchar(64), dstLevelId decimal(10,0),dstRegionId decimal(10,0), dstOptHandoverGroup varchar(64), dstIfSummary decimal(10,0) ) pro_body:BEGIN IF EXISTS (SELECT * FROM dev_info WHERE TAG_NAME=dstDevTagName) THEN LEAVE pro_body; END IF; #往设备中插入一条记录,同时触发DEV表的触发器去插入点 INSERT INTO dev_info( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME) SELECT dstDevTagName, dstDesc, dstLocation, SUB_SYSTEM, dstGroupTagName, dstLevelId, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, dstRegionId, dstOptHandoverGroup, dstIfSummary, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME FROM dev_info WHERE TAG_NAME= srcDevTagName; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `copyDevTemp`; DELIMITER $$ CREATE PROCEDURE `copyDevTemp`( srcTagName varchar(64), dstTagName varchar(64), dstDesc varchar(64)) pro_body:BEGIN IF EXISTS (SELECT * FROM dev_temp_def WHERE TAG_NAME=dstTagName) THEN LEAVE pro_body; END IF; /* * 复制设备模板 * */ #往设备模板中插入一条记录 INSERT INTO dev_temp_def( TAG_NAME, DEV_TYPE_ID, DEV_MODEL, DESCRIPTION, SUB_SYSTEM, PARA_STR1, PARA_STR2,DEV_TEMP_GRP ) SELECT dstTagName, DEV_TYPE_ID,DEV_MODEL,dstDesc ,SUB_SYSTEM, PARA_STR1,PARA_STR2,DEV_TEMP_GRP FROM dev_temp_def WHERE TAG_NAME= srcTagName; #复制该模板的点,该点的TagName,DEV_TP_NAME需改变 INSERT INTO accuml_temp_define( TAG_NAME, DESCRIPTION, DEV_TP_NAME, SEQ_NO, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, UNIT_ID, IS_SAMPLE, SAMPLE_DEADBAND, SAMPLE_PERIOD, IS_STATISTICS, IS_LIMIT, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, ALARM_PRIORITY, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_FILTER, PERCENT, BASE, COEFF, RANGE_UP, RANGE_LOW, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO) SELECT concat(dstTagName, '.', getAfterLastDot(TAG_NAME)), DESCRIPTION, dstTagName, SEQ_NO, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, UNIT_ID, IS_SAMPLE, SAMPLE_DEADBAND, SAMPLE_PERIOD, IS_STATISTICS, IS_LIMIT, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, ALARM_PRIORITY, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_FILTER, PERCENT, BASE, COEFF, RANGE_UP, RANGE_LOW, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO FROM accuml_temp_define WHERE DEV_TP_NAME= srcTagName; INSERT INTO analog_temp_define( TAG_NAME, DESCRIPTION, SEQ_NO, DEV_TP_NAME, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, UNIT_ID, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND, IS_LIMIT, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, ALARM_PRIORITY, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_FILTER, PERCENT, IS_VALID, DEADBAND, ZEROBAND, IS_CONTROL, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO, OUT_SEC_SEQ_NO) SELECT concat(dstTagName, '.', getAfterLastDot(TAG_NAME)), DESCRIPTION, SEQ_NO, dstTagName, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, UNIT_ID, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND, IS_LIMIT, LIMIT_TYPE, LIMIT_NUM, LIMIT_UP1, LIMIT_LOW1, LIMIT_UP2, LIMIT_LOW2, LIMIT_UP3, LIMIT_LOW3, CROSS_PERCENT, RETURN_PERCENT, ALARM_PRIORITY, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_FILTER, PERCENT, IS_VALID, DEADBAND, ZEROBAND, IS_CONTROL, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO, OUT_SEC_SEQ_NO FROM analog_temp_define WHERE DEV_TP_NAME= srcTagName; INSERT INTO digital_temp_define( TAG_NAME, DESCRIPTION, DEV_TP_NAME, SEQ_NO, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, STATE_TEXT_NAME, VALUE_NUM, ALARM_PRIORITY, ALARM_DELAY_TIME, INPUT_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_SUMMARY, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, FILTER_ERR, FILTER_DISTURB, DISTURB_TIME, POLARITY, IS_CONTROL, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, OFFSET_NUM, IS_ALARM_FREQ, ALARM_FREQ, ALARM_FREQ_DESC, IS_ALARM_TIME, ALARM_TIME, ALARM_TIME_DESC, IS_CHECK_PREVENTION, ALARM_FREQ_RANGE, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO1, SEC_SEQ_NO2, SEC_SEQ_NO3, SEC_SEQ_NO4, SEC_SEQ_NO5, OUT_SEC_SEQ_NO1, OUT_SEC_SEQ_NO2, OUT_SEC_SEQ_NO3, OUT_SEC_SEQ_NO4, OUT_SEC_SEQ_NO5) SELECT concat(dstTagName, '.', getAfterLastDot(TAG_NAME)), DESCRIPTION, dstTagName, SEQ_NO, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, STATE_TEXT_NAME, VALUE_NUM, ALARM_PRIORITY, ALARM_DELAY_TIME, INPUT_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_SUMMARY, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, FILTER_ERR, FILTER_DISTURB, DISTURB_TIME, POLARITY, IS_CONTROL, CTRL_ACT_NAME, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, PULSE_DURATION, OFFSET_NUM, IS_ALARM_FREQ, ALARM_FREQ, ALARM_FREQ_DESC, IS_ALARM_TIME, ALARM_TIME, ALARM_TIME_DESC, IS_CHECK_PREVENTION, ALARM_FREQ_RANGE, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO1, SEC_SEQ_NO2, SEC_SEQ_NO3, SEC_SEQ_NO4, SEC_SEQ_NO5, OUT_SEC_SEQ_NO1, OUT_SEC_SEQ_NO2, OUT_SEC_SEQ_NO3, OUT_SEC_SEQ_NO4, OUT_SEC_SEQ_NO5 FROM digital_temp_define WHERE DEV_TP_NAME= srcTagName; INSERT INTO mix_temp_define( TAG_NAME, DESCRIPTION, DEV_TP_NAME, SEQ_NO, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, STATE_TEXT_NAME, ALARM_PRIORITY, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_FILTER_ERROR, IS_FILTER_DISTURB, DISTURB_TIME, IS_CONTROL, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, CTRL_ACT_NAME, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO, OUT_SEC_SEQ_NO) SELECT concat(dstTagName, '.', getAfterLastDot(TAG_NAME)), DESCRIPTION, dstTagName, SEQ_NO, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, STATE_TEXT_NAME, ALARM_PRIORITY, ALARM_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, IS_FILTER_ERROR, IS_FILTER_DISTURB, DISTURB_TIME, IS_CONTROL, CTRL_TYPE, IS_TAGT_STATE, CTRL_TIMEOUT, RESV_TIMEOUT, BASE, COEFF, RANGE_UP, RANGE_LOW, CTRL_TOLERANCE, CTRL_ACT_NAME, SEC_DEV_IN_GRP, SEC_DEVTP_NAME, SEC_SEQ_NO, OUT_SEC_SEQ_NO FROM mix_temp_define WHERE DEV_TP_NAME= srcTagName; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `copyFesTemp`; DELIMITER $$ CREATE PROCEDURE `copyFesTemp`(srcFesTempTag varchar(64),dstFesTempTag varchar(64),dstDesc varchar(128)) body:BEGIN /* * 复制前置模板 */ IF EXISTS (SELECT * FROM fes_dev_temp_def WHERE TAG_NAME=dstFesTempTag) THEN LEAVE body; END IF; #往设备模板中插入一条记录 INSERT INTO fes_dev_temp_def( TAG_NAME, DEV_TYPE_ID, DEV_MODEL, DESCRIPTION, SUB_SYSTEM, PARA_STR1, PARA_STR2 ) SELECT dstFesTempTag, DEV_TYPE_ID, DEV_MODEL, dstDesc ,SUB_SYSTEM, PARA_STR1, PARA_STR2 FROM fes_dev_temp_def WHERE TAG_NAME= srcFesTempTag; #复制该模板的点,该点的TagName,DEV_TP_NAME需改变 INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, PATH61850, POSITION61850, YK_SELECT61850, YK_EXE61850, YK_CANCLE61850, YK_DOUBLE_SELECT61850, YK_DOUBLE_EXE61850, YK_DOUBLE_CANCLE61850, PULSE_TIME ) SELECT concat(dstFesTempTag, '.', getAfterLastDot(TAG_NAME)), POINT_TYPE, dstFesTempTag,SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, PATH61850, POSITION61850, YK_SELECT61850, YK_EXE61850, YK_CANCLE61850, YK_DOUBLE_SELECT61850, YK_DOUBLE_EXE61850, YK_DOUBLE_CANCLE61850, PULSE_TIME FROM fes_dev_pt_temp_def WHERE DEV_TP_NAME = srcFesTempTag; INSERT INTO fes_data_block_temp( TAG_NAME, BLOCK_ID, FUNC_CODE, STAR_ADDR, DATA_LEN, DATA_FARME_TYPE, REF_CYCLE, IS_CREATE_SOE, PARA_INT1, PARA_INT2, DESCRIPTION, LD, CALL_MODE, DATA_SET, DATA_SET_TYPE, DATA_SET_CALL_TIME, REPORT_CTRL, DEV_TP_NAME ) SELECT concat(dstFesTempTag, '.', getAfterLastDot(TAG_NAME)), BLOCK_ID, FUNC_CODE, STAR_ADDR, DATA_LEN, DATA_FARME_TYPE, REF_CYCLE, IS_CREATE_SOE, PARA_INT1, PARA_INT2, DESCRIPTION, LD, CALL_MODE, DATA_SET, DATA_SET_TYPE, DATA_SET_CALL_TIME, REPORT_CTRL, dstFesTempTag FROM fes_data_block_temp WHERE DEV_TP_NAME = srcFesTempTag; INSERT INTO fes_const_temp( TAG_NAME, DESCRIPTION, GROUP_NO, SEQ_NO, DEV_TP_NAME, VALUE, VALUE_TYPE, UNIT_ID, VALUE_TEXT, VALUE_RATIO, VALUE_ADDED, VALUE_MAX, VALUE_MIN, VALUE_DEFAULT, VALUE_VERIFY, EX_INFO, PATH61850, POSITION61850 ) SELECT concat(dstFesTempTag, '.', getAfterLastDot(TAG_NAME)), DESCRIPTION, GROUP_NO, SEQ_NO, dstFesTempTag, VALUE, VALUE_TYPE, UNIT_ID, VALUE_TEXT, VALUE_RATIO, VALUE_ADDED, VALUE_MAX, VALUE_MIN, VALUE_DEFAULT, VALUE_VERIFY, EX_INFO, PATH61850, POSITION61850 FROM fes_const_temp WHERE DEV_TP_NAME = srcFesTempTag; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `copyPlugin`; DELIMITER $$ CREATE PROCEDURE `copyPlugin`( srcPluginName varchar(64),dstPluginName varchar(64),dstPluginDesc varchar(128)) body:BEGIN /* * 复制套件 */ INSERT INTO temp_plugin (TAG_NAME,DESCRIPTION) VALUES (dstPluginName,dstPluginDesc); #关闭对应的触发器 CALL closeMyTrigger(1); INSERT INTO temp_plugin_dev_map (PLUGIN_NAME,TEMP_NAME) SELECT dstPluginName, TEMP_NAME FROM temp_plugin_dev_map WHERE PLUGIN_NAME = srcPluginName; INSERT INTO temp_plugin_fes_dev_map(PLUGIN_NAME,TEMP_NAME,FES_TEMP_NAME) SELECT dstPluginName,TEMP_NAME,FES_TEMP_NAME FROM temp_plugin_fes_dev_map WHERE PLUGIN_NAME = srcPluginName; INSERT INTO temp_plugin_point_map_acc (PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME) SELECT dstPluginName,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME FROM temp_plugin_point_map_acc WHERE PLUGIN_NAME = srcPluginName; INSERT INTO temp_plugin_point_map_ana(PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME,FES_TEMP_OUT_NAME) SELECT dstPluginName,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME,FES_TEMP_OUT_NAME FROM temp_plugin_point_map_ana WHERE PLUGIN_NAME = srcPluginName; INSERT INTO temp_plugin_point_map_dig(PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME1,FES_TEMP_POINT_NAME2 ,FES_TEMP_POINT_NAME3,FES_TEMP_POINT_NAME4,FES_TEMP_POINT_NAME5,FES_TEMP_OUT_NAME1,FES_TEMP_OUT_NAME2,FES_TEMP_OUT_NAME3,FES_TEMP_OUT_NAME4 ,FES_TEMP_OUT_NAME5) SELECT dstPluginName,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME1,FES_TEMP_POINT_NAME2 ,FES_TEMP_POINT_NAME3,FES_TEMP_POINT_NAME4,FES_TEMP_POINT_NAME5,FES_TEMP_OUT_NAME1,FES_TEMP_OUT_NAME2,FES_TEMP_OUT_NAME3,FES_TEMP_OUT_NAME4 ,FES_TEMP_OUT_NAME5 FROM temp_plugin_point_map_dig WHERE PLUGIN_NAME = srcPluginName; INSERT INTO temp_plugin_point_map_mix(PLUGIN_NAME,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME,FES_TEMP_OUT_NAME) SELECT dstPluginName,TEMP_NAME,TEMP_POINT_NAME,FES_TEMP_NAME,FES_TEMP_POINT_NAME,FES_TEMP_OUT_NAME FROM temp_plugin_point_map_mix WHERE PLUGIN_NAME = srcPluginName; CALL closeMyTrigger(0); END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `createOptLock`; DELIMITER $$ CREATE PROCEDURE `createOptLock`(tableName varchar(64),pointTempTag varchar(64),funcTag varchar(64),argNum int) body:BEGIN /* * 依据指定的模板点,用于创建闭锁出口,除了参数列表中的参数,还有部分参数在export_seq表中 * tableName:表名,指出pointTempTag是属于那张表的,目前取值范围有analog,digital,mix * pointTempTag:测点模板的标签名 * funcTag:闭锁出口选用的函数 * argNum:闭锁函数的参数个数 * export_seq表中保存了参数1-20 */ DECLARE hasDone int DEFAULT 0; DECLARE argTag varchar(64); DECLARE argNo int; DECLARE pointTempTagName varchar(64); DECLARE cur_args CURSOR FOR SELECT DEV_TAG,`NO` FROM export_seq; DECLARE CONTINUE HANDLER FOR NOT FOUND SET hasDone = 1; IF COALESCE(tableName,'') = '' OR COALESCE(pointTempTag,'')='' THEN LEAVE body; END IF; CREATE TEMPORARY TABLE IF NOT EXISTS tmpCreateOptLockTbl( POINT_TAG_NAME varchar(64) NOT NULL, POINT_DESC varchar(128), GROUP_TAG_NAME varchar(64) NOT NULL, LOCATION_ID decimal(10,0), SUBSYSTEM decimal(10,0), ARGS_TAG_NAME varchar(64) DEFAULT '' ); DELETE FROM tmpCreateOptLockTbl; IF lower(tableName) = 'analog' THEN INSERT INTO tmpCreateOptLockTbl(POINT_TAG_NAME,POINT_DESC,GROUP_TAG_NAME,LOCATION_ID,SUBSYSTEM) SELECT analog.TAG_NAME,analog.DESCRIPTION, dev_info.GROUP_TAG_NAME,analog.LOCATION_ID,analog.SUB_SYSTEM FROM analog,dev_info WHERE analog.POINT_TP_NAME = pointTempTag AND analog.DEVICE = dev_info.TAG_NAME; ELSEIF lower(tableName) = 'digital' THEN INSERT INTO tmpCreateOptLockTbl(POINT_TAG_NAME,POINT_DESC,GROUP_TAG_NAME,LOCATION_ID,SUBSYSTEM) SELECT digital.TAG_NAME,digital.DESCRIPTION, dev_info.GROUP_TAG_NAME,digital.LOCATION_ID,digital.SUB_SYSTEM FROM digital,dev_info WHERE digital.POINT_TP_NAME = pointTempTag AND digital.DEVICE = dev_info.TAG_NAME; ELSEIF lower(tableName) = 'mix' THEN INSERT INTO tmpCreateOptLockTbl(POINT_TAG_NAME,POINT_DESC,GROUP_TAG_NAME,LOCATION_ID,SUBSYSTEM) SELECT mix.TAG_NAME,mix.DESCRIPTION, dev_info.GROUP_TAG_NAME,mix.LOCATION_ID,mix.SUB_SYSTEM FROM mix,dev_info WHERE mix.POINT_TP_NAME = pointTempTag AND mix.DEVICE = dev_info.TAG_NAME; END IF; INSERT INTO opt_interlock_para(TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, INTERLOCK_TAG, INTERLOCK_NUM, INTERLOCK_IN_TAG1, INTERLOCK_IN_TAG2, INTERLOCK_IN_TAG3, INTERLOCK_IN_TAG4, INTERLOCK_IN_TAG5, INTERLOCK_IN_TAG6, INTERLOCK_IN_TAG7, INTERLOCK_IN_TAG8, INTERLOCK_IN_TAG9, INTERLOCK_IN_TAG10, INTERLOCK_IN_TAG11, INTERLOCK_IN_TAG12, INTERLOCK_IN_TAG13, INTERLOCK_IN_TAG14, INTERLOCK_IN_TAG15, INTERLOCK_IN_TAG16, INTERLOCK_IN_TAG17, INTERLOCK_IN_TAG18, INTERLOCK_IN_TAG19, INTERLOCK_IN_TAG20) SELECT POINT_TAG_NAME,POINT_DESC,LOCATION_ID,SUBSYSTEM,funcTag,argNum, '','','','','','','','','','','','','','','','','','','','' FROM tmpCreateOptLockTbl; #根据export_seq表中的数据更新输入参数 #通过游标遍历export_Seq中的数据,把每个输入参数写入opt_interlock_para中 OPEN cur_args; WHILE hasDone != 1 DO FETCH cur_args INTO argTag,argNo; #argTag中的格式是表名.测点模板名 SET tableName = getBeforeFirstDot(argTag); SET pointTempTagName = getAfterFirstDot(argTag); IF tableName = 'analog' THEN UPDATE (analog INNER JOIN dev_info ON analog.POINT_TP_NAME = pointTempTagName AND analog.DEVICE = dev_info.TAG_NAME) INNER JOIN tmpCreateOptLockTbl ON tmpCreateOptLockTbl.GROUP_TAG_NAME = dev_info.GROUP_TAG_NAME SET tmpCreateOptLockTbl.ARGS_TAG_NAME = analog.TAG_NAME; ELSEIF tableName = 'digital' THEN UPDATE (digital INNER JOIN dev_info ON digital.POINT_TP_NAME = pointTempTagName AND digital.DEVICE = dev_info.TAG_NAME) INNER JOIN tmpCreateOptLockTbl ON tmpCreateOptLockTbl.GROUP_TAG_NAME = dev_info.GROUP_TAG_NAME SET tmpCreateOptLockTbl.ARGS_TAG_NAME = digital.TAG_NAME; ELSEIF tableName = 'mix' THEN UPDATE (mix INNER JOIN dev_info ON mix.POINT_TP_NAME = pointTempTagName AND mix.DEVICE = dev_info.TAG_NAME) INNER JOIN tmpCreateOptLockTbl ON tmpCreateOptLockTbl.GROUP_TAG_NAME = dev_info.GROUP_TAG_NAME SET tmpCreateOptLockTbl.ARGS_TAG_NAME = mix.TAG_NAME; END IF; #更新闭锁输入参数 UPDATE opt_interlock_para INNER JOIN tmpCreateOptLockTbl ON opt_interlock_para.TAG_NAME = tmpCreateOptLockTbl.POINT_TAG_NAME SET INTERLOCK_IN_TAG1 = if(argNo = 1,ARGS_TAG_NAME,INTERLOCK_IN_TAG1), INTERLOCK_IN_TAG2 = if(argNo = 2,ARGS_TAG_NAME,INTERLOCK_IN_TAG2), INTERLOCK_IN_TAG3 = if(argNo = 3,ARGS_TAG_NAME,INTERLOCK_IN_TAG3), INTERLOCK_IN_TAG4 = if(argNo = 4,ARGS_TAG_NAME,INTERLOCK_IN_TAG4), INTERLOCK_IN_TAG5 = if(argNo = 5,ARGS_TAG_NAME,INTERLOCK_IN_TAG5), INTERLOCK_IN_TAG6 = if(argNo = 6,ARGS_TAG_NAME,INTERLOCK_IN_TAG6), INTERLOCK_IN_TAG7 = if(argNo = 7,ARGS_TAG_NAME,INTERLOCK_IN_TAG7), INTERLOCK_IN_TAG8 = if(argNo = 8,ARGS_TAG_NAME,INTERLOCK_IN_TAG8), INTERLOCK_IN_TAG9 = if(argNo = 9,ARGS_TAG_NAME,INTERLOCK_IN_TAG9), INTERLOCK_IN_TAG10 = if(argNo = 10,ARGS_TAG_NAME,INTERLOCK_IN_TAG10), INTERLOCK_IN_TAG11 = if(argNo = 11,ARGS_TAG_NAME,INTERLOCK_IN_TAG11), INTERLOCK_IN_TAG12 = if(argNo = 12,ARGS_TAG_NAME,INTERLOCK_IN_TAG12), INTERLOCK_IN_TAG13 = if(argNo = 13,ARGS_TAG_NAME,INTERLOCK_IN_TAG13), INTERLOCK_IN_TAG14 = if(argNo = 14,ARGS_TAG_NAME,INTERLOCK_IN_TAG14), INTERLOCK_IN_TAG15 = if(argNo = 15,ARGS_TAG_NAME,INTERLOCK_IN_TAG15), INTERLOCK_IN_TAG16 = if(argNo = 16,ARGS_TAG_NAME,INTERLOCK_IN_TAG16), INTERLOCK_IN_TAG17 = if(argNo = 17,ARGS_TAG_NAME,INTERLOCK_IN_TAG17), INTERLOCK_IN_TAG18 = if(argNo = 18,ARGS_TAG_NAME,INTERLOCK_IN_TAG18), INTERLOCK_IN_TAG19 = if(argNo = 19,ARGS_TAG_NAME,INTERLOCK_IN_TAG19), INTERLOCK_IN_TAG20 = if(argNo = 20,ARGS_TAG_NAME,INTERLOCK_IN_TAG20) ; END WHILE; CLOSE cur_args; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `db_sync`; DELIMITER $$ CREATE PROCEDURE `db_sync`(in src_hostname varchar(255), in src_last_id bigint(20), in src_last_statement mediumtext, in new_id bigint(20), in new_statement mediumtext, out db_sync_return int) lable: begin /* * 数据库同步服务 db_sync_server 调用,代码中开启事务、锁表 */ declare local_last_id bigint(20) default 0; declare local_last_statement mediumtext; set db_sync_return = 1; if lower(@@global.hostname) = lower(src_hostname) then -- 如果源主机就是本主机,则无需同步 set db_sync_return = 10; leave lable; end if; select max(`id`) into local_last_id from dbop_list; select `statement` into local_last_statement from dbop_list where ID = local_last_id; if local_last_id is null or local_last_statement is null then -- 表为空 set db_sync_return = 20; leave lable; end if; if src_last_id < local_last_id then -- 数据不一致 set db_sync_return = 21; leave lable; end if; if src_last_id > local_last_id then -- 数据不一致 set db_sync_return = 22; leave lable; end if; if src_last_statement <> local_last_statement then -- 数据不一致 set db_sync_return = 23; leave lable; end if; begin declare exit handler for sqlexception begin set db_sync_return = 100; end; -- 执行需要同步的语句 set @db_sync_sql4exec = new_statement; prepare stmt from @db_sync_sql4exec; execute stmt; deallocate prepare stmt; -- 插入同步语句到本地表 set @db_sync_sql4exec = 'insert into dbop_list(ID, STATEMENT) values (?, ?)'; prepare stmt from @db_sync_sql4exec; set @db_sync_new_id = new_id; set @db_sync_new_statement = new_statement; execute stmt using @db_sync_new_id , @db_sync_new_statement; deallocate prepare stmt; -- 执行成功 set db_sync_return = 0; end; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `exportBgXFes`; DELIMITER $$ CREATE PROCEDURE `exportBgXFes`( ) BEGIN #export_seq里保存了导出的设备的顺序 #导出结果保存在background_x_fes_的表中 #先清除 DELETE FROM background_x_fes_accuml; DELETE FROM background_x_fes_ana_ctrl; DELETE FROM background_x_fes_analog; DELETE FROM background_x_fes_dig_ctrl; DELETE FROM background_x_fes_digtal; DELETE FROM background_x_fes_mix; DELETE FROM background_x_fes_mix_ctrl; #插入所有ACC后台点 INSERT INTO background_x_fes_accuml ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3, RTU_RES_PARA_INT4)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, accuml_map_to_fes.KEY_ID_TAG, '1', accuml_map_to_fes.DESCRIPTION, accuml_map_to_fes.RTU_TAG,accuml_map_to_fes.DOT_NO,'', '', 0, 0, 0, 0 FROM export_seq , dev_info ,accuml, accuml_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = accuml.DEVICE AND accuml_map_to_fes.KEY_ID_TAG = concat('accuml','.', accuml.TAG_NAME) ORDER BY export_seq.NO ,accuml.SEQ_NO; #检索后台点,已有关联的,需要把关联导出 UPDATE background_x_fes_accuml INNER JOIN fes_accuml ON fes_accuml.TAG_NAME = concat(background_x_fes_accuml.RTU_TAG,'.',background_x_fes_accuml.RTU_DOT_NO) SET background_x_fes_accuml.RTU_DOT_DESC = fes_accuml.DESCRIPTION, background_x_fes_accuml.RTU_DEV_TAG = fes_accuml.DEV_TAG, background_x_fes_accuml.RTU_RES_PARA_INT1 = fes_accuml.RES_PARA_INT1, background_x_fes_accuml.RTU_RES_PARA_INT2 = fes_accuml.RES_PARA_INT2, background_x_fes_accuml.RTU_RES_PARA_INT3 = fes_accuml.RES_PARA_INT3, background_x_fes_accuml.RTU_RES_PARA_INT4 = fes_accuml.RES_PARA_INT4; #插入所有ANA后台点 INSERT INTO background_x_fes_analog ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3,RTU_RES_PARA_INT4)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, analog_map_to_fes.KEY_ID_TAG, '1', analog_map_to_fes.DESCRIPTION, analog_map_to_fes.RTU_TAG,analog_map_to_fes.DOT_NO,'', '', 0, 0, 0, 0 FROM export_seq , dev_info ,analog, analog_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = analog.DEVICE AND analog_map_to_fes.KEY_ID_TAG = concat('analog','.', analog.TAG_NAME) ORDER BY export_seq.NO,analog.SEQ_NO; #检索后台点,已有关联的,需要把关联导出 UPDATE background_x_fes_analog INNER JOIN fes_analog ON fes_analog.TAG_NAME = concat(background_x_fes_analog.RTU_TAG,'.',background_x_fes_analog.RTU_DOT_NO) SET background_x_fes_analog.RTU_DOT_DESC = fes_analog.DESCRIPTION, background_x_fes_analog.RTU_DEV_TAG = fes_analog.DEV_TAG, background_x_fes_analog.RTU_RES_PARA_INT1 = fes_analog.RES_PARA_INT1, background_x_fes_analog.RTU_RES_PARA_INT2 = fes_analog.RES_PARA_INT2, background_x_fes_analog.RTU_RES_PARA_INT3 = fes_analog.RES_PARA_INT3, background_x_fes_analog.RTU_RES_PARA_INT4 = fes_analog.RES_PARA_INT4; #插入analog_Ctrl INSERT INTO background_x_fes_ana_ctrl( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3,RTU_RES_PARA_INT4)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, analog.TAG_NAME, '1', analog.DESCRIPTION, analog_control.RTU_TAG,analog_control.OFFSET_NO,'', '', 0, 0, 0, 0 FROM export_seq , dev_info , analog ,analog_control WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = analog.DEVICE AND analog.TAG_NAME = analog_control.TAG_NAME ORDER BY export_seq.NO,analog.SEQ_NO; #检索后台点,已有关联的,需要把关联导出 UPDATE background_x_fes_ana_ctrl INNER JOIN fes_analog_ctrl ON fes_analog_ctrl.TAG_NAME = concat(background_x_fes_ana_ctrl.RTU_TAG,'.',background_x_fes_ana_ctrl.RTU_DOT_NO) SET background_x_fes_ana_ctrl.RTU_DOT_DESC = fes_analog_ctrl.DESCRIPTION, background_x_fes_ana_ctrl.RTU_DEV_TAG = fes_analog_ctrl.DEV_TAG, background_x_fes_ana_ctrl.RTU_RES_PARA_INT1 = fes_analog_ctrl.RES_PARA_INT1, background_x_fes_ana_ctrl.RTU_RES_PARA_INT2 = fes_analog_ctrl.RES_PARA_INT2, background_x_fes_ana_ctrl.RTU_RES_PARA_INT3 = fes_analog_ctrl.RES_PARA_INT3, background_x_fes_ana_ctrl.RTU_RES_PARA_INT4 = fes_analog_ctrl.RES_PARA_INT4; #对于digital,注意其有5个分量 INSERT INTO background_x_fes_digtal ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO) SELECT export_seq.DEV_TAG,dev_info.DESCRIPTION, digital_map_to_fes.KEY_ID_TAG, 1, digital_map_to_fes.DESCRIPTION,digital_map_to_fes.RTU_TAG,digital_map_to_fes.DOT_NO1,'', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq,dev_info, digital,digital_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = digital.DEVICE AND digital_map_to_fes.KEY_ID_TAG = concat('digital.',digital.TAG_NAME) AND digital_map_to_fes.VALUE_NUM >= 1; INSERT INTO background_x_fes_digtal ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO) SELECT export_seq.DEV_TAG,dev_info.DESCRIPTION, digital_map_to_fes.KEY_ID_TAG, 2, digital_map_to_fes.DESCRIPTION,digital_map_to_fes.RTU_TAG,digital_map_to_fes.DOT_NO2,'', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq,dev_info, digital,digital_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = digital.DEVICE AND digital_map_to_fes.KEY_ID_TAG = concat('digital.',digital.TAG_NAME) AND digital_map_to_fes.VALUE_NUM >= 2; INSERT INTO background_x_fes_digtal ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO) SELECT export_seq.DEV_TAG,dev_info.DESCRIPTION, digital_map_to_fes.KEY_ID_TAG, 3, digital_map_to_fes.DESCRIPTION,digital_map_to_fes.RTU_TAG,digital_map_to_fes.DOT_NO3,'', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq,dev_info, digital,digital_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = digital.DEVICE AND digital_map_to_fes.KEY_ID_TAG = concat('digital.',digital.TAG_NAME) AND digital_map_to_fes.VALUE_NUM >= 3; INSERT INTO background_x_fes_digtal ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO) SELECT export_seq.DEV_TAG,dev_info.DESCRIPTION, digital_map_to_fes.KEY_ID_TAG, 4, digital_map_to_fes.DESCRIPTION,digital_map_to_fes.RTU_TAG,digital_map_to_fes.DOT_NO4,'', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq,dev_info, digital,digital_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = digital.DEVICE AND digital_map_to_fes.KEY_ID_TAG = concat('digital.',digital.TAG_NAME) AND digital_map_to_fes.VALUE_NUM >= 4; INSERT INTO background_x_fes_digtal ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO) SELECT export_seq.DEV_TAG,dev_info.DESCRIPTION, digital_map_to_fes.KEY_ID_TAG, 5, digital_map_to_fes.DESCRIPTION,digital_map_to_fes.RTU_TAG,digital_map_to_fes.DOT_NO5,'', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq,dev_info, digital,digital_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = digital.DEVICE AND digital_map_to_fes.KEY_ID_TAG = concat('digital.',digital.TAG_NAME) AND digital_map_to_fes.VALUE_NUM >= 5; #检索后台点,已有关联的,需要把关联导出 UPDATE background_x_fes_digtal INNER JOIN fes_digital ON fes_digital.TAG_NAME = concat(background_x_fes_digtal.RTU_TAG,'.',background_x_fes_digtal.RTU_DOT_NO) SET background_x_fes_digtal.RTU_DOT_DESC = fes_digital.DESCRIPTION, background_x_fes_digtal.RTU_DEV_TAG = fes_digital.DEV_TAG, background_x_fes_digtal.RTU_RES_PARA_INT1 = fes_digital.RES_PARA_INT1, background_x_fes_digtal.RTU_RES_PARA_INT2 = fes_digital.RES_PARA_INT2, background_x_fes_digtal.RTU_RES_PARA_INT3 = fes_digital.RES_PARA_INT3, background_x_fes_digtal.RTU_RES_PARA_INT4 = fes_digital.RES_PARA_INT4; #对于digital_ctrl INSERT INTO background_x_fes_dig_ctrl ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET, BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2,RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, digital_control.TAG_NAME, 1, digital.DESCRIPTION, digital_control.RTU_TAG,digital_control.OFFSET_NO1, '', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq , dev_info ,digital , digital_control WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG=digital.DEVICE AND digital.TAG_NAME = digital_control.TAG_NAME AND digital_control.OFFSET_NUM >= 1; INSERT INTO background_x_fes_dig_ctrl ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET, BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2,RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, digital_control.TAG_NAME, 2, digital.DESCRIPTION, digital_control.RTU_TAG,digital_control.OFFSET_NO2, '', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq , dev_info ,digital , digital_control WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG=digital.DEVICE AND digital.TAG_NAME = digital_control.TAG_NAME AND digital_control.OFFSET_NUM >= 2; INSERT INTO background_x_fes_dig_ctrl ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET, BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2,RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, digital_control.TAG_NAME, 3, digital.DESCRIPTION, digital_control.RTU_TAG,digital_control.OFFSET_NO3, '', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq , dev_info ,digital , digital_control WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG=digital.DEVICE AND digital.TAG_NAME = digital_control.TAG_NAME AND digital_control.OFFSET_NUM >= 3; INSERT INTO background_x_fes_dig_ctrl ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET, BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2,RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, digital_control.TAG_NAME, 4, digital.DESCRIPTION, digital_control.RTU_TAG,digital_control.OFFSET_NO4, '', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq , dev_info ,digital , digital_control WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG=digital.DEVICE AND digital.TAG_NAME = digital_control.TAG_NAME AND digital_control.OFFSET_NUM >= 4; INSERT INTO background_x_fes_dig_ctrl ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET, BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2,RTU_RES_PARA_INT3, RTU_RES_PARA_INT4,DEV_NO, SEQ_NO)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, digital_control.TAG_NAME, 5, digital.DESCRIPTION, digital_control.RTU_TAG,digital_control.OFFSET_NO5, '', '', 0, 0, 0, 0, export_seq.`NO`,digital.SEQ_NO FROM export_seq , dev_info ,digital , digital_control WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG=digital.DEVICE AND digital.TAG_NAME = digital_control.TAG_NAME AND digital_control.OFFSET_NUM >= 5; #检索后台点,已有关联的,需要把关联导出 UPDATE background_x_fes_dig_ctrl INNER JOIN fes_digital_ctrl ON fes_digital_ctrl.TAG_NAME = concat(background_x_fes_dig_ctrl.RTU_TAG,'.',background_x_fes_dig_ctrl.RTU_DOT_NO) SET background_x_fes_dig_ctrl.RTU_DOT_DESC = fes_digital_ctrl.DESCRIPTION, background_x_fes_dig_ctrl.RTU_DEV_TAG = fes_digital_ctrl.DEV_TAG, background_x_fes_dig_ctrl.RTU_RES_PARA_INT1 = fes_digital_ctrl.RES_PARA_INT1, background_x_fes_dig_ctrl.RTU_RES_PARA_INT2 = fes_digital_ctrl.RES_PARA_INT2, background_x_fes_dig_ctrl.RTU_RES_PARA_INT3 = fes_digital_ctrl.RES_PARA_INT3, background_x_fes_dig_ctrl.RTU_RES_PARA_INT4 = fes_digital_ctrl.RES_PARA_INT4; #mix INSERT INTO background_x_fes_mix ( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3,RTU_RES_PARA_INT4)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, mix_map_to_fes.KEY_ID_TAG, '1', mix_map_to_fes.DESCRIPTION, mix_map_to_fes.RTU_TAG,mix_map_to_fes.DOT_NO,'', '', 0, 0, 0, 0 FROM export_seq , dev_info ,mix, mix_map_to_fes WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = mix.DEVICE AND mix_map_to_fes.KEY_ID_TAG = concat('mix','.',mix.TAG_NAME) ORDER BY export_seq.NO,mix.SEQ_NO; #检索后台点,已有关联的,需要把关联导出 UPDATE background_x_fes_mix INNER JOIN fes_mix ON fes_mix.TAG_NAME = concat(background_x_fes_mix.RTU_TAG,'.',background_x_fes_mix.RTU_DOT_NO) SET background_x_fes_mix.RTU_DOT_DESC = fes_mix.DESCRIPTION, background_x_fes_mix.RTU_DEV_TAG = fes_mix.DEV_TAG, background_x_fes_mix.RTU_RES_PARA_INT1 = fes_mix.RES_PARA_INT1, background_x_fes_mix.RTU_RES_PARA_INT2 = fes_mix.RES_PARA_INT2, background_x_fes_mix.RTU_RES_PARA_INT3 = fes_mix.RES_PARA_INT3, background_x_fes_mix.RTU_RES_PARA_INT4 = fes_mix.RES_PARA_INT4; #插入mix_Ctrl INSERT INTO background_x_fes_mix_ctrl( BG_DEV_TAG, BG_DEV_DESC, BG_POINT_TAG, BG_POINT_OFFSET,BG_POINT_DESC, RTU_TAG, RTU_DOT_NO, RTU_DOT_DESC, RTU_DEV_TAG, RTU_RES_PARA_INT1, RTU_RES_PARA_INT2, RTU_RES_PARA_INT3,RTU_RES_PARA_INT4)SELECT export_seq.DEV_TAG, dev_info.DESCRIPTION, mix_control.TAG_NAME, '1', mix.DESCRIPTION, mix_control.RTU_TAG,mix_control.OFFSET_NO,'', '', 0, 0, 0, 0 FROM export_seq , dev_info , mix ,mix_control WHERE export_seq.DEV_TAG = dev_info.TAG_NAME AND export_seq.DEV_TAG = mix.DEVICE AND mix.TAG_NAME = mix_control.TAG_NAME ORDER BY export_seq.NO,mix.SEQ_NO; #检索后台点,已有关联的,需要把关联导出 UPDATE background_x_fes_mix_ctrl INNER JOIN fes_mix_ctrl ON fes_mix_ctrl.TAG_NAME=concat(background_x_fes_mix_ctrl.RTU_TAG,'.',background_x_fes_mix_ctrl.RTU_DOT_NO) SET background_x_fes_mix_ctrl.RTU_DOT_DESC = fes_mix_ctrl.DESCRIPTION, background_x_fes_mix_ctrl.RTU_DEV_TAG = fes_mix_ctrl.DEV_TAG, background_x_fes_mix_ctrl.RTU_RES_PARA_INT1 = fes_mix_ctrl.RES_PARA_INT1, background_x_fes_mix_ctrl.RTU_RES_PARA_INT2 = fes_mix_ctrl.RES_PARA_INT2, background_x_fes_mix_ctrl.RTU_RES_PARA_INT3 = fes_mix_ctrl.RES_PARA_INT3, background_x_fes_mix_ctrl.RTU_RES_PARA_INT4 = fes_mix_ctrl.RES_PARA_INT4; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `generateBatchDev`; DELIMITER $$ CREATE PROCEDURE `generateBatchDev`(devTagName varchar(64), batchNum decimal(10,0),batchStart decimal(10,0), formatTagName varchar(64),formatDesc varchar(128),fesRtuTagName varchar(64)) body:BEGIN #批量生成后台设备,当fesRtuTagName不为空时,同时批量生成对应的前置设备 #devTagName 后台设备名 #batchNum 批量生成的数量 #batchStart 批量的起始数字 #formatTagName TagName字段的批量格式 #formatDesc 描述字段的批量格式 #fesRtuTagName 前置RTU的标签名,为空表示不生成对应的前置设备 DECLARE stepNum int DEFAULT 0; DECLARE fesDevTempTagName varchar(64) DEFAULT ''; DECLARE tempStr varchar(64) DEFAULT ''; DECLARE locationTagName varchar(64) DEFAULT ''; DECLARE tmpDevTag varchar(64) DEFAULT ''; DECLARE tmpFesDevTag varchar(64) DEFAULT ''; DECLARE accSize decimal(10,0) DEFAULT 0; DECLARE anaSize decimal(10,0) DEFAULT 0; DECLARE digSize decimal(10,0) DEFAULT 0; DECLARE mixSize decimal(10,0) DEFAULT 0; #BAT_TAG_NAME中存储着短名 CREATE TEMPORARY TABLE IF NOT EXISTS tmpGenerateBatchDevTbl( BAT_TAG_NAME varchar(64) NOT NULL , BAT_DESC varchar(64) NOT NULL ); DELETE FROM tmpGenerateBatchDevTbl; SET locationTagName = getBeforeLastDot(devTagName); #根据批量规则生成一系列标签名和描述, SET stepNum = batchStart; WHILE stepNum < (batchStart + batchNum) DO INSERT INTO tmpGenerateBatchDevTbl(BAT_TAG_NAME,BAT_DESC) VALUES (replace(formatTagName,'%1',stepNum), replace(formatDesc,'%1',stepNum)); SET stepNum = stepNum + 1; END WHILE; #第一个设备在调用本存储过程之前已经生成,这里不必再重新生成 INSERT INTO dev_info( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME)SELECT concat(locationTagName,'.',BAT_TAG_NAME) ,BAT_DESC, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME FROM dev_info,tmpGenerateBatchDevTbl WHERE TAG_NAME=devTagName AND concat(locationTagName,'.',BAT_TAG_NAME) <> devTagName; #判断是否生成对应的前置设备 IF length(trim(fesRtuTagName)) THEN BEGIN #根据前置模板生成前置设备,后台设备模板的表结构修改,这里已经不能够同时批量生成前置设备 SELECT '' INTO fesDevTempTagName FROM dev_info,dev_temp_def WHERE dev_info.TAG_NAME = devTagName AND dev_info.DEV_TP_NAME = dev_temp_def.TAG_NAME; IF length(trim(fesDevTempTagName)) = 0 THEN LEAVE body; END IF; #生成前置设备 INSERT INTO fes_dev_info( TAG_NAME, DEV_NAME, LOCATION_ID, SUB_SYSTEM, DEV_ID, DEV_TYPE_ID, RTU_TAG, RTU_NO, DEV_DESC, DEV_TP_NAME)SELECT concat(fesRtuTagName,'.', BAT_TAG_NAME,'_fes'),concat(BAT_TAG_NAME,'_fes'),fes_rtu_para.LOCATION_ID,fes_rtu_para.SUB_SYSTEM,-1, fes_dev_temp_def.DEV_TYPE_ID,fesRtuTagName,fes_rtu_para.RTU_NO,BAT_DESC,fesDevTempTagName FROM fes_dev_temp_def,fes_rtu_para,tmpGenerateBatchDevTbl WHERE fes_dev_temp_def.TAG_NAME = fesDevTempTagName AND fes_rtu_para.TAG_NAME = fesRtuTagName; #关联前置,创建临时表 CREATE TEMPORARY TABLE IF NOT EXISTS tmpFesTblAcc( KEY_ID_TAG varchar(128) NOT NULL, DOT_NO varchar(48) NOT NULL, OFFSET_NO decimal(10) ); DELETE FROM tmpFesTblAcc; CREATE TEMPORARY TABLE IF NOT EXISTS tmpFesTblAna( KEY_ID_TAG varchar(128) NOT NULL, DOT_NO varchar(48) NOT NULL, OFFSET_NO decimal(10) ); DELETE FROM tmpFesTblAna; CREATE TEMPORARY TABLE IF NOT EXISTS tmpFesTblDig( KEY_ID_TAG varchar(128) NOT NULL, DOT_NO varchar(48) NOT NULL, OFFSET_NO decimal(10) ); DELETE FROM tmpFesTblDig; CREATE TEMPORARY TABLE IF NOT EXISTS tmpFesTblMix( KEY_ID_TAG varchar(128) NOT NULL, DOT_NO varchar(48) NOT NULL, OFFSET_NO decimal(10) ); DELETE FROM tmpFesTblMix; #关联前置,这里使用while循环重新生成tagName SET stepNum = batchStart; WHILE stepNum < (batchStart + batchNum) DO SET tempStr = replace(formatTagName,'%1',stepNum); SET tmpDevTag = concat(locationTagName,'.',tempStr); SET tmpFesDevTag = concat(fesRtuTagName,'.', tempStr,'_fes'); IF stepNum = batchStart THEN #第一次的时候,初始化临时表,批量下,每个设备一样,所以临时表只需要初始化一次就行 BEGIN #acc INSERT INTO tmpFesTblAcc(KEY_ID_TAG , DOT_NO) SELECT accuml_map_to_fes.KEY_ID_TAG, fes_accuml.DOT_NO FROM accuml_map_to_fes,accuml_temp_define,fes_dev_pt_temp_def,fes_accuml WHERE getBeforeLastDot(getAfterFirstDot(accuml_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND accuml_map_to_fes.POINT_TP_NAME=accuml_temp_define.TAG_NAME AND accuml_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_ACC') AND fes_dev_pt_temp_def.SEQ_NO = accuml_temp_define.SEC_SEQ_NO AND fes_accuml.DEV_TAG = tmpFesDevTag AND fes_accuml.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; #ana INSERT INTO tmpFesTblAna (KEY_ID_TAG , DOT_NO) SELECT analog_map_to_fes.KEY_ID_TAG, fes_analog.DOT_NO FROM analog_map_to_fes,analog_temp_define,fes_dev_pt_temp_def,fes_analog WHERE getBeforeLastDot(getAfterFirstDot(analog_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND analog_map_to_fes.POINT_TP_NAME=analog_temp_define.TAG_NAME AND analog_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_ANA') AND fes_dev_pt_temp_def.SEQ_NO = analog_temp_define.SEC_SEQ_NO AND fes_analog.DEV_TAG = tmpFesDevTag AND fes_analog.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; #digital 五个分量 INSERT INTO tmpFesTblDig (KEY_ID_TAG , DOT_NO, OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG, fes_digital.DOT_NO, 1 FROM digital_map_to_fes,digital_temp_define,fes_dev_pt_temp_def,fes_digital WHERE getBeforeLastDot(getAfterFirstDot(digital_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND digital_map_to_fes.POINT_TP_NAME=digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND fes_dev_pt_temp_def.SEQ_NO = digital_temp_define.SEC_SEQ_NO1 AND fes_digital.DEV_TAG = tmpFesDevTag AND fes_digital.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; INSERT INTO tmpFesTblDig (KEY_ID_TAG , DOT_NO, OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG, fes_digital.DOT_NO, 2 FROM digital_map_to_fes,digital_temp_define,fes_dev_pt_temp_def,fes_digital WHERE getBeforeLastDot(getAfterFirstDot(digital_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND digital_map_to_fes.POINT_TP_NAME=digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND fes_dev_pt_temp_def.SEQ_NO = digital_temp_define.SEC_SEQ_NO2 AND fes_digital.DEV_TAG = tmpFesDevTag AND fes_digital.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; INSERT INTO tmpFesTblDig (KEY_ID_TAG , DOT_NO, OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG, fes_digital.DOT_NO, 3 FROM digital_map_to_fes,digital_temp_define,fes_dev_pt_temp_def,fes_digital WHERE getBeforeLastDot(getAfterFirstDot(digital_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND digital_map_to_fes.POINT_TP_NAME=digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND fes_dev_pt_temp_def.SEQ_NO = digital_temp_define.SEC_SEQ_NO3 AND fes_digital.DEV_TAG = tmpFesDevTag AND fes_digital.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; INSERT INTO tmpFesTblDig (KEY_ID_TAG , DOT_NO, OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG, fes_digital.DOT_NO, 4 FROM digital_map_to_fes,digital_temp_define,fes_dev_pt_temp_def,fes_digital WHERE getBeforeLastDot(getAfterFirstDot(digital_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND digital_map_to_fes.POINT_TP_NAME=digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND fes_dev_pt_temp_def.SEQ_NO = digital_temp_define.SEC_SEQ_NO4 AND fes_digital.DEV_TAG = tmpFesDevTag AND fes_digital.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; INSERT INTO tmpFesTblDig (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG, fes_digital.DOT_NO, 5 FROM digital_map_to_fes,digital_temp_define,fes_dev_pt_temp_def,fes_digital WHERE getBeforeLastDot(getAfterFirstDot(digital_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND digital_map_to_fes.POINT_TP_NAME=digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_DIG') AND fes_dev_pt_temp_def.SEQ_NO = digital_temp_define.SEC_SEQ_NO5 AND fes_digital.DEV_TAG = tmpFesDevTag AND fes_digital.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; #mix INSERT INTO tmpFesTblMix (KEY_ID_TAG , DOT_NO) SELECT mix_map_to_fes.KEY_ID_TAG, fes_mix.DOT_NO FROM mix_map_to_fes,mix_temp_define,fes_dev_pt_temp_def,fes_mix WHERE getBeforeLastDot(getAfterFirstDot(mix_map_to_fes.KEY_ID_TAG)) = tmpDevTag AND mix_map_to_fes.POINT_TP_NAME=mix_temp_define.TAG_NAME AND mix_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.DEV_TP_NAME = fesDevTempTagName AND fes_dev_pt_temp_def.POINT_TYPE = getFesPointType('FES_MIX') AND fes_dev_pt_temp_def.SEQ_NO = mix_temp_define.SEC_SEQ_NO AND fes_mix.DEV_TAG = tmpFesDevTag AND fes_mix.FES_POINT_TP_NAME = fes_dev_pt_temp_def.TAG_NAME; #获取各个临时表的尺寸 SELECT count(*) INTO accSize FROM fes_accuml WHERE DEV_TAG = tmpFesDevTag; SELECT count(*) INTO anaSize FROM fes_analog WHERE DEV_TAG = tmpFesDevTag; SELECT count(*) INTO digSize FROM fes_digital WHERE DEV_TAG = tmpFesDevTag; SELECT count(*) INTO mixSize FROM fes_mix WHERE DEV_TAG = tmpFesDevTag; IF COALESCE(accSize,0) = 0 THEN SET accSize = 0; END IF; IF COALESCE(anaSize,0) = 0 THEN SET anaSize = 0; END IF; IF COALESCE(digSize,0) = 0 THEN SET digSize = 0; END IF; IF COALESCE(mixSize,0) = 0 THEN SET mixSize = 0; END IF; END; END IF; #对临时表中的KEY_ID_TAG,DOT_NO直接替换字段 IF stepNum <> batchStart THEN BEGIN UPDATE tmpFesTblAcc SET KEY_ID_TAG = concat(getBeforeFirstDot(KEY_ID_TAG),'.',tmpDevTag,'.',getAfterLastDot(KEY_ID_TAG)), DOT_NO = ( DOT_NO + accSize) WHERE 1; UPDATE tmpFesTblAna SET KEY_ID_TAG = concat(getBeforeFirstDot(KEY_ID_TAG),'.',tmpDevTag,'.',getAfterLastDot(KEY_ID_TAG)), DOT_NO = ( DOT_NO + anaSize) WHERE 1; UPDATE tmpFesTblDig SET KEY_ID_TAG = concat(getBeforeFirstDot(KEY_ID_TAG),'.',tmpDevTag,'.',getAfterLastDot(KEY_ID_TAG)), DOT_NO = ( DOT_NO + digSize) WHERE 1; UPDATE tmpFesTblMix SET KEY_ID_TAG = concat(getBeforeFirstDot(KEY_ID_TAG),'.',tmpDevTag,'.',getAfterLastDot(KEY_ID_TAG)), DOT_NO = ( DOT_NO + mixSize) WHERE 1; END; END IF; #acc UPDATE accuml SET RTU_TAG = fesRtuTagName WHERE DEVICE = tmpDevTag; UPDATE accuml_map_to_fes INNER JOIN tmpFesTblAcc ON accuml_map_to_fes.KEY_ID_TAG = tmpFesTblAcc.KEY_ID_TAG SET accuml_map_to_fes.DOT_NO = tmpFesTblAcc.DOT_NO; #ana UPDATE analog SET RTU_TAG = fesRtuTagName WHERE DEVICE = tmpDevTag; UPDATE analog_map_to_fes INNER JOIN tmpFesTblAna ON analog_map_to_fes.KEY_ID_TAG = tmpFesTblAna.KEY_ID_TAG SET analog_map_to_fes.DOT_NO = tmpFesTblAna.DOT_NO; #digital UPDATE digital SET RTU_TAG = fesRtuTagName WHERE DEVICE = tmpDevTag; UPDATE digital_map_to_fes INNER JOIN tmpFesTblDig ON digital_map_to_fes.KEY_ID_TAG = tmpFesTblDig.KEY_ID_TAG AND tmpFesTblDig.OFFSET_NO = 1 SET digital_map_to_fes.DOT_NO1 = tmpFesTblDig.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpFesTblDig ON digital_map_to_fes.KEY_ID_TAG = tmpFesTblDig.KEY_ID_TAG AND tmpFesTblDig.OFFSET_NO = 2 SET digital_map_to_fes.DOT_NO2 = tmpFesTblDig.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpFesTblDig ON digital_map_to_fes.KEY_ID_TAG = tmpFesTblDig.KEY_ID_TAG AND tmpFesTblDig.OFFSET_NO = 3 SET digital_map_to_fes.DOT_NO3 = tmpFesTblDig.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpFesTblDig ON digital_map_to_fes.KEY_ID_TAG = tmpFesTblDig.KEY_ID_TAG AND tmpFesTblDig.OFFSET_NO = 4 SET digital_map_to_fes.DOT_NO4 = tmpFesTblDig.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpFesTblDig ON digital_map_to_fes.KEY_ID_TAG = tmpFesTblDig.KEY_ID_TAG AND tmpFesTblDig.OFFSET_NO = 5 SET digital_map_to_fes.DOT_NO5 = tmpFesTblDig.DOT_NO; #mix UPDATE mix SET RTU_TAG = fesRtuTagName WHERE DEVICE = tmpDevTag; UPDATE mix_map_to_fes INNER JOIN tmpFesTblMix ON mix_map_to_fes.KEY_ID_TAG = tmpFesTblMix.KEY_ID_TAG SET mix_map_to_fes.DOT_NO = tmpFesTblMix.DOT_NO; #每次循环结束加1 SET stepNum = stepNum + 1; END WHILE; END; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `generateFesDevTemp`; DELIMITER $$ CREATE PROCEDURE `generateFesDevTemp`(devTagName varchar(64), fesDevTagName varchar(64)) body:BEGIN #生成与后台设备模板一样的前置模板的对话框 #devTagName 后台设备模板名 #fesDevTagName 前置设备模板名,该前置设备模板应已存在,且该设备下无任何点 IF EXISTS (SELECT TAG_NAME FROM fes_dev_pt_temp_def WHERE DEV_TP_NAME= fesDevTagName ) THEN LEAVE body; END IF; #插入FES前置模板点 INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION) SELECT concat(fesDevTagName,'.',getAfterLastDot(TAG_NAME)),getFesPointType('FES_ACC'), fesDevTagName,SEQ_NO,'0', '0', 1, 0, 0, 0, 0, 0, '', 0, '', DESCRIPTION FROM accuml_temp_define WHERE DEV_TP_NAME = devTagName; INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION) SELECT concat(fesDevTagName,'.',getAfterLastDot(TAG_NAME)),getFesPointType('FES_ANA'), fesDevTagName,SEQ_NO,'0', '0', 1, 0, 0, 0, 0, 0, '', 0, '', DESCRIPTION FROM analog_temp_define WHERE DEV_TP_NAME = devTagName; #对于dig要特殊处理,dig要分辨分量数 CREATE TEMPORARY TABLE IF NOT EXISTS tmpGenerateFesDevTempTbl( FES_SEQ_NO int NOT NULL AUTO_INCREMENT, DIG_TAG_NAME varchar(64) NOT NULL, HouTai_SEQ_NO decimal(10,0) NOT NULL, HouTai_OFF_SET decimal(10,0) NOT NULL, PRIMARY KEY(FES_SEQ_NO) ); DELETE FROM tmpGenerateFesDevTempTbl; ALTER TABLE tmpGenerateFesDevTempTbl auto_increment = 1; INSERT INTO tmpGenerateFesDevTempTbl(DIG_TAG_NAME,HouTai_SEQ_NO,HouTai_OFF_SET) SELECT TAG_NAME,SEQ_NO,1 FROM digital_temp_define WHERE DEV_TP_NAME = devTagName AND 1 <= VALUE_NUM ORDER BY SEQ_NO; INSERT INTO tmpGenerateFesDevTempTbl(DIG_TAG_NAME,HouTai_SEQ_NO,HouTai_OFF_SET) SELECT TAG_NAME,SEQ_NO,2 FROM digital_temp_define WHERE DEV_TP_NAME = devTagName AND 2 <= VALUE_NUM ORDER BY SEQ_NO; INSERT INTO tmpGenerateFesDevTempTbl(DIG_TAG_NAME,HouTai_SEQ_NO,HouTai_OFF_SET) SELECT TAG_NAME,SEQ_NO,3 FROM digital_temp_define WHERE DEV_TP_NAME = devTagName AND 3 <= VALUE_NUM ORDER BY SEQ_NO; INSERT INTO tmpGenerateFesDevTempTbl(DIG_TAG_NAME,HouTai_SEQ_NO,HouTai_OFF_SET) SELECT TAG_NAME,SEQ_NO,4 FROM digital_temp_define WHERE DEV_TP_NAME = devTagName AND 4 <= VALUE_NUM ORDER BY SEQ_NO; INSERT INTO tmpGenerateFesDevTempTbl(DIG_TAG_NAME,HouTai_SEQ_NO,HouTai_OFF_SET) SELECT TAG_NAME,SEQ_NO,5 FROM digital_temp_define WHERE DEV_TP_NAME = devTagName AND 5 <= VALUE_NUM ORDER BY SEQ_NO; INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION) SELECT concat(fesDevTagName,'.',getAfterLastDot(TAG_NAME),HouTai_OFF_SET),getFesPointType('FES_DIG'), fesDevTagName,FES_SEQ_NO, '0', '0', 1, 0, 0, 0, 0, 0, '', 0, '', concat(DESCRIPTION,HouTai_OFF_SET) FROM digital_temp_define,tmpGenerateFesDevTempTbl WHERE DEV_TP_NAME = devTagName AND TAG_NAME = DIG_TAG_NAME; INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION) SELECT concat(fesDevTagName,'.',getAfterLastDot(TAG_NAME)),getFesPointType('FES_MIX'), fesDevTagName,SEQ_NO,'0', '0', 1, 0, 0, 0, 0, 0, '', 0, '', DESCRIPTION FROM mix_temp_define WHERE DEV_TP_NAME = devTagName; INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION) SELECT concat(fesDevTagName,'.',getAfterLastDot(TAG_NAME),'_ctrl'),getFesPointType('FES_ANA_CTRL'), fesDevTagName,SEQ_NO, '0', '0', 1, 0, 0, 0, 0, 0, '', 0, '', DESCRIPTION FROM analog_temp_define WHERE DEV_TP_NAME = devTagName AND COALESCE(IS_CONTROL,0)<>0; INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION) SELECT concat(fesDevTagName,'.',getAfterLastDot(TAG_NAME),'_ctrl'),getFesPointType('FES_DIG_CTRL'), fesDevTagName,SEQ_NO, '0', '0', 1, 0, 0, 0, 0, 0, '', 0, '', DESCRIPTION FROM digital_temp_define WHERE DEV_TP_NAME = devTagName AND COALESCE(IS_CONTROL,0)<>0; INSERT INTO fes_dev_pt_temp_def( TAG_NAME, POINT_TYPE, DEV_TP_NAME, SEQ_NO, FUN_CODE, INFO_NO, RATIO, REVISE, APPEND, ASS_DIG, CTRL_TYPE, ATTR, CONST_CFG_FILE, COEFFICIENT, SHORT_NAME, DESCRIPTION) SELECT concat(fesDevTagName,'.',getAfterLastDot(TAG_NAME),'_ctrl'),getFesPointType('FES_MIX_CTRL'), fesDevTagName,SEQ_NO, '0', '0', 1, 0, 0, 0, 0, 0, '', 0, '', DESCRIPTION FROM mix_temp_define WHERE DEV_TP_NAME = devTagName AND COALESCE(IS_CONTROL,0)<>0; #关联对应前置模板点,只能关联acc,ana,dig,mix,控制类的没法关联 UPDATE dev_temp_def SET SEC_DEVTP_NAME = fesDevTagName WHERE TAG_NAME = devTagName; #acc,ana,mix点序号后台和前置里一一对应 UPDATE accuml_temp_define SET SEC_SEQ_NO = SEQ_NO WHERE DEV_TP_NAME = devTagName; UPDATE analog_temp_define SET SEC_SEQ_NO = SEQ_NO WHERE DEV_TP_NAME = devTagName; UPDATE mix_temp_define SET SEC_SEQ_NO = SEQ_NO WHERE DEV_TP_NAME = devTagName; #dig点序号和分量数有关 #先全部清空 UPDATE digital_temp_define SET SEC_SEQ_NO1 = -1, SEC_SEQ_NO2 = -1, SEC_SEQ_NO3 = -1, SEC_SEQ_NO4 = -1, SEC_SEQ_NO5 = -1 WHERE DEV_TP_NAME = devTagName; UPDATE digital_temp_define INNER JOIN tmpGenerateFesDevTempTbl ON TAG_NAME = DIG_TAG_NAME AND DEV_TP_NAME = devTagName AND HouTai_OFF_SET = 1 SET SEC_SEQ_NO1 = FES_SEQ_NO; UPDATE digital_temp_define INNER JOIN tmpGenerateFesDevTempTbl ON TAG_NAME = DIG_TAG_NAME AND DEV_TP_NAME = devTagName AND HouTai_OFF_SET = 2 SET SEC_SEQ_NO2 = FES_SEQ_NO; UPDATE digital_temp_define INNER JOIN tmpGenerateFesDevTempTbl ON TAG_NAME = DIG_TAG_NAME AND DEV_TP_NAME = devTagName AND HouTai_OFF_SET = 3 SET SEC_SEQ_NO3 = FES_SEQ_NO; UPDATE digital_temp_define INNER JOIN tmpGenerateFesDevTempTbl ON TAG_NAME = DIG_TAG_NAME AND DEV_TP_NAME = devTagName AND HouTai_OFF_SET = 4 SET SEC_SEQ_NO4 = FES_SEQ_NO; UPDATE digital_temp_define INNER JOIN tmpGenerateFesDevTempTbl ON TAG_NAME = DIG_TAG_NAME AND DEV_TP_NAME = devTagName AND HouTai_OFF_SET = 5 SET SEC_SEQ_NO5 = FES_SEQ_NO; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `importbgxfes`; DELIMITER $$ CREATE PROCEDURE `importbgxfes`(openTriggerInfo decimal(10,0), importFesPointDesc decimal(10,0), fesDescToBG decimal(10,0) ) BEGIN #从background_x_fes表导入数据 #openTriggerInfo = 1 开启同步到实时库的功能,此操作十分耗时,建议关闭 #importFesPointDesc = 1导入FES点描述,此值只对非默认设备起作用, 对于默认设备点,总是自动导入描述 #fesDescToBG = 1将把FES的描述导入后台 #同步实时库的功能关闭 IF openTriggerInfo <> 1 THEN UPDATE sys_trigger_flag SET FLAG_ID = 0 WHERE FLAG_ID = 1; END IF; #预处理阶段 #首先把background_x_fes表中提到的后台点与前置的映射关系取消掉,这里会触发触发器,会比较耗时,去优化触发器 #CALL kbdDebugInfo('begin 消除后台点的映射关系',''); UPDATE accuml INNER JOIN background_x_fes_accuml ON concat('accuml','.',accuml.TAG_NAME) = background_x_fes_accuml.BG_POINT_TAG SET accuml.RTU_TAG = ''; UPDATE analog INNER JOIN background_x_fes_analog ON concat('analog','.',analog.TAG_NAME) = background_x_fes_analog.BG_POINT_TAG SET analog.RTU_TAG = ''; UPDATE digital INNER JOIN background_x_fes_digtal ON concat('digital','.',digital.TAG_NAME) = background_x_fes_digtal.BG_POINT_TAG SET digital.RTU_TAG = ''; UPDATE mix INNER JOIN background_x_fes_mix ON concat('mix','.',mix.TAG_NAME) = background_x_fes_mix.BG_POINT_TAG SET mix.RTU_TAG = ''; #update完毕,会驱动触发器,更新对应map_to_fes和Control表中的RTU #CALL kbdDebugInfo('end 消除后台点的映射关系',''); #预处理, acc,ana,dig,mix 中后台与前置的关联有两种方法确定前置点,分别是1:RTU_TAG和RTU_DOT_NO可以确定一个点 #2:通过RTU_DEV_TAG去前置模板和后台模板寻找实例的对应点,再写入对应的RTU_tag和RTU_DOT_NO #最终都通过RTU_TAG和RTU_DOT_NO确定前置点 #不符合以上两点的记录删除 #ana_ctrl,dig_ctrl,mix_ctrl只能用一种方法确定,即rtu_tag, RTU_DOT_NO,RTU_DEV_TAG都需要填写, rtu_tag, RTU_DOT_NO,RTU_DEV_TAG都对得上的使用实例的设备,否则使用默认设备 #首先,对于acc,ana,dig,mix,把RTU_TAG或者RTU_DOT_NO为空, RTU_DEV_TAG不为空的记录,去模板找对应关系,填入RTU_TAG和RTU_DOT_NO信息 #CALL kbdDebugInfo('begin update RTU_TAG or dot_no NULL',''); #acc UPDATE ( ( background_x_fes_accuml INNER JOIN accuml_map_to_fes ON COALESCE(background_x_fes_accuml.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_accuml.RTU_TAG,'')='' OR COALESCE(background_x_fes_accuml.RTU_DOT_NO,'')='') AND background_x_fes_accuml.BG_POINT_TAG = accuml_map_to_fes.KEY_ID_TAG ) INNER JOIN accuml_temp_define ON accuml_map_to_fes.POINT_TP_NAME = accuml_temp_define.TAG_NAME ) INNER JOIN fes_accuml ON fes_accuml.DEV_TAG = background_x_fes_accuml.RTU_DEV_TAG AND fes_accuml.SEQ_NO = accuml_temp_define.SEC_SEQ_NO SET background_x_fes_accuml.RTU_TAG = fes_accuml.RTU_TAG, background_x_fes_accuml.RTU_DOT_NO = fes_accuml.DOT_NO; #ana UPDATE ( ( background_x_fes_analog INNER JOIN analog_map_to_fes ON COALESCE(background_x_fes_analog.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_analog.RTU_TAG,'')='' OR COALESCE(background_x_fes_analog.RTU_DOT_NO,'')='') AND background_x_fes_analog.BG_POINT_TAG = analog_map_to_fes.KEY_ID_TAG ) INNER JOIN analog_temp_define ON analog_map_to_fes.POINT_TP_NAME = analog_temp_define.TAG_NAME ) INNER JOIN fes_analog ON fes_analog.DEV_TAG = background_x_fes_analog.RTU_DEV_TAG AND fes_analog.SEQ_NO = analog_temp_define.SEC_SEQ_NO SET background_x_fes_analog.RTU_TAG = fes_analog.RTU_TAG, background_x_fes_analog.RTU_DOT_NO = fes_analog.DOT_NO; #dig的5个分量,需要判断是哪个分量,即判断background_x_fes_digtal.OFFSET字段,可枚举该字段的值,只有5个,1,2,3,4,5 UPDATE ( (background_x_fes_digtal INNER JOIN digital_map_to_fes ON COALESCE(background_x_fes_digtal.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_digtal.RTU_TAG,'')='' OR COALESCE(background_x_fes_digtal.RTU_DOT_NO,'')='') AND background_x_fes_digtal.BG_POINT_OFFSET = 1 AND background_x_fes_digtal.BG_POINT_TAG = digital_map_to_fes.KEY_ID_TAG ) INNER JOIN digital_temp_define ON digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME ) INNER JOIN fes_digital ON fes_digital.DEV_TAG = background_x_fes_digtal.RTU_DEV_TAG AND fes_digital.SEQ_NO = digital_temp_define.SEC_SEQ_NO1 SET background_x_fes_digtal.RTU_TAG = fes_digital.RTU_TAG, background_x_fes_digtal.RTU_DOT_NO = fes_digital.DOT_NO; UPDATE ( (background_x_fes_digtal INNER JOIN digital_map_to_fes ON COALESCE(background_x_fes_digtal.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_digtal.RTU_TAG,'')='' OR COALESCE(background_x_fes_digtal.RTU_DOT_NO,'')='') AND background_x_fes_digtal.BG_POINT_OFFSET = 2 AND background_x_fes_digtal.BG_POINT_TAG = digital_map_to_fes.KEY_ID_TAG ) INNER JOIN digital_temp_define ON digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME ) INNER JOIN fes_digital ON fes_digital.DEV_TAG = background_x_fes_digtal.RTU_DEV_TAG AND fes_digital.SEQ_NO = digital_temp_define.SEC_SEQ_NO2 SET background_x_fes_digtal.RTU_TAG = fes_digital.RTU_TAG, background_x_fes_digtal.RTU_DOT_NO = fes_digital.DOT_NO; UPDATE ( (background_x_fes_digtal INNER JOIN digital_map_to_fes ON COALESCE(background_x_fes_digtal.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_digtal.RTU_TAG,'')='' OR COALESCE(background_x_fes_digtal.RTU_DOT_NO,'')='') AND background_x_fes_digtal.BG_POINT_OFFSET = 3 AND background_x_fes_digtal.BG_POINT_TAG = digital_map_to_fes.KEY_ID_TAG ) INNER JOIN digital_temp_define ON digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME ) INNER JOIN fes_digital ON fes_digital.DEV_TAG = background_x_fes_digtal.RTU_DEV_TAG AND fes_digital.SEQ_NO = digital_temp_define.SEC_SEQ_NO3 SET background_x_fes_digtal.RTU_TAG = fes_digital.RTU_TAG, background_x_fes_digtal.RTU_DOT_NO = fes_digital.DOT_NO; UPDATE ( (background_x_fes_digtal INNER JOIN digital_map_to_fes ON COALESCE(background_x_fes_digtal.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_digtal.RTU_TAG,'')='' OR COALESCE(background_x_fes_digtal.RTU_DOT_NO,'')='') AND background_x_fes_digtal.BG_POINT_OFFSET = 4 AND background_x_fes_digtal.BG_POINT_TAG = digital_map_to_fes.KEY_ID_TAG ) INNER JOIN digital_temp_define ON digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME ) INNER JOIN fes_digital ON fes_digital.DEV_TAG = background_x_fes_digtal.RTU_DEV_TAG AND fes_digital.SEQ_NO = digital_temp_define.SEC_SEQ_NO4 SET background_x_fes_digtal.RTU_TAG = fes_digital.RTU_TAG, background_x_fes_digtal.RTU_DOT_NO = fes_digital.DOT_NO; UPDATE ( (background_x_fes_digtal INNER JOIN digital_map_to_fes ON COALESCE(background_x_fes_digtal.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_digtal.RTU_TAG,'')='' OR COALESCE(background_x_fes_digtal.RTU_DOT_NO,'')='') AND background_x_fes_digtal.BG_POINT_OFFSET = 5 AND background_x_fes_digtal.BG_POINT_TAG = digital_map_to_fes.KEY_ID_TAG ) INNER JOIN digital_temp_define ON digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME ) INNER JOIN fes_digital ON fes_digital.DEV_TAG = background_x_fes_digtal.RTU_DEV_TAG AND fes_digital.SEQ_NO = digital_temp_define.SEC_SEQ_NO5 SET background_x_fes_digtal.RTU_TAG = fes_digital.RTU_TAG, background_x_fes_digtal.RTU_DOT_NO = fes_digital.DOT_NO; #mix UPDATE ( ( background_x_fes_mix INNER JOIN mix_map_to_fes ON COALESCE(background_x_fes_mix.RTU_DEV_TAG,'')<>'' AND (COALESCE(background_x_fes_mix.RTU_TAG,'')='' OR COALESCE(background_x_fes_mix.RTU_DOT_NO,'')='') AND background_x_fes_mix.BG_POINT_TAG = mix_map_to_fes.KEY_ID_TAG ) INNER JOIN mix_temp_define ON mix_map_to_fes.POINT_TP_NAME = mix_temp_define.TAG_NAME ) INNER JOIN fes_mix ON fes_mix.DEV_TAG = background_x_fes_mix.RTU_DEV_TAG AND fes_mix.SEQ_NO = mix_temp_define.SEC_SEQ_NO SET background_x_fes_mix.RTU_TAG = fes_mix.RTU_TAG, background_x_fes_mix.RTU_DOT_NO = fes_mix.DOT_NO; #CALL kbdDebugInfo('end update RTU_TAG or dot_no NULL',''); #删除RTU_TAG和DOT_NO仍为空的 #CALL kbdDebugInfo('begin delete RTU_TAG or dot_no NULL',''); DELETE FROM background_x_fes_accuml WHERE COALESCE(RTU_TAG,'') = '' OR COALESCE(RTU_DOT_NO,'') ='' ; DELETE FROM background_x_fes_analog WHERE COALESCE(RTU_TAG,'') = '' OR COALESCE(RTU_DOT_NO,'') ='' ; DELETE FROM background_x_fes_digtal WHERE COALESCE(RTU_TAG,'') = '' OR COALESCE(RTU_DOT_NO,'') ='' ; DELETE FROM background_x_fes_mix WHERE COALESCE(RTU_TAG,'') = '' OR COALESCE(RTU_DOT_NO,'') ='' ; DELETE FROM background_x_fes_ana_ctrl WHERE COALESCE(RTU_TAG,'') = '' OR COALESCE(RTU_DOT_NO,'') ='' ; DELETE FROM background_x_fes_dig_ctrl WHERE COALESCE(RTU_TAG,'') = '' OR COALESCE(RTU_DOT_NO,'') ='' ; DELETE FROM background_x_fes_mix_ctrl WHERE COALESCE(RTU_TAG,'') = '' OR COALESCE(RTU_DOT_NO,'') ='' ; #CALL kbdDebugInfo('end delete RTU_TAG or dot_no NULL',''); #CALL kbdDebugInfo('begin reUpdate RTU_DEV_TAG',''); #再次更新,对于RTU_TAG,DOT_NO和RTU_DEV_TAG对不上的点归类到默认设备 UPDATE background_x_fes_accuml SET background_x_fes_accuml.RTU_DEV_TAG = concat(background_x_fes_accuml.RTU_TAG, '.', 'defaultDev') WHERE NOT EXISTS (SELECT TAG_NAME FROM fes_accuml WHERE fes_accuml.TAG_NAME =concat(background_x_fes_accuml.RTU_TAG,'.',background_x_fes_accuml.RTU_DOT_NO) AND fes_accuml.DEV_TAG = background_x_fes_accuml.RTU_DEV_TAG ); UPDATE background_x_fes_analog SET background_x_fes_analog.RTU_DEV_TAG = concat(background_x_fes_analog.RTU_TAG, '.', 'defaultDev') WHERE NOT EXISTS (SELECT TAG_NAME FROM fes_analog WHERE fes_analog.TAG_NAME =concat(background_x_fes_analog.RTU_TAG,'.',background_x_fes_analog.RTU_DOT_NO) AND fes_analog.DEV_TAG = background_x_fes_analog.RTU_DEV_TAG ); UPDATE background_x_fes_digtal SET background_x_fes_digtal.RTU_DEV_TAG = concat(background_x_fes_digtal.RTU_TAG, '.', 'defaultDev') WHERE NOT EXISTS (SELECT TAG_NAME FROM fes_digital WHERE fes_digital.TAG_NAME =concat(background_x_fes_digtal.RTU_TAG,'.',background_x_fes_digtal.RTU_DOT_NO) AND fes_digital.DEV_TAG = background_x_fes_digtal.RTU_DEV_TAG ); UPDATE background_x_fes_mix SET background_x_fes_mix.RTU_DEV_TAG = concat(background_x_fes_mix.RTU_TAG, '.', 'defaultDev') WHERE NOT EXISTS (SELECT TAG_NAME FROM fes_mix WHERE fes_mix.TAG_NAME =concat(background_x_fes_mix.RTU_TAG,'.',background_x_fes_mix.RTU_DOT_NO) AND fes_mix.DEV_TAG = background_x_fes_mix.RTU_DEV_TAG ); UPDATE background_x_fes_ana_ctrl SET background_x_fes_ana_ctrl.RTU_DEV_TAG = concat(background_x_fes_ana_ctrl.RTU_TAG, '.', 'defaultDev') WHERE NOT EXISTS (SELECT TAG_NAME FROM fes_analog_ctrl WHERE fes_analog_ctrl.TAG_NAME =concat(background_x_fes_ana_ctrl.RTU_TAG,'.',background_x_fes_ana_ctrl.RTU_DOT_NO) AND fes_analog_ctrl.DEV_TAG = background_x_fes_ana_ctrl.RTU_DEV_TAG ); UPDATE background_x_fes_dig_ctrl SET background_x_fes_dig_ctrl.RTU_DEV_TAG = concat(background_x_fes_dig_ctrl.RTU_TAG, '.', 'defaultDev') WHERE NOT EXISTS (SELECT TAG_NAME FROM fes_digital_ctrl WHERE fes_digital_ctrl.TAG_NAME =concat(background_x_fes_dig_ctrl.RTU_TAG,'.',background_x_fes_dig_ctrl.RTU_DOT_NO) AND fes_digital_ctrl.DEV_TAG = background_x_fes_dig_ctrl.RTU_DEV_TAG ); UPDATE background_x_fes_mix_ctrl SET background_x_fes_mix_ctrl.RTU_DEV_TAG = concat(background_x_fes_mix_ctrl.RTU_TAG, '.', 'defaultDev') WHERE NOT EXISTS (SELECT TAG_NAME FROM fes_mix_ctrl WHERE fes_mix_ctrl.TAG_NAME =concat(background_x_fes_mix_ctrl.RTU_TAG,'.',background_x_fes_mix_ctrl.RTU_DOT_NO) AND fes_mix_ctrl.DEV_TAG = background_x_fes_mix_ctrl.RTU_DEV_TAG ); #CALL kbdDebugInfo('end reUpdate RTU_DEV_TAG',''); #预处理完毕,此时background_x_fes表中的字段情况有以下几种情况. #1:RTU_TAG,DOT_NO,RTU_DEV_TAG都对得上的(即对应表上有的),这些事前置实例设备中的点 #2:RTU_TAG,DOT_NO与RTU_DEV_TAG可能对不上,这类点归类到默认设备中 #先删除默认设备点 #CALL kbdDebugInfo('begin 删除默认设备点',''); DELETE fes_accuml FROM ( fes_accuml INNER JOIN fes_dev_info ON fes_accuml.DEV_TAG = fes_dev_info.TAG_NAME AND fes_dev_info.TAG_NAME = concat(fes_accuml.RTU_TAG,'.', 'defaultDev') ) INNER JOIN background_x_fes_accuml ON fes_accuml.RTU_TAG = background_x_fes_accuml.RTU_TAG; DELETE fes_analog FROM ( fes_analog INNER JOIN fes_dev_info ON fes_analog.DEV_TAG = fes_dev_info.TAG_NAME AND fes_dev_info.TAG_NAME = concat(fes_analog.RTU_TAG,'.', 'defaultDev') ) INNER JOIN background_x_fes_analog ON fes_analog.RTU_TAG = background_x_fes_analog.RTU_TAG; DELETE fes_digital FROM ( fes_digital INNER JOIN fes_dev_info ON fes_digital.DEV_TAG = fes_dev_info.TAG_NAME AND fes_dev_info.TAG_NAME = concat(fes_digital.RTU_TAG,'.', 'defaultDev') ) INNER JOIN background_x_fes_digtal ON fes_digital.RTU_TAG = background_x_fes_digtal.RTU_TAG; DELETE fes_mix FROM ( fes_mix INNER JOIN fes_dev_info ON fes_mix.DEV_TAG = fes_dev_info.TAG_NAME AND fes_dev_info.TAG_NAME = concat(fes_mix.RTU_TAG,'.', 'defaultDev') ) INNER JOIN background_x_fes_mix ON fes_mix.RTU_TAG = background_x_fes_mix.RTU_TAG; DELETE fes_analog_ctrl FROM ( fes_analog_ctrl INNER JOIN fes_dev_info ON fes_analog_ctrl.DEV_TAG = fes_dev_info.TAG_NAME AND fes_dev_info.TAG_NAME = concat(fes_analog_ctrl.RTU_TAG,'.', 'defaultDev') ) INNER JOIN background_x_fes_ana_ctrl ON fes_analog_ctrl.RTU_TAG = background_x_fes_ana_ctrl.RTU_TAG; DELETE fes_digital_ctrl FROM ( fes_digital_ctrl INNER JOIN fes_dev_info ON fes_digital_ctrl.DEV_TAG = fes_dev_info.TAG_NAME AND fes_dev_info.TAG_NAME = concat(fes_digital_ctrl.RTU_TAG,'.', 'defaultDev') ) INNER JOIN background_x_fes_dig_ctrl ON fes_digital_ctrl.RTU_TAG = background_x_fes_dig_ctrl.RTU_TAG; DELETE fes_mix_ctrl FROM ( fes_mix_ctrl INNER JOIN fes_dev_info ON fes_mix_ctrl.DEV_TAG = fes_dev_info.TAG_NAME AND fes_dev_info.TAG_NAME = concat(fes_mix_ctrl.RTU_TAG,'.', 'defaultDev') ) INNER JOIN background_x_fes_mix_ctrl ON fes_mix_ctrl.RTU_TAG = background_x_fes_mix_ctrl.RTU_TAG; #CALL kbdDebugInfo('end 删除默认设备点',''); #对于非默认设备将所有FES与后台的联系清除 #CALL kbdDebugInfo('begin 对于非默认设备将所有FES与后台的联系清除',''); UPDATE fes_accuml INNER JOIN background_x_fes_accuml ON fes_accuml.TAG_NAME = concat(background_x_fes_accuml.RTU_TAG,'.',background_x_fes_accuml.RTU_DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME='', RES_PARA_INT1=RTU_RES_PARA_INT1,RES_PARA_INT2=RTU_RES_PARA_INT2,RES_PARA_INT3=RTU_RES_PARA_INT3,RES_PARA_INT4=RTU_RES_PARA_INT4; UPDATE fes_analog INNER JOIN background_x_fes_analog ON fes_analog.TAG_NAME = concat(background_x_fes_analog.RTU_TAG,'.',background_x_fes_analog.RTU_DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME='', RES_PARA_INT1=RTU_RES_PARA_INT1,RES_PARA_INT2=RTU_RES_PARA_INT2,RES_PARA_INT3=RTU_RES_PARA_INT3,RES_PARA_INT4=RTU_RES_PARA_INT4; UPDATE fes_digital INNER JOIN background_x_fes_digtal ON fes_digital.TAG_NAME = concat(background_x_fes_digtal.RTU_TAG,'.',background_x_fes_digtal.RTU_DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME='', RES_PARA_INT1=RTU_RES_PARA_INT1,RES_PARA_INT2=RTU_RES_PARA_INT2,RES_PARA_INT3=RTU_RES_PARA_INT3,RES_PARA_INT4=RTU_RES_PARA_INT4; UPDATE fes_mix INNER JOIN background_x_fes_mix ON fes_mix.TAG_NAME = concat(background_x_fes_mix.RTU_TAG,'.',background_x_fes_mix.RTU_DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME='', RES_PARA_INT1=RTU_RES_PARA_INT1,RES_PARA_INT2=RTU_RES_PARA_INT2,RES_PARA_INT3=RTU_RES_PARA_INT3,RES_PARA_INT4=RTU_RES_PARA_INT4; UPDATE fes_analog_ctrl INNER JOIN background_x_fes_ana_ctrl ON fes_analog_ctrl.TAG_NAME = concat(background_x_fes_ana_ctrl.RTU_TAG,'.',background_x_fes_ana_ctrl.RTU_DOT_NO) SET RES_PARA_INT1=RTU_RES_PARA_INT1,RES_PARA_INT2=RTU_RES_PARA_INT2,RES_PARA_INT3=RTU_RES_PARA_INT3,RES_PARA_INT4=RTU_RES_PARA_INT4; UPDATE fes_digital_ctrl INNER JOIN background_x_fes_dig_ctrl ON fes_digital_ctrl.TAG_NAME = concat(background_x_fes_dig_ctrl.RTU_TAG,'.',background_x_fes_dig_ctrl.RTU_DOT_NO) SET RES_PARA_INT1=RTU_RES_PARA_INT1,RES_PARA_INT2=RTU_RES_PARA_INT2,RES_PARA_INT3=RTU_RES_PARA_INT3,RES_PARA_INT4=RTU_RES_PARA_INT4; UPDATE fes_mix_ctrl INNER JOIN background_x_fes_mix_ctrl ON fes_mix_ctrl.TAG_NAME = concat(background_x_fes_mix_ctrl.RTU_TAG,'.',background_x_fes_mix_ctrl.RTU_DOT_NO) SET RES_PARA_INT1=RTU_RES_PARA_INT1,RES_PARA_INT2=RTU_RES_PARA_INT2,RES_PARA_INT3=RTU_RES_PARA_INT3,RES_PARA_INT4=RTU_RES_PARA_INT4; #CALL kbdDebugInfo('end 对于非默认设备将所有FES与后台的联系清除',''); #ana_ctrl,dig_ctrl,mix_ctrl不用清除 #重新生成默认设备 #CALL kbdDebugInfo('begin 重新生成默认设备',''); INSERT INTO fes_accuml ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DOT_NO, RTU_TAG, DEV_TAG, SEQ_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, BASE, COEFF, RTU_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME) SELECT concat(background_x_fes_accuml.RTU_TAG,'.',background_x_fes_accuml.RTU_DOT_NO), fes_dev_info.LOCATION_ID, fes_dev_info.SUB_SYSTEM, background_x_fes_accuml.RTU_DOT_NO, background_x_fes_accuml.RTU_TAG, fes_dev_info.TAG_NAME,background_x_fes_accuml.RTU_DOT_NO, '', '', '', '0', '1', fes_rtu_para.RTU_NO, background_x_fes_accuml.RTU_RES_PARA_INT1, background_x_fes_accuml.RTU_RES_PARA_INT2, background_x_fes_accuml.RTU_RES_PARA_INT3, background_x_fes_accuml.RTU_RES_PARA_INT4, background_x_fes_accuml.RTU_DOT_DESC, '' FROM background_x_fes_accuml , fes_rtu_para ,fes_dev_info WHERE background_x_fes_accuml.RTU_DEV_TAG =concat(background_x_fes_accuml.RTU_TAG, '.', 'defaultDev' ) AND fes_rtu_para.TAG_NAME=background_x_fes_accuml.RTU_TAG AND fes_dev_info.TAG_NAME = background_x_fes_accuml.RTU_DEV_TAG AND fes_dev_info.RTU_TAG = background_x_fes_accuml.RTU_TAG; INSERT INTO fes_analog ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DEV_TAG, SEQ_NO, RTU_TAG, RTU_NO, DOT_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, IS_FILTER, PERCENT, DEADBAND_TYPE, DEADBAND, ZEROBAND, BASE, COEFF, MAX_RANGE, MIN_RANGE, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME) SELECT concat(background_x_fes_analog.RTU_TAG,'.',background_x_fes_analog.RTU_DOT_NO), fes_dev_info.LOCATION_ID, fes_dev_info.SUB_SYSTEM, fes_dev_info.TAG_NAME, background_x_fes_analog.RTU_DOT_NO,background_x_fes_analog.RTU_TAG,fes_rtu_para.RTU_NO, background_x_fes_analog.RTU_DOT_NO, '', '', '', '0', '0', '0', '0', '0', '0', '1', '65536', '0', background_x_fes_analog.RTU_RES_PARA_INT1, background_x_fes_analog.RTU_RES_PARA_INT2, background_x_fes_analog.RTU_RES_PARA_INT3, background_x_fes_analog.RTU_RES_PARA_INT4, background_x_fes_analog.RTU_DOT_DESC, '' FROM background_x_fes_analog , fes_rtu_para ,fes_dev_info WHERE background_x_fes_analog.RTU_DEV_TAG =concat(background_x_fes_analog.RTU_TAG, '.', 'defaultDev' ) AND fes_rtu_para.TAG_NAME=background_x_fes_analog.RTU_TAG AND fes_dev_info.TAG_NAME = background_x_fes_analog.RTU_DEV_TAG AND fes_dev_info.RTU_TAG = background_x_fes_analog.RTU_TAG; INSERT INTO fes_digital ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DEV_TAG, SEQ_NO, RTU_TAG, DOT_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, FILTER_ERR, FILTER_DISTURB, DISTURB_TIME, REVERS, RTU_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME) SELECT concat(background_x_fes_digtal.RTU_TAG,'.',background_x_fes_digtal.RTU_DOT_NO), fes_dev_info.LOCATION_ID, fes_dev_info.SUB_SYSTEM, fes_dev_info.TAG_NAME, background_x_fes_digtal.RTU_DOT_NO,background_x_fes_digtal.RTU_TAG,background_x_fes_digtal.RTU_DOT_NO, '', '', '', '1', '1', '0', '0', fes_rtu_para.RTU_NO, background_x_fes_digtal.RTU_RES_PARA_INT1, background_x_fes_digtal.RTU_RES_PARA_INT2, background_x_fes_digtal.RTU_RES_PARA_INT3, background_x_fes_digtal.RTU_RES_PARA_INT4, background_x_fes_digtal.RTU_DOT_DESC, '' FROM background_x_fes_digtal , fes_rtu_para ,fes_dev_info WHERE background_x_fes_digtal.RTU_DEV_TAG =concat(background_x_fes_digtal.RTU_TAG, '.', 'defaultDev' ) AND fes_rtu_para.TAG_NAME=background_x_fes_digtal.RTU_TAG AND fes_dev_info.TAG_NAME = background_x_fes_digtal.RTU_DEV_TAG AND fes_dev_info.RTU_TAG = background_x_fes_digtal.RTU_TAG; INSERT INTO fes_mix ( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, RTU_TAG, RTU_NO, DOT_NO, DEV_TAG, SEQ_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, BASE, COEFF, MAX_RANGE, MIN_RANGE, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, FES_POINT_TP_NAME) SELECT concat(background_x_fes_mix.RTU_TAG,'.',background_x_fes_mix.RTU_DOT_NO), background_x_fes_mix.RTU_DOT_DESC, fes_dev_info.LOCATION_ID, fes_dev_info.SUB_SYSTEM, background_x_fes_mix.RTU_TAG,fes_dev_info.RTU_NO,background_x_fes_mix.RTU_DOT_NO, fes_dev_info.TAG_NAME, background_x_fes_mix.RTU_DOT_NO,'', '', '', '0', '1', '65536', '0', background_x_fes_mix.RTU_RES_PARA_INT1, background_x_fes_mix.RTU_RES_PARA_INT2, background_x_fes_mix.RTU_RES_PARA_INT3, background_x_fes_mix.RTU_RES_PARA_INT4, '' FROM background_x_fes_mix , fes_rtu_para ,fes_dev_info WHERE background_x_fes_mix.RTU_DEV_TAG =concat(background_x_fes_mix.RTU_TAG, '.', 'defaultDev' ) AND fes_rtu_para.TAG_NAME=background_x_fes_mix.RTU_TAG AND fes_dev_info.TAG_NAME = background_x_fes_mix.RTU_DEV_TAG AND fes_dev_info.RTU_TAG = background_x_fes_mix.RTU_TAG; INSERT INTO fes_analog_ctrl ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, BASE, COEFF, MAX_RANGE, MIN_RANGE, RTU_NO, DEV_TAG, DOT_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, SEQ_NO, RTU_TAG, DESCRIPTION, POINT_TP_NAME) SELECT concat(background_x_fes_ana_ctrl.RTU_TAG,'.',background_x_fes_ana_ctrl.RTU_DOT_NO), fes_dev_info.LOCATION_ID, fes_dev_info.SUB_SYSTEM, '0', '1', '65536', '0', fes_rtu_para.RTU_NO,fes_dev_info.TAG_NAME,background_x_fes_ana_ctrl.RTU_DOT_NO, background_x_fes_ana_ctrl.RTU_RES_PARA_INT1,background_x_fes_ana_ctrl.RTU_RES_PARA_INT2,background_x_fes_ana_ctrl.RTU_RES_PARA_INT3,background_x_fes_ana_ctrl.RTU_RES_PARA_INT4,background_x_fes_ana_ctrl.RTU_DOT_NO,background_x_fes_ana_ctrl.RTU_TAG,background_x_fes_ana_ctrl.RTU_DOT_DESC,'' FROM background_x_fes_ana_ctrl , fes_rtu_para ,fes_dev_info WHERE background_x_fes_ana_ctrl.RTU_DEV_TAG =concat(background_x_fes_ana_ctrl.RTU_TAG, '.', 'defaultDev' ) AND fes_rtu_para.TAG_NAME=background_x_fes_ana_ctrl.RTU_TAG AND fes_dev_info.TAG_NAME = background_x_fes_ana_ctrl.RTU_DEV_TAG AND fes_dev_info.RTU_TAG = background_x_fes_ana_ctrl.RTU_TAG; INSERT INTO fes_digital_ctrl ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, RTU_TAG, RTU_NO, DOT_NO, DEV_TAG, DESCRIPTION, REVERS, POINT_TP_NAME, SEQ_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4) SELECT concat(background_x_fes_dig_ctrl.RTU_TAG,'.',background_x_fes_dig_ctrl.RTU_DOT_NO), fes_dev_info.LOCATION_ID, fes_dev_info.SUB_SYSTEM, background_x_fes_dig_ctrl.RTU_TAG,fes_rtu_para.RTU_NO, background_x_fes_dig_ctrl.RTU_DOT_NO,fes_dev_info.TAG_NAME,background_x_fes_dig_ctrl.RTU_DOT_DESC,'0', '', background_x_fes_dig_ctrl.RTU_DOT_NO,background_x_fes_dig_ctrl.RTU_RES_PARA_INT1,background_x_fes_dig_ctrl.RTU_RES_PARA_INT2,background_x_fes_dig_ctrl.RTU_RES_PARA_INT3,background_x_fes_dig_ctrl.RTU_RES_PARA_INT4 FROM background_x_fes_dig_ctrl , fes_rtu_para ,fes_dev_info WHERE background_x_fes_dig_ctrl.RTU_DEV_TAG =concat(background_x_fes_dig_ctrl.RTU_TAG, '.', 'defaultDev' ) AND fes_rtu_para.TAG_NAME=background_x_fes_dig_ctrl.RTU_TAG AND fes_dev_info.TAG_NAME = background_x_fes_dig_ctrl.RTU_DEV_TAG AND fes_dev_info.RTU_TAG = background_x_fes_dig_ctrl.RTU_TAG; INSERT INTO fes_mix_ctrl ( TAG_NAME, LOCATION_ID, SUB_SYSTEM, RTU_TAG, RTU_NO, BASE, DESCRIPTION, DOT_NO, COEFF, MIN_RANGE, MAX_RANGE, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, SEQ_NO, POINT_TP_NAME, DEV_TAG) SELECT concat(background_x_fes_mix_ctrl.RTU_TAG,'.',background_x_fes_mix_ctrl.RTU_DOT_NO), fes_dev_info.LOCATION_ID, fes_dev_info.SUB_SYSTEM, background_x_fes_mix_ctrl.RTU_TAG,fes_rtu_para.RTU_NO,'0', background_x_fes_mix_ctrl.RTU_DOT_DESC, background_x_fes_mix_ctrl.RTU_DOT_NO,'1', '0', '65536', background_x_fes_mix_ctrl.RTU_RES_PARA_INT1,background_x_fes_mix_ctrl.RTU_RES_PARA_INT2,background_x_fes_mix_ctrl.RTU_RES_PARA_INT3,background_x_fes_mix_ctrl.RTU_RES_PARA_INT4, background_x_fes_mix_ctrl.RTU_DOT_NO,'', fes_dev_info.TAG_NAME FROM background_x_fes_mix_ctrl , fes_rtu_para ,fes_dev_info WHERE background_x_fes_mix_ctrl.RTU_DEV_TAG =concat(background_x_fes_mix_ctrl.RTU_TAG, '.', 'defaultDev' ) AND fes_rtu_para.TAG_NAME=background_x_fes_mix_ctrl.RTU_TAG AND fes_dev_info.TAG_NAME = background_x_fes_mix_ctrl.RTU_DEV_TAG AND fes_dev_info.RTU_TAG = background_x_fes_mix_ctrl.RTU_TAG; #CALL kbdDebugInfo('end 重新生成默认设备',''); #NOTE:默认设备处理完毕 #重新写入FES与后台的关系 直接写入基础属性表和map_to_fes表,通过该表的触发器写入联系 #重新写入,先写acc,ana,dig,再写map_to_fes,ctrl表 #CALL kbdDebugInfo('begin 重新写入 set RTU',''); UPDATE accuml INNER JOIN background_x_fes_accuml ON concat('accuml','.',accuml.TAG_NAME) = background_x_fes_accuml.BG_POINT_TAG SET accuml.RTU_TAG = background_x_fes_accuml.RTU_TAG; UPDATE analog INNER JOIN background_x_fes_analog ON concat('analog','.',analog.TAG_NAME) = background_x_fes_analog.BG_POINT_TAG SET analog.RTU_TAG = background_x_fes_analog.RTU_TAG; UPDATE digital INNER JOIN background_x_fes_digtal ON concat('digital','.',digital.TAG_NAME) = background_x_fes_digtal.BG_POINT_TAG SET digital.RTU_TAG = background_x_fes_digtal.RTU_TAG; UPDATE mix INNER JOIN background_x_fes_mix ON concat('mix','.',mix.TAG_NAME) = background_x_fes_mix.BG_POINT_TAG SET mix.RTU_TAG = background_x_fes_mix.RTU_TAG; UPDATE accuml_map_to_fes INNER JOIN background_x_fes_accuml ON accuml_map_to_fes.KEY_ID_TAG = background_x_fes_accuml.BG_POINT_TAG AND accuml_map_to_fes.RTU_TAG = background_x_fes_accuml.RTU_TAG SET accuml_map_to_fes.DOT_NO = background_x_fes_accuml.RTU_DOT_NO; UPDATE analog_map_to_fes INNER JOIN background_x_fes_analog ON analog_map_to_fes.KEY_ID_TAG = background_x_fes_analog.BG_POINT_TAG AND analog_map_to_fes.RTU_TAG = background_x_fes_analog.RTU_TAG SET analog_map_to_fes.DOT_NO = background_x_fes_analog.RTU_DOT_NO; UPDATE digital_map_to_fes INNER JOIN background_x_fes_digtal ON background_x_fes_digtal.BG_POINT_OFFSET = 1 AND digital_map_to_fes.KEY_ID_TAG = background_x_fes_digtal.BG_POINT_TAG AND digital_map_to_fes.RTU_TAG = background_x_fes_digtal.RTU_TAG SET digital_map_to_fes.DOT_NO1 = background_x_fes_digtal.RTU_DOT_NO; UPDATE digital_map_to_fes INNER JOIN background_x_fes_digtal ON background_x_fes_digtal.BG_POINT_OFFSET = 2 AND digital_map_to_fes.KEY_ID_TAG = background_x_fes_digtal.BG_POINT_TAG AND digital_map_to_fes.RTU_TAG = background_x_fes_digtal.RTU_TAG SET digital_map_to_fes.DOT_NO2 = background_x_fes_digtal.RTU_DOT_NO; UPDATE digital_map_to_fes INNER JOIN background_x_fes_digtal ON background_x_fes_digtal.BG_POINT_OFFSET = 3 AND digital_map_to_fes.KEY_ID_TAG = background_x_fes_digtal.BG_POINT_TAG AND digital_map_to_fes.RTU_TAG = background_x_fes_digtal.RTU_TAG SET digital_map_to_fes.DOT_NO3 = background_x_fes_digtal.RTU_DOT_NO; UPDATE digital_map_to_fes INNER JOIN background_x_fes_digtal ON background_x_fes_digtal.BG_POINT_OFFSET = 4 AND digital_map_to_fes.KEY_ID_TAG = background_x_fes_digtal.BG_POINT_TAG AND digital_map_to_fes.RTU_TAG = background_x_fes_digtal.RTU_TAG SET digital_map_to_fes.DOT_NO4 = background_x_fes_digtal.RTU_DOT_NO; UPDATE digital_map_to_fes INNER JOIN background_x_fes_digtal ON background_x_fes_digtal.BG_POINT_OFFSET = 5 AND digital_map_to_fes.KEY_ID_TAG = background_x_fes_digtal.BG_POINT_TAG AND digital_map_to_fes.RTU_TAG = background_x_fes_digtal.RTU_TAG SET digital_map_to_fes.DOT_NO5 = background_x_fes_digtal.RTU_DOT_NO; UPDATE mix_map_to_fes INNER JOIN background_x_fes_mix ON mix_map_to_fes.KEY_ID_TAG = background_x_fes_mix.BG_POINT_TAG AND mix_map_to_fes.RTU_TAG = background_x_fes_mix.RTU_TAG SET mix_map_to_fes.DOT_NO = background_x_fes_mix.RTU_DOT_NO; #CALL kbdDebugInfo('end 重新写入 set RTU, DOT',''); #写入ctrl表,注意此时background_x_fes__ctrl中的RTU必须和analog_control中的RTU保持一致,确保该点是同一个RTU #CALL kbdDebugInfo('begin 写入ctrl表',''); UPDATE analog_control INNER JOIN background_x_fes_ana_ctrl ON analog_control.TAG_NAME = background_x_fes_ana_ctrl.BG_POINT_TAG AND analog_control.RTU_TAG = background_x_fes_ana_ctrl.RTU_TAG SET analog_control.OFFSET_NO = background_x_fes_ana_ctrl.RTU_DOT_NO; UPDATE digital_control INNER JOIN background_x_fes_dig_ctrl ON digital_control.TAG_NAME = background_x_fes_dig_ctrl.BG_POINT_TAG AND background_x_fes_dig_ctrl.BG_POINT_OFFSET = 1 AND digital_control.RTU_TAG = background_x_fes_dig_ctrl.RTU_TAG SET digital_control.OFFSET_NO1 = background_x_fes_dig_ctrl.RTU_DOT_NO; UPDATE digital_control INNER JOIN background_x_fes_dig_ctrl ON digital_control.TAG_NAME = background_x_fes_dig_ctrl.BG_POINT_TAG AND background_x_fes_dig_ctrl.BG_POINT_OFFSET = 2 AND digital_control.RTU_TAG = background_x_fes_dig_ctrl.RTU_TAG SET digital_control.OFFSET_NO2 = background_x_fes_dig_ctrl.RTU_DOT_NO; UPDATE digital_control INNER JOIN background_x_fes_dig_ctrl ON digital_control.TAG_NAME = background_x_fes_dig_ctrl.BG_POINT_TAG AND background_x_fes_dig_ctrl.BG_POINT_OFFSET = 3 AND digital_control.RTU_TAG = background_x_fes_dig_ctrl.RTU_TAG SET digital_control.OFFSET_NO3 = background_x_fes_dig_ctrl.RTU_DOT_NO; UPDATE digital_control INNER JOIN background_x_fes_dig_ctrl ON digital_control.TAG_NAME = background_x_fes_dig_ctrl.BG_POINT_TAG AND background_x_fes_dig_ctrl.BG_POINT_OFFSET = 4 AND digital_control.RTU_TAG = background_x_fes_dig_ctrl.RTU_TAG SET digital_control.OFFSET_NO4 = background_x_fes_dig_ctrl.RTU_DOT_NO; UPDATE digital_control INNER JOIN background_x_fes_dig_ctrl ON digital_control.TAG_NAME = background_x_fes_dig_ctrl.BG_POINT_TAG AND background_x_fes_dig_ctrl.BG_POINT_OFFSET = 5 AND digital_control.RTU_TAG = background_x_fes_dig_ctrl.RTU_TAG SET digital_control.OFFSET_NO5 = background_x_fes_dig_ctrl.RTU_DOT_NO; UPDATE mix_control INNER JOIN background_x_fes_mix_ctrl ON mix_control.TAG_NAME = background_x_fes_mix_ctrl.BG_POINT_TAG AND mix_control.RTU_TAG = background_x_fes_mix_ctrl.RTU_TAG SET mix_control.OFFSET_NO = background_x_fes_mix_ctrl.RTU_DOT_NO; #CALL kbdDebugInfo('end 写入ctrl表',''); #写入完毕,下面为描述的处理 #可选,保持实例前置设备(非默认设备)和excel文件中的一致 IF importFesPointDesc = 1 THEN BEGIN UPDATE fes_accuml INNER JOIN background_x_fes_accuml ON fes_accuml.TAG_NAME = concat(background_x_fes_accuml.RTU_TAG,'.',background_x_fes_accuml.RTU_DOT_NO) AND fes_accuml.DEV_TAG <> concat(fes_accuml.RTU_TAG,'.','defaultDev') SET fes_accuml.DESCRIPTION = background_x_fes_accuml.RTU_DOT_DESC ; UPDATE fes_analog INNER JOIN background_x_fes_analog ON fes_analog.TAG_NAME = concat(background_x_fes_analog.RTU_TAG,'.',background_x_fes_analog.RTU_DOT_NO) AND fes_analog.DEV_TAG <> concat(fes_analog.RTU_TAG,'.','defaultDev') SET fes_analog.DESCRIPTION = background_x_fes_analog.RTU_DOT_DESC ; UPDATE fes_digital INNER JOIN background_x_fes_digtal ON fes_digital.TAG_NAME = concat(background_x_fes_digtal.RTU_TAG,'.', background_x_fes_digtal.RTU_DOT_NO) AND fes_digital.DEV_TAG <> concat(fes_digital.RTU_TAG,'.','defaultDev') SET fes_digital.DESCRIPTION = background_x_fes_digtal.RTU_DOT_DESC ; UPDATE fes_mix INNER JOIN background_x_fes_mix ON fes_mix.TAG_NAME = concat(background_x_fes_mix.RTU_TAG,'.', background_x_fes_mix.RTU_DOT_NO) AND fes_mix.DEV_TAG <> concat(fes_mix.RTU_TAG,'.','defaultDev') SET fes_mix.DESCRIPTION = background_x_fes_mix.RTU_DOT_DESC ; UPDATE fes_analog_ctrl INNER JOIN background_x_fes_ana_ctrl ON fes_analog_ctrl.TAG_NAME = concat(background_x_fes_ana_ctrl.RTU_TAG,'.', background_x_fes_ana_ctrl.RTU_DOT_NO) AND fes_analog_ctrl.DEV_TAG <> concat(fes_analog_ctrl.RTU_TAG,'.','defaultDev') SET fes_analog_ctrl.DESCRIPTION = background_x_fes_ana_ctrl.RTU_DOT_DESC; UPDATE fes_digital_ctrl INNER JOIN background_x_fes_dig_ctrl ON fes_digital_ctrl.TAG_NAME = concat(background_x_fes_dig_ctrl.RTU_TAG,'.',background_x_fes_dig_ctrl.RTU_DOT_NO) AND fes_digital_ctrl.DEV_TAG <> concat(fes_digital_ctrl.RTU_TAG,'.','defaultDev') SET fes_digital_ctrl.DESCRIPTION = background_x_fes_dig_ctrl.RTU_DOT_DESC; UPDATE fes_mix_ctrl INNER JOIN background_x_fes_mix_ctrl ON fes_mix_ctrl.TAG_NAME = concat(background_x_fes_mix_ctrl.RTU_TAG,'.',background_x_fes_mix_ctrl.RTU_DOT_NO) AND fes_mix_ctrl.DEV_TAG <> concat(fes_mix_ctrl.RTU_TAG,'.','defaultDev') SET fes_mix_ctrl.DESCRIPTION = background_x_fes_mix_ctrl.RTU_DOT_DESC; END; END IF; #把前置描述导入后台,检索map_to_fes表,查找联系 IF fesDescToBG = 1 THEN BEGIN UPDATE (accuml INNER JOIN accuml_map_to_fes ON accuml_map_to_fes.KEY_ID_TAG = concat('accuml','.',accuml.TAG_NAME) AND COALESCE(accuml_map_to_fes.RTU_TAG,'')<>'' AND COALESCE(accuml_map_to_fes.DOT_NO,'')<>'') INNER JOIN fes_accuml ON fes_accuml.TAG_NAME = concat( accuml_map_to_fes.RTU_TAG ,'.', accuml_map_to_fes.DOT_NO) SET accuml.DESCRIPTION = fes_accuml.DESCRIPTION; UPDATE (analog INNER JOIN analog_map_to_fes ON analog_map_to_fes.KEY_ID_TAG = concat('analog','.',analog.TAG_NAME) AND COALESCE(analog_map_to_fes.RTU_TAG,'')<>'' AND COALESCE(analog_map_to_fes.DOT_NO,'')<>'') INNER JOIN fes_analog ON fes_analog.TAG_NAME = concat(analog_map_to_fes.RTU_TAG ,'.', analog_map_to_fes.DOT_NO) SET analog.DESCRIPTION = fes_analog.DESCRIPTION; #更新mix的 UPDATE (mix INNER JOIN mix_map_to_fes ON mix_map_to_fes.KEY_ID_TAG = concat('mix','.',mix.TAG_NAME) AND COALESCE(mix_map_to_fes.RTU_TAG,'')<>'' AND COALESCE(mix_map_to_fes.DOT_NO,'')<>'') INNER JOIN fes_mix ON fes_mix.TAG_NAME = concat(mix_map_to_fes.RTU_TAG ,'.', mix_map_to_fes.DOT_NO) SET mix.DESCRIPTION = fes_mix.DESCRIPTION; #更新dig的,以第一个点为准,其他点的描述不考虑 UPDATE (digital INNER JOIN digital_map_to_fes ON digital_map_to_fes.KEY_ID_TAG = concat('digtal','.',digital.TAG_NAME) AND COALESCE(digital_map_to_fes.RTU_TAG,'')<>'' AND COALESCE(digital_map_to_fes.DOT_NO1,'')<>'') INNER JOIN fes_digital ON fes_digital.TAG_NAME = concat(digital_map_to_fes.RTU_TAG ,'.', digital_map_to_fes.DOT_NO1) SET digital.DESCRIPTION = fes_digital.DESCRIPTION; END; END IF; #把同步实时库的功能重新打开 IF openTriggerInfo <> 1 THEN UPDATE sys_trigger_flag SET FLAG_ID = 1; END IF; #CALL kbdDebugInfo('end all',''); END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `importPsc3000`; DELIMITER $$ CREATE PROCEDURE `importPsc3000`(rtuTag varchar(64)) body:BEGIN /* * 导入PSC3000的数据,数据在调用本存储过程前已经把excel表格中的数据存入PSC3000开头的表格中 * 1.对于设备的处理,以excel表中设备ID和设备模板为判断基准, 数据库中不存在该ID和模板一样的设备,则往数据库中增加该设备 对于数据库中存在,而excel表中不存在的设备,删除数据库中的设备. 对于数据库中存在ID和模板与excel一样的设备,对设备的名称和TAG_NAME和描述,这三个字段进行更新 2.对于测点的处理,以设备ID和点名缩写为判断基准 对于转发信息表中存在,而数据库中不存在的测点,进行添加操作 对于转发信息表和数据库中都存在的测点,进行更新操作,更新字段规约参数1,点描述,变比系数,修正值,值描述文件(定值) * 遥控由于没有点名缩写,所以使用描述为判断基准 */ DECLARE count1 int DEFAULT 0; DECLARE count2 int DEFAULT 0; IF COALESCE(rtuTag,'') = '' THEN LEAVE body; END IF; CREATE TEMPORARY TABLE IF NOT EXISTS tmpImportPsc3000Tbl( TAG_NAME varchar(64), DEV_ID decimal(10,0), SHORT_NAME varchar(64), SEQ_NO decimal(10,0) ); DELETE FROM tmpImportPsc3000Tbl; CREATE TEMPORARY TABLE IF NOT EXISTS tmpImportPsc3000ForAdd( DEV_ID decimal(10,0), SHORT_NAME varchar(64), SEQ_NO decimal(10,0) ); DELETE FROM tmpImportPsc3000ForAdd; #删除数据库中多余的设备 DELETE FROM fes_dev_info WHERE RTU_TAG = rtuTag AND NOT EXISTS ( SELECT psc3000_dev.DEV_ID FROM psc3000_dev WHERE psc3000_dev.DEV_ID = fes_dev_info.DEV_ID AND psc3000_dev.DEV_MODEL = fes_dev_info.DEV_TP_NAME ); #更新两边都存在的设备 UPDATE fes_dev_info INNER JOIN psc3000_dev ON fes_dev_info.RTU_TAG = rtuTag AND fes_dev_info.DEV_ID = psc3000_dev.DEV_ID AND fes_dev_info.DEV_TP_NAME = psc3000_dev.DEV_MODEL SET fes_dev_info.TAG_NAME = concat(rtuTag,'.',psc3000_dev.TAG_NAME), fes_dev_info.DEV_NAME = psc3000_dev.TAG_NAME, fes_dev_info.DEV_DESC = psc3000_dev.DESCRIPTION; #筛选出要插入的设备 DELETE FROM tmpImportPsc3000Tbl; INSERT INTO tmpImportPsc3000Tbl (TAG_NAME,DEV_ID) SELECT psc3000_dev.DEV_MODEL,psc3000_dev.DEV_ID FROM psc3000_dev WHERE NOT EXISTS ( SELECT fes_dev_info.TAG_NAME FROM fes_dev_info WHERE fes_dev_info.RTU_TAG = rtuTag AND fes_dev_info.DEV_ID = psc3000_dev.DEV_ID AND fes_dev_info.DEV_TP_NAME = psc3000_dev.DEV_MODEL ); INSERT INTO fes_dev_info (TAG_NAME, DEV_NAME, LOCATION_ID, SUB_SYSTEM, DEV_ID, DEV_TYPE_ID, RTU_TAG,RTU_NO, DEV_DESC, DEV_TP_NAME ) SELECT concat(rtuTag,'.',psc3000_dev.TAG_NAME),psc3000_dev.TAG_NAME,fes_rtu_para.LOCATION_ID,fes_rtu_para.SUB_SYSTEM,psc3000_dev.DEV_ID,fes_dev_temp_def.DEV_TYPE_ID,rtuTag, fes_rtu_para.RTU_NO,psc3000_dev.DESCRIPTION,psc3000_dev.DEV_MODEL FROM tmpImportPsc3000Tbl,fes_dev_temp_def,psc3000_dev,fes_rtu_para WHERE tmpImportPsc3000Tbl.TAG_NAME = fes_dev_temp_def.TAG_NAME AND tmpImportPsc3000Tbl.DEV_ID = psc3000_dev.DEV_ID AND tmpImportPsc3000Tbl.TAG_NAME = psc3000_dev.DEV_MODEL AND fes_rtu_para.TAG_NAME = rtuTag; #测点处理 #更新双方都存在的测点,系数和基值是否更改还需确定,这里先不更改,要更改可以在update语句中添加即可 #acc DELETE FROM tmpImportPsc3000Tbl; INSERT INTO tmpImportPsc3000Tbl (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_accuml.TAG_NAME,psc3000_acc.DEV_ID, psc3000_acc.TAG_NAME FROM fes_accuml,psc3000_dev,psc3000_acc WHERE fes_accuml.TAG_NAME LIKE concat(rtuTag,'%') AND fes_accuml.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_acc.DEV_ID AND fes_accuml.FES_POINT_TP_NAME = concat(psc3000_dev.DEV_MODEL,'.',psc3000_acc.TAG_NAME); UPDATE ( tmpImportPsc3000Tbl INNER JOIN fes_accuml ON tmpImportPsc3000Tbl.TAG_NAME = fes_accuml.TAG_NAME ) INNER JOIN psc3000_acc ON tmpImportPsc3000Tbl.DEV_ID = psc3000_acc.DEV_ID AND tmpImportPsc3000Tbl.SHORT_NAME = psc3000_acc.TAG_NAME SET fes_accuml.DESCRIPTION = psc3000_acc.DESCRIPTION, fes_accuml.RES_PARA_INT1 = psc3000_acc.REMOTE_NO, fes_accuml.COEFF = psc3000_acc.RATIO; #添加数据库中不存在的测点,一般来说不需要添加,出现添加的情况是因为前置模板导入前和导入后不一致才会造成 SELECT count(*) INTO count1 FROM tmpImportPsc3000Tbl; SELECT count(*) INTO count2 FROM psc3000_acc; #更新的记录数少于转发信息表的数量,需要添加 IF count1 < count2 THEN BEGIN DELETE FROM tmpImportPsc3000ForAdd; INSERT INTO tmpImportPsc3000ForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_acc.DEV_ID,psc3000_acc.TAG_NAME FROM psc3000_acc LEFT JOIN tmpImportPsc3000Tbl ON psc3000_acc.DEV_ID = tmpImportPsc3000Tbl.DEV_ID AND psc3000_acc.TAG_NAME = tmpImportPsc3000Tbl.SHORT_NAME WHERE tmpImportPsc3000Tbl.DEV_ID IS NULL; INSERT INTO fes_accuml( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DOT_NO, RTU_TAG, DEV_TAG, SEQ_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, BASE, COEFF, RTU_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3,RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME, PATH61850,POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_ACC'))), fes_rtu_para.LOCATION_ID ,fes_rtu_para.SUB_SYSTEM ,getMaxRtuDotNo(rtuTag,getFesPointType('FES_ACC')), rtuTag, concat(rtuTag,'.',psc3000_dev.TAG_NAME), getMaxDefaultDevSeqNo(concat(rtuTag,'.',psc3000_dev.TAG_NAME),getFesPointType('FES_ACC')), '', '', '', '0', psc3000_acc.RATIO, fes_rtu_para.RTU_NO , psc3000_acc.REMOTE_NO, 0, 0, 0, psc3000_acc.DESCRIPTION , '', '', 0 FROM tmpImportPsc3000ForAdd,psc3000_acc,psc3000_dev, fes_rtu_para WHERE tmpImportPsc3000ForAdd.DEV_ID = psc3000_acc.DEV_ID AND tmpImportPsc3000ForAdd.SHORT_NAME = psc3000_acc.TAG_NAME AND psc3000_acc.DEV_ID = psc3000_dev.DEV_ID AND fes_rtu_para.TAG_NAME = rtuTag ; END; END IF; #ana DELETE FROM tmpImportPsc3000Tbl; INSERT INTO tmpImportPsc3000Tbl (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_analog.TAG_NAME,psc3000_ana.DEV_ID, psc3000_ana.TAG_NAME FROM fes_analog,psc3000_dev,psc3000_ana WHERE fes_analog.TAG_NAME LIKE concat(rtuTag,'%') AND fes_analog.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_ana.DEV_ID AND fes_analog.FES_POINT_TP_NAME = concat(psc3000_dev.DEV_MODEL,'.',psc3000_ana.TAG_NAME); UPDATE ( tmpImportPsc3000Tbl INNER JOIN fes_analog ON tmpImportPsc3000Tbl.TAG_NAME = fes_analog.TAG_NAME ) INNER JOIN psc3000_ana ON tmpImportPsc3000Tbl.DEV_ID = psc3000_ana.DEV_ID AND tmpImportPsc3000Tbl.SHORT_NAME = psc3000_ana.TAG_NAME SET fes_analog.DESCRIPTION = psc3000_ana.DESCRIPTION, fes_analog.RES_PARA_INT1 = psc3000_ana.REMOTE_NO, fes_analog.COEFF = psc3000_ana.RATIO; #添加数据库中不存在的测点,一般来说不需要添加,出现添加的情况是因为前置模板导入前和导入后不一致才会造成 SELECT count(*) INTO count1 FROM tmpImportPsc3000Tbl; SELECT count(*) INTO count2 FROM psc3000_ana; #更新的记录数少于转发信息表的数量,需要添加 IF count1 < count2 THEN BEGIN DELETE FROM tmpImportPsc3000ForAdd; INSERT INTO tmpImportPsc3000ForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_ana.DEV_ID,psc3000_ana.TAG_NAME FROM psc3000_ana LEFT JOIN tmpImportPsc3000Tbl ON psc3000_ana.DEV_ID = tmpImportPsc3000Tbl.DEV_ID AND psc3000_ana.TAG_NAME = tmpImportPsc3000Tbl.SHORT_NAME WHERE tmpImportPsc3000Tbl.DEV_ID IS NULL; INSERT INTO fes_analog( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DEV_TAG, SEQ_NO, RTU_TAG, RTU_NO, DOT_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, IS_FILTER, PERCENT, DEADBAND_TYPE, DEADBAND, ZEROBAND, BASE, COEFF, MAX_RANGE, MIN_RANGE, RES_PARA_INT1, RES_PARA_INT2,RES_PARA_INT3, RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME , PATH61850,POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_ANA'))), fes_rtu_para.LOCATION_ID ,fes_rtu_para.SUB_SYSTEM , concat(rtuTag,'.',psc3000_dev.TAG_NAME),getMaxDefaultDevSeqNo(concat(rtuTag,'.',psc3000_dev.TAG_NAME),getFesPointType('FES_ANA') ), rtuTag, fes_rtu_para.RTU_NO,getMaxRtuDotNo(rtuTag,getFesPointType('FES_ANA')),'', '', '', '0', '0', '0', '0', '0', '0', psc3000_ana.RATIO, '65536', '0', psc3000_ana.REMOTE_NO, 0, 0, 0, psc3000_ana.DESCRIPTION, '', '', 0 FROM tmpImportPsc3000ForAdd,psc3000_ana,psc3000_dev, fes_rtu_para WHERE tmpImportPsc3000ForAdd.DEV_ID = psc3000_ana.DEV_ID AND tmpImportPsc3000ForAdd.SHORT_NAME = psc3000_ana.TAG_NAME AND psc3000_ana.DEV_ID = psc3000_dev.DEV_ID AND fes_rtu_para.TAG_NAME = rtuTag ; END; END IF; #dig DELETE FROM tmpImportPsc3000Tbl; INSERT INTO tmpImportPsc3000Tbl (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_digital.TAG_NAME,psc3000_dig.DEV_ID, psc3000_dig.TAG_NAME FROM fes_digital,psc3000_dev,psc3000_dig WHERE fes_digital.TAG_NAME LIKE concat(rtuTag,'%') AND fes_digital.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_dig.DEV_ID AND fes_digital.FES_POINT_TP_NAME = concat(psc3000_dev.DEV_MODEL,'.',psc3000_dig.TAG_NAME); UPDATE ( tmpImportPsc3000Tbl INNER JOIN fes_digital ON tmpImportPsc3000Tbl.TAG_NAME = fes_digital.TAG_NAME ) INNER JOIN psc3000_dig ON tmpImportPsc3000Tbl.DEV_ID = psc3000_dig.DEV_ID AND tmpImportPsc3000Tbl.SHORT_NAME = psc3000_dig.TAG_NAME SET fes_digital.DESCRIPTION = psc3000_dig.DESCRIPTION, fes_digital.RES_PARA_INT1 = psc3000_dig.REMOTE_NO; #添加数据库中不存在的测点,一般来说不需要添加,出现添加的情况是因为前置模板导入前和导入后不一致才会造成 SELECT count(*) INTO count1 FROM tmpImportPsc3000Tbl; SELECT count(*) INTO count2 FROM psc3000_dig; #更新的记录数少于转发信息表的数量,需要添加 IF count1 < count2 THEN BEGIN DELETE FROM tmpImportPsc3000ForAdd; INSERT INTO tmpImportPsc3000ForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_dig.DEV_ID,psc3000_dig.TAG_NAME FROM psc3000_dig LEFT JOIN tmpImportPsc3000Tbl ON psc3000_dig.DEV_ID = tmpImportPsc3000Tbl.DEV_ID AND psc3000_dig.TAG_NAME = tmpImportPsc3000Tbl.SHORT_NAME WHERE tmpImportPsc3000Tbl.DEV_ID IS NULL; INSERT INTO fes_digital( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DEV_TAG, SEQ_NO, RTU_TAG, DOT_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, FILTER_ERR, FILTER_DISTURB, DISTURB_TIME, REVERS, RTU_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME, PATH61850,POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG'))), fes_rtu_para.LOCATION_ID ,fes_rtu_para.SUB_SYSTEM , concat(rtuTag,'.',psc3000_dev.TAG_NAME),getMaxDefaultDevSeqNo(concat(rtuTag,'.',psc3000_dev.TAG_NAME),getFesPointType('FES_DIG') ), rtuTag, getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG')),'', '', '', '1', '1', '0', '0', fes_rtu_para.RTU_NO,psc3000_dig.REMOTE_NO, 0, 0, 0, psc3000_dig.DESCRIPTION,'', '', 0 FROM tmpImportPsc3000ForAdd,psc3000_dig,psc3000_dev, fes_rtu_para WHERE tmpImportPsc3000ForAdd.DEV_ID = psc3000_dig.DEV_ID AND tmpImportPsc3000ForAdd.SHORT_NAME = psc3000_dig.TAG_NAME AND psc3000_dig.DEV_ID = psc3000_dev.DEV_ID AND fes_rtu_para.TAG_NAME = rtuTag ; END; END IF; #dig_ctrl,使用描述为判断基准 DELETE FROM tmpImportPsc3000Tbl; INSERT INTO tmpImportPsc3000Tbl (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_digital_ctrl.TAG_NAME,psc3000_dig_ctrl.DEV_ID, psc3000_dig_ctrl.DESCRIPTION FROM fes_digital_ctrl,psc3000_dev,psc3000_dig_ctrl WHERE fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'%') AND fes_digital_ctrl.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_dig_ctrl.DEV_ID AND fes_digital_ctrl.DESCRIPTION = psc3000_dig_ctrl.DESCRIPTION; UPDATE ( tmpImportPsc3000Tbl INNER JOIN fes_digital_ctrl ON tmpImportPsc3000Tbl.TAG_NAME = fes_digital_ctrl.TAG_NAME ) INNER JOIN psc3000_dig_ctrl ON tmpImportPsc3000Tbl.DEV_ID = psc3000_dig_ctrl.DEV_ID AND tmpImportPsc3000Tbl.SHORT_NAME = psc3000_dig_ctrl.DESCRIPTION SET fes_digital_ctrl.DESCRIPTION = psc3000_dig_ctrl.DESCRIPTION, fes_digital_ctrl.RES_PARA_INT1 = psc3000_dig_ctrl.REMOTE_NO; #添加数据库中不存在的测点,一般来说不需要添加,出现添加的情况是因为前置模板导入前和导入后不一致才会造成 SELECT count(*) INTO count1 FROM tmpImportPsc3000Tbl; SELECT count(*) INTO count2 FROM psc3000_dig_ctrl; #更新的记录数少于转发信息表的数量,需要添加 IF count1 < count2 THEN BEGIN DELETE FROM tmpImportPsc3000ForAdd; INSERT INTO tmpImportPsc3000ForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_dig_ctrl.DEV_ID,psc3000_dig_ctrl.DESCRIPTION FROM psc3000_dig_ctrl LEFT JOIN tmpImportPsc3000Tbl ON psc3000_dig_ctrl.DEV_ID = tmpImportPsc3000Tbl.DEV_ID AND psc3000_dig_ctrl.DESCRIPTION = tmpImportPsc3000Tbl.SHORT_NAME WHERE tmpImportPsc3000Tbl.DEV_ID IS NULL; INSERT INTO fes_digital_ctrl( TAG_NAME, LOCATION_ID, SUB_SYSTEM, RTU_TAG, RTU_NO, DOT_NO, DEV_TAG, DESCRIPTION, REVERS, POINT_TP_NAME, SEQ_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, PATH61850,POSITION61850, YK_SELECT61850, YK_EXE61850, YK_CANCLE61850, YK_DOUBLE_SELECT61850, YK_DOUBLE_EXE61850, YK_DOUBLE_CANCLE61850, PULSE_TIME)SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG_CTRL'))), fes_rtu_para.LOCATION_ID ,fes_rtu_para.SUB_SYSTEM , rtuTag, fes_rtu_para.RTU_NO,getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG_CTRL')), concat(rtuTag,'.',psc3000_dev.TAG_NAME),psc3000_dig_ctrl.DESCRIPTION,'0' , '', getMaxDefaultDevSeqNo(concat(rtuTag,'.',psc3000_dev.TAG_NAME),getFesPointType('FES_DIG_CTRL') ), psc3000_dig_ctrl.REMOTE_NO, 0, 0, 0, '', 0, '', '', '', '', '', '', 0 FROM tmpImportPsc3000ForAdd,psc3000_dig_ctrl,psc3000_dev, fes_rtu_para WHERE tmpImportPsc3000ForAdd.DEV_ID = psc3000_dig_ctrl.DEV_ID AND tmpImportPsc3000ForAdd.SHORT_NAME = psc3000_dig_ctrl.DESCRIPTION AND psc3000_dig_ctrl.DEV_ID = psc3000_dev.DEV_ID AND fes_rtu_para.TAG_NAME = rtuTag ; END; END IF; #DZ定值 DELETE FROM tmpImportPsc3000Tbl; INSERT INTO tmpImportPsc3000Tbl (TAG_NAME,DEV_ID,SEQ_NO) SELECT fes_const.TAG_NAME,psc3000_const.DEV_ID, psc3000_const.SEQ_NO FROM fes_const,psc3000_dev,psc3000_const WHERE fes_const.TAG_NAME LIKE concat(rtuTag,'%') AND fes_const.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_const.DEV_ID AND fes_const.SEQ_NO = psc3000_const.SEQ_NO; UPDATE ( tmpImportPsc3000Tbl INNER JOIN fes_const ON tmpImportPsc3000Tbl.TAG_NAME = fes_const.TAG_NAME ) INNER JOIN psc3000_const ON tmpImportPsc3000Tbl.DEV_ID = psc3000_const.DEV_ID AND tmpImportPsc3000Tbl.SEQ_NO = psc3000_const.SEQ_NO SET fes_const.DESCRIPTION = psc3000_const.DESCRIPTION, fes_const.VALUE_RATIO = psc3000_const.RATIO, fes_const.VALUE_ADDED = psc3000_const.REVISE, fes_const.VALUE_TEXT = psc3000_const.VALUE_TEXT ; #添加数据库中不存在的测点,一般来说不需要添加,出现添加的情况是因为前置模板导入前和导入后不一致才会造成 SELECT count(*) INTO count1 FROM tmpImportPsc3000Tbl; SELECT count(*) INTO count2 FROM psc3000_const; #更新的记录数少于转发信息表的数量,需要添加 IF count1 < count2 THEN BEGIN DELETE FROM tmpImportPsc3000ForAdd; INSERT INTO tmpImportPsc3000ForAdd (DEV_ID, SEQ_NO) SELECT psc3000_const.DEV_ID,psc3000_const.SEQ_NO FROM psc3000_const LEFT JOIN tmpImportPsc3000Tbl ON psc3000_const.DEV_ID = tmpImportPsc3000Tbl.DEV_ID AND psc3000_const.SEQ_NO = tmpImportPsc3000Tbl.SEQ_NO WHERE tmpImportPsc3000Tbl.DEV_ID IS NULL; INSERT INTO fes_const( TAG_NAME, DESCRIPTION, GROUP_NO, RTU_TAG, RTU_NO, DOT_NO, SEQ_NO, SUB_SYSTEM, LOCATION_ID, DEV_TAG, VALUE, VALUE_TYPE, UNIT_ID, VALUE_TEXT, VALUE_RATIO, VALUE_ADDED, VALUE_MAX, VALUE_MIN, VALUE_DEFAULT, VALUE_VERIFY, EX_INFO, FES_POINT_TP_NAME, PATH61850, POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_CONST'))), psc3000_const.DESCRIPTION ,0 , rtuTag, fes_rtu_para.RTU_NO, getMaxRtuDotNo(rtuTag,getFesPointType('FES_CONST')), getMaxDefaultDevSeqNo(concat(rtuTag,'.',psc3000_dev.TAG_NAME),getFesPointType('FES_CONST') ),fes_rtu_para.SUB_SYSTEM,fes_rtu_para.LOCATION_ID, concat(rtuTag,'.',psc3000_dev.TAG_NAME), 0, 0, 0, psc3000_const.VALUE_TEXT,psc3000_const.RATIO,psc3000_const.REVISE, 0, 0, 0, 0, '', '', '', 0 FROM tmpImportPsc3000ForAdd,psc3000_const,psc3000_dev, fes_rtu_para WHERE tmpImportPsc3000ForAdd.DEV_ID = psc3000_const.DEV_ID AND tmpImportPsc3000ForAdd.SEQ_NO = psc3000_const.SEQ_NO AND psc3000_const.DEV_ID = psc3000_dev.DEV_ID AND fes_rtu_para.TAG_NAME = rtuTag ; END; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `importPsc3000ByPlugin`; DELIMITER $$ CREATE PROCEDURE `importPsc3000ByPlugin`(rtuTag varchar(64),regionId decimal(10,0)) body:BEGIN /* * 导入PSC3000数据通过构建套件的形式 * rtuTag 要导入的RTU * regionId 责任区ID * PSC3000_plugin表中存着要导入的套件 * PSC3000_DEV 表中存着导入的前置设备 * PSC3000_acc,ana,dig,mix,dig_ctrl,const存着对应的测点数据 */ DECLARE locationTag varchar(64) DEFAULT ''; DECLARE locationId decimal(10,0) DEFAULT 0; DECLARE subsystemId decimal(10,0) DEFAULT 0; DECLARE rtuNo decimal(10,0) DEFAULT 0; DECLARE devGrpTag varchar(64) DEFAULT ''; DECLARE pluginName varchar(64) DEFAULT ''; DECLARE tempName varchar(64) DEFAULT ''; DECLARE fesTempName varchar(64) DEFAULT ''; DECLARE fesDevTag varchar(64) DEFAULT ''; DECLARE hasDone int DEFAULT 0; DECLARE myDevTag varchar(64) DEFAULT ''; #在此游标中临时表的第一列是套件名,第二列是设备组名,游标获取4列,分别是设备组,套件名,后台模板名,前置模板名 DECLARE cur_1 CURSOR FOR SELECT DEV_GRP,temp_plugin_fes_dev_map.PLUGIN_NAME,TEMP_NAME,FES_TEMP_NAME FROM tmpImportPsc3000PluginTbl,temp_plugin_fes_dev_map WHERE tmpImportPsc3000PluginTbl.PLUGIN_NAME = temp_plugin_fes_dev_map.PLUGIN_NAME; DECLARE cur_2 CURSOR FOR SELECT PLUGIN_NAME FROM tmpImportPsc3000PluginTbl WHERE tmpImportPsc3000PluginTbl.DEV_GRP = ''; DECLARE CONTINUE HANDLER FOR NOT FOUND SET hasDone = 1; SELECT fes_rtu_para.LOCATION_ID,SUB_SYSTEM,RTU_NO,sys_model_location_info.TAG_NAME INTO locationId,subsystemId,rtuNo,locationTag FROM fes_rtu_para,sys_model_location_info WHERE fes_rtu_para.TAG_NAME = rtuTag AND fes_rtu_para.LOCATION_ID = sys_model_location_info.LOCATION_ID; #清空前置与后台的数据 #DELETE FROM fes_dev_info WHERE RTU_TAG = rtuTag; #DELETE dev_group FROM dev_group,psc3000_plugin WHERE dev_group.TAG_NAME = concat(locationTag,'.',psc3000_plugin.DEV_GROUP_TAG); #创建临时表, CREATE TEMPORARY TABLE IF NOT EXISTS tmpImportPsc3000PluginTbl( PLUGIN_NAME varchar(64) NOT NULL, DEV_GRP varchar(64) NOT NULL ); DELETE FROM tmpImportPsc3000PluginTbl; #用于第十一步的临时表 CREATE TEMPORARY TABLE IF NOT EXISTS tmpPsc3000PluginFesTempTbl( TAG_NAME varchar(64) NOT NULL, FES_TEMP varchar(64) NOT NULL, DEV_ID decimal(10,0) ); DELETE FROM tmpPsc3000PluginFesTempTbl; #第一步,创建设备组 INSERT INTO DEV_GROUP (DESCRIPTION, GROUP_TAG,IS_SUMMARY,LOCATION_ID,PGROUP_TAG_NAME,REGION_ID,SUB_SYSTEM,SUMMARY_STATUS,SUMMARY_VALUE,TAG_NAME,RTU_NO) SELECT psc3000_plugin.DEV_GROUP_DESC,'', '0', locationId, '', regionId,subsystemId,'0', '0', concat(locationTag,'.',psc3000_plugin.DEV_GROUP_TAG),rtuNo FROM psc3000_plugin GROUP BY psc3000_plugin.DEV_GROUP_TAG; #第二步 实例化后台和前置的设备,对于后台设备 一个设备组对应一个套件 DELETE FROM tmpImportPsc3000PluginTbl; #此时临时表中第一列是套件名,第二列是设备组名 INSERT INTO tmpImportPsc3000PluginTbl (PLUGIN_NAME , DEV_GRP) SELECT PLUGIN_NAME,DEV_GROUP_TAG FROM psc3000_plugin GROUP BY PLUGIN_NAME,DEV_GROUP_TAG; INSERT INTO DEV_INFO (TAG_NAME, DESCRIPTION, DEV_NAME, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME) SELECT concat(locationTag,'.',tblA.DEV_GRP,'_',TEMP_NAME),DESCRIPTION, '', locationId, subsystemId,concat(locationTag,'.',tblA.DEV_GRP), '0', DEV_TYPE_ID,'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', regionId, '', '0', '0', '0', TEMP_NAME FROM tmpImportPsc3000PluginTbl AS tblA,temp_plugin_dev_map,dev_temp_def WHERE tblA.PLUGIN_NAME = temp_plugin_dev_map.PLUGIN_NAME AND temp_plugin_dev_map.TEMP_NAME = dev_temp_def.TAG_NAME; #实例化前置设备,以psc3000_dev中指定的设备为基准,模板以套件中的为准 INSERT INTO tmpPsc3000PluginFesTempTbl(TAG_NAME,FES_TEMP,DEV_ID) SELECT TAG_NAME,DEV_MODEL,DEV_ID FROM psc3000_dev; UPDATE psc3000_dev LEFT JOIN psc3000_plugin ON DEV_ID = FES_DEV_INST_ID SET psc3000_dev.DEV_MODEL = IF(COALESCE(FES_TEMP_NAME,DEV_MODEL) != DEV_MODEL,COALESCE(FES_TEMP_NAME,DEV_MODEL), DEV_MODEL); DELETE psc3000_dev FROM psc3000_dev LEFT JOIN psc3000_plugin ON psc3000_dev.DEV_ID = psc3000_plugin.FES_DEV_INST_ID WHERE FES_DEV_INST_ID IS NULL; DELETE tmpPsc3000PluginFesTempTbl FROM tmpPsc3000PluginFesTempTbl LEFT JOIN psc3000_plugin ON tmpPsc3000PluginFesTempTbl.DEV_ID = psc3000_plugin.FES_DEV_INST_ID WHERE FES_DEV_INST_ID IS NULL; INSERT INTO FES_DEV_INFO (DEV_PORT,DEV_DESC, DEV_ID, DEV_NAME, DEV_TP_NAME, DEV_TYPE_ID,LOCATION_ID,RTU_NO,RTU_TAG,SUB_SYSTEM,TAG_NAME) SELECT psc3000_dev.DEV_PORT,psc3000_dev.DESCRIPTION, psc3000_dev.DEV_ID,psc3000_dev.TAG_NAME ,fes_dev_temp_def.TAG_NAME,DEV_TYPE_ID,locationId, rtuNo, rtuTag, subsystemId,concat(rtuTag,'.',psc3000_dev.TAG_NAME) FROM psc3000_dev,fes_dev_temp_def WHERE psc3000_dev.DEV_MODEL = fes_dev_temp_def.TAG_NAME; #第三步 关联 DELETE FROM tmpImportPsc3000PluginTbl; #此时临时表中第一列是套件名,第二列是设备组名 INSERT INTO tmpImportPsc3000PluginTbl (PLUGIN_NAME , DEV_GRP) SELECT PLUGIN_NAME,DEV_GROUP_TAG FROM psc3000_plugin GROUP BY PLUGIN_NAME,DEV_GROUP_TAG; #创建临时表,存储用于第五步骤的信息 CREATE TEMPORARY TABLE IF NOT EXISTS tmpImportPsc3000Dev( PLUGIN_NAME varchar(64) NOT NULL, DEV_TAG varchar(64) NOT NULL, FES_DEV_TAG varchar(64) NOT NULL ); DELETE FROM tmpImportPsc3000Dev; #循环调用存储过程进行关联 OPEN cur_1; FETCH cur_1 INTO devGrpTag,pluginName,tempName,fesTempName; WHILE hasDone != 1 DO SET fesDevTag = (SELECT psc3000_dev.TAG_NAME FROM psc3000_plugin,psc3000_dev WHERE DEV_GROUP_TAG = devGrpTag AND PLUGIN_NAME = pluginName AND FES_TEMP_NAME = fesTempName AND FES_DEV_INST_ID = DEV_ID); IF fesDevTag IS NOT NULL THEN BEGIN CALL relationByPlugin(pluginName,concat(locationTag,'.',devGrpTag,'_',tempName), concat(rtuTag,'.',fesDevTag)); INSERT INTO tmpImportPsc3000Dev(PLUGIN_NAME,DEV_TAG,FES_DEV_TAG) VALUES (pluginName,concat(locationTag,'.',devGrpTag,'_',tempName), concat(rtuTag,'.',fesDevTag)); END; END IF; FETCH cur_1 INTO devGrpTag,pluginName,tempName,fesTempName; END WHILE; CLOSE cur_1; #更新设备组编号 UPDATE dev_group,psc3000_plugin SET dev_group.DEV_GROUP_NO = psc3000_plugin.FES_DEV_INST_ID WHERE dev_group.TAG_NAME = concat(locationTag,'.',psc3000_plugin.DEV_GROUP_TAG); #第四步 刷新前置设备的测点 规约参数和描述等信息,对于在文件中存在,而模板中不存在的测点进行添加 CREATE TEMPORARY TABLE IF NOT EXISTS tblImportPsc3000Point( TAG_NAME varchar(64), DEV_ID decimal(10,0), SHORT_NAME varchar(64), SEQ_NO decimal(10,0) ); CREATE TEMPORARY TABLE IF NOT EXISTS tblImportPsc3000PointForAdd( DEV_ID decimal(10,0), SHORT_NAME varchar(64), SEQ_NO decimal(10,0) ); #acc DELETE FROM tblImportPsc3000Point; INSERT INTO tblImportPsc3000Point (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_accuml.TAG_NAME,psc3000_acc.DEV_ID, psc3000_acc.TAG_NAME FROM fes_accuml,psc3000_dev,psc3000_acc WHERE fes_accuml.TAG_NAME LIKE concat(rtuTag,'%') AND fes_accuml.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_acc.DEV_ID AND getAfterLastDot(fes_accuml.FES_POINT_TP_NAME) = psc3000_acc.TAG_NAME; #更新存在的点 UPDATE ( tblImportPsc3000Point INNER JOIN fes_accuml ON tblImportPsc3000Point.TAG_NAME = fes_accuml.TAG_NAME ) INNER JOIN psc3000_acc ON tblImportPsc3000Point.DEV_ID = psc3000_acc.DEV_ID AND tblImportPsc3000Point.SHORT_NAME = psc3000_acc.TAG_NAME SET fes_accuml.DESCRIPTION = psc3000_acc.DESCRIPTION, fes_accuml.RES_PARA_INT1 = psc3000_acc.REMOTE_NO, fes_accuml.SEQ_NO = psc3000_acc.REMOTE_NO, fes_accuml.COEFF = psc3000_acc.RATIO, fes_accuml.FES_POINT_TP_NAME = concat(getBeforeFirstDot(fes_accuml.FES_POINT_TP_NAME),'.',psc3000_acc.TAG_NAME); #添加只有CSV文件有的点 DELETE FROM tblImportPsc3000PointForAdd; INSERT INTO tblImportPsc3000PointForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_acc.DEV_ID,psc3000_acc.TAG_NAME FROM psc3000_acc LEFT JOIN tblImportPsc3000Point ON psc3000_acc.DEV_ID = tblImportPsc3000Point.DEV_ID AND psc3000_acc.TAG_NAME = tblImportPsc3000Point.SHORT_NAME WHERE tblImportPsc3000Point.DEV_ID IS NULL; INSERT INTO fes_accuml( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DOT_NO, RTU_TAG, DEV_TAG, SEQ_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, BASE, COEFF, RTU_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3,RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME, PATH61850,POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_ACC'))), locationId , subsystemId ,getMaxRtuDotNo(rtuTag,getFesPointType('FES_ACC')), rtuTag, concat(rtuTag,'.',psc3000_dev.TAG_NAME), psc3000_acc.REMOTE_NO, '', '', '', '0', psc3000_acc.RATIO, rtuNo , psc3000_acc.REMOTE_NO, 0, 0, 0, psc3000_acc.DESCRIPTION , psc3000_acc.TAG_NAME, '', 0 FROM tblImportPsc3000PointForAdd,psc3000_acc,psc3000_dev WHERE tblImportPsc3000PointForAdd.DEV_ID = psc3000_acc.DEV_ID AND tblImportPsc3000PointForAdd.SHORT_NAME = psc3000_acc.TAG_NAME AND psc3000_acc.DEV_ID = psc3000_dev.DEV_ID ; #ana DELETE FROM tblImportPsc3000Point; INSERT INTO tblImportPsc3000Point (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_analog.TAG_NAME,psc3000_ana.DEV_ID, psc3000_ana.TAG_NAME FROM fes_analog,psc3000_dev,psc3000_ana WHERE fes_analog.TAG_NAME LIKE concat(rtuTag,'%') AND fes_analog.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_ana.DEV_ID AND getAfterLastDot(FES_POINT_TP_NAME) = psc3000_ana.TAG_NAME; UPDATE ( tblImportPsc3000Point INNER JOIN fes_analog ON tblImportPsc3000Point.TAG_NAME = fes_analog.TAG_NAME ) INNER JOIN psc3000_ana ON tblImportPsc3000Point.DEV_ID = psc3000_ana.DEV_ID AND tblImportPsc3000Point.SHORT_NAME = psc3000_ana.TAG_NAME SET fes_analog.DESCRIPTION = psc3000_ana.DESCRIPTION, fes_analog.RES_PARA_INT1 = psc3000_ana.REMOTE_NO, fes_analog.SEQ_NO = psc3000_ana.REMOTE_NO, fes_analog.COEFF = psc3000_ana.RATIO, fes_analog.FES_POINT_TP_NAME = concat(getBeforeFirstDot(fes_analog.FES_POINT_TP_NAME),'.',psc3000_ana.TAG_NAME); #添加只有CSV文件有的点 DELETE FROM tblImportPsc3000PointForAdd; INSERT INTO tblImportPsc3000PointForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_ana.DEV_ID,psc3000_ana.TAG_NAME FROM psc3000_ana LEFT JOIN tblImportPsc3000Point ON psc3000_ana.DEV_ID = tblImportPsc3000Point.DEV_ID AND psc3000_ana.TAG_NAME = tblImportPsc3000Point.SHORT_NAME WHERE tblImportPsc3000Point.DEV_ID IS NULL; INSERT INTO fes_analog( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DEV_TAG, SEQ_NO, RTU_TAG, RTU_NO, DOT_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, IS_FILTER, PERCENT, DEADBAND_TYPE, DEADBAND, ZEROBAND, BASE, COEFF, MAX_RANGE, MIN_RANGE, RES_PARA_INT1, RES_PARA_INT2,RES_PARA_INT3, RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME , PATH61850,POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_ANA'))), locationId , subsystemId , concat(rtuTag,'.',psc3000_dev.TAG_NAME),psc3000_ana.REMOTE_NO, rtuTag, rtuNo, getMaxRtuDotNo(rtuTag,getFesPointType('FES_ANA')),'', '', '', '0', '0', '0', '0', '0', '0', psc3000_ana.RATIO, '65536', '0', psc3000_ana.REMOTE_NO, 0, 0, 0, psc3000_ana.DESCRIPTION, psc3000_ana.TAG_NAME, '', 0 FROM tblImportPsc3000PointForAdd,psc3000_ana,psc3000_dev WHERE tblImportPsc3000PointForAdd.DEV_ID = psc3000_ana.DEV_ID AND tblImportPsc3000PointForAdd.SHORT_NAME = psc3000_ana.TAG_NAME AND psc3000_ana.DEV_ID = psc3000_dev.DEV_ID ; #dig DELETE FROM tblImportPsc3000Point; INSERT INTO tblImportPsc3000Point (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_digital.TAG_NAME,psc3000_dig.DEV_ID, psc3000_dig.TAG_NAME FROM fes_digital,psc3000_dev,psc3000_dig WHERE fes_digital.TAG_NAME LIKE concat(rtuTag,'%') AND fes_digital.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_dig.DEV_ID AND getAfterLastDot(FES_POINT_TP_NAME) = psc3000_dig.TAG_NAME; UPDATE ( tblImportPsc3000Point INNER JOIN fes_digital ON tblImportPsc3000Point.TAG_NAME = fes_digital.TAG_NAME ) INNER JOIN psc3000_dig ON tblImportPsc3000Point.DEV_ID = psc3000_dig.DEV_ID AND tblImportPsc3000Point.SHORT_NAME = psc3000_dig.TAG_NAME SET fes_digital.DESCRIPTION = psc3000_dig.DESCRIPTION, fes_digital.RES_PARA_INT1 = psc3000_dig.REMOTE_NO, fes_digital.SEQ_NO = psc3000_dig.REMOTE_NO, fes_digital.FES_POINT_TP_NAME = concat(getBeforeFirstDot(fes_digital.FES_POINT_TP_NAME),'.',psc3000_dig.TAG_NAME); #添加只有CSV文件有的点 DELETE FROM tblImportPsc3000PointForAdd; INSERT INTO tblImportPsc3000PointForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_dig.DEV_ID,psc3000_dig.TAG_NAME FROM psc3000_dig LEFT JOIN tblImportPsc3000Point ON psc3000_dig.DEV_ID = tblImportPsc3000Point.DEV_ID AND psc3000_dig.TAG_NAME = tblImportPsc3000Point.SHORT_NAME WHERE tblImportPsc3000Point.DEV_ID IS NULL; INSERT INTO fes_digital( TAG_NAME, LOCATION_ID, SUB_SYSTEM, DEV_TAG, SEQ_NO, RTU_TAG, DOT_NO, APP_TABLE_NAME, APP_TAG_NAME, APP_COLUMN_NAME, FILTER_ERR, FILTER_DISTURB, DISTURB_TIME, REVERS, RTU_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, DESCRIPTION, FES_POINT_TP_NAME, PATH61850,POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG'))), locationId , subsystemId , concat(rtuTag,'.',psc3000_dev.TAG_NAME),psc3000_dig.REMOTE_NO, rtuTag, getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG')),'', '', '', '1', '1', '0', '0', rtuNo, psc3000_dig.REMOTE_NO, 0, 0, 0, psc3000_dig.DESCRIPTION,psc3000_dig.TAG_NAME, '', 0 FROM tblImportPsc3000PointForAdd,psc3000_dig,psc3000_dev WHERE tblImportPsc3000PointForAdd.DEV_ID = psc3000_dig.DEV_ID AND tblImportPsc3000PointForAdd.SHORT_NAME = psc3000_dig.TAG_NAME AND psc3000_dig.DEV_ID = psc3000_dev.DEV_ID ; #dig_ctrl DELETE FROM tblImportPsc3000Point; INSERT INTO tblImportPsc3000Point (TAG_NAME,DEV_ID,SHORT_NAME) SELECT fes_digital_ctrl.TAG_NAME,psc3000_dig_ctrl.DEV_ID, psc3000_dig_ctrl.TAG_NAME FROM fes_digital_ctrl,psc3000_dev,psc3000_dig_ctrl WHERE fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'%') AND fes_digital_ctrl.DEV_TAG = concat(rtuTag,'.',psc3000_dev.TAG_NAME) AND psc3000_dev.DEV_ID = psc3000_dig_ctrl.DEV_ID AND getAfterLastDot(fes_digital_ctrl.POINT_TP_NAME) = psc3000_dig_ctrl.TAG_NAME; UPDATE ( tblImportPsc3000Point INNER JOIN fes_digital_ctrl ON tblImportPsc3000Point.TAG_NAME = fes_digital_ctrl.TAG_NAME ) INNER JOIN psc3000_dig_ctrl ON tblImportPsc3000Point.DEV_ID = psc3000_dig_ctrl.DEV_ID AND tblImportPsc3000Point.SHORT_NAME = psc3000_dig_ctrl.TAG_NAME SET fes_digital_ctrl.DESCRIPTION = psc3000_dig_ctrl.DESCRIPTION, fes_digital_ctrl.RES_PARA_INT1 = psc3000_dig_ctrl.REMOTE_NO, fes_digital_ctrl.SEQ_NO = psc3000_dig_ctrl.REMOTE_NO, fes_digital_ctrl.POINT_TP_NAME = concat(getBeforeFirstDot(fes_digital_ctrl.POINT_TP_NAME),'.',psc3000_dig_ctrl.TAG_NAME); #添加只有CSV文件有的点 DELETE FROM tblImportPsc3000PointForAdd; INSERT INTO tblImportPsc3000PointForAdd (DEV_ID, SHORT_NAME) SELECT psc3000_dig_ctrl.DEV_ID,psc3000_dig_ctrl.TAG_NAME FROM psc3000_dig_ctrl LEFT JOIN tblImportPsc3000Point ON psc3000_dig_ctrl.DEV_ID = tblImportPsc3000Point.DEV_ID AND psc3000_dig_ctrl.TAG_NAME = tblImportPsc3000Point.SHORT_NAME WHERE tblImportPsc3000Point.DEV_ID IS NULL; INSERT INTO fes_digital_ctrl( TAG_NAME, LOCATION_ID, SUB_SYSTEM, RTU_TAG, RTU_NO, DOT_NO, DEV_TAG, DESCRIPTION, REVERS, POINT_TP_NAME, SEQ_NO, RES_PARA_INT1, RES_PARA_INT2, RES_PARA_INT3, RES_PARA_INT4, PATH61850,POSITION61850, YK_SELECT61850, YK_EXE61850, YK_CANCLE61850, YK_DOUBLE_SELECT61850, YK_DOUBLE_EXE61850, YK_DOUBLE_CANCLE61850, PULSE_TIME)SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG_CTRL'))), locationId , subsystemId , rtuTag, rtuNo,getMaxRtuDotNo(rtuTag,getFesPointType('FES_DIG_CTRL')), concat(rtuTag,'.',psc3000_dev.TAG_NAME),psc3000_dig_ctrl.DESCRIPTION,'0' , psc3000_dig_ctrl.TAG_NAME,psc3000_dig_ctrl.REMOTE_NO, psc3000_dig_ctrl.REMOTE_NO, 0, 0, 0, '', 0, '', '', '', '', '', '', 0 FROM tblImportPsc3000PointForAdd,psc3000_dig_ctrl,psc3000_dev WHERE tblImportPsc3000PointForAdd.DEV_ID = psc3000_dig_ctrl.DEV_ID AND tblImportPsc3000PointForAdd.SHORT_NAME = psc3000_dig_ctrl.TAG_NAME AND psc3000_dig_ctrl.DEV_ID = psc3000_dev.DEV_ID ; #DZ定值 DELETE FROM fes_const WHERE fes_const.RTU_TAG = rtuTag AND fes_const.RES_PARA_INT1 = '-1'; #添加只有CSV文件有的点 DELETE FROM tblImportPsc3000PointForAdd; INSERT INTO tblImportPsc3000PointForAdd (DEV_ID, SEQ_NO) SELECT psc3000_const.DEV_ID,psc3000_const.SEQ_NO FROM psc3000_const LEFT JOIN tblImportPsc3000Point ON psc3000_const.DEV_ID = tblImportPsc3000Point.DEV_ID AND psc3000_const.SEQ_NO = tblImportPsc3000Point.SEQ_NO WHERE tblImportPsc3000Point.DEV_ID IS NULL; INSERT INTO fes_const( TAG_NAME, DESCRIPTION, DZ_SEQ, GROUP_NO, RTU_TAG, RTU_NO, DOT_NO, SEQ_NO, SUB_SYSTEM, LOCATION_ID, DEV_TAG, VALUE, VALUE_TYPE, UNIT_ID, VALUE_TEXT, VALUE_RATIO, VALUE_ADDED, VALUE_MAX, VALUE_MIN, VALUE_DEFAULT, VALUE_VERIFY, EX_INFO, FES_POINT_TP_NAME, PATH61850, POSITION61850) SELECT concat(rtuTag, '.' , getMaxRtuDotNo(rtuTag,getFesPointType('FES_CONST'))), psc3000_const.DESCRIPTION ,psc3000_const.DZ_SEQ ,psc3000_const.GROUP_NO , rtuTag, rtuNo, getMaxRtuDotNo(rtuTag,getFesPointType('FES_CONST')), psc3000_const.SEQ_NO,subsystemId,locationId, concat(rtuTag,'.',psc3000_dev.TAG_NAME), 0, 0, 0, psc3000_const.VALUE_TEXT,psc3000_const.RATIO,psc3000_const.REVISE, 0, 0, 0, 0, '', '', '', 0 FROM tblImportPsc3000PointForAdd,psc3000_const,psc3000_dev WHERE tblImportPsc3000PointForAdd.DEV_ID = psc3000_const.DEV_ID AND tblImportPsc3000PointForAdd.SEQ_NO = psc3000_const.SEQ_NO AND psc3000_const.DEV_ID = psc3000_dev.DEV_ID ; #第五步,对于此时设备中未关联的前置测点,放到间隔信号中 tmpImportPsc3000Dev DELETE FROM tmpImportPsc3000Dev WHERE DEV_TAG NOT LIKE '%jgxh%'; CREATE TEMPORARY TABLE IF NOT EXISTS tblPsc3000PointToAdd( DEV_TAG varchar(64), TAG_NAME varchar(64), FES_TAG_NAME varchar(64), DOT_NO decimal(10,0), DESCRIPTION varchar(128) ); #acc, DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT tmpImportPsc3000Dev.DEV_TAG, concat(tmpImportPsc3000Dev.DEV_TAG,'.', IF(getAfterLastDot(fes_accuml.FES_POINT_TP_NAME) = '',findPsc3000Tag(fes_accuml.DESCRIPTION,fes_accuml.RES_PARA_INT1,fes_dev_info.DEV_ID,'psc_acc'),getAfterLastDot(fes_accuml.FES_POINT_TP_NAME) )) , fes_accuml.TAG_NAME,fes_accuml.DOT_NO,fes_accuml.DESCRIPTION FROM tmpImportPsc3000Dev,fes_dev_info,fes_accuml WHERE tmpImportPsc3000Dev.FES_DEV_TAG = fes_dev_info.TAG_NAME AND fes_accuml.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_accuml.DEV_TAG = fes_dev_info.TAG_NAME AND fes_accuml.APP_TABLE_NAME = '' AND fes_accuml.APP_TAG_NAME = '' AND fes_accuml.APP_COLUMN_NAME = ''; INSERT IGNORE INTO accuml( TAG_NAME, DESCRIPTION, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, RTU_TAG, GRAY, CONTRAST, QCOLOR, RAW_VALUE, VALUE, STATUS, LAST_UPDATE_TIME, LAST_CHANGE_TIME, UNIT_ID, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, REGION_ID, OPT_HANDOVER_GROUP, IS_LIMIT, POINT_TYPE, POINT_CLASS, POINT_PROPERTY,POINT_SORT, DEV_TYPE, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND,CAMERA_TAG, PRESET_ID) SELECT tblPsc3000PointToAdd.TAG_NAME, tblPsc3000PointToAdd.DESCRIPTION,dev_info.TAG_NAME,getMaxSeq(dev_info.TAG_NAME,'accuml')+1, locationId, subsystemId, '', dev_info.GRAY, dev_info.CONTRAST, dev_info.QCOLOR, '0', dev_info.VALUE, dev_info.STATUS, 0, 0, '1', '', '', '', regionId, dev_info.OPT_HANDOVER_GROUP, '0', '3', '0', '0', '201', dev_info.DEV_TYPE, '', '0', '0', '5', '0.01', '', '' FROM tblPsc3000PointToAdd,dev_info WHERE tblPsc3000PointToAdd.DEV_TAG = dev_info.TAG_NAME ; UPDATE accuml INNER JOIN tblPsc3000PointToAdd ON accuml.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET accuml.RTU_TAG = rtuTag; UPDATE accuml_map_to_fes INNER JOIN tblPsc3000PointToAdd ON accuml_map_to_fes.KEY_ID_TAG = concat('accuml.',tblPsc3000PointToAdd.TAG_NAME) SET accuml_map_to_fes.DOT_NO = tblPsc3000PointToAdd.DOT_NO; #ana DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT tmpImportPsc3000Dev.DEV_TAG, concat(tmpImportPsc3000Dev.DEV_TAG,'.', IF(getAfterLastDot(fes_analog.FES_POINT_TP_NAME) = '',findPsc3000Tag(fes_analog.DESCRIPTION,fes_analog.RES_PARA_INT1,fes_dev_info.DEV_ID,'psc_ana'),getAfterLastDot(fes_analog.FES_POINT_TP_NAME) )) , fes_analog.TAG_NAME,fes_analog.DOT_NO,fes_analog.DESCRIPTION FROM tmpImportPsc3000Dev,fes_dev_info,fes_analog WHERE tmpImportPsc3000Dev.FES_DEV_TAG = fes_dev_info.TAG_NAME AND fes_analog.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_analog.DEV_TAG = fes_dev_info.TAG_NAME AND fes_analog.APP_TABLE_NAME = '' AND fes_analog.APP_TAG_NAME = '' AND fes_analog.APP_COLUMN_NAME = '' ; INSERT IGNORE INTO analog( TAG_NAME, DESCRIPTION, RTU_TAG, DEV_TYPE, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, IS_CONTROL, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, LAST_UPDATE_TIME, LAST_CHANGE_TIME, UNIT_ID, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, REGION_ID, OPT_HANDOVER_GROUP, IS_LIMIT, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, SAMPLE_DEADBAND, CAMERA_TAG, PRESET_ID) SELECT tblPsc3000PointToAdd.TAG_NAME, tblPsc3000PointToAdd.DESCRIPTION,'', dev_info.DEV_TYPE,dev_info.TAG_NAME,getMaxSeq(dev_info.TAG_NAME,'analog')+1, locationId, subsystemId, '0', dev_info.GRAY, dev_info.CONTRAST, dev_info.QCOLOR,dev_info.VALUE, dev_info.STATUS, 0, 0, '1', '', '', '', regionId, dev_info.OPT_HANDOVER_GROUP, '0', '0', '0', '0', '1', '', '0', '0', '5', '0.01', '', '' FROM tblPsc3000PointToAdd,dev_info WHERE tblPsc3000PointToAdd.DEV_TAG = dev_info.TAG_NAME ; UPDATE analog INNER JOIN tblPsc3000PointToAdd ON analog.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET analog.RTU_TAG = rtuTag; UPDATE analog_map_to_fes INNER JOIN tblPsc3000PointToAdd ON analog_map_to_fes.KEY_ID_TAG = concat('analog.',tblPsc3000PointToAdd.TAG_NAME) SET analog_map_to_fes.DOT_NO = tblPsc3000PointToAdd.DOT_NO; #dig DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT tmpImportPsc3000Dev.DEV_TAG, concat(tmpImportPsc3000Dev.DEV_TAG,'.', IF(getAfterLastDot(fes_digital.FES_POINT_TP_NAME) = '',findPsc3000Tag(fes_digital.DESCRIPTION,fes_digital.RES_PARA_INT1,fes_dev_info.DEV_ID,'psc_dig'),getAfterLastDot(fes_digital.FES_POINT_TP_NAME) )) , fes_digital.TAG_NAME,fes_digital.DOT_NO,fes_digital.DESCRIPTION FROM tmpImportPsc3000Dev,fes_dev_info,fes_digital WHERE tmpImportPsc3000Dev.FES_DEV_TAG = fes_dev_info.TAG_NAME AND fes_digital.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_digital.DEV_TAG = fes_dev_info.TAG_NAME AND fes_digital.APP_TABLE_NAME = '' AND fes_digital.APP_TAG_NAME = '' AND fes_digital.APP_COLUMN_NAME = ''; INSERT IGNORE INTO digital( TAG_NAME, DESCRIPTION, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, RTU_TAG, IS_CONTROL, STATE_TEXT_NAME, VALUE_NUM, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, LAST_UPDATE_TIME, VALUE1, STATUS1, LAST_CHANGE_TIME1, VALUE2, STATUS2, LAST_CHANGE_TIME2, VALUE3, STATUS3, LAST_CHANGE_TIME3, VALUE4, STATUS4, LAST_CHANGE_TIME4, VALUE5, STATUS5, LAST_CHANGE_TIME5, ALARM_PRIORITY, PIC_NAME, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, ALARM_DELAY_TIME, INPUT_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TYPE, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, IS_ALARM_FREQ, ALARM_FREQ, ALARM_FREQ_DESC, IS_ALARM_TIME, ALARM_TIME, ALARM_TIME_DESC, ALARM_FREQ_RANGE, INFER_NAME, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, CAMERA_TAG, PRESET_ID ) SELECT tblPsc3000PointToAdd.TAG_NAME, tblPsc3000PointToAdd.DESCRIPTION,dev_info.TAG_NAME,getMaxSeq(dev_info.TAG_NAME,'digital')+1, locationId, subsystemId, '', '0', 'PSCADA不告警', '1', dev_info.GRAY, dev_info.CONTRAST, dev_info.QCOLOR,dev_info.VALUE, dev_info.STATUS, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '1', '', '', '', '', '5', '1', '0', '1', '0', '0', regionId, dev_info.OPT_HANDOVER_GROUP, '0', '0', '0', dev_info.DEV_TYPE, '', '1', '0', '5', '0', '10', '计次报警描述', '0', '5', '计时报警描述', '30', '', '1', '0', '0', '400', '', '' FROM tblPsc3000PointToAdd,dev_info WHERE tblPsc3000PointToAdd.DEV_TAG = dev_info.TAG_NAME ; UPDATE digital INNER JOIN tblPsc3000PointToAdd ON digital.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital.RTU_TAG = rtuTag; UPDATE digital_map_to_fes INNER JOIN tblPsc3000PointToAdd ON digital_map_to_fes.KEY_ID_TAG = concat('digital.',tblPsc3000PointToAdd.TAG_NAME) SET digital_map_to_fes.DOT_NO1 = tblPsc3000PointToAdd.DOT_NO; #mix 混合量在psc3000中是没有的,这里只做简单处理 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT tmpImportPsc3000Dev.DEV_TAG, concat(tmpImportPsc3000Dev.DEV_TAG,'.', getAfterLastDot(fes_mix.FES_POINT_TP_NAME)) , fes_mix.TAG_NAME,fes_mix.DOT_NO,fes_mix.DESCRIPTION FROM tmpImportPsc3000Dev,fes_dev_info,fes_mix WHERE tmpImportPsc3000Dev.FES_DEV_TAG = fes_dev_info.TAG_NAME AND fes_mix.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_mix.DEV_TAG = fes_dev_info.TAG_NAME AND fes_mix.APP_TABLE_NAME = '' AND fes_mix.APP_TAG_NAME = '' AND fes_mix.APP_COLUMN_NAME = ''; INSERT IGNORE INTO mix( TAG_NAME, DESCRIPTION, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, RTU_TAG, IS_CONTROL, STATE_TEXT_NAME, GRAY, CONTRAST, QCOLOR, RAW_VALUE, VALUE, STATUS, LAST_UPDATE_TIME, LAST_CHANGE_TIME, METHOD, ALARM_PRIORITY, PIC_NAME, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, ALARM_DELAY_TIME, IS_WATER_ALM,IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TYPE, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, CAMERA_TAG, PRESET_ID) SELECT tblPsc3000PointToAdd.TAG_NAME,tblPsc3000PointToAdd.DESCRIPTION,dev_info.TAG_NAME,getMaxSeq(dev_info.TAG_NAME,'mix')+1,locationId, subsystemId, '', '0', 'PSCADA中断/正常', GRAY, CONTRAST, QCOLOR, '0', VALUE, STATUS, '0', '0', '', '3', '', '', '', '', 0, 1, 0, 0, 0, regionId, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TYPE, '', 0, 0, 5, 2, 0, 0, 701, '', '' FROM tblPsc3000PointToAdd,dev_info WHERE tblPsc3000PointToAdd.DEV_TAG = dev_info.TAG_NAME ; UPDATE mix INNER JOIN tblPsc3000PointToAdd ON mix.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET mix.RTU_TAG = rtuTag; UPDATE mix_map_to_fes INNER JOIN tblPsc3000PointToAdd ON mix_map_to_fes.KEY_ID_TAG = concat('mix.',tblPsc3000PointToAdd.TAG_NAME) SET mix_map_to_fes.DOT_NO = tblPsc3000PointToAdd.DOT_NO; #第六步,应施建全和王重生的要求,对于后台生成的设备组中未关联的测点,删除,对于前置中不存在与csv文件的点删除 DELETE FROM tblPsc3000PointToAdd; DELETE FROM tmpImportPsc3000PluginTbl; #删除后台的未关联的点 #这里PLUGIN_NAME是设备TAG INSERT INTO tmpImportPsc3000PluginTbl (PLUGIN_NAME , DEV_GRP ) SELECT dev_info.TAG_NAME,dev_info.GROUP_TAG_NAME FROM psc3000_plugin INNER JOIN dev_info ON dev_info.GROUP_TAG_NAME = concat(locationTag,'.',psc3000_plugin.DEV_GROUP_TAG) GROUP BY dev_info.TAG_NAME; DELETE accuml FROM accuml INNER JOIN tmpImportPsc3000PluginTbl ON accuml.DEVICE = tmpImportPsc3000PluginTbl.PLUGIN_NAME AND COALESCE(accuml.RTU_TAG,'') = ''; DELETE analog FROM analog INNER JOIN tmpImportPsc3000PluginTbl ON analog.DEVICE = tmpImportPsc3000PluginTbl.PLUGIN_NAME AND COALESCE(analog.RTU_TAG,'') = ''; DELETE digital FROM digital INNER JOIN tmpImportPsc3000PluginTbl ON digital.DEVICE = tmpImportPsc3000PluginTbl.PLUGIN_NAME AND COALESCE(digital.RTU_TAG,'') = ''; DELETE mix FROM mix INNER JOIN tmpImportPsc3000PluginTbl ON mix.DEVICE = tmpImportPsc3000PluginTbl.PLUGIN_NAME AND COALESCE(mix.RTU_TAG,'') = ''; #删除前置,有可能前置的测点已经和后台的关联上了,所以这里对后台的测点再删除一遍,再删除前置的 #acc DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '', fes_accuml.APP_TAG_NAME,fes_accuml.TAG_NAME,0,fes_accuml.DESCRIPTION FROM fes_accuml WHERE fes_accuml.RTU_TAG = rtuTag AND fes_accuml.RES_PARA_INT1 = '-1'; DELETE accuml FROM accuml INNER JOIN tblPsc3000PointToAdd ON accuml.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME; DELETE fes_accuml FROM fes_accuml INNER JOIN tblPsc3000PointToAdd ON fes_accuml.TAG_NAME = tblPsc3000PointToAdd.FES_TAG_NAME; #ana DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '', fes_analog.APP_TAG_NAME,fes_analog.TAG_NAME,0,fes_analog.DESCRIPTION FROM fes_analog WHERE fes_analog.RTU_TAG = rtuTag AND fes_analog.RES_PARA_INT1 = '-1'; DELETE analog FROM analog INNER JOIN tblPsc3000PointToAdd ON analog.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME; DELETE fes_analog FROM fes_analog INNER JOIN tblPsc3000PointToAdd ON fes_analog.TAG_NAME = tblPsc3000PointToAdd.FES_TAG_NAME; #dig 要考虑五个分量,只要有一个分量是明确关联前置的,不能删除 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT fes_digital.APP_COLUMN_NAME, fes_digital.APP_TAG_NAME, fes_digital.TAG_NAME, 0, fes_digital.DESCRIPTION FROM fes_digital WHERE fes_digital.RTU_TAG = rtuTag AND fes_digital.RES_PARA_INT1 = '-1'; #特殊处理,先删除前置使得map_to_fes表置-1再判断删除 DELETE fes_digital FROM fes_digital INNER JOIN tblPsc3000PointToAdd ON fes_digital.TAG_NAME = tblPsc3000PointToAdd.FES_TAG_NAME; #先标记要删除的点 UPDATE tblPsc3000PointToAdd INNER JOIN digital_map_to_fes ON concat('digital.',tblPsc3000PointToAdd.TAG_NAME) = digital_map_to_fes.KEY_ID_TAG AND digital_map_to_fes.DOT_NO1 = '-1' AND digital_map_to_fes.DOT_NO2 = '-1' AND digital_map_to_fes.DOT_NO3 = '-1' AND digital_map_to_fes.DOT_NO4 = '-1' AND digital_map_to_fes.DOT_NO5 = '-1' SET tblPsc3000PointToAdd.DOT_NO = -1; DELETE digital FROM digital INNER JOIN tblPsc3000PointToAdd ON digital.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME AND tblPsc3000PointToAdd.DOT_NO = -1; #mix DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '', fes_mix.APP_TAG_NAME,fes_mix.TAG_NAME,0,fes_mix.DESCRIPTION FROM fes_mix WHERE fes_mix.RTU_TAG = rtuTag AND fes_mix.RES_PARA_INT1 = '-1'; DELETE mix FROM mix INNER JOIN tblPsc3000PointToAdd ON mix.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME; DELETE fes_mix FROM fes_mix INNER JOIN tblPsc3000PointToAdd ON fes_mix.TAG_NAME = tblPsc3000PointToAdd.FES_TAG_NAME; #ana_ctrl DELETE FROM tblPsc3000PointToAdd; DELETE fes_analog_ctrl FROM fes_analog_ctrl WHERE fes_analog_ctrl.RTU_TAG = rtuTag AND fes_analog_ctrl.RES_PARA_INT1 = '-1'; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',A.TAG_NAME,'','0','' FROM (SELECT TAG_NAME,RTU_TAG,OFFSET_NO FROM analog_control INNER JOIN tmpImportPsc3000PluginTbl ON analog_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ) AS A LEFT JOIN fes_analog_ctrl ON fes_analog_ctrl.TAG_NAME = concat(A.RTU_TAG,'.',A.OFFSET_NO) WHERE fes_analog_ctrl.TAG_NAME IS NULL; DELETE analog_control FROM analog_control INNER JOIN tblPsc3000PointToAdd ON analog_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME; #dig_ctrl 要考虑五个分量 DELETE FROM tblPsc3000PointToAdd; DELETE fes_digital_ctrl FROM fes_digital_ctrl WHERE fes_digital_ctrl.RTU_TAG = rtuTag AND fes_digital_ctrl.RES_PARA_INT1 = '-1'; #第一个分量 INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',A.TAG_NAME,'','0','' FROM (SELECT TAG_NAME,RTU_TAG,OFFSET_NO1 FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ) AS A LEFT JOIN fes_digital_ctrl ON fes_digital_ctrl.TAG_NAME = concat(A.RTU_TAG,'.',A.OFFSET_NO1) WHERE fes_digital_ctrl.TAG_NAME IS NULL; UPDATE digital_control INNER JOIN tblPsc3000PointToAdd ON digital_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital_control.OFFSET_NO1 = -1; #第二个分量 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',A.TAG_NAME,'','0','' FROM (SELECT TAG_NAME,RTU_TAG,OFFSET_NO2 FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ) AS A LEFT JOIN fes_digital_ctrl ON fes_digital_ctrl.TAG_NAME = concat(A.RTU_TAG,'.',A.OFFSET_NO2) WHERE fes_digital_ctrl.TAG_NAME IS NULL; UPDATE digital_control INNER JOIN tblPsc3000PointToAdd ON digital_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital_control.OFFSET_NO2 = -1; #第三个分量 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',A.TAG_NAME,'','0','' FROM (SELECT TAG_NAME,RTU_TAG,OFFSET_NO3 FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ) AS A LEFT JOIN fes_digital_ctrl ON fes_digital_ctrl.TAG_NAME = concat(A.RTU_TAG,'.',A.OFFSET_NO3) WHERE fes_digital_ctrl.TAG_NAME IS NULL; UPDATE digital_control INNER JOIN tblPsc3000PointToAdd ON digital_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital_control.OFFSET_NO3 = -1; #第四个分量 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',A.TAG_NAME,'','0','' FROM (SELECT TAG_NAME,RTU_TAG,OFFSET_NO4 FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ) AS A LEFT JOIN fes_digital_ctrl ON fes_digital_ctrl.TAG_NAME = concat(A.RTU_TAG,'.',A.OFFSET_NO4) WHERE fes_digital_ctrl.TAG_NAME IS NULL; UPDATE digital_control INNER JOIN tblPsc3000PointToAdd ON digital_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital_control.OFFSET_NO4 = -1; #第五个分量 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',A.TAG_NAME,'','0','' FROM (SELECT TAG_NAME,RTU_TAG,OFFSET_NO5 FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ) AS A LEFT JOIN fes_digital_ctrl ON fes_digital_ctrl.TAG_NAME = concat(A.RTU_TAG,'.',A.OFFSET_NO5) WHERE fes_digital_ctrl.TAG_NAME IS NULL; UPDATE digital_control INNER JOIN tblPsc3000PointToAdd ON digital_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital_control.OFFSET_NO5 = -1; #设置未关联的digital控制属性为否 CREATE TEMPORARY TABLE IF NOT EXISTS tmpDelete( TAG_NAME varchar(64) NOT NULL ); DELETE FROM tmpDelete; INSERT INTO tmpDelete(TAG_NAME) SELECT TAG_NAME FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') AND digital_control.OFFSET_NO1 = '-1' AND digital_control.OFFSET_NO2 = '-1' AND digital_control.OFFSET_NO3 = '-1' AND digital_control.OFFSET_NO4 = '-1' AND digital_control.OFFSET_NO5 = '-1' ; UPDATE digital set IS_CONTROL = 0 WHERE TAG_NAME IN (SELECT TAG_NAME FROM tmpDelete) ; #mix_ctrl DELETE FROM tblPsc3000PointToAdd; DELETE fes_mix_ctrl FROM fes_mix_ctrl WHERE fes_mix_ctrl.RTU_TAG = rtuTag AND fes_mix_ctrl.RES_PARA_INT1 = '-1'; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',A.TAG_NAME,'','0','' FROM (SELECT TAG_NAME,RTU_TAG,OFFSET_NO FROM mix_control INNER JOIN tmpImportPsc3000PluginTbl ON mix_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ) AS A LEFT JOIN fes_mix_ctrl ON fes_mix_ctrl.TAG_NAME = concat(A.RTU_TAG,'.',A.OFFSET_NO) WHERE fes_mix_ctrl.TAG_NAME IS NULL; DELETE mix_control FROM mix_control INNER JOIN tblPsc3000PointToAdd ON mix_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME; #第七步,修改单分量属性和双分量属性 #单分量属性 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',digital_map_to_fes.KEY_ID_TAG,'','0','' FROM digital_map_to_fes INNER JOIN tmpImportPsc3000PluginTbl ON DOT_NO1 != '-1' AND DOT_NO2 = '-1' AND DOT_NO3 = '-1' AND DOT_NO4 = '-1' AND DOT_NO5 = '-1' AND digital_map_to_fes.KEY_ID_TAG LIKE concat('digital.', tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ; UPDATE digital INNER JOIN tblPsc3000PointToAdd ON concat('digital.',digital.TAG_NAME) = tblPsc3000PointToAdd.TAG_NAME SET digital.VALUE_NUM = 1, digital.STATE_TEXT_NAME = IF(position('(' IN STATE_TEXT_NAME) = 0,STATE_TEXT_NAME,left(STATE_TEXT_NAME,position('(' IN STATE_TEXT_NAME) - 1)); #双分量属性 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',digital_map_to_fes.KEY_ID_TAG,'','0','' FROM digital_map_to_fes INNER JOIN tmpImportPsc3000PluginTbl ON DOT_NO1 != '-1' AND DOT_NO2 != '-1' AND DOT_NO3 = '-1' AND DOT_NO4 = '-1' AND DOT_NO5 = '-1' AND digital_map_to_fes.KEY_ID_TAG LIKE concat('digital.', tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ; UPDATE digital INNER JOIN tblPsc3000PointToAdd ON concat('digital.',digital.TAG_NAME) = tblPsc3000PointToAdd.TAG_NAME SET digital.VALUE_NUM = 2; #对于单控制 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',digital_control.TAG_NAME,'','0','' FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON OFFSET_NO1 != '-1' AND OFFSET_NO2 = '-1' AND OFFSET_NO3 = '-1' AND OFFSET_NO4 = '-1' AND OFFSET_NO5 = '-1' AND digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ; UPDATE digital_control INNER JOIN tblPsc3000PointToAdd ON digital_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital_control.OFFSET_NUM = 1; #对于双控制 DELETE FROM tblPsc3000PointToAdd; INSERT INTO tblPsc3000PointToAdd(DEV_TAG,TAG_NAME,FES_TAG_NAME,DOT_NO,DESCRIPTION) SELECT '',digital_control.TAG_NAME,'','0','' FROM digital_control INNER JOIN tmpImportPsc3000PluginTbl ON OFFSET_NO1 != '-1' AND OFFSET_NO2 != '-1' AND OFFSET_NO3 = '-1' AND OFFSET_NO4 = '-1' AND OFFSET_NO5 = '-1' AND digital_control.TAG_NAME LIKE concat(tmpImportPsc3000PluginTbl.PLUGIN_NAME,'.%') ; UPDATE digital_control INNER JOIN tblPsc3000PointToAdd ON digital_control.TAG_NAME = tblPsc3000PointToAdd.TAG_NAME SET digital_control.OFFSET_NUM = 2; #*****************************赵勇新增功能(给后台添加控制点与前置未关联的控制点进行关联)****************************** #临时表 1:前置标签名,2:前置点号,3:后台标签名, 4:后台点描述 CREATE TABLE IF NOT EXISTS tmpRelationControlTbl( FES_TAG_NAME varchar(64), DOT_NO decimal(10,0), TAG_NAME varchar(64), DESCRIPTION varchar(128), DEVICE varchar(64) ); DELETE FROM tmpRelationControlTbl; #digital_control 先给 digital中添加点,设置控制属性为是,再关联digital_control中的点 INSERT INTO tmpRelationControlTbl(FES_TAG_NAME,DOT_NO,TAG_NAME,DESCRIPTION,DEVICE) SELECT FES_DIGITAL_CTRL.TAG_NAME,FES_DIGITAL_CTRL.DOT_NO,CONCAT(locationTag,'.',DEV_GROUP_TAG,'_jgxh','.',psc3000_dig_ctrl.TAG_NAME),psc3000_dig_ctrl.DESCRIPTION,CONCAT(locationTag,'.',DEV_GROUP_TAG,'_jgxh') FROM FES_DIGITAL_CTRL LEFT JOIN psc3000_dig_ctrl on RES_PARA_INT1 = REMOTE_NO LEFT JOIN psc3000_plugin on psc3000_dig_ctrl.DEV_ID = FES_DEV_INST_ID WHERE fes_digital_ctrl.RTU_TAG = rtuTag and fes_digital_ctrl.DOT_NO not in (SELECT OFFSET_NO1 FROM DIGITAL_CONTROL WHERE RTU_TAG = rtuTag AND OFFSET_NO1 <> -1) and fes_digital_ctrl.DOT_NO not in (SELECT OFFSET_NO2 FROM DIGITAL_CONTROL WHERE RTU_TAG = rtuTag AND OFFSET_NO2 <> -1) and fes_digital_ctrl.DOT_NO not in (SELECT OFFSET_NO3 FROM DIGITAL_CONTROL WHERE RTU_TAG = rtuTag AND OFFSET_NO3 <> -1) and fes_digital_ctrl.DOT_NO not in (SELECT OFFSET_NO4 FROM DIGITAL_CONTROL WHERE RTU_TAG = rtuTag AND OFFSET_NO4 <> -1) and fes_digital_ctrl.DOT_NO not in (SELECT OFFSET_NO5 FROM DIGITAL_CONTROL WHERE RTU_TAG = rtuTag AND OFFSET_NO5 <> -1) ; #执行插入操作 INSERT IGNORE INTO digital( TAG_NAME, DESCRIPTION, DEVICE, SEQ_NO, LOCATION_ID, SUB_SYSTEM, RTU_TAG, IS_CONTROL, STATE_TEXT_NAME, VALUE_NUM, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, LAST_UPDATE_TIME, VALUE1, STATUS1, LAST_CHANGE_TIME1, VALUE2, STATUS2, LAST_CHANGE_TIME2, VALUE3, STATUS3, LAST_CHANGE_TIME3, VALUE4, STATUS4, LAST_CHANGE_TIME4, VALUE5, STATUS5, LAST_CHANGE_TIME5, ALARM_PRIORITY, PIC_NAME, SOUND_NAME1, SOUND_NAME2, SOUND_NAME3, ALARM_DELAY_TIME, INPUT_DELAY_TIME, IS_WATER_ALM, IS_ACK_ON_RTN, DEL_ACT_ON_ACK, IS_NEVER_ALM_ON_RTN, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TYPE, POINT_TP_NAME, IS_SAMPLE, IS_STATISTICS, SAMPLE_PERIOD, IS_ALARM_FREQ, ALARM_FREQ, ALARM_FREQ_DESC, IS_ALARM_TIME, ALARM_TIME, ALARM_TIME_DESC, ALARM_FREQ_RANGE, INFER_NAME, POINT_TYPE, POINT_CLASS, POINT_PROPERTY, POINT_SORT, CAMERA_TAG, PRESET_ID ) SELECT tmpRelationControlTbl.TAG_NAME, tmpRelationControlTbl.DESCRIPTION,dev_info.TAG_NAME,getMaxSeq(dev_info.TAG_NAME,'digital')+1, locationId, subsystemId, rtuTag, '1', 'PSCADA中断/正常', '1', dev_info.GRAY, dev_info.CONTRAST, dev_info.QCOLOR,dev_info.VALUE, dev_info.STATUS, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '1', '', '', '', '', '5', '1', '0', '1', '0', '0', regionId, dev_info.OPT_HANDOVER_GROUP, '0', '0', '0', dev_info.DEV_TYPE, '', '0', '0', '5', '0', '10', '计次报警描述', '0', '5', '计时报警描述', '30', '', '1', '0', '0', '300', '', '' FROM tmpRelationControlTbl,dev_info WHERE tmpRelationControlTbl.DEVICE = dev_info.TAG_NAME ; #关联digital_control UPDATE digital_control INNER JOIN tmpRelationControlTbl ON digital_control.TAG_NAME = tmpRelationControlTbl.TAG_NAME SET digital_control.OFFSET_NUM = 1,OFFSET_NO1 = tmpRelationControlTbl.DOT_NO; #analog_control #*****************************赵勇添加结束**************************************************************************** #第八步,删除空设备,临时表tmpImportPsc3000PluginTbl中存储设备信息 UPDATE tmpImportPsc3000PluginTbl INNER JOIN digital ON tmpImportPsc3000PluginTbl.PLUGIN_NAME = digital.DEVICE SET tmpImportPsc3000PluginTbl.DEV_GRP = ''; UPDATE tmpImportPsc3000PluginTbl INNER JOIN accuml ON tmpImportPsc3000PluginTbl.PLUGIN_NAME = accuml.DEVICE SET tmpImportPsc3000PluginTbl.DEV_GRP = ''; UPDATE tmpImportPsc3000PluginTbl INNER JOIN analog ON tmpImportPsc3000PluginTbl.PLUGIN_NAME = analog.DEVICE SET tmpImportPsc3000PluginTbl.DEV_GRP = ''; UPDATE tmpImportPsc3000PluginTbl INNER JOIN mix ON tmpImportPsc3000PluginTbl.PLUGIN_NAME = mix.DEVICE SET tmpImportPsc3000PluginTbl.DEV_GRP = ''; #此时空设备的DEV_GRP不为空,删除 DELETE dev_info FROM dev_info INNER JOIN tmpImportPsc3000PluginTbl ON dev_info.TAG_NAME = tmpImportPsc3000PluginTbl.PLUGIN_NAME WHERE tmpImportPsc3000PluginTbl.DEV_GRP != ''; #第九步,要求自动同步描述 /*SET hasDone = 0; OPEN cur_2; FETCH cur_2 INTO myDevTag; WHILE hasDone != 1 DO IF myDevTag IS NOT NULL THEN BEGIN CALL updateDescByFes(myDevTag); END; END IF; FETCH cur_2 INTO myDevTag; END WHILE; CLOSE cur_2;*/ #第十步,先删除保护定值和数据块,再导入模板里的保护定值和数据块,此时tmpPsc3000PluginFesTempTbl表中是导入的前置设备 DELETE fes_data_block FROM fes_data_block INNER JOIN tmpPsc3000PluginFesTempTbl WHERE fes_data_block.DEV_TAG = concat(rtuTag,'.',tmpPsc3000PluginFesTempTbl.TAG_NAME); INSERT INTO fes_data_block( TAG_NAME, BLOCK_ID,RTU_TAG,RTU_NO, FUNC_CODE,STAR_ADDR,DATA_LEN, DATA_FARME_TYPE, REF_CYCLE, IS_CREATE_SOE, PARA_INT1, PARA_INT2, DESCRIPTION,LOCATION_ID, SUB_SYSTEM, LD, CALL_MODE, DATA_SET,DATA_SET_TYPE,DATA_SET_CALL_TIME,REPORT_CTRL,FES_POINT_TP_NAME, DEV_TAG) SELECT concat(rtuTag,'.',tmpPsc3000PluginFesTempTbl.TAG_NAME,'.',getAfterLastDot(fes_data_block_temp.TAG_NAME)), BLOCK_ID,rtuTag, rtuNo, FUNC_CODE,STAR_ADDR,DATA_LEN, DATA_FARME_TYPE, REF_CYCLE, IS_CREATE_SOE, PARA_INT1, PARA_INT2, DESCRIPTION,locationId, subsystemId,LD, CALL_MODE, DATA_SET,DATA_SET_TYPE,DATA_SET_CALL_TIME,REPORT_CTRL,'', concat(rtuTag,'.',tmpPsc3000PluginFesTempTbl.TAG_NAME) FROM tmpPsc3000PluginFesTempTbl INNER JOIN fes_data_block_temp ON tmpPsc3000PluginFesTempTbl.FES_TEMP = fes_data_block_temp.DEV_TP_NAME; #第十一步,修改PLC的设备ID,超过一万的要修改 UPDATE fes_dev_info SET DEV_ID = IF((DEV_ID DIV 10000) = 0,DEV_ID,(DEV_ID DIV 10000)) WHERE RTU_TAG = rtuTag; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `InsertForwardAcc`; DELIMITER $$ CREATE PROCEDURE `InsertForwardAcc`(rtuTagName varchar(64), startNum decimal(10,0)) body:BEGIN #使用本方法前,先把要插入的点,放在EXPORT_SEQ表中 #批量插入前置表, #rtuTagName 指明插入哪个转发RTU #startNum 指明插入位置,当startNum等于指定rtuTagName的最大ID时,相当于末尾添加 DECLARE countNum int DEFAULT 0; SELECT count(*) INTO countNum FROM export_seq; #相当于对要空出要插入的位置 UPDATE fes_forwarding_accuml SET ID = ID + countNum WHERE RTU_TAG = rtuTagName AND ID > startNum ORDER BY ID DESC; INSERT INTO fes_forwarding_accuml (RTU_TAG, ID, REMOTE_NO, TAG_NAME, DESCRIPTION, SHORT_NAME, FES_RTU_TAG, FES_RTU_NO, FES_DOT_NO, GROUP_NO, COEFF, BASE, PROPERTY, PARALONG_1, PARALONG_2, PARASTRING) SELECT rtuTagName,export_seq.`NO`,export_seq.`NO`,TAG_NAME, DESCRIPTION, '', RTU_TAG, RTU_NO, DOT_NO, '0', '0', '0', '0', '0', '0', '' FROM export_seq,fes_accuml WHERE export_seq.DEV_TAG = fes_accuml.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `InsertForwardAna`; DELIMITER $$ CREATE PROCEDURE `InsertForwardAna`(rtuTagName varchar(64), startNum decimal(10,0)) body:BEGIN #使用本方法前,先把要插入的点,放在EXPORT_SEQ表中 #批量插入前置表, #rtuTagName 指明插入哪个转发RTU #startNum 指明插入位置,当startNum等于指定rtuTagName的最大ID时,相当于末尾添加 DECLARE countNum int DEFAULT 0; SELECT count(*) INTO countNum FROM export_seq; #相当于对要空出要插入的位置 UPDATE fes_forwarding_anaolg SET ID = ID + countNum WHERE RTU_TAG = rtuTagName AND ID > startNum ORDER BY ID DESC; INSERT INTO fes_forwarding_anaolg (RTU_TAG, ID, REMOTE_NO, TAG_NAME, DESCRIPTION, SHORT_NAME, FES_RTU_TAG, FES_RTU_NO, FES_DOT_NO, GROUP_NO, COEFF, BASE, DEADBAND, PROPERTY, PARALONG_1, PARALONG_2, PARASTRING) SELECT rtuTagName,export_seq.`NO`,export_seq.`NO`,TAG_NAME, DESCRIPTION, '', RTU_TAG, RTU_NO, DOT_NO, '0', '0', '0', '0', '0', '0', '0', '' FROM export_seq,fes_analog WHERE export_seq.DEV_TAG = fes_analog.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `InsertForwardAnaCtrl`; DELIMITER $$ CREATE PROCEDURE `InsertForwardAnaCtrl`(rtuTagName varchar(64), startNum decimal(10,0)) body:BEGIN #使用本方法前,先把要插入的点,放在EXPORT_SEQ表中 #批量插入前置表, #rtuTagName 指明插入哪个转发RTU #startNum 指明插入位置,当startNum等于指定rtuTagName的最大ID时,相当于末尾添加 DECLARE countNum int DEFAULT 0; SELECT count(*) INTO countNum FROM export_seq; #相当于对要空出要插入的位置 UPDATE fes_forwarding_anaolg_ctrl SET ID = ID + countNum WHERE RTU_TAG = rtuTagName AND ID > startNum ORDER BY ID DESC; INSERT INTO fes_forwarding_anaolg_ctrl (RTU_TAG, ID, REMOTE_NO, TAG_NAME, DESCRIPTION, SHORT_NAME, FES_RTU_TAG, FES_RTU_NO, FES_DOT_NO, GROUP_NO, PROPERTY, PARALONG_1, PARALONG_2, PARASTRING) SELECT rtuTagName,export_seq.`NO`,export_seq.`NO`,TAG_NAME, DESCRIPTION, '', RTU_TAG, RTU_NO, DOT_NO, '0', '0', '0', '0', '' FROM export_seq,fes_analog_ctrl WHERE export_seq.DEV_TAG = fes_analog_ctrl.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `InsertForwardDig`; DELIMITER $$ CREATE PROCEDURE `InsertForwardDig`(rtuTagName varchar(64), startNum decimal(10,0)) body:BEGIN #使用本方法前,先把要插入的点,放在EXPORT_SEQ表中 #批量插入前置表, #rtuTagName 指明插入哪个转发RTU #startNum 指明插入位置,当startNum等于指定rtuTagName的最大ID时,相当于末尾添加 DECLARE countNum int DEFAULT 0; SELECT count(*) INTO countNum FROM export_seq; #相当于对要空出要插入的位置 UPDATE fes_forwarding_digital SET ID = ID + countNum WHERE RTU_TAG = rtuTagName AND ID > startNum ORDER BY ID DESC; INSERT INTO fes_forwarding_digital (RTU_TAG, ID, REMOTE_NO, TAG_NAME, DESCRIPTION, SHORT_NAME, FES_RTU_TAG, FES_RTU_NO, FES_DOT_NO, GROUP_NO, REVERT, PROPERTY, PARALONG_1, PARALONG_2, PARASTRING) SELECT rtuTagName,export_seq.`NO`,export_seq.`NO`,TAG_NAME, DESCRIPTION, '', RTU_TAG, RTU_NO, DOT_NO, '0', '0', '0', '0', '0', '' FROM export_seq,fes_digital WHERE export_seq.DEV_TAG = fes_digital.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `InsertForwardDigCtrl`; DELIMITER $$ CREATE PROCEDURE `InsertForwardDigCtrl`(rtuTagName varchar(64), startNum decimal(10,0)) body:BEGIN #使用本方法前,先把要插入的点,放在EXPORT_SEQ表中 #批量插入前置表, #rtuTagName 指明插入哪个转发RTU #startNum 指明插入位置,当startNum等于指定rtuTagName的最大ID时,相当于末尾添加 DECLARE countNum int DEFAULT 0; SELECT count(*) INTO countNum FROM export_seq; #相当于对要空出要插入的位置 UPDATE fes_forwarding_digital_ctrl SET ID = ID + countNum WHERE RTU_TAG = rtuTagName AND ID > startNum ORDER BY ID DESC; INSERT INTO fes_forwarding_digital_ctrl (RTU_TAG, ID, REMOTE_NO, TAG_NAME, DESCRIPTION, SHORT_NAME, FES_RTU_TAG, FES_RTU_NO, FES_DOT_NO, GROUP_NO, PROPERTY, PARALONG_1, PARALONG_2, PARASTRING) SELECT rtuTagName,export_seq.`NO`,export_seq.`NO`,TAG_NAME, DESCRIPTION, '', RTU_TAG, RTU_NO, DOT_NO, '0', '0', '0', '0', '' FROM export_seq,fes_digital_ctrl WHERE export_seq.DEV_TAG = fes_digital_ctrl.TAG_NAME; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `instDevTempGroup`; DELIMITER $$ CREATE PROCEDURE `instDevTempGroup`(srcTempGroupName varchar(64), dstDevGroupName varchar(64)) body:BEGIN /* * 实例化整个模板组 */ DECLARE locationTagName varchar(64) DEFAULT ''; # DECLARE totalInst int DEFAULT 1; IF COALESCE(srcTempGroupName,'') = '' OR COALESCE(dstDevGroupName,'')='' THEN LEAVE body; END IF; SELECT sys_model_location_info.TAG_NAME INTO locationTagName FROM dev_group,sys_model_location_info WHERE dev_group.TAG_NAME = dstDevGroupName AND dev_group.LOCATION_ID = sys_model_location_info.LOCATION_ID; IF COALESCE(locationTagName,'') = '' THEN LEAVE body; END IF; /* SELECT count(*) INTO totalInst FROM dev_info WHERE TAG_NAME LIKE '%Xinst%'; SET totalInst = totalInst + 1; */ INSERT INTO dev_info( TAG_NAME, DESCRIPTION, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME) SELECT concat(locationTagName,'.',getAfterLastDot(dstDevGroupName), dev_temp_def.TAG_NAME), dev_temp_def.DESCRIPTION, dev_group.LOCATION_ID, dev_group.SUB_SYSTEM, dstDevGroupName,'0', DEV_TYPE_ID, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', REGION_ID, '', '0', '0', '0', dev_temp_def.TAG_NAME FROM dev_group,dev_temp_group,dev_temp_def WHERE dev_group.TAG_NAME = dstDevGroupName AND dev_temp_group.TAG_NAME = srcTempGroupName AND dev_temp_group.TAG_NAME = dev_temp_def.DEV_TEMP_GRP; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `instPlugin`; DELIMITER $$ CREATE PROCEDURE `instPlugin`(pluginName varchar(64),rtuTag varchar(64),devGroupName varchar(64), isBatchInGrp int,startNo int,countNo int) body:BEGIN #先实例化后台和前置设备,再关联 #pluginName 套件名 #rtuTag rtu名 #devGroupName 设备组名 #isBatchInGrp 是否在组内批量实例化 #startNo 批量化的起始序号 #countNo 批量的数量 #前置的命名规则更后台要有一一对应,批量时有编号,不批量时无编号 #后台是设备组_模板名+编号 #前置也是设备组_模板+编号 DECLARE locationId decimal(10,0) DEFAULT 0; DECLARE subsystemId decimal(10,0) DEFAULT 0; DECLARE rtuNo decimal(10,0) DEFAULT 0; DECLARE regionId decimal(10,0) DEFAULT 0; DECLARE devGrpDesc varchar(128) DEFAULT ''; DECLARE tempName varchar(64) DEFAULT ''; DECLARE fesTempName varchar(64) DEFAULT ''; DECLARE sampleGrpName varchar(64) DEFAULT ''; DECLARE stepCount int DEFAULT 0; DECLARE hasDone int DEFAULT 0; DECLARE fesDevCount int DEFAULT 0; DECLARE cur_relation CURSOR FOR SELECT TEMP_NAME,FES_TEMP_NAME FROM temp_plugin_fes_dev_map WHERE PLUGIN_NAME = pluginName; DECLARE CONTINUE HANDLER FOR NOT FOUND SET hasDone = 1; SELECT LOCATION_ID,SUB_SYSTEM,RTU_NO INTO locationId,subsystemId,rtuNo FROM fes_rtu_para WHERE TAG_NAME = rtuTag; SELECT REGION_ID,DESCRIPTION INTO regionId,devGrpDesc FROM dev_group WHERE TAG_NAME = devGroupName; SET sampleGrpName = getAfterLastDot(devGroupName); SET fesDevCount = (SELECT COUNT(*) FROM fes_dev_info WHERE RTU_NO = rtuNo); #不批量时 IF isBatchInGrp <> 1 THEN BEGIN #实例化后台设备,注意TAG_NAME的命名规则 INSERT INTO DEV_INFO (TAG_NAME, DESCRIPTION, DEV_NAME, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME) SELECT concat(devGroupName,'_',TEMP_NAME),DESCRIPTION,'', locationId, subsystemId,devGroupName, '0', DEV_TYPE_ID,'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', regionId, '', '0', '0', '0', TEMP_NAME FROM temp_plugin_dev_map,dev_temp_def WHERE PLUGIN_NAME = pluginName AND temp_plugin_dev_map.TEMP_NAME = dev_temp_def.TAG_NAME; #实例化前置设备 INSERT INTO FES_DEV_INFO (DEV_DESC, DEV_ID,DEV_NAME, DEV_TP_NAME, DEV_TYPE_ID,LOCATION_ID,RTU_NO,RTU_TAG,SUB_SYSTEM,TAG_NAME) SELECT concat(devGrpDesc,'_',DESCRIPTION), fesDevCount, concat(sampleGrpName,'_',FES_TEMP_NAME) ,FES_TEMP_NAME,DEV_TYPE_ID,locationId, rtuNo, rtuTag, subsystemId,concat(rtuTag,'.',sampleGrpName,'_',FES_TEMP_NAME) FROM temp_plugin_fes_dev_map, fes_dev_temp_def WHERE PLUGIN_NAME = pluginName AND temp_plugin_fes_dev_map.FES_TEMP_NAME = fes_dev_temp_def.TAG_NAME GROUP BY temp_plugin_fes_dev_map.FES_TEMP_NAME; #循环调用存储过程进行关联 OPEN cur_relation; FETCH cur_relation INTO tempName,fesTempName; WHILE hasDone != 1 DO CALL relationByPlugin(pluginName,concat(devGroupName,'_',tempName), concat(rtuTag,'.',sampleGrpName,'_',fesTempName)); FETCH cur_relation INTO tempName,fesTempName; END WHILE; CLOSE cur_relation; END; ELSE BEGIN #批量时,设备都带上编号 #实例化后台设备,注意TAG_NAME的命名规则 SET stepCount = startNo; WHILE stepCount < (startNo + countNo) DO INSERT INTO DEV_INFO (TAG_NAME, DESCRIPTION, DEV_NAME, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME) SELECT concat(devGroupName,'_',TEMP_NAME,stepCount),concat(DESCRIPTION,stepCount),'', locationId, subsystemId,devGroupName, '0', DEV_TYPE_ID,'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', regionId, '', '0', '0', '0', TEMP_NAME FROM temp_plugin_dev_map,dev_temp_def WHERE PLUGIN_NAME = pluginName AND temp_plugin_dev_map.TEMP_NAME = dev_temp_def.TAG_NAME; #实例化前置设备 INSERT INTO FES_DEV_INFO (DEV_DESC, DEV_ID,DEV_NAME, DEV_TP_NAME, DEV_TYPE_ID,LOCATION_ID,RTU_NO,RTU_TAG,SUB_SYSTEM,TAG_NAME) SELECT concat(devGrpDesc,'_',DESCRIPTION,stepCount),fesDevCount, concat(sampleGrpName,'_',FES_TEMP_NAME,stepCount) ,FES_TEMP_NAME,DEV_TYPE_ID,locationId, rtuNo, rtuTag, subsystemId,concat(rtuTag,'.',sampleGrpName,'_',FES_TEMP_NAME,stepCount) FROM temp_plugin_fes_dev_map, fes_dev_temp_def WHERE PLUGIN_NAME = pluginName AND temp_plugin_fes_dev_map.FES_TEMP_NAME = fes_dev_temp_def.TAG_NAME GROUP BY temp_plugin_fes_dev_map.FES_TEMP_NAME; #循环调用存储过程进行关联 OPEN cur_relation; FETCH cur_relation INTO tempName,fesTempName; WHILE hasDone != 1 DO CALL relationByPlugin(pluginName,concat(devGroupName,'_',tempName,stepCount), concat(rtuTag,'.',sampleGrpName,'_',fesTempName,stepCount)); FETCH cur_relation INTO tempName,fesTempName; END WHILE; CLOSE cur_relation; SET stepCount = stepCount + 1; SET hasDone = 0; END WHILE; END; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `instPluginByFesDev`; DELIMITER $$ CREATE PROCEDURE `instPluginByFesDev`(pluginName varchar(64),rtuTag varchar(64),devGroupName varchar(64), fesDevTag varchar(64),fesDevDes varchar(64)) body:BEGIN #先实例化后台和前置设备,再关联 #pluginName 套件名 #rtuTag rtu名 #devGroupName 设备组名 #fesDevTag 前置设备组标签 #fesDevDes 前置设备组描述 DECLARE locationId decimal(10,0) DEFAULT 0; DECLARE subsystemId decimal(10,0) DEFAULT 0; DECLARE rtuNo decimal(10,0) DEFAULT 0; DECLARE regionId decimal(10,0) DEFAULT 0; DECLARE devGrpDesc varchar(128) DEFAULT ''; DECLARE tempName varchar(64) DEFAULT ''; DECLARE sampleGrpName varchar(64) DEFAULT ''; DECLARE hasDone int DEFAULT 0; DECLARE fesDevCount int DEFAULT 0; DECLARE cur_relation CURSOR FOR SELECT TEMP_NAME FROM temp_plugin_fes_dev_map WHERE PLUGIN_NAME = pluginName; DECLARE CONTINUE HANDLER FOR NOT FOUND SET hasDone = 1; SELECT LOCATION_ID,SUB_SYSTEM,RTU_NO INTO locationId,subsystemId,rtuNo FROM fes_rtu_para WHERE TAG_NAME = rtuTag; SELECT REGION_ID,DESCRIPTION INTO regionId,devGrpDesc FROM dev_group WHERE TAG_NAME = devGroupName; SET sampleGrpName = getAfterLastDot(devGroupName); SET fesDevCount = (SELECT COUNT(*) FROM fes_dev_info WHERE RTU_NO = rtuNo); BEGIN #实例化后台设备,注意TAG_NAME的命名规则 INSERT INTO DEV_INFO (TAG_NAME, DESCRIPTION, DEV_NAME, LOCATION_ID, SUB_SYSTEM, GROUP_TAG_NAME, VOL_LEVEL_ID, DEV_TYPE, GRAY, CONTRAST, QCOLOR, VALUE, STATUS, NODE_NO1, NODE_NO2, NODE_NO3, NODE_NO4, NODE_NO5, NODE_NO6, NODE_NO7, NODE_NO8, NODE_NO9, NODE_NO10, REGION_ID, OPT_HANDOVER_GROUP, IS_SUMMARY, SUMMARY_VALUE, SUMMARY_STATUS, DEV_TP_NAME) SELECT concat(devGroupName,'_',TEMP_NAME),DESCRIPTION,'', locationId, subsystemId,devGroupName, '0', DEV_TYPE_ID,'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', regionId, '', '0', '0', '0', TEMP_NAME FROM temp_plugin_dev_map,dev_temp_def WHERE PLUGIN_NAME = pluginName AND temp_plugin_dev_map.TEMP_NAME = dev_temp_def.TAG_NAME; #实例化前置设备 INSERT INTO FES_DEV_INFO (DEV_DESC, DEV_ID, DEV_NAME, DEV_TP_NAME, DEV_TYPE_ID,LOCATION_ID,RTU_NO,RTU_TAG,SUB_SYSTEM,TAG_NAME) SELECT fesDevDes, fesDevCount, fesDevTag,FES_TEMP_NAME,DEV_TYPE_ID,locationId, rtuNo, rtuTag, subsystemId,concat(rtuTag,'.',fesDevTag) FROM temp_plugin_fes_dev_map, fes_dev_temp_def WHERE PLUGIN_NAME = pluginName AND temp_plugin_fes_dev_map.FES_TEMP_NAME = fes_dev_temp_def.TAG_NAME GROUP BY temp_plugin_fes_dev_map.FES_TEMP_NAME; #循环调用存储过程进行关联 OPEN cur_relation; FETCH cur_relation INTO tempName; WHILE hasDone != 1 DO CALL relationByPlugin(pluginName,concat(devGroupName,'_',tempName), concat(rtuTag,'.',fesDevTag)); FETCH cur_relation INTO tempName; END WHILE; CLOSE cur_relation; END; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `relationByDevGroup`; DELIMITER $$ CREATE PROCEDURE `relationByDevGroup`(groupName varchar(64)) body:BEGIN /* * 后台和前置相同设备组之间进行关联 */ #创建临时表,分别存入map_to_fes的Key_ID_TAG,对应的RTU_TAG,和DOT_NO, OFFSET_NO对应的是digital有5个分量的情况 CREATE TEMPORARY TABLE IF NOT EXISTS tmpRelationGroupTbl( KEY_ID_TAG varchar(128) NOT NULL, RTU_TAG varchar(64) NOT NULL, DOT_NO varchar(48) NOT NULL, OFFSET_NO decimal(10) ); DELETE FROM tmpRelationGroupTbl; #以accuml为例,进行说明.把后台设备下的所有accuml点,和对应的前置设备下的fes_accuml点的Key_ID_TAG和DOT_NO写入临时表 INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO FROM (SELECT accuml_map_to_fes.KEY_ID_TAG,accuml_temp_define.SEC_DEVTP_NAME,accuml_temp_define.SEC_DEV_IN_GRP,accuml_temp_define.SEC_SEQ_NO FROM dev_info, accuml, accuml_map_to_fes,accuml_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND accuml.DEVICE = dev_info.TAG_NAME AND accuml_map_to_fes.KEY_ID_TAG = concat('accuml','.' ,accuml.TAG_NAME) AND accuml_map_to_fes.POINT_TP_NAME = accuml_temp_define.TAG_NAME AND COALESCE(accuml_temp_define.SEC_SEQ_NO,-1) >= 0 )tb1 INNER JOIN (SELECT fes_accuml.RTU_TAG,fes_accuml.DOT_NO,fes_accuml.FES_POINT_TP_NAME,fes_accuml.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_accuml WHERE fes_dev_info.DEV_GROUP = groupName AND fes_accuml.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_accuml INNER JOIN tmpRelationGroupTbl ON fes_accuml.TAG_NAME = concat(tmpRelationGroupTbl.RTU_TAG,'.', tmpRelationGroupTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE accuml INNER JOIN dev_info ON dev_info.GROUP_TAG_NAME = groupName AND accuml.DEVICE = dev_info.TAG_NAME SET RTU_TAG = ''; #模拟手动操作,先关联对应RTU,再关联对应点 UPDATE accuml INNER JOIN tmpRelationGroupTbl ON accuml.TAG_NAME = getAfterFirstDot(tmpRelationGroupTbl.KEY_ID_TAG) SET accuml.RTU_TAG = tmpRelationGroupTbl.RTU_TAG; UPDATE accuml_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON accuml_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG SET accuml_map_to_fes.DOT_NO = t1.DOT_NO; #analog DELETE FROM tmpRelationGroupTbl; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO FROM (SELECT analog_map_to_fes.KEY_ID_TAG,analog_temp_define.SEC_DEVTP_NAME,analog_temp_define.SEC_DEV_IN_GRP,analog_temp_define.SEC_SEQ_NO FROM dev_info,analog, analog_map_to_fes,analog_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND analog.DEVICE = dev_info.TAG_NAME AND analog_map_to_fes.KEY_ID_TAG = concat('analog','.' ,analog.TAG_NAME) AND analog_map_to_fes.POINT_TP_NAME = analog_temp_define.TAG_NAME AND COALESCE(analog_temp_define.SEC_SEQ_NO,-1) >= 0 )tb1 INNER JOIN (SELECT fes_analog.RTU_TAG,fes_analog.DOT_NO,fes_analog.FES_POINT_TP_NAME,fes_analog.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_analog WHERE fes_dev_info.DEV_GROUP = groupName AND fes_analog.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_analog INNER JOIN tmpRelationGroupTbl ON fes_analog.TAG_NAME = concat(tmpRelationGroupTbl.RTU_TAG,'.', tmpRelationGroupTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE analog INNER JOIN dev_info ON dev_info.GROUP_TAG_NAME = groupName AND analog.DEVICE = dev_info.TAG_NAME SET RTU_TAG = ''; UPDATE analog INNER JOIN tmpRelationGroupTbl ON analog.TAG_NAME = getAfterFirstDot(tmpRelationGroupTbl.KEY_ID_TAG) SET analog.RTU_TAG = tmpRelationGroupTbl.RTU_TAG; UPDATE analog_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON analog_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG SET analog_map_to_fes.DOT_NO = t1.DOT_NO; #DIGITAL DELETE FROM tmpRelationGroupTbl; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO ,1 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP,digital_temp_define.SEC_SEQ_NO1 FROM dev_info,digital, digital_map_to_fes,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,digital.TAG_NAME) AND digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.SEC_SEQ_NO1,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.RTU_TAG,fes_digital.DOT_NO,fes_digital.FES_POINT_TP_NAME,fes_digital.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_digital WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO1 = tb2.SEQ_NO; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO ,2 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP,digital_temp_define.SEC_SEQ_NO2 FROM dev_info,digital, digital_map_to_fes,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,digital.TAG_NAME) AND digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.SEC_SEQ_NO2,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.RTU_TAG,fes_digital.DOT_NO,fes_digital.FES_POINT_TP_NAME,fes_digital.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_digital WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO2 = tb2.SEQ_NO; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO ,3 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP,digital_temp_define.SEC_SEQ_NO3 FROM dev_info,digital, digital_map_to_fes,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,digital.TAG_NAME) AND digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.SEC_SEQ_NO3,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.RTU_TAG,fes_digital.DOT_NO,fes_digital.FES_POINT_TP_NAME,fes_digital.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_digital WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO3 = tb2.SEQ_NO; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO ,4 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP,digital_temp_define.SEC_SEQ_NO4 FROM dev_info,digital, digital_map_to_fes,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,digital.TAG_NAME) AND digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.SEC_SEQ_NO4,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.RTU_TAG,fes_digital.DOT_NO,fes_digital.FES_POINT_TP_NAME,fes_digital.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_digital WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO4 = tb2.SEQ_NO; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO ,5 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP,digital_temp_define.SEC_SEQ_NO5 FROM dev_info,digital, digital_map_to_fes,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,digital.TAG_NAME) AND digital_map_to_fes.POINT_TP_NAME = digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.SEC_SEQ_NO5,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.RTU_TAG,fes_digital.DOT_NO,fes_digital.FES_POINT_TP_NAME,fes_digital.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_digital WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO5 = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_digital INNER JOIN tmpRelationGroupTbl ON fes_digital.TAG_NAME = concat(tmpRelationGroupTbl.RTU_TAG,'.', tmpRelationGroupTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE digital INNER JOIN dev_info ON dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME SET RTU_TAG = ''; UPDATE digital INNER JOIN tmpRelationGroupTbl ON digital.TAG_NAME = getAfterFirstDot(tmpRelationGroupTbl.KEY_ID_TAG) SET digital.RTU_TAG = tmpRelationGroupTbl.RTU_TAG; UPDATE digital_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG AND t1.OFFSET_NO = 1 SET digital_map_to_fes.DOT_NO1 = t1.DOT_NO; UPDATE digital_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG AND t1.OFFSET_NO = 2 SET digital_map_to_fes.DOT_NO2 = t1.DOT_NO; UPDATE digital_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG AND t1.OFFSET_NO = 3 SET digital_map_to_fes.DOT_NO3 = t1.DOT_NO; UPDATE digital_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG AND t1.OFFSET_NO = 4 SET digital_map_to_fes.DOT_NO4 = t1.DOT_NO; UPDATE digital_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG AND t1.OFFSET_NO = 5 SET digital_map_to_fes.DOT_NO5 = t1.DOT_NO; #mix DELETE FROM tmpRelationGroupTbl; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO) SELECT tb1.KEY_ID_TAG, tb2.RTU_TAG, tb2.DOT_NO FROM (SELECT mix_map_to_fes.KEY_ID_TAG,mix_temp_define.SEC_DEVTP_NAME,mix_temp_define.SEC_DEV_IN_GRP,mix_temp_define.SEC_SEQ_NO FROM dev_info,mix, mix_map_to_fes,mix_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND mix.DEVICE = dev_info.TAG_NAME AND mix_map_to_fes.KEY_ID_TAG = concat('mix','.' ,mix.TAG_NAME) AND mix_map_to_fes.POINT_TP_NAME = mix_temp_define.TAG_NAME AND COALESCE(mix_temp_define.SEC_SEQ_NO,-1) >= 0 )tb1 INNER JOIN (SELECT fes_mix.RTU_TAG,fes_mix.DOT_NO,fes_mix.FES_POINT_TP_NAME,fes_mix.SEQ_NO,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info, fes_mix WHERE fes_dev_info.DEV_GROUP = groupName AND fes_mix.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.FES_POINT_TP_NAME) AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP AND tb1.SEC_SEQ_NO = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_mix INNER JOIN tmpRelationGroupTbl ON fes_mix.TAG_NAME = concat(tmpRelationGroupTbl.RTU_TAG,'.', tmpRelationGroupTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE mix INNER JOIN dev_info ON dev_info.GROUP_TAG_NAME = groupName AND mix.DEVICE = dev_info.TAG_NAME SET RTU_TAG = ''; UPDATE mix INNER JOIN tmpRelationGroupTbl ON mix.TAG_NAME = getAfterFirstDot(tmpRelationGroupTbl.KEY_ID_TAG) SET mix.RTU_TAG = tmpRelationGroupTbl.RTU_TAG; UPDATE mix_map_to_fes INNER JOIN (SELECT KEY_ID_TAG,DOT_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON mix_map_to_fes.KEY_ID_TAG = t1.KEY_ID_TAG SET mix_map_to_fes.DOT_NO = t1.DOT_NO; #控制点的关联,因为有控制点,肯定有前置点,所以控制表Ctrl中的RTU在上面已经填入了,这里只需要填写控制的点号 #analog_ctrl DELETE FROM tmpRelationGroupTbl; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO ) SELECT tb1.TAG_NAME,tb2.RTU_TAG, tb2.DOT_NO FROM (SELECT analog_control.TAG_NAME,analog_temp_define.OUT_SEC_SEQ_NO ,analog_temp_define.SEC_DEVTP_NAME,analog_temp_define.SEC_DEV_IN_GRP FROM dev_info,analog, analog_control,analog_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND analog.DEVICE = dev_info.TAG_NAME AND analog_control.TAG_NAME = analog.TAG_NAME AND analog_control.POINT_TP_NAME= analog_temp_define.TAG_NAME AND COALESCE(analog_temp_define.OUT_SEC_SEQ_NO,-1) >= 0 )tb1 INNER JOIN (SELECT fes_analog_ctrl.DOT_NO,fes_analog_ctrl.RTU_TAG , fes_analog_ctrl.SEQ_NO ,fes_analog_ctrl.POINT_TP_NAME,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info,fes_analog_ctrl WHERE fes_dev_info.DEV_GROUP = groupName AND fes_analog_ctrl.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.POINT_TP_NAME) AND tb1.OUT_SEC_SEQ_NO = tb2.SEQ_NO AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP; UPDATE analog_control INNER JOIN (SELECT KEY_ID_TAG,DOT_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON analog_control.TAG_NAME = t1.KEY_ID_TAG SET analog_control.OFFSET_NO = t1.DOT_NO; #digital_Ctrl DELETE FROM tmpRelationGroupTbl; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME,tb2.RTU_TAG, tb2.DOT_NO ,1 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO1 ,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP FROM dev_info,digital, digital_control,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_control.TAG_NAME = digital.TAG_NAME AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO1,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO,fes_digital_ctrl.RTU_TAG, fes_digital_ctrl.SEQ_NO ,fes_digital_ctrl.POINT_TP_NAME,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info,fes_digital_ctrl WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital_ctrl.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.POINT_TP_NAME) AND tb1.OUT_SEC_SEQ_NO1 = tb2.SEQ_NO AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME,tb2.RTU_TAG, tb2.DOT_NO ,2 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO2 ,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP FROM dev_info,digital, digital_control,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_control.TAG_NAME = digital.TAG_NAME AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO2,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO, fes_digital_ctrl.RTU_TAG,fes_digital_ctrl.SEQ_NO ,fes_digital_ctrl.POINT_TP_NAME,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info,fes_digital_ctrl WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital_ctrl.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.POINT_TP_NAME) AND tb1.OUT_SEC_SEQ_NO2 = tb2.SEQ_NO AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME,tb2.RTU_TAG, tb2.DOT_NO ,3 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO3 ,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP FROM dev_info,digital, digital_control,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_control.TAG_NAME = digital.TAG_NAME AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO3,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO,fes_digital_ctrl.RTU_TAG, fes_digital_ctrl.SEQ_NO ,fes_digital_ctrl.POINT_TP_NAME,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info,fes_digital_ctrl WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital_ctrl.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.POINT_TP_NAME) AND tb1.OUT_SEC_SEQ_NO3 = tb2.SEQ_NO AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME,tb2.RTU_TAG, tb2.DOT_NO ,4 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO4 ,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP FROM dev_info,digital,digital_control,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_control.TAG_NAME = digital.TAG_NAME AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO4,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO,fes_digital_ctrl.RTU_TAG, fes_digital_ctrl.SEQ_NO ,fes_digital_ctrl.POINT_TP_NAME,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info,fes_digital_ctrl WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital_ctrl.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.POINT_TP_NAME) AND tb1.OUT_SEC_SEQ_NO4 = tb2.SEQ_NO AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME,tb2.RTU_TAG, tb2.DOT_NO ,5 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO5 ,digital_temp_define.SEC_DEVTP_NAME,digital_temp_define.SEC_DEV_IN_GRP FROM dev_info,digital,digital_control,digital_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND digital.DEVICE = dev_info.TAG_NAME AND digital_control.TAG_NAME = digital.TAG_NAME AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO5,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO,fes_digital_ctrl.RTU_TAG, fes_digital_ctrl.SEQ_NO ,fes_digital_ctrl.POINT_TP_NAME,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info,fes_digital_ctrl WHERE fes_dev_info.DEV_GROUP = groupName AND fes_digital_ctrl.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.POINT_TP_NAME) AND tb1.OUT_SEC_SEQ_NO5 = tb2.SEQ_NO AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP; UPDATE digital_control INNER JOIN (SELECT KEY_ID_TAG,DOT_NO ,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_control.TAG_NAME = t1.KEY_ID_TAG AND t1.OFFSET_NO = 1 SET digital_control.OFFSET_NO1 = t1.DOT_NO; UPDATE digital_control INNER JOIN (SELECT KEY_ID_TAG,DOT_NO ,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_control.TAG_NAME = t1.KEY_ID_TAG AND t1.OFFSET_NO = 2 SET digital_control.OFFSET_NO2 = t1.DOT_NO; UPDATE digital_control INNER JOIN (SELECT KEY_ID_TAG,DOT_NO ,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_control.TAG_NAME = t1.KEY_ID_TAG AND t1.OFFSET_NO = 3 SET digital_control.OFFSET_NO3 = t1.DOT_NO; UPDATE digital_control INNER JOIN (SELECT KEY_ID_TAG,DOT_NO ,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_control.TAG_NAME = t1.KEY_ID_TAG AND t1.OFFSET_NO = 4 SET digital_control.OFFSET_NO4 = t1.DOT_NO; UPDATE digital_control INNER JOIN (SELECT KEY_ID_TAG,DOT_NO ,OFFSET_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON digital_control.TAG_NAME = t1.KEY_ID_TAG AND t1.OFFSET_NO = 5 SET digital_control.OFFSET_NO5 = t1.DOT_NO; #mix_ctrl DELETE FROM tmpRelationGroupTbl; INSERT INTO tmpRelationGroupTbl (KEY_ID_TAG ,RTU_TAG, DOT_NO ) SELECT tb1.TAG_NAME, tb2.RTU_TAG,tb2.DOT_NO FROM (SELECT mix_control.TAG_NAME,mix_temp_define.OUT_SEC_SEQ_NO ,mix_temp_define.SEC_DEVTP_NAME,mix_temp_define.SEC_DEV_IN_GRP FROM dev_info,mix, mix_control,mix_temp_define WHERE dev_info.GROUP_TAG_NAME = groupName AND mix.DEVICE = dev_info.TAG_NAME AND mix_control.TAG_NAME = mix.TAG_NAME AND mix_control.POINT_TP_NAME= mix_temp_define.TAG_NAME AND COALESCE(mix_temp_define.OUT_SEC_SEQ_NO,-1) >= 0 )tb1 INNER JOIN (SELECT fes_mix_ctrl.DOT_NO,fes_mix_ctrl.RTU_TAG, fes_mix_ctrl.SEQ_NO ,fes_mix_ctrl.POINT_TP_NAME,fes_dev_info.NO_IN_DEV_GRP FROM fes_dev_info,fes_mix_ctrl WHERE fes_dev_info.DEV_GROUP = groupName AND fes_mix_ctrl.DEV_TAG = fes_dev_info.TAG_NAME )tb2 ON tb1.SEC_DEVTP_NAME = getBeforeLastDot(tb2.POINT_TP_NAME) AND tb1.OUT_SEC_SEQ_NO = tb2.SEQ_NO AND tb1.SEC_DEV_IN_GRP = tb2.NO_IN_DEV_GRP; UPDATE mix_control INNER JOIN (SELECT KEY_ID_TAG,DOT_NO FROM tmpRelationGroupTbl GROUP BY RTU_TAG,DOT_NO ) t1 ON mix_control.TAG_NAME = t1.KEY_ID_TAG SET mix_control.OFFSET_NO = t1.DOT_NO; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `relationByPlugin`; DELIMITER $$ CREATE PROCEDURE `relationByPlugin`(pluginName varchar(64), devTag varchar(64),fesDevTag varchar(64)) body:BEGIN #使用套件中的关联关系,关联前置和后台设备,仅关联套件中指定了关联关系的测点,需注意,为了加快速度,默认此时的后台设备的RTU标签为空,若不为空,调用此存储过程前,请先置空 #pluginName 套件名 #devTag 后台设备名 #fesDevTag 前置设备名 DECLARE rtuTag varchar(64) DEFAULT ''; DECLARE tempName varchar(64) DEFAULT ''; DECLARE fesTempName varchar(64) DEFAULT ''; SELECT DEV_TP_NAME INTO tempName FROM dev_info WHERE TAG_NAME = devTag; SELECT RTU_TAG,DEV_TP_NAME INTO rtuTag,fesTempName FROM fes_dev_info WHERE TAG_NAME = fesDevTag; IF COALESCE(tempName,'') = '' OR COALESCE(fesTempName,'') = '' OR COALESCE(rtuTag,'') = '' THEN LEAVE body; END IF; #创建临时表 CREATE TEMPORARY TABLE IF NOT EXISTS tmpRelationByPluginTbl( KEY_ID_TAG varchar(128) NOT NULL, DOT_NO varchar(48) NOT NULL, OFFSET_NO decimal(10) NOT NULL DEFAULT 0, PRIMARY KEY(KEY_ID_TAG,OFFSET_NO) ); #以accuml为例,进行说明.把后台设备下的所有accuml点,和对应的前置设备下的fes_accuml点的Key_ID_TAG和DOT_NO写入临时表 DELETE FROM tmpRelationByPluginTbl; INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO) SELECT accuml_map_to_fes.KEY_ID_TAG,fes_accuml.DOT_NO FROM (temp_plugin_point_map_acc INNER JOIN accuml_map_to_fes ON temp_plugin_point_map_acc.PLUGIN_NAME = pluginName AND temp_plugin_point_map_acc.TEMP_NAME = tempName AND temp_plugin_point_map_acc.FES_TEMP_NAME = fesTempName AND accuml_map_to_fes.KEY_ID_TAG = concat('accuml','.' ,devTag,'.',TEMP_POINT_NAME) ) INNER JOIN fes_accuml ON fes_accuml.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_accuml.DEV_TAG = fesDevTag AND fes_accuml.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME); #假如前置点已经被占用,先清除 UPDATE fes_accuml INNER JOIN tmpRelationByPluginTbl ON fes_accuml.TAG_NAME = concat(rtuTag,'.', tmpRelationByPluginTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #模拟手动操作,先关联对应RTU,再关联对应点 UPDATE accuml INNER JOIN tmpRelationByPluginTbl ON TAG_NAME = mid(KEY_ID_TAG,8,char_length(KEY_ID_TAG) - 7) SET RTU_TAG = rtuTag ; UPDATE accuml_map_to_fes INNER JOIN tmpRelationByPluginTbl ON accuml_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG SET accuml_map_to_fes.DOT_NO = tmpRelationByPluginTbl.DOT_NO; #analog DELETE FROM tmpRelationByPluginTbl; INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO) SELECT analog_map_to_fes.KEY_ID_TAG,fes_analog.DOT_NO FROM (temp_plugin_point_map_ana INNER JOIN analog_map_to_fes ON temp_plugin_point_map_ana.PLUGIN_NAME = pluginName AND temp_plugin_point_map_ana.TEMP_NAME = tempName AND temp_plugin_point_map_ana.FES_TEMP_NAME = fesTempName AND analog_map_to_fes.KEY_ID_TAG = concat('analog','.' ,devTag,'.',TEMP_POINT_NAME) ) INNER JOIN fes_analog ON fes_analog.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_analog.DEV_TAG = fesDevTag AND fes_analog.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME); #假如前置点已经被占用,先清除 UPDATE fes_analog INNER JOIN tmpRelationByPluginTbl ON fes_analog.TAG_NAME = concat(rtuTag,'.', tmpRelationByPluginTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #模拟手动操作,先关联对应RTU,再关联对应点 UPDATE analog INNER JOIN tmpRelationByPluginTbl ON TAG_NAME = mid(KEY_ID_TAG,8,char_length(KEY_ID_TAG) - 7) SET RTU_TAG = rtuTag ; UPDATE analog_map_to_fes INNER JOIN tmpRelationByPluginTbl ON analog_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG SET analog_map_to_fes.DOT_NO = tmpRelationByPluginTbl.DOT_NO; #mix DELETE FROM tmpRelationByPluginTbl; INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO) SELECT mix_map_to_fes.KEY_ID_TAG,fes_mix.DOT_NO FROM (temp_plugin_point_map_mix INNER JOIN mix_map_to_fes ON temp_plugin_point_map_mix.PLUGIN_NAME = pluginName AND temp_plugin_point_map_mix.TEMP_NAME = tempName AND temp_plugin_point_map_mix.FES_TEMP_NAME = fesTempName AND mix_map_to_fes.KEY_ID_TAG = concat('mix','.' ,devTag,'.',TEMP_POINT_NAME) ) INNER JOIN fes_mix ON fes_mix.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_mix.DEV_TAG = fesDevTag AND fes_mix.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME); #假如前置点已经被占用,先清除 UPDATE fes_mix INNER JOIN tmpRelationByPluginTbl ON fes_mix.TAG_NAME = concat(rtuTag,'.', tmpRelationByPluginTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #模拟手动操作,先关联对应RTU,再关联对应点 UPDATE mix INNER JOIN tmpRelationByPluginTbl ON TAG_NAME = mid(KEY_ID_TAG,5,char_length(KEY_ID_TAG) - 4) SET RTU_TAG = rtuTag ; UPDATE mix_map_to_fes INNER JOIN tmpRelationByPluginTbl ON mix_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG SET mix_map_to_fes.DOT_NO = tmpRelationByPluginTbl.DOT_NO; #dig DELETE FROM tmpRelationByPluginTbl; INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG,fes_digital.DOT_NO,1 FROM (temp_plugin_point_map_dig INNER JOIN digital_map_to_fes ON temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_POINT_NAME1 <> '' AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,devTag,'.',TEMP_POINT_NAME) ) INNER JOIN fes_digital ON fes_digital.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital.DEV_TAG = fesDevTag AND fes_digital.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME1); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG,fes_digital.DOT_NO,2 FROM (temp_plugin_point_map_dig INNER JOIN digital_map_to_fes ON temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_POINT_NAME2 <> '' AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,devTag,'.',TEMP_POINT_NAME)) INNER JOIN fes_digital ON fes_digital.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital.DEV_TAG = fesDevTag AND fes_digital.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME2); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG,fes_digital.DOT_NO,3 FROM (temp_plugin_point_map_dig INNER JOIN digital_map_to_fes ON temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_POINT_NAME3 <> '' AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,devTag,'.',TEMP_POINT_NAME)) INNER JOIN fes_digital ON fes_digital.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital.DEV_TAG = fesDevTag AND fes_digital.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME3); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG,fes_digital.DOT_NO,4 FROM (temp_plugin_point_map_dig INNER JOIN digital_map_to_fes ON temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_POINT_NAME4 <> '' AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,devTag,'.',TEMP_POINT_NAME)) INNER JOIN fes_digital ON fes_digital.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital.DEV_TAG = fesDevTag AND fes_digital.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME4); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_map_to_fes.KEY_ID_TAG,fes_digital.DOT_NO,5 FROM (temp_plugin_point_map_dig INNER JOIN digital_map_to_fes ON temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_POINT_NAME5 <> '' AND digital_map_to_fes.KEY_ID_TAG = concat('digital','.' ,devTag,'.',TEMP_POINT_NAME) ) INNER JOIN fes_digital ON fes_digital.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital.DEV_TAG = fesDevTag AND fes_digital.FES_POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_POINT_NAME5); #假如前置点已经被占用,先清除 UPDATE fes_digital INNER JOIN tmpRelationByPluginTbl ON fes_digital.TAG_NAME = concat(rtuTag,'.', tmpRelationByPluginTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #模拟手动操作,先关联对应RTU,再关联对应点 UPDATE digital INNER JOIN tmpRelationByPluginTbl ON TAG_NAME = mid(KEY_ID_TAG,9,char_length(KEY_ID_TAG) - 8) SET RTU_TAG = rtuTag ; UPDATE digital_map_to_fes INNER JOIN tmpRelationByPluginTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 1 SET digital_map_to_fes.DOT_NO1 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationByPluginTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 2 SET digital_map_to_fes.DOT_NO2 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationByPluginTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 3 SET digital_map_to_fes.DOT_NO3 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationByPluginTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 4 SET digital_map_to_fes.DOT_NO4 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationByPluginTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 5 SET digital_map_to_fes.DOT_NO5 = tmpRelationByPluginTbl.DOT_NO; #对于控制点 #analog_ctrl DELETE FROM tmpRelationByPluginTbl; INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO) SELECT analog_control.TAG_NAME,fes_analog_ctrl.DOT_NO FROM temp_plugin_point_map_ana,analog_control,fes_analog_ctrl WHERE temp_plugin_point_map_ana.PLUGIN_NAME = pluginName AND temp_plugin_point_map_ana.TEMP_NAME = tempName AND temp_plugin_point_map_ana.FES_TEMP_NAME = fesTempName AND analog_control.TAG_NAME = concat(devTag,'.',TEMP_POINT_NAME) AND fes_analog_ctrl.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_analog_ctrl.DEV_TAG = fesDevTag AND fes_analog_ctrl.POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_OUT_NAME); UPDATE analog_control INNER JOIN tmpRelationByPluginTbl ON analog_control.TAG_NAME = tmpRelationByPluginTbl.KEY_ID_TAG SET analog_control.OFFSET_NO = tmpRelationByPluginTbl.DOT_NO; #mix_ctrl DELETE FROM tmpRelationByPluginTbl; INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO) SELECT mix_control.TAG_NAME,fes_mix_ctrl.DOT_NO FROM temp_plugin_point_map_mix,mix_control,fes_mix_ctrl WHERE temp_plugin_point_map_mix.PLUGIN_NAME = pluginName AND temp_plugin_point_map_mix.TEMP_NAME = tempName AND temp_plugin_point_map_mix.FES_TEMP_NAME = fesTempName AND mix_control.TAG_NAME = concat(devTag,'.',TEMP_POINT_NAME) AND fes_mix_ctrl.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_mix_ctrl.DEV_TAG = fesDevTag AND fes_mix_ctrl.POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_OUT_NAME); UPDATE mix_control INNER JOIN tmpRelationByPluginTbl ON mix_control.TAG_NAME = tmpRelationByPluginTbl.KEY_ID_TAG SET mix_control.OFFSET_NO = tmpRelationByPluginTbl.DOT_NO; #digital_ctrl DELETE FROM tmpRelationByPluginTbl; INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_control.TAG_NAME,fes_digital_ctrl.DOT_NO, 1 FROM temp_plugin_point_map_dig,digital_control,fes_digital_ctrl WHERE temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_OUT_NAME1 <> '' AND digital_control.TAG_NAME = concat(devTag,'.',TEMP_POINT_NAME) AND fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital_ctrl.DEV_TAG = fesDevTag AND fes_digital_ctrl.POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_OUT_NAME1); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_control.TAG_NAME,fes_digital_ctrl.DOT_NO, 2 FROM temp_plugin_point_map_dig,digital_control,fes_digital_ctrl WHERE temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_OUT_NAME2 <> '' AND digital_control.TAG_NAME = concat(devTag,'.',TEMP_POINT_NAME) AND fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital_ctrl.DEV_TAG = fesDevTag AND fes_digital_ctrl.POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_OUT_NAME2); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_control.TAG_NAME,fes_digital_ctrl.DOT_NO, 3 FROM temp_plugin_point_map_dig,digital_control,fes_digital_ctrl WHERE temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_OUT_NAME3 <> '' AND digital_control.TAG_NAME = concat(devTag,'.',TEMP_POINT_NAME) AND fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital_ctrl.DEV_TAG = fesDevTag AND fes_digital_ctrl.POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_OUT_NAME3); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_control.TAG_NAME,fes_digital_ctrl.DOT_NO, 4 FROM temp_plugin_point_map_dig,digital_control,fes_digital_ctrl WHERE temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_OUT_NAME4 <> '' AND digital_control.TAG_NAME = concat(devTag,'.',TEMP_POINT_NAME) AND fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital_ctrl.DEV_TAG = fesDevTag AND fes_digital_ctrl.POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_OUT_NAME4); INSERT INTO tmpRelationByPluginTbl (KEY_ID_TAG , DOT_NO,OFFSET_NO) SELECT digital_control.TAG_NAME,fes_digital_ctrl.DOT_NO, 5 FROM temp_plugin_point_map_dig,digital_control,fes_digital_ctrl WHERE temp_plugin_point_map_dig.PLUGIN_NAME = pluginName AND temp_plugin_point_map_dig.TEMP_NAME = tempName AND temp_plugin_point_map_dig.FES_TEMP_NAME = fesTempName AND temp_plugin_point_map_dig.FES_TEMP_OUT_NAME5 <> '' AND digital_control.TAG_NAME = concat(devTag,'.',TEMP_POINT_NAME) AND fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'.','%') AND fes_digital_ctrl.DEV_TAG = fesDevTag AND fes_digital_ctrl.POINT_TP_NAME = concat(FES_TEMP_NAME,'.',FES_TEMP_OUT_NAME5); #主要为了对应测点只遥控无采集的情况 UPDATE digital INNER JOIN tmpRelationByPluginTbl ON TAG_NAME = KEY_ID_TAG AND OFFSET_NO = 1 SET RTU_TAG = rtuTag ; UPDATE digital_control INNER JOIN tmpRelationByPluginTbl ON digital_control.TAG_NAME = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 1 SET digital_control.OFFSET_NO1 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationByPluginTbl ON digital_control.TAG_NAME = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 2 SET digital_control.OFFSET_NO2 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationByPluginTbl ON digital_control.TAG_NAME = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 3 SET digital_control.OFFSET_NO3 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationByPluginTbl ON digital_control.TAG_NAME = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 4 SET digital_control.OFFSET_NO4 = tmpRelationByPluginTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationByPluginTbl ON digital_control.TAG_NAME = tmpRelationByPluginTbl.KEY_ID_TAG AND tmpRelationByPluginTbl.OFFSET_NO = 5 SET digital_control.OFFSET_NO5 = tmpRelationByPluginTbl.DOT_NO; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `relationFesByName`; DELIMITER $$ CREATE PROCEDURE `relationFesByName`(devTag varchar(64),fesDevTag varchar(64)) body:BEGIN /* * 后台和FES的两个设备之间名称相同的测点做关联 */ DECLARE rtuTag varchar(64); IF COALESCE(devTag,'') = '' OR COALESCE(fesDevTag,'')='' THEN LEAVE body; END IF; SELECT RTU_TAG INTO rtuTag FROM fes_dev_info WHERE TAG_NAME = fesDevTag; IF COALESCE(rtuTag,'') = '' THEN LEAVE body; END IF; #首先清空本设备的关联 CALL bingRtu(devTag,''); UPDATE fes_accuml SET APP_COLUMN_NAME = '',APP_TABLE_NAME = '' ,APP_TAG_NAME = '' WHERE DEV_TAG = fesDevTag; UPDATE fes_analog SET APP_COLUMN_NAME = '',APP_TABLE_NAME = '' ,APP_TAG_NAME = '' WHERE DEV_TAG = fesDevTag; UPDATE fes_digital SET APP_COLUMN_NAME = '',APP_TABLE_NAME = '' ,APP_TAG_NAME = '' WHERE DEV_TAG = fesDevTag; UPDATE fes_mix SET APP_COLUMN_NAME = '',APP_TABLE_NAME = '' ,APP_TAG_NAME = '' WHERE DEV_TAG = fesDevTag; #关联acc UPDATE accuml SET RTU_TAG = rtuTag WHERE DEVICE = devTag; UPDATE analog SET RTU_TAG = rtuTag WHERE DEVICE = devTag; UPDATE digital SET RTU_TAG = rtuTag WHERE DEVICE = devTag; UPDATE mix SET RTU_TAG = rtuTag WHERE DEVICE = devTag; #创建临时表 CREATE TEMPORARY TABLE IF NOT EXISTS tmpRelationFesByNameTbl( KEY_ID_TAG varchar(128) NOT NULL, DOT_NO varchar(48) NOT NULL ); #acc DELETE FROM tmpRelationFesByNameTbl; INSERT INTO tmpRelationFesByNameTbl(KEY_ID_TAG,DOT_NO) SELECT accuml_map_to_fes.KEY_ID_TAG,fes_accuml.DOT_NO FROM accuml_map_to_fes INNER JOIN fes_accuml ON accuml_map_to_fes.KEY_ID_TAG LIKE concat('accuml.',devTag,'.%') AND fes_accuml.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_accuml.DEV_TAG = fesDevTag AND getAfterLastDot(accuml_map_to_fes.KEY_ID_TAG) = getAfterLastDot(fes_accuml.FES_POINT_TP_NAME); UPDATE accuml_map_to_fes INNER JOIN tmpRelationFesByNameTbl ON accuml_map_to_fes.KEY_ID_TAG = tmpRelationFesByNameTbl.KEY_ID_TAG SET accuml_map_to_fes.RTU_TAG = rtuTag,accuml_map_to_fes.DOT_NO = tmpRelationFesByNameTbl.DOT_NO; #ana DELETE FROM tmpRelationFesByNameTbl; INSERT INTO tmpRelationFesByNameTbl(KEY_ID_TAG,DOT_NO) SELECT analog_map_to_fes.KEY_ID_TAG,fes_analog.DOT_NO FROM analog_map_to_fes INNER JOIN fes_analog ON analog_map_to_fes.KEY_ID_TAG LIKE concat('analog.',devTag,'.%') AND fes_analog.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_analog.DEV_TAG = fesDevTag AND getAfterLastDot(analog_map_to_fes.KEY_ID_TAG) = getAfterLastDot(fes_analog.FES_POINT_TP_NAME); UPDATE analog_map_to_fes INNER JOIN tmpRelationFesByNameTbl ON analog_map_to_fes.KEY_ID_TAG = tmpRelationFesByNameTbl.KEY_ID_TAG SET analog_map_to_fes.RTU_TAG = rtuTag,analog_map_to_fes.DOT_NO = tmpRelationFesByNameTbl.DOT_NO; #dig DELETE FROM tmpRelationFesByNameTbl; INSERT INTO tmpRelationFesByNameTbl(KEY_ID_TAG,DOT_NO) SELECT digital_map_to_fes.KEY_ID_TAG,fes_digital.DOT_NO FROM digital_map_to_fes INNER JOIN fes_digital ON digital_map_to_fes.KEY_ID_TAG LIKE concat('digital.',devTag,'.%') AND fes_digital.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_digital.DEV_TAG = fesDevTag AND getAfterLastDot(digital_map_to_fes.KEY_ID_TAG) = getAfterLastDot(fes_digital.FES_POINT_TP_NAME); UPDATE digital_map_to_fes INNER JOIN tmpRelationFesByNameTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationFesByNameTbl.KEY_ID_TAG SET digital_map_to_fes.RTU_TAG = rtuTag,digital_map_to_fes.DOT_NO1 = tmpRelationFesByNameTbl.DOT_NO; #mix DELETE FROM tmpRelationFesByNameTbl; INSERT INTO tmpRelationFesByNameTbl(KEY_ID_TAG,DOT_NO) SELECT mix_map_to_fes.KEY_ID_TAG,fes_mix.DOT_NO FROM mix_map_to_fes INNER JOIN fes_mix ON mix_map_to_fes.KEY_ID_TAG LIKE concat('mix.',devTag,'.%') AND fes_mix.TAG_NAME LIKE concat(rtuTag,'.%') AND fes_mix.DEV_TAG = fesDevTag AND getAfterLastDot(mix_map_to_fes.KEY_ID_TAG) = getAfterLastDot(fes_mix.FES_POINT_TP_NAME); UPDATE mix_map_to_fes INNER JOIN tmpRelationFesByNameTbl ON mix_map_to_fes.KEY_ID_TAG = tmpRelationFesByNameTbl.KEY_ID_TAG SET mix_map_to_fes.RTU_TAG = rtuTag,mix_map_to_fes.DOT_NO = tmpRelationFesByNameTbl.DOT_NO; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `relationToFes`; DELIMITER $$ CREATE PROCEDURE `relationToFes`(devTagName varchar(64), fesDevTagName varchar(64)) body:BEGIN /* * 后台和FES的两个设备之间做关联,使用前,先检查后台设备的模板和前置的模板是否有所关联,已经关联的测点不会再关联,若想关联,先清除 */ DECLARE rtuTagName varchar(64); DECLARE fesDevTempTagName varchar(64); IF COALESCE(devTagName,'') = '' OR COALESCE(fesDevTagName,'')='' THEN LEAVE body; END IF; SELECT RTU_TAG,DEV_TP_NAME INTO rtuTagName,fesDevTempTagName FROM fes_dev_info WHERE TAG_NAME = fesDevTagName; IF COALESCE(rtuTagName,'') = '' OR COALESCE(fesDevTempTagName,'')='' THEN LEAVE body; END IF; #创建临时表 CREATE TEMPORARY TABLE IF NOT EXISTS tmpRelationToFesTbl( KEY_ID_TAG varchar(128) NOT NULL, DOT_NO varchar(48) NOT NULL, OFFSET_NO decimal(10) ); DELETE FROM tmpRelationToFesTbl; #以accuml为例,进行说明.把后台设备下的所有accuml点,和对应的前置设备下的fes_accuml点的Key_ID_TAG和DOT_NO写入临时表 INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO FROM (SELECT accuml_map_to_fes.KEY_ID_TAG,accuml_temp_define.SEC_SEQ_NO FROM accuml_map_to_fes,accuml_temp_define WHERE accuml_map_to_fes.KEY_ID_TAG like concat('accuml','.' ,devTagName,'.','%') AND accuml_map_to_fes.POINT_TP_NAME= accuml_temp_define.TAG_NAME AND accuml_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND COALESCE(accuml_temp_define.SEC_SEQ_NO,-1) >= 0 ) tb1 INNER JOIN (SELECT fes_accuml.DOT_NO, fes_accuml.SEQ_NO FROM fes_accuml WHERE fes_accuml.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_accuml.FES_POINT_TP_NAME) = fesDevTempTagName ) tb2 ON tb1.SEC_SEQ_NO = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_accuml INNER JOIN tmpRelationToFesTbl ON fes_accuml.TAG_NAME = concat(rtuTagName,'.', tmpRelationToFesTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE accuml INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = ''; #模拟手动操作,先关联对应RTU,再关联对应点 UPDATE accuml INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = rtuTagName ; UPDATE accuml_map_to_fes INNER JOIN tmpRelationToFesTbl ON accuml_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG SET accuml_map_to_fes.DOT_NO = tmpRelationToFesTbl.DOT_NO; #analog DELETE FROM tmpRelationToFesTbl; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO FROM (SELECT analog_map_to_fes.KEY_ID_TAG,analog_temp_define.SEC_SEQ_NO FROM analog_map_to_fes,analog_temp_define WHERE analog_map_to_fes.KEY_ID_TAG like concat('analog','.' ,devTagName,'.','%') AND analog_map_to_fes.POINT_TP_NAME= analog_temp_define.TAG_NAME AND analog_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND COALESCE(analog_temp_define.SEC_SEQ_NO,-1) >= 0 )tb1 INNER JOIN (SELECT fes_analog.DOT_NO, fes_analog.SEQ_NO FROM fes_analog WHERE fes_analog.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_analog.FES_POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.SEC_SEQ_NO = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_analog INNER JOIN tmpRelationToFesTbl ON fes_analog.TAG_NAME = concat(rtuTagName,'.', tmpRelationToFesTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE analog INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = ''; UPDATE analog INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = rtuTagName; UPDATE analog_map_to_fes INNER JOIN tmpRelationToFesTbl ON analog_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG SET analog_map_to_fes.DOT_NO = tmpRelationToFesTbl.DOT_NO; #digital有五个分量,要注意 DELETE FROM tmpRelationToFesTbl; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO ,1 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_SEQ_NO1 FROM digital_map_to_fes,digital_temp_define WHERE digital_map_to_fes.KEY_ID_TAG like concat('digital','.' ,devTagName,'.','%') AND digital_map_to_fes.POINT_TP_NAME= digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND COALESCE(digital_temp_define.SEC_SEQ_NO1,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.DOT_NO, fes_digital.SEQ_NO FROM fes_digital WHERE fes_digital.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital.FES_POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.SEC_SEQ_NO1 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO ,2 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_SEQ_NO2 FROM digital_map_to_fes,digital_temp_define WHERE digital_map_to_fes.KEY_ID_TAG like concat('digital','.' ,devTagName,'.','%') AND digital_map_to_fes.POINT_TP_NAME= digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND COALESCE(digital_temp_define.SEC_SEQ_NO2,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.DOT_NO, fes_digital.SEQ_NO FROM fes_digital WHERE fes_digital.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital.FES_POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.SEC_SEQ_NO2 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO ,3 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_SEQ_NO3 FROM digital_map_to_fes,digital_temp_define WHERE digital_map_to_fes.KEY_ID_TAG like concat('digital','.' ,devTagName,'.','%') AND digital_map_to_fes.POINT_TP_NAME= digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND COALESCE(digital_temp_define.SEC_SEQ_NO3,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.DOT_NO, fes_digital.SEQ_NO FROM fes_digital WHERE fes_digital.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital.FES_POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.SEC_SEQ_NO3 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO ,4 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_SEQ_NO4 FROM digital_map_to_fes,digital_temp_define WHERE digital_map_to_fes.KEY_ID_TAG like concat('digital','.' ,devTagName,'.','%') AND digital_map_to_fes.POINT_TP_NAME= digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND COALESCE(digital_temp_define.SEC_SEQ_NO4,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.DOT_NO, fes_digital.SEQ_NO FROM fes_digital WHERE fes_digital.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital.FES_POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.SEC_SEQ_NO4 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO ,5 FROM (SELECT digital_map_to_fes.KEY_ID_TAG,digital_temp_define.SEC_SEQ_NO5 FROM digital_map_to_fes,digital_temp_define WHERE digital_map_to_fes.KEY_ID_TAG like concat('digital','.' ,devTagName,'.','%') AND digital_map_to_fes.POINT_TP_NAME= digital_temp_define.TAG_NAME AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName AND COALESCE(digital_temp_define.SEC_SEQ_NO5,-1) >= 0 )tb1 INNER JOIN (SELECT fes_digital.DOT_NO, fes_digital.SEQ_NO FROM fes_digital WHERE fes_digital.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital.FES_POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.SEC_SEQ_NO5 = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_digital INNER JOIN tmpRelationToFesTbl ON fes_digital.TAG_NAME = concat(rtuTagName,'.', tmpRelationToFesTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE digital INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = '' ; UPDATE digital INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = rtuTagName; UPDATE digital_map_to_fes INNER JOIN tmpRelationToFesTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 1 SET digital_map_to_fes.DOT_NO1 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationToFesTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 2 SET digital_map_to_fes.DOT_NO2 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationToFesTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 3 SET digital_map_to_fes.DOT_NO3 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationToFesTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 4 SET digital_map_to_fes.DOT_NO4 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_map_to_fes INNER JOIN tmpRelationToFesTbl ON digital_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 5 SET digital_map_to_fes.DOT_NO5 = tmpRelationToFesTbl.DOT_NO; #mix DELETE FROM tmpRelationToFesTbl; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ) SELECT tb1.KEY_ID_TAG, tb2.DOT_NO FROM (SELECT mix_map_to_fes.KEY_ID_TAG,mix_temp_define.SEC_SEQ_NO FROM mix_map_to_fes,mix_temp_define WHERE mix_map_to_fes.KEY_ID_TAG like concat('mix','.' ,devTagName,'.','%') AND mix_map_to_fes.POINT_TP_NAME= mix_temp_define.TAG_NAME AND mix_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_mix.DOT_NO, fes_mix.SEQ_NO FROM fes_mix WHERE fes_mix.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_mix.FES_POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.SEC_SEQ_NO = tb2.SEQ_NO; #假如前置点已经被占用,先清除 UPDATE fes_mix INNER JOIN tmpRelationToFesTbl ON fes_mix.TAG_NAME = concat(rtuTagName,'.', tmpRelationToFesTbl.DOT_NO) SET APP_TABLE_NAME='',APP_TAG_NAME='',APP_COLUMN_NAME=''; #清除后台的 UPDATE mix INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = '' ; UPDATE mix INNER JOIN tmpRelationToFesTbl ON TAG_NAME = getAfterFirstDot(tmpRelationToFesTbl.KEY_ID_TAG) SET RTU_TAG = rtuTagName; UPDATE mix_map_to_fes INNER JOIN tmpRelationToFesTbl ON mix_map_to_fes.KEY_ID_TAG = tmpRelationToFesTbl.KEY_ID_TAG SET mix_map_to_fes.DOT_NO = tmpRelationToFesTbl.DOT_NO; #最后只剩下对应控制点,没有关联 #analog_ctrl DELETE FROM tmpRelationToFesTbl; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ) SELECT tb1.TAG_NAME, tb2.DOT_NO FROM (SELECT analog_control.TAG_NAME,analog_temp_define.OUT_SEC_SEQ_NO FROM analog_control,analog_temp_define WHERE analog_control.TAG_NAME like concat(devTagName,'.','%') AND analog_control.POINT_TP_NAME= analog_temp_define.TAG_NAME AND COALESCE(analog_temp_define.OUT_SEC_SEQ_NO,-1) >= 0 AND analog_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_analog_ctrl.DOT_NO, fes_analog_ctrl.SEQ_NO FROM fes_analog_ctrl WHERE fes_analog_ctrl.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_analog_ctrl.POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.OUT_SEC_SEQ_NO = tb2.SEQ_NO; UPDATE analog_control INNER JOIN tmpRelationToFesTbl ON analog_control.TAG_NAME = tmpRelationToFesTbl.KEY_ID_TAG SET analog_control.RTU_TAG = rtuTagName, analog_control.OFFSET_NO = tmpRelationToFesTbl.DOT_NO; #digital_Ctrl DELETE FROM tmpRelationToFesTbl; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME, tb2.DOT_NO ,1 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO1 FROM digital_control,digital_temp_define WHERE digital_control.TAG_NAME like concat(devTagName,'.','%') AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO1,-1) >= 0 AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO, fes_digital_ctrl.SEQ_NO FROM fes_digital_ctrl WHERE fes_digital_ctrl.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital_ctrl.POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.OUT_SEC_SEQ_NO1 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME, tb2.DOT_NO ,2 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO2 FROM digital_control,digital_temp_define WHERE digital_control.TAG_NAME like concat(devTagName,'.','%') AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO2,-1) >= 0 AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO, fes_digital_ctrl.SEQ_NO FROM fes_digital_ctrl WHERE fes_digital_ctrl.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital_ctrl.POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.OUT_SEC_SEQ_NO2 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME, tb2.DOT_NO ,3 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO3 FROM digital_control,digital_temp_define WHERE digital_control.TAG_NAME like concat(devTagName,'.','%') AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO3,-1) >= 0 AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO, fes_digital_ctrl.SEQ_NO FROM fes_digital_ctrl WHERE fes_digital_ctrl.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital_ctrl.POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.OUT_SEC_SEQ_NO3 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME, tb2.DOT_NO ,4 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO4 FROM digital_control,digital_temp_define WHERE digital_control.TAG_NAME like concat(devTagName,'.','%') AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO4,-1) >= 0 AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO, fes_digital_ctrl.SEQ_NO FROM fes_digital_ctrl WHERE fes_digital_ctrl.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital_ctrl.POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.OUT_SEC_SEQ_NO4 = tb2.SEQ_NO; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ,OFFSET_NO) SELECT tb1.TAG_NAME, tb2.DOT_NO ,5 FROM (SELECT digital_control.TAG_NAME,digital_temp_define.OUT_SEC_SEQ_NO5 FROM digital_control,digital_temp_define WHERE digital_control.TAG_NAME like concat(devTagName,'.','%') AND digital_control.POINT_TP_NAME= digital_temp_define.TAG_NAME AND COALESCE(digital_temp_define.OUT_SEC_SEQ_NO5,-1) >= 0 AND digital_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_digital_ctrl.DOT_NO, fes_digital_ctrl.SEQ_NO FROM fes_digital_ctrl WHERE fes_digital_ctrl.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_digital_ctrl.POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.OUT_SEC_SEQ_NO5 = tb2.SEQ_NO; UPDATE digital_control INNER JOIN tmpRelationToFesTbl ON digital_control.TAG_NAME = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 1 SET digital_control.RTU_TAG = rtuTagName, digital_control.OFFSET_NO1 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationToFesTbl ON digital_control.TAG_NAME = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 2 SET digital_control.RTU_TAG = rtuTagName, digital_control.OFFSET_NO2 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationToFesTbl ON digital_control.TAG_NAME = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 3 SET digital_control.RTU_TAG = rtuTagName, digital_control.OFFSET_NO3 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationToFesTbl ON digital_control.TAG_NAME = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 4 SET digital_control.RTU_TAG = rtuTagName, digital_control.OFFSET_NO4 = tmpRelationToFesTbl.DOT_NO; UPDATE digital_control INNER JOIN tmpRelationToFesTbl ON digital_control.TAG_NAME = tmpRelationToFesTbl.KEY_ID_TAG AND tmpRelationToFesTbl.OFFSET_NO = 5 SET digital_control.RTU_TAG = rtuTagName, digital_control.OFFSET_NO5 = tmpRelationToFesTbl.DOT_NO; #mix_ctrl DELETE FROM tmpRelationToFesTbl; INSERT INTO tmpRelationToFesTbl (KEY_ID_TAG , DOT_NO ) SELECT tb1.TAG_NAME, tb2.DOT_NO FROM (SELECT mix_control.TAG_NAME,mix_temp_define.OUT_SEC_SEQ_NO FROM mix_control,mix_temp_define WHERE mix_control.TAG_NAME like concat(devTagName,'.','%') AND mix_control.POINT_TP_NAME= mix_temp_define.TAG_NAME AND COALESCE(mix_temp_define.OUT_SEC_SEQ_NO,-1) >= 0 AND mix_temp_define.SEC_DEVTP_NAME = fesDevTempTagName )tb1 INNER JOIN (SELECT fes_mix_ctrl.DOT_NO, fes_mix_ctrl.SEQ_NO FROM fes_mix_ctrl WHERE fes_mix_ctrl.DEV_TAG = fesDevTagName AND getBeforeLastDot(fes_mix_ctrl.POINT_TP_NAME) = fesDevTempTagName )tb2 ON tb1.OUT_SEC_SEQ_NO = tb2.SEQ_NO; UPDATE mix_control INNER JOIN tmpRelationToFesTbl ON mix_control.TAG_NAME = tmpRelationToFesTbl.KEY_ID_TAG SET mix_control.RTU_TAG = rtuTagName, mix_control.OFFSET_NO = tmpRelationToFesTbl.DOT_NO; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `sortResPara1`; DELIMITER $$ CREATE PROCEDURE `sortResPara1`(rtuTag varchar(64), startNum decimal(10,0)) body:BEGIN /* * 依据设备ID重排规约参数1 * */ #acc set @tmpResParaVar = startNum; UPDATE ( SELECT fes_accuml.TAG_NAME,fes_accuml.DESCRIPTION,fes_dev_info.DEV_DESC, fes_accuml.RES_PARA_INT1 FROM fes_accuml LEFT JOIN fes_dev_info on fes_accuml.DEV_TAG = fes_dev_info.TAG_NAME WHERE fes_accuml.TAG_NAME LIKE concat(rtuTag,'.%') ORDER BY fes_dev_info.DEV_ID,fes_accuml.SEQ_NO) temp LEFT JOIN fes_accuml ON temp.TAG_NAME = fes_accuml.TAG_NAME set fes_accuml.RES_PARA_INT1 = (@tmpResParaVar := @tmpResParaVar + 1); #ana set @tmpResParaVar = startNum; UPDATE ( SELECT fes_analog.TAG_NAME,fes_analog.DESCRIPTION,fes_dev_info.DEV_DESC, fes_analog.RES_PARA_INT1 FROM fes_analog LEFT JOIN fes_dev_info on fes_analog.DEV_TAG = fes_dev_info.TAG_NAME WHERE fes_analog.TAG_NAME LIKE concat(rtuTag,'.%') ORDER BY fes_dev_info.DEV_ID,fes_analog.SEQ_NO) temp LEFT JOIN fes_analog ON temp.TAG_NAME = fes_analog.TAG_NAME set fes_analog.RES_PARA_INT1 = (@tmpResParaVar := @tmpResParaVar + 1); #dig set @tmpResParaVar = startNum; UPDATE ( SELECT fes_digital.TAG_NAME,fes_digital.DESCRIPTION,fes_dev_info.DEV_DESC, fes_digital.RES_PARA_INT1 FROM fes_digital LEFT JOIN fes_dev_info on fes_digital.DEV_TAG = fes_dev_info.TAG_NAME WHERE fes_digital.TAG_NAME LIKE concat(rtuTag,'.%') ORDER BY fes_dev_info.DEV_ID,fes_digital.SEQ_NO) temp LEFT JOIN fes_digital ON temp.TAG_NAME = fes_digital.TAG_NAME set fes_digital.RES_PARA_INT1 = (@tmpResParaVar := @tmpResParaVar + 1); #mix set @tmpResParaVar = startNum; UPDATE ( SELECT fes_mix.TAG_NAME,fes_mix.DESCRIPTION,fes_dev_info.DEV_DESC, fes_mix.RES_PARA_INT1 FROM fes_mix LEFT JOIN fes_dev_info on fes_mix.DEV_TAG = fes_dev_info.TAG_NAME WHERE fes_mix.TAG_NAME LIKE concat(rtuTag,'.%') ORDER BY fes_dev_info.DEV_ID,fes_mix.SEQ_NO) temp LEFT JOIN fes_mix ON temp.TAG_NAME = fes_mix.TAG_NAME set fes_mix.RES_PARA_INT1 = (@tmpResParaVar := @tmpResParaVar + 1); #anaCtrl set @tmpResParaVar = startNum; UPDATE ( SELECT fes_analog_ctrl.TAG_NAME,fes_analog_ctrl.DESCRIPTION,fes_dev_info.DEV_DESC, fes_analog_ctrl.RES_PARA_INT1 FROM fes_analog_ctrl LEFT JOIN fes_dev_info on fes_analog_ctrl.DEV_TAG = fes_dev_info.TAG_NAME WHERE fes_analog_ctrl.TAG_NAME LIKE concat(rtuTag,'.%') ORDER BY fes_dev_info.DEV_ID,fes_analog_ctrl.SEQ_NO) temp LEFT JOIN fes_analog_ctrl ON temp.TAG_NAME = fes_analog_ctrl.TAG_NAME set fes_analog_ctrl.RES_PARA_INT1 = (@tmpResParaVar := @tmpResParaVar + 1); #digCtrl set @tmpResParaVar = startNum; UPDATE ( SELECT fes_digital_ctrl.TAG_NAME,fes_digital_ctrl.DESCRIPTION,fes_dev_info.DEV_DESC, fes_digital_ctrl.RES_PARA_INT1 FROM fes_digital_ctrl LEFT JOIN fes_dev_info on fes_digital_ctrl.DEV_TAG = fes_dev_info.TAG_NAME WHERE fes_digital_ctrl.TAG_NAME LIKE concat(rtuTag,'.%') ORDER BY fes_dev_info.DEV_ID,fes_digital_ctrl.SEQ_NO) temp LEFT JOIN fes_digital_ctrl ON temp.TAG_NAME = fes_digital_ctrl.TAG_NAME set fes_digital_ctrl.RES_PARA_INT1 = (@tmpResParaVar := @tmpResParaVar + 1); #mixCtrl set @tmpResParaVar = startNum; UPDATE ( SELECT fes_mix_ctrl.TAG_NAME,fes_mix_ctrl.DESCRIPTION,fes_dev_info.DEV_DESC, fes_mix_ctrl.RES_PARA_INT1 FROM fes_mix_ctrl LEFT JOIN fes_dev_info on fes_mix_ctrl.DEV_TAG = fes_dev_info.TAG_NAME WHERE fes_mix_ctrl.TAG_NAME LIKE concat(rtuTag,'.%') ORDER BY fes_dev_info.DEV_ID,fes_mix_ctrl.SEQ_NO) temp LEFT JOIN fes_mix_ctrl ON temp.TAG_NAME = fes_mix_ctrl.TAG_NAME set fes_mix_ctrl.RES_PARA_INT1 = (@tmpResParaVar := @tmpResParaVar + 1); END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `updateDescByFes`; DELIMITER $$ CREATE PROCEDURE `updateDescByFes`(devTagName varchar(64)) body:BEGIN #使用前置设备测点的描述,更新后台设备的测点的描述 #需要使用临时表先存储起来 CREATE TEMPORARY TABLE IF NOT EXISTS tmpUpdateDescByFesTbl( TAG_NAME varchar(64), DESCRIPTION varchar(128) ); #acc DELETE FROM tmpUpdateDescByFesTbl; INSERT INTO tmpUpdateDescByFesTbl(TAG_NAME,DESCRIPTION) SELECT accuml.TAG_NAME,fes_accuml.DESCRIPTION FROM (accuml INNER JOIN accuml_map_to_fes ON accuml.DEVICE = devTagName AND accuml_map_to_fes.KEY_ID_TAG = concat('accuml.',accuml.TAG_NAME)) INNER JOIN fes_accuml ON fes_accuml.TAG_NAME = concat(accuml_map_to_fes.RTU_TAG,'.',accuml_map_to_fes.DOT_NO); UPDATE accuml INNER JOIN tmpUpdateDescByFesTbl ON accuml.TAG_NAME = tmpUpdateDescByFesTbl.TAG_NAME SET accuml.DESCRIPTION = tmpUpdateDescByFesTbl.DESCRIPTION; #ana DELETE FROM tmpUpdateDescByFesTbl; INSERT INTO tmpUpdateDescByFesTbl(TAG_NAME,DESCRIPTION) SELECT analog.TAG_NAME,fes_analog.DESCRIPTION FROM (analog INNER JOIN analog_map_to_fes ON analog.DEVICE = devTagName AND analog_map_to_fes.KEY_ID_TAG = concat('analog.',analog.TAG_NAME)) INNER JOIN fes_analog ON fes_analog.TAG_NAME = concat(analog_map_to_fes.RTU_TAG,'.',analog_map_to_fes.DOT_NO); UPDATE analog INNER JOIN tmpUpdateDescByFesTbl ON analog.TAG_NAME = tmpUpdateDescByFesTbl.TAG_NAME SET analog.DESCRIPTION = tmpUpdateDescByFesTbl.DESCRIPTION; #dig DELETE FROM tmpUpdateDescByFesTbl; INSERT INTO tmpUpdateDescByFesTbl(TAG_NAME,DESCRIPTION) SELECT digital.TAG_NAME,fes_digital.DESCRIPTION FROM (digital INNER JOIN digital_map_to_fes ON digital.DEVICE = devTagName AND digital_map_to_fes.KEY_ID_TAG = concat('digital.',digital.TAG_NAME)) INNER JOIN fes_digital ON fes_digital.TAG_NAME = concat(digital_map_to_fes.RTU_TAG,'.',digital_map_to_fes.DOT_NO1); UPDATE digital INNER JOIN tmpUpdateDescByFesTbl ON digital.TAG_NAME = tmpUpdateDescByFesTbl.TAG_NAME SET digital.DESCRIPTION = tmpUpdateDescByFesTbl.DESCRIPTION; #mix DELETE FROM tmpUpdateDescByFesTbl; INSERT INTO tmpUpdateDescByFesTbl(TAG_NAME,DESCRIPTION) SELECT mix.TAG_NAME,fes_mix.DESCRIPTION FROM (mix INNER JOIN mix_map_to_fes ON mix.DEVICE = devTagName AND mix_map_to_fes.KEY_ID_TAG = concat('mix.',mix.TAG_NAME)) INNER JOIN fes_mix ON fes_mix.TAG_NAME = concat(mix_map_to_fes.RTU_TAG,'.',mix_map_to_fes.DOT_NO); UPDATE mix INNER JOIN tmpUpdateDescByFesTbl ON mix.TAG_NAME = tmpUpdateDescByFesTbl.TAG_NAME SET mix.DESCRIPTION = tmpUpdateDescByFesTbl.DESCRIPTION; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `updateForwardBase`; DELIMITER $$ CREATE PROCEDURE `updateForwardBase`(tableName varchar(64), rtuTagName varchar(64), bs decimal(22,6)) body:BEGIN /* * 修改转发表的修正值 */ IF lower(tableName) = 'fes_forwarding_accuml' THEN UPDATE fes_forwarding_accuml SET BASE = bs WHERE RTU_TAG = rtuTagName ; ELSEIF lower(tableName) = 'fes_forwarding_anaolg' THEN UPDATE fes_forwarding_anaolg SET BASE = bs WHERE RTU_TAG = rtuTagName ; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `updateForwardCoeff`; DELIMITER $$ CREATE PROCEDURE `updateForwardCoeff`( tableName varchar(64), rtuTagName varchar(64), coe decimal(22,6)) body:BEGIN #修改转发表的系数 IF lower(tableName) = 'fes_forwarding_accuml' THEN UPDATE fes_forwarding_accuml SET COEFF = coe WHERE RTU_TAG = rtuTagName ; ELSEIF lower(tableName) = 'fes_forwarding_anaolg' THEN UPDATE fes_forwarding_anaolg SET COEFF = coe WHERE RTU_TAG = rtuTagName ; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `updateForwardId`; DELIMITER $$ CREATE PROCEDURE `updateForwardId`(tableName varchar(64), rtuTagName varchar(64), remoteStartNo decimal(10,0)) body:BEGIN #修改前置编号 #tableName 表名 #rtuTagName 指定RTU #remoteStartNo 修改的起始数字 SET @forwardId := remoteStartNo - 1; IF lower(tableName) = 'fes_forwarding_accuml' THEN UPDATE fes_forwarding_accuml SET ID = (@forwardId := @forwardId + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_anaolg' THEN UPDATE fes_forwarding_anaolg SET ID = (@forwardId := @forwardId + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_anaolg_ctrl' THEN UPDATE fes_forwarding_anaolg_ctrl SET ID = (@forwardId := @forwardId + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_digital' THEN UPDATE fes_forwarding_digital SET ID = (@forwardId := @forwardId + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_digital_ctrl' THEN UPDATE fes_forwarding_digital_ctrl SET ID = (@forwardId := @forwardId + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `updateForwardRemote`; DELIMITER $$ CREATE PROCEDURE `updateForwardRemote`( tableName varchar(64), rtuTagName varchar(64), remoteStartNo decimal(10,0)) body:BEGIN #修改转发表的远动号 #因为后面会自动加1,这里先减1 SET @forwardRemoteNum := remoteStartNo - 1; IF lower(tableName) = 'fes_forwarding_accuml' THEN UPDATE fes_forwarding_accuml SET REMOTE_NO = (@forwardRemoteNum := @forwardRemoteNum + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_anaolg' THEN UPDATE fes_forwarding_anaolg SET REMOTE_NO = (@forwardRemoteNum := @forwardRemoteNum + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_anaolg_ctrl' THEN UPDATE fes_forwarding_anaolg_ctrl SET REMOTE_NO = (@forwardRemoteNum := @forwardRemoteNum + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_digital' THEN UPDATE fes_forwarding_digital SET REMOTE_NO = (@forwardRemoteNum := @forwardRemoteNum + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; ELSEIF lower(tableName) = 'fes_forwarding_digital_ctrl' THEN UPDATE fes_forwarding_digital_ctrl SET REMOTE_NO = (@forwardRemoteNum := @forwardRemoteNum + 1) WHERE RTU_TAG = rtuTagName ORDER BY ID; END IF; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `updateUsergRegion`; DELIMITER $$ CREATE PROCEDURE `updateUsergRegion`(roleId decimal(10,0)) BEGIN #更新用户组的责任区 #更新rm_userg_rsp_info表 CREATE TEMPORARY TABLE IF NOT EXISTS tmpUserGroupTbl( PERM_USER_GROUP decimal(10,0) ); DELETE FROM tmpUserGroupTbl; CREATE TEMPORARY TABLE IF NOT EXISTS tmpUURegion( PERM_USER_GROUP decimal(10,0), PERM_ROLE decimal(10,0), PERM_SPEFUNC decimal(10,0), PERM_REGION1 decimal(10,0), PERM_REGION2 decimal(10,0), PERM_REGION3 decimal(10,0), PERM_REGION4 decimal(10,0), PERM_LOCATION1 decimal(10,0), PERM_LOCATION2 decimal(10,0), PERM_LOCATION3 decimal(10,0), PERM_LOCATION4 decimal(10,0), PERM_LOCATION5 decimal(10,0), PERM_LOCATION6 decimal(10,0), PERM_LOCATION7 decimal(10,0), PERM_LOCATION8 decimal(10,0) ); DELETE FROM tmpUURegion; INSERT INTO tmpUserGroupTbl(PERM_USER_GROUP) SELECT PERM_USER_GROUP FROM rm_userg_rsp_info WHERE PERM_ROLE = roleId GROUP BY PERM_USER_GROUP; INSERT INTO tmpUURegion (PERM_USER_GROUP, PERM_ROLE, PERM_SPEFUNC, PERM_REGION1, PERM_REGION2, PERM_REGION3, PERM_REGION4, PERM_LOCATION1, PERM_LOCATION2, PERM_LOCATION3, PERM_LOCATION4, PERM_LOCATION5, PERM_LOCATION6, PERM_LOCATION7, PERM_LOCATION8) SELECT PERM_USER_GROUP, PERM_ROLE, PERM_SPEFUNC, PERM_REGION1, PERM_REGION2, PERM_REGION3, PERM_REGION4, PERM_LOCATION1, PERM_LOCATION2, PERM_LOCATION3, PERM_LOCATION4, PERM_LOCATION5, PERM_LOCATION6, PERM_LOCATION7, PERM_LOCATION8 FROM rm_userg_rsp_info WHERE PERM_ROLE = roleId; #删除旧的数据再重新插入 DELETE FROM rm_userg_rsp_info WHERE PERM_ROLE = roleId; INSERT INTO rm_userg_rsp_info(PERM_USER_GROUP, PERM_ROLE, PERM_SPEFUNC, PERM_REGION1, PERM_REGION2, PERM_REGION3, PERM_REGION4, PERM_LOCATION1, PERM_LOCATION2, PERM_LOCATION3, PERM_LOCATION4, PERM_LOCATION5, PERM_LOCATION6, PERM_LOCATION7, PERM_LOCATION8) SELECT tmpUserGroupTbl.PERM_USER_GROUP,roleId,rm_role_spef_reg.PERM_SPEFUNC,rm_role_spef_reg.PERM_REGION1,rm_role_spef_reg.PERM_REGION2,rm_role_spef_reg.PERM_REGION3,rm_role_spef_reg.PERM_REGION4,0,0,0,0,0,0,0,0 FROM rm_role_spef_reg ,tmpUserGroupTbl WHERE rm_role_spef_reg.PERM_ROLE=roleId; UPDATE rm_userg_rsp_info INNER JOIN tmpUURegion ON rm_userg_rsp_info.PERM_USER_GROUP = tmpUURegion.PERM_USER_GROUP AND rm_userg_rsp_info.PERM_ROLE = roleId AND tmpUURegion.PERM_ROLE = roleId AND rm_userg_rsp_info.PERM_SPEFUNC = tmpUURegion.PERM_SPEFUNC SET rm_userg_rsp_info.PERM_LOCATION1 = tmpUURegion.PERM_LOCATION1, rm_userg_rsp_info.PERM_LOCATION2 = tmpUURegion.PERM_LOCATION2, rm_userg_rsp_info.PERM_LOCATION3 = tmpUURegion.PERM_LOCATION3, rm_userg_rsp_info.PERM_LOCATION4 = tmpUURegion.PERM_LOCATION4, rm_userg_rsp_info.PERM_LOCATION5 = tmpUURegion.PERM_LOCATION5, rm_userg_rsp_info.PERM_LOCATION6 = tmpUURegion.PERM_LOCATION6, rm_userg_rsp_info.PERM_LOCATION7 = tmpUURegion.PERM_LOCATION7, rm_userg_rsp_info.PERM_LOCATION8 = tmpUURegion.PERM_LOCATION8; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `updateUsergRsp`; DELIMITER $$ CREATE PROCEDURE `updateUsergRsp`(userGId decimal(10,0)) BEGIN #更新rm_userg_rsp_info表 UPDATE rm_userg_rsp_info INNER JOIN rm_role_spef_reg ON rm_userg_rsp_info.PERM_ROLE = rm_role_spef_reg.PERM_ROLE AND rm_userg_rsp_info.PERM_SPEFUNC = rm_role_spef_reg.PERM_SPEFUNC AND rm_userg_rsp_info.PERM_USER_GROUP = userGId SET rm_userg_rsp_info.PERM_REGION1 = rm_role_spef_reg.PERM_REGION1, rm_userg_rsp_info.PERM_REGION2 = rm_role_spef_reg.PERM_REGION2, rm_userg_rsp_info.PERM_REGION3 = rm_role_spef_reg.PERM_REGION3, rm_userg_rsp_info.PERM_REGION4 = rm_role_spef_reg.PERM_REGION4; END$$ DELIMITER ; -- ------------------------------------------------------ DROP PROCEDURE IF EXISTS `userGRoleModify`; DELIMITER $$ CREATE PROCEDURE `userGRoleModify`(userGroupId decimal(10,0), roleIdList varchar(100)) BEGIN #针对用户组所属角色有所更改的情况 #userGroupId 用户组ID,不可为空 #roleIdList 该用户组所属的角色的ID号列表,以逗号分隔 #删除不在指定roleIdList表中的角色 DELETE FROM rm_userg_rsp_info WHERE PERM_USER_GROUP = userGroupId AND find_in_set(PERM_ROLE,roleIdList) = 0; END$$ DELIMITER ;