HM-SPMS/platform/common/database/initscript/iscs6000_func_MySQL.sql

9202 lines
499 KiB
MySQL
Raw Normal View History

-- ------------------------------------------------------
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
* 0FES_ACC
* 1FES_ANA
* 2FES_DIG
* 3FES_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 ;