CREATE DEFINER=`root`@`%` PROCEDURE `P_codestream_count_main`(IN `P_LINKID` varchar(32)) COMMENT '国标码流分析统计主函数' BEGIN #Routine body goes here... BEGIN #声明接受的数据变量 DECLARE P_CIVILCODE VARCHAR(255); #遍历数据结束标志 DECLARE done TINYINT DEFAULT 0; #游标数据 DECLARE civilcodes CURSOR FOR SELECT distinct civilcode FROM ao_quality_count where taskno = P_LINKID; #将结束标志绑定到游标 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; #打开游标 OPEN civilcodes; #开始循环 WHILE done<>1 DO #提取游标里的数据 FETCH civilcodes INTO P_CIVILCODE; IF done<>1 THEN CALL P_codestream_count_drs(P_LINKID,P_CIVILCODE); CALL P_codestream_count_hds(P_LINKID,P_CIVILCODE); END IF; END WHILE; #关闭游标 CLOSE civilcodes; END; END
CREATE DEFINER=`root`@`%` PROCEDURE `P_codestream_count_drs`(IN `P_LINKID` varchar(64),IN `P_CIVILCODE` varchar(32)) COMMENT '国标码流分析统计' BEGIN #DECLARE p_linkid VARCHAR(64) DEFAULT 0;#关联任务编码 #DECLARE p_civilcode VARCHAR(32) DEFAULT 0;#区域编码 DECLARE p_civilname VARCHAR(255) DEFAULT 0;#区域名称 DECLARE p_ps INT(11) DEFAULT 0;#ps封装数 DECLARE p_es INT(11) DEFAULT 0;#es封装数 DECLARE p_ungbpacking INT(11) DEFAULT 0;#非国标封装数 DECLARE p_h264 INT(11) DEFAULT 0;#h264编码数 DECLARE p_h265 INT(11) DEFAULT 0;#h265编码数 DECLARE p_svac INT(11) DEFAULT 0;#svac编码数 DECLARE p_mpeg4 INT(11) DEFAULT 0;#mp4编码数 DECLARE p_ungbencoding INT(11) DEFAULT 0;#非标编码数 DECLARE p_total INT(11) DEFAULT 0;#总数 DECLARE p_normal INT(11) DEFAULT 0;#合格数 DECLARE p_normalrate DECIMAL(10,2) DEFAULT 0.00;#合格率 #区域名称 BEGIN SELECT areaName INTO p_civilname FROM ao_area WHERE areaId = P_CIVILCODE; END; #码流封装 ps BEGIN SELECT COUNT(1) INTO p_ps FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND payload = 96; END; #码流封装 es BEGIN SELECT COUNT(1) INTO p_es FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND payload IN (97,98,99,108); END; #码流封装 非国标封装数 BEGIN SELECT COUNT(1) INTO p_ungbpacking FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND payload NOT IN (96,97,98,99,108); END; #视频编码 h264编码数 BEGIN SELECT COUNT(1) INTO p_h264 FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 0; END; #视频编码 h265编码数 BEGIN SELECT COUNT(1) INTO p_h265 FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 1; END; #视频编码 svac编码数 BEGIN SELECT COUNT(1) INTO p_svac FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 3; END; #视频编码 mp4编码数 BEGIN SELECT COUNT(1) INTO p_mpeg4 FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 2; END; #视频编码 非标编码数 BEGIN SELECT COUNT(1) INTO p_ungbencoding FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat NOT IN (0,1,2,3); END; #总数,合格数,合格率 BEGIN SELECT predicttotal,qualifiednum,qualifiedrate INTO p_total,p_normal,p_normalrate FROM ao_quality_count WHERE taskno = P_LINKID AND civilcode = P_CIVILCODE AND tasktype = 103; END; #删除,插入 BEGIN DELETE FROM ao_gb_stream_statis WHERE linkid = P_LINKID AND civilcode = P_CIVILCODE; INSERT INTO ao_gb_stream_statis ( linkid,civilcode,civilname,ps,es,ungbpacking,h264,h265,svac,mpeg4,ungbencoding,total,normal,normalrate,ctime ) VALUES ( P_LINKID,P_CIVILCODE,p_civilname,p_ps,p_es,p_ungbpacking,p_h264,p_h265,p_svac,p_mpeg4,p_ungbencoding,p_total,p_normal,p_normalrate,now() ); END; END
CREATE DEFINER=`root`@`%` PROCEDURE `P_codestream_count_hds`(IN `P_LINKID` varchar(64),IN `P_CIVILCODE` varchar(32)) COMMENT '数据高清分析统计' BEGIN #Routine body goes here... DECLARE p_civilname VARCHAR(255) DEFAULT 0;#区域名称 DECLARE p_hd INT(11) DEFAULT 0;#高清数 DECLARE p_sd INT(11) DEFAULT 0;#标清数 DECLARE p_sdbelow INT(11) DEFAULT 0;#低于标清 DECLARE p_unknown INT(11) DEFAULT 0;#无法识别 DECLARE p_total INT(11) DEFAULT 0;#总数 DECLARE p_hdrate DECIMAL(10,2) DEFAULT 0.00;#高清占比 #区域名称 BEGIN SELECT areaName INTO p_civilname FROM ao_area WHERE areaId = P_CIVILCODE; END; #高清数 BEGIN SELECT COUNT(1) INTO p_hd FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND high > 96; END; #标清数 BEGIN SELECT COUNT(1) INTO p_sd FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND high = 96; END; #低于标清 BEGIN SELECT COUNT(1) INTO p_sdbelow FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND high < 96 AND high != 0; END; #无法识别 BEGIN SELECT COUNT(1) INTO p_unknown FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND (high = 0 OR high = ''); END; #总数 BEGIN SELECT COUNT(1) INTO p_total FROM ao_diag_result_stardand WHERE linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%'); END; #高清占比 SET p_hdrate = IFNULL(TRUNCATE(p_hd / p_total * 100, 2),0); #删除,插入 BEGIN DELETE FROM ao_hd_diagnosis_statis WHERE linkid = P_LINKID AND civilcode = P_CIVILCODE; INSERT INTO ao_hd_diagnosis_statis ( linkid,civilcode,civilname,hd,sd,sdbelow,unknown,total,hdrate,ctime ) VALUES ( P_LINKID,P_CIVILCODE,p_civilname,p_hd,p_sd,p_sdbelow,p_unknown,p_total,p_hdrate,now() ); END; END