-- 清除采集数据处理存储过程. DROP PROCEDURE IF EXISTS P_Q_D_HEATANALYSIS; -- 创建采集数据处理存储过程. CREATE PROCEDURE P_Q_D_HEATANALYSIS(V_CODE VARCHAR(50), V_SIM VARCHAR(50), V_DATATIME VARCHAR(50), V_VIEW01 DOUBLE, V_VIEW02 DOUBLE, V_VIEW03 DOUBLE, V_VIEW04 DOUBLE, V_VIEW05 DOUBLE, V_VIEW06 DOUBLE, V_VIEW07 DOUBLE, V_VIEW08 DOUBLE) BEGIN -- 设置手机号. SET @SIM = V_SIM; -- 设置设备代码. SET @CODE = V_CODE; -- 设置数据上报时间. SET @DATATIME = V_DATATIME; -- 设置第一路模拟量. SET @VIEW01 = V_VIEW01; -- 设置第二路模拟量. SET @VIEW02 = V_VIEW02; -- 设置第三路模拟量. SET @VIEW03 = V_VIEW03; -- 设置第四路模拟量. SET @VIEW04 = V_VIEW04; -- 设置第五路模拟量. SET @VIEW05 = V_VIEW05; -- 设置第六路模拟量. SET @VIEW06 = V_VIEW06; -- 设置第七路模拟量. SET @VIEW07 = V_VIEW07; -- 设置第八路模拟量. SET @VIEW08 = V_VIEW08; -- 设置历史数据表名. SET @HISTORY_TABLE = CONCAT('HEATANALYSIS_', DATE_FORMAT(NOW(), '%y%m')); -- 设置热力公司 SET @COMPANY = (SELECT COMPANY_COMPANY_ID FROM SIMCONFIG WHERE CODE = @CODE ORDER BY ID LIMIT 0, 1); -- 设置热源信息. SET @SOURCE = (SELECT SOURCE_SOURCE_ID FROM SIMCONFIG WHERE CODE = @CODE ORDER BY ID LIMIT 0, 1); -- 设置换热站信息. SET @STATION = (SELECT STATION_STATION_ID FROM SIMCONFIG WHERE CODE = @CODE ORDER BY ID LIMIT 0, 1); -- 验证是热源数据还是锅炉房数据. IF IFNULL(@STATION, 0) > 0 THEN -- 设置一次网供水温度(上限) -- SET @FEED_WATER_UPPER_ONE = (SELECT WDGO_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置一次网供水温度(下限) -- SET @FEED_WATER_LOWER_ONE = (SELECT WDGO_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置一次网回水温度(上限) -- SET @BACK_WATER_UPPER_ONE = (SELECT WDCOME_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置一次网回水温度(下限) -- SET @BACK_WATER_LOWER_ONE = (SELECT WDCOME_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置一次网供水压力(上限) -- SET @FEED_STRESS_UPPER_ONE = (SELECT YLGO_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置一次网供水压力(下限) -- SET @FEED_STRESS_LOWER_ONE = (SELECT YLGO_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置一次网回水压力(上限) -- SET @BACK_STRESS_UPPER_ONE = (SELECT YLCOME_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置一次网回水压力(下限) -- SET @BACK_STRESS_LOWER_ONE = (SELECT YLCOME_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网供水温度(上限) SET @FEED_WATER_UPPER_TWO = (SELECT WDGO_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网供水温度(下限) SET @FEED_WATER_LOWER_TWO = (SELECT WDGO_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网回水温度(上限) SET @BACK_WATER_UPPER_TWO = (SELECT WDCOME_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网回水温度(下限) SET @BACK_WATER_LOWER_TWO = (SELECT WDCOME_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网供水压力(上限) SET @FEED_STRESS_UPPER_TWO = (SELECT YLGO_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网供水压力(下限) SET @FEED_STRESS_LOWER_TWO = (SELECT YLGO_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网回水压力(上限) SET @BACK_STRESS_UPPER_TWO = (SELECT YLCOME_UP FROM HEATSOURCESTATION WHERE ID = @STATION); -- 设置二次网回水压力(下限) SET @BACK_STRESS_LOWER_TWO = (SELECT YLCOME_DOWN FROM HEATSOURCESTATION WHERE ID = @STATION); -- 验证数据是否正常. -- IF @FEED_WATER_UPPER_ONE < @VIEW01 OR @FEED_WATER_LOWER_ONE > @VIEW01 THEN -- 一次网供水温度不达标报警. -- SET @CAVEAT = 1; -- ELSEIF @BACK_WATER_UPPER_ONE < @VIEW02 OR @BACK_WATER_LOWER_ONE > @VIEW02 THEN -- 一次网回水温度不达标报警. -- SET @CAVEAT = 1; -- ELSEIF @FEED_STRESS_UPPER_ONE < @VIEW03 OR @FEED_STRESS_LOWER_ONE > @VIEW03 THEN -- 一次网供水压力不达标报警. -- SET @CAVEAT = 1; -- ELSEIF @BACK_STRESS_UPPER_ONE < @VIEW04 OR @BACK_STRESS_LOWER_ONE > @VIEW04 THEN -- 一次网回水压力不达标报警. -- SET @CAVEAT = 1; -- ELSEIF @FEED_WATER_UPPER_TWO < @VIEW05 OR @FEED_WATER_LOWER_TWO > @VIEW05 THEN IF @FEED_WATER_UPPER_TWO < @VIEW05 OR @FEED_WATER_LOWER_TWO > @VIEW05 THEN -- 二次网回水压力不达标报警. SET @CAVEAT = 1; ELSEIF @BACK_WATER_UPPER_TWO < @VIEW06 OR @BACK_WATER_LOWER_TWO > @VIEW06 THEN -- 二次网回水压力不达标报警. SET @CAVEAT = 1; ELSEIF @FEED_STRESS_UPPER_TWO < @VIEW07 OR @FEED_STRESS_LOWER_TWO > @VIEW07 THEN -- 二次网回水压力不达标报警. SET @CAVEAT = 1; ELSEIF @BACK_STRESS_UPPER_TWO < @VIEW08 OR @BACK_STRESS_LOWER_TWO > @VIEW08 THEN -- 二次网回水压力不达标报警. SET @CAVEAT = 1; ELSE -- 数据正常,设定数据初始值. SET @CAVEAT = 0; END IF; ELSE -- 设置一次网供水温度(上限) SET @FEED_WATER_UPPER_ONE = (SELECT WDGO_UP FROM HEATSOURCE WHERE ID = @SOURCE); -- 设置一次网供水温度(下限) SET @FEED_WATER_LOWER_ONE = (SELECT WDGO_DOWN FROM HEATSOURCE WHERE ID = @SOURCE); -- 设置一次网回水温度(上限) SET @BACK_WATER_UPPER_ONE = (SELECT WDCOME_UP FROM HEATSOURCE WHERE ID = @SOURCE); -- 设置一次网回水温度(下限) SET @BACK_WATER_LOWER_ONE = (SELECT WDCOME_DOWN FROM HEATSOURCE WHERE ID = @SOURCE); -- 设置一次网供水压力(上限) SET @FEED_STRESS_UPPER_ONE = (SELECT YLGO_UP FROM HEATSOURCE WHERE ID = @SOURCE); -- 设置一次网供水压力(下限) SET @FEED_STRESS_LOWER_ONE = (SELECT YLGO_DOWN FROM HEATSOURCE WHERE ID = @SOURCE); -- 设置一次网回水压力(上限) SET @BACK_STRESS_UPPER_ONE = (SELECT YLCOME_UP FROM HEATSOURCE WHERE ID = @SOURCE); -- 设置一次网回水压力(下限) SET @BACK_STRESS_LOWER_ONE = (SELECT YLCOME_DOWN FROM HEATSOURCE WHERE ID = @SOURCE); -- 验证数据是否正常. IF @FEED_WATER_UPPER_ONE < @VIEW01 OR @FEED_WATER_LOWER_ONE > @VIEW01 THEN -- 一次网供水温度不达标报警. SET @CAVEAT = 1; ELSEIF @BACK_WATER_UPPER_ONE < @VIEW02 OR @BACK_WATER_LOWER_ONE > @VIEW02 THEN -- 一次网回水温度不达标报警. SET @CAVEAT = 1; ELSEIF @FEED_STRESS_UPPER_ONE < @VIEW03 OR @FEED_STRESS_LOWER_ONE > @VIEW03 THEN -- 一次网供水压力不达标报警. SET @CAVEAT = 1; ELSEIF @BACK_STRESS_UPPER_ONE < @VIEW04 OR @BACK_STRESS_LOWER_ONE > @VIEW04 THEN -- 一次网回水压力不达标报警. SET @CAVEAT = 1; ELSE -- 数据正常,设定数据初始值. SET @CAVEAT = 0; END IF; END IF; -- 查询获取本站一次网数据(虚拟). SET @VIRTUAL_FIRST_COUNT = (SELECT IFNULL(SIMBEFOR, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1); -- 验证是否存在一次网数据复制. IF @VIRTUAL_FIRST_COUNT > 0 THEN -- 更新一次网供水温度. SET @VIEW01 = (SELECT VIEW005 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMBEFOR, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 更新一次网回水温度. SET @VIEW02 = (SELECT VIEW006 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMBEFOR, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 更新一次网供水压力. SET @VIEW03 = (SELECT VIEW007 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMBEFOR, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 更新一次网回水压力. SET @VIEW04 = (SELECT VIEW008 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMBEFOR, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 如果未查询到数据,初始化数据. SET @VIEW01 = IFNULL(@VIEW01, 0); -- 如果未查询到数据,初始化数据. SET @VIEW02 = IFNULL(@VIEW02, 0); -- 如果未查询到数据,初始化数据. SET @VIEW03 = IFNULL(@VIEW03, 0); -- 如果未查询到数据,初始化数据. SET @VIEW04 = IFNULL(@VIEW04, 0); END IF; -- 查询获取本站二次网数据(虚拟). SET @VIRTUAL_SECOND_COUNT = (SELECT IFNULL(SIMAFTER, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1); -- 验证是否存在二次网数据复制. IF @VIRTUAL_SECOND_COUNT > 0 THEN -- 更新二次网供水温度. SET @VIEW05 = (SELECT VIEW009 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMAFTER, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 更新二次网回水温度. SET @VIEW06 = (SELECT VIEW010 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMAFTER, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 更新二次网供水压力. SET @VIEW07 = (SELECT VIEW011 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMAFTER, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 更新二次网回水压力. SET @VIEW08 = (SELECT VIEW012 FROM HEATANALYSIS WHERE SIM = (SELECT IFNULL(SIMAFTER, 0) FROM JOINSIMCONFIG WHERE SIM = @SIM AND LABEL = 1)); -- 如果未查询到数据,初始化数据. SET @VIEW05 = IFNULL(@VIEW05, 0); -- 如果未查询到数据,初始化数据. SET @VIEW06 = IFNULL(@VIEW06, 0); -- 如果未查询到数据,初始化数据. SET @VIEW07 = IFNULL(@VIEW07, 0); -- 如果未查询到数据,初始化数据. SET @VIEW08 = IFNULL(@VIEW08, 0); END IF; -- 清除实时表历史数据. DELETE FROM HEATANALYSIS WHERE CODE = @CODE; -- 插入实时数据. INSERT INTO HEATANALYSIS(SIM, CODE, VIEW001, VIEW002, VIEW004, DATATIME, CAVEAT, VIEW005, VIEW006, VIEW007, VIEW008, VIEW009, VIEW010, VIEW011, VIEW012, DEL_FLAG) VALUES(@SIM, @CODE, @COMPANY, @SOURCE, @STATION, @DATATIME, @CAVEAT, @VIEW01, @VIEW02, @VIEW03, @VIEW04, @VIEW05, @VIEW06, @VIEW07, @VIEW08, 0); -- 存储历史数据预编译语句. SET @HISTORY_DATA_SQL = CONCAT('INSERT INTO ', @HISTORY_TABLE, '(SIM, CODE, VIEW001, VIEW002, VIEW004, DATATIME, CAVEAT, VIEW005, VIEW006, VIEW007, VIEW008, VIEW009, VIEW010, VIEW011, VIEW012, DEL_FLAG) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)'); -- 定义预编译语句. PREPARE INSERT_HEATANALY_HISTORY FROM @HISTORY_DATA_SQL; -- 执行预编译语句. EXECUTE INSERT_HEATANALY_HISTORY USING @SIM, @CODE, @COMPANY, @SOURCE, @STATION, @DATATIME, @CAVEAT, @VIEW01, @VIEW02, @VIEW03, @VIEW04, @VIEW05, @VIEW06, @VIEW07, @VIEW08; -- 释放预编译语句. DEALLOCATE PREPARE INSERT_HEATANALY_HISTORY; -- 设置虚拟站点卡号. SET @VIRTUAL_STATION_SIM = (SELECT SIM FROM JOINSIMCONFIG WHERE SIMBEFOR = @SIM AND LABEL = 2 ORDER BY ID LIMIT 0, 1); -- 验证是否抽取虚拟站点数据信息. IF IFNULL(@VIRTUAL_STATION_SIM, 0) > 0 THEN -- 清除历史冗余数据. DELETE FROM HEATANALYSIS WHERE SIM = @VIRTUAL_STATION_SIM; -- 设置虚拟站点序号. SET @VIRTUAL_STATION_CODE = (SELECT CODE FROM SIMCONFIG WHERE SIM = @VIRTUAL_STATION_SIM LIMIT 0, 1); -- 设置虚拟站点公司. SET @VIRTUAL_STATION_COMPANY = (SELECT COMPANY_COMPANY_ID FROM SIMCONFIG WHERE SIM = @VIRTUAL_STATION_SIM LIMIT 0, 1); -- 设置虚拟站点热源. SET @VIRTUAL_STATION_SOURCE = (SELECT SOURCE_SOURCE_ID FROM SIMCONFIG WHERE SIM = @VIRTUAL_STATION_SIM LIMIT 0, 1); -- 设置虚拟站点换热站. SET @VIRTUAL_STATION_STATION = (SELECT STATION_STATION_ID FROM SIMCONFIG WHERE SIM = @VIRTUAL_STATION_SIM LIMIT 0, 1); -- 设置虚拟站点二次网站点卡号. SET @VIRTUAL_STATION_SECOND_SIM = (SELECT SIMAFTER FROM JOINSIMCONFIG WHERE SIM = @VIRTUAL_STATION_SIM); -- 初始化二次网供水温度数据. SET @VIEW05 = 0; -- 初始化二次网回水温度数据. SET @VIEW06 = 0; -- 初始化二次网供水温度压力. SET @VIEW07 = 0; -- 初始化二次网回水温度压力. SET @VIEW08 = 0; -- 验证是否存在二次网数据抽取. IF IFNULL(@VIRTUAL_STATION_SECOND_SIM, 0) > 0 THEN -- 设置二次网供水温度. SET @VIEW05 = (SELECT VIEW009 FROM HEATANALYSIS WHERE SIM = @VIRTUAL_STATION_SECOND_SIM); -- 设置二次网回水温度. SET @VIEW06 = (SELECT VIEW010 FROM HEATANALYSIS WHERE SIM = @VIRTUAL_STATION_SECOND_SIM); -- 设置二次网供水压力. SET @VIEW07 = (SELECT VIEW011 FROM HEATANALYSIS WHERE SIM = @VIRTUAL_STATION_SECOND_SIM); -- 设置二次网回水压力. SET @VIEW08 = (SELECT VIEW012 FROM HEATANALYSIS WHERE SIM = @VIRTUAL_STATION_SECOND_SIM); -- 如果未查询到数据,初始化数据. SET @VIEW05 = IFNULL(@VIEW05, 0); -- 如果未查询到数据,初始化数据. SET @VIEW06 = IFNULL(@VIEW06, 0); -- 如果未查询到数据,初始化数据. SET @VIEW07 = IFNULL(@VIEW07, 0); -- 如果未查询到数据,初始化数据. SET @VIEW08 = IFNULL(@VIEW08, 0); END IF; -- 插入实时数据. INSERT INTO HEATANALYSIS(SIM, CODE, VIEW001, VIEW002, VIEW004, DATATIME, CAVEAT, VIEW005, VIEW006, VIEW007, VIEW008, VIEW009, VIEW010, VIEW011, VIEW012, DEL_FLAG) VALUES(@VIRTUAL_STATION_SIM, @VIRTUAL_STATION_CODE, @VIRTUAL_STATION_COMPANY, @VIRTUAL_STATION_SOURCE, @VIRTUAL_STATION_STATION, @DATATIME, @CAVEAT, @VIEW01, @VIEW02, @VIEW03, @VIEW04, @VIEW05, @VIEW06, @VIEW07, @VIEW08, 0); -- 存储历史数据预编译语句. SET @VIRTUAL_HISTORY_DATA_SQL = CONCAT('INSERT INTO ', @HISTORY_TABLE, '(SIM, CODE, VIEW001, VIEW002, VIEW004, DATATIME, CAVEAT, VIEW005, VIEW006, VIEW007, VIEW008, VIEW009, VIEW010, VIEW011, VIEW012, DEL_FLAG) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)'); -- 定义预编译语句. PREPARE INSERT_VIRTUAL_HEATANALY_HISTORY FROM @VIRTUAL_HISTORY_DATA_SQL; -- 执行预编译语句. EXECUTE INSERT_VIRTUAL_HEATANALY_HISTORY USING @VIRTUAL_STATION_SIM, @VIRTUAL_STATION_CODE, @VIRTUAL_STATION_COMPANY, @VIRTUAL_STATION_SOURCE, @VIRTUAL_STATION_STATION, @DATATIME, @CAVEAT, @VIEW01, @VIEW02, @VIEW03, @VIEW04, @VIEW05, @VIEW06, @VIEW07, @VIEW08; -- 释放预编译语句. DEALLOCATE PREPARE INSERT_VIRTUAL_HEATANALY_HISTORY; END IF; END; -- 清楚查询站点名称函数. DROP FUNCTION IF EXISTS F_Q_D_STATIONCONVERT; -- 创建查询站点名称函数. CREATE FUNCTION F_Q_D_STATIONCONVERT(P_SIM VARCHAR(50)) RETURNS VARCHAR(300) BEGIN -- 查询热源站点/换热站点名称. SET @STATION = (SELECT IFNULL(C.STATION_NAME, B.SOURCE_NAME) FROM SIMCONFIG A JOIN HEATSOURCE B ON A.SOURCE_SOURCE_ID = B.ID LEFT JOIN HEATSOURCESTATION C ON A.STATION_STATION_ID = C.ID WHERE SIM = P_SIM); -- 返回查询结果. RETURN @STATION; END; CALL P_Q_D_HEATANALYSIS('242310100', '13104417363', DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'), 60.2, 30.1, 0.61, 0.12, 30.5, 25.8, 0.2, 0.1); UPDATE HEATSOURCE SET WDGO_UP = 80, WDGO_DOWN = 30, WDCOME_UP = 80, WDCOME_DOWN = 20, YLGO_UP = 1.6, YLGO_DOWN = 0, YLCOME_UP = 1.6, YLCOME_DOWN = 0; UPDATE HEATSOURCESTATION SET WDGO_UP = 80, WDGO_DOWN = 30, WDCOME_UP = 80, WDCOME_DOWN = 20, YLGO_UP = 1.6, YLGO_DOWN = 0, YLCOME_UP = 1.6, YLCOME_DOWN = 0;