diff --git a/flask_app/general/post_processing.py b/flask_app/general/post_processing.py index 330848f..25d38fa 100644 --- a/flask_app/general/post_processing.py +++ b/flask_app/general/post_processing.py @@ -173,9 +173,8 @@ def extract_zige_deviation_table(zige_info, fuhe_info): # 等待任务完成并获取结果 model_res1 = future1.result() model_res2 = future2.result() - - print(model_res1) - print(model_res2) + # print(model_res1) + # print(model_res2) zige_deviation = clean_json_string(model_res1) fuhe_deviation = clean_json_string(model_res2) diff --git a/flask_app/testdir/test3.py b/flask_app/testdir/test3.py index 29c3e2a..8d60938 100644 --- a/flask_app/testdir/test3.py +++ b/flask_app/testdir/test3.py @@ -1,755 +1,147 @@ -# -*- encoding:utf-8 -*- import json import re -from collections import defaultdict -import string - -def get_suffix(n): +def generate_key_paths(data, parent_key='', good_list=None, seen=None): """ - 根据数字n返回对应的字母后缀。 - 1 -> 'a', 2 -> 'b', ..., 26 -> 'z', 27 -> 'aa', 28 -> 'ab', ... - """ - suffix = '' - while n > 0: - n, r = divmod(n - 1, 26) - suffix = chr(97 + r) + suffix - return suffix - - -def filter_data(data, good_list, special_keys=None): - """ - 过滤字典中的键值对,保留键名符合good_list中元素的项。 - 对于重复的键名,添加后缀-a, -b, 等以确保唯一性。 - 对于特殊键,使用“父键的键”格式命名。 + 生成嵌套字典中的键路径,并提取最内层的键名。 + 同时,提取特定模式的键(如 '交换机-1', '交换机-2')的父路径。 + 如果同一层级下只有'交换机-1'但没有'交换机-2',则视为错误输入,删除后缀'-1',将'交换机'加入key_paths。 + 并从data中移除错误的键。 参数: - - data (dict): 输入的嵌套字典。 - - good_list (list): 包含需要匹配的键名的列表。 - - special_keys (list): 需要特殊处理的键名列表。 + data (dict): 输入的字典数据 + parent_key (str): 上级键路径,用于递归调用 + good_list (list): 用于存储去重后的最内层键名 + seen (set): 用于跟踪已添加到 good_list 的元素 返回: - - dict: 筛选后的字典,包含符合条件的键值对。 + tuple: 包含键路径列表、最内层键名列表、分组路径列表以及 no_keys_added 的元组 + (key_paths, good_list, grouped_paths, no_keys_added) """ - if special_keys is None: - special_keys = [] + if good_list is None: + good_list = [] + if seen is None: + seen = set() - # 编译正则表达式模式,匹配good_list中的元素,允许后面跟随“-数字” - patterns = [re.compile(r'^' + re.escape(g) + r'(?:-\d+)?$') for g in good_list] + key_paths = [] + grouped_paths = set() # 使用集合避免重复路径 + no_keys_added = True # 默认假设没有添加任何键 - # 第一遍遍历:统计每个键名出现的次数(排除特殊键) - key_counter = defaultdict(int) - for top_key, nested_dict in data.items(): - for inner_key in nested_dict.keys(): - if inner_key in special_keys: - continue - if any(pattern.match(inner_key) for pattern in patterns): - key_counter[inner_key] += 1 + # Step 1: Collect keys that match the pattern + pattern = re.compile(r'(.+)-\d+$') # 匹配形如 '交换机-1', '交换机-2' 的键 + prefix_groups = {} + other_keys = [] - # 初始化用于跟踪每个重复键当前使用的后缀编号 - suffix_map = {key: 0 for key, count in key_counter.items() if count > 1} + for key in list(data.keys()): # 使用 list(data.keys()) 防止修改字典时出错 + clean_key = key.replace(" ", "") + match = pattern.match(clean_key) + if match: + prefix = match.group(1) + if prefix not in prefix_groups: + prefix_groups[prefix] = [] + prefix_groups[prefix].append(key) + else: + other_keys.append(key) - def get_suffix_label(key): - """ - 根据当前计数获取字母后缀,并更新suffix_map。 - """ - suffix_map[key] += 1 - return get_suffix(suffix_map[key]) + # Step 2: Handle grouped keys + for prefix, keys in prefix_groups.items(): + current_prefix_path = f"{parent_key}.{prefix}" if parent_key else prefix + if len(keys) > 1: + # 多个键匹配同一前缀:添加到 grouped_paths + grouped_paths.add(current_prefix_path) + if prefix not in seen: + good_list.append(prefix) + seen.add(prefix) + no_keys_added = False + else: + # 只有一个键匹配:删除后缀并添加到 key_paths,同时从 data 中移除该键 + key = keys[0] + key_path = current_prefix_path # 去掉后缀后,路径为父路径 + 前缀 + key_paths.append(key_path) + if prefix not in seen: + good_list.append(prefix) + seen.add(prefix) + no_keys_added = False + # 从 data 中移除错误的键 + data.pop(key) - # 第二遍遍历:根据统计结果添加后缀或特殊命名 - filtered_data = {} + # Step 3: Handle other keys + for key in other_keys: + value = data[key] + current_key = f"{parent_key}.{key}" if parent_key else key - for top_key, nested_dict in data.items(): - for inner_key, values in nested_dict.items(): - if any(pattern.match(inner_key) for pattern in patterns): - if inner_key in special_keys: - # 对于特殊键,使用“父键的键”命名 - new_key = f"{top_key}的{inner_key}" - else: - if key_counter[inner_key] > 1: - # 对于重复键,添加后缀 - suffix = get_suffix_label(inner_key) - new_key = f"{inner_key}-{suffix}" - else: - new_key = inner_key - filtered_data[new_key] = values + if isinstance(value, dict): + if value: + # 递归调用,并获取子路径、子 good_list、子分组路径以及子 no_keys_added + sub_key_paths, _, sub_grouped_paths, sub_no_keys_added = generate_key_paths( + value, current_key, good_list, seen + ) + key_paths.extend(sub_key_paths) + grouped_paths.update(sub_grouped_paths) # 合并子分组路径到当前分组路径 + # 更新 no_keys_added + no_keys_added = no_keys_added and sub_no_keys_added + else: + # 空字典视为叶子节点 + clean_key = key.replace(" ", "") + key_paths.append(current_key.replace(" ", "")) + if clean_key not in seen: + good_list.append(clean_key) # 去掉空格后添加 + seen.add(clean_key) - return filtered_data + # 更新 no_keys_added + no_keys_added = False + elif isinstance(value, list): + # 列表类型视为叶子节点,无论是否为空 + key_paths.append(current_key.replace(" ", "")) + clean_key = key.replace(" ", "") + if clean_key not in seen: + good_list.append(clean_key) # 去掉空格后添加 + seen.add(clean_key) + # 更新 no_keys_added + no_keys_added = False + elif value in {"未知", "", "/"}: + # 特定值视为叶子节点 + key_paths.append(current_key.replace(" ", "")) + clean_key = key.replace(" ", "") + if clean_key not in seen: + good_list.append(clean_key) # 去掉空格后添加 + seen.add(clean_key) + # 更新 no_keys_added + no_keys_added = False + else: + # 其他情况视为叶子节点 + key_paths.append(current_key.replace(" ", "")) + clean_key = key.replace(" ", "") + if clean_key not in seen: + good_list.append(clean_key) # 去掉空格后添加 + seen.add(clean_key) + # 更新 no_keys_added + no_keys_added = False + return key_paths, good_list, grouped_paths, no_keys_added -# 示例用法 -data={ - "1200万高清枪机": { - "1200万高清枪机": [] - }, - "监控立杆-1": { - "监控立杆-1": [ - "高 4.5 米, 横臂根据道路实际情况确定, 优质 Q235 钢管具 有强抗风坚固耐用安装简便的特点, 热镀锌, 表面防静电 喷塑处理,含开挖、地笼基础 、回填 、接地及辅材(线缆)" - ] - }, - "室外防水设备箱-1": { - "室外防水设备箱-1": [ - "订制平安城市 LOGO , 表面防静电喷塑处理(室外防水, 防剪线)" - ] - }, - "补光灯-1": { - "补光灯-1": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "电源线": { - "电源线": [ - "1. 摄像机电源线规格: RVV -2*1.0(阻水)" - ] - }, - "网线": { - "网线": [ - "室外超五类屏蔽网线" - ] - }, - "防雷器": { - "防雷器": [ - "电源 、 网络二合一等电位防雷, 电源通道: 标称放电电流 为 20KA(8/20us), 最大放电电流为 4 0KA(8/20us; 高清网络 信号通道: 标称放电电流为 5KA(8/20us), 最大放电电流为 10KA(8/20us" - ] - }, - "设备箱插板": { - "设备箱插板": [ - "3 插位插板" - ] - }, - "微卡口/智慧监控": { - "微卡口/智慧监控": [ - "1) 水平分辨力 1000 TVL ,传感器类型: 彩色 CMOS , 尺寸≥ 1/1.9\";", - "2) 相机自带 led 补光灯, 支持环境自适应开启功能。", - "3) 图片上可叠加 OSD 黑边, OSD 像素 0~1024Pixel 可调", - "4) 2 个 100/1000M 以太网口;1 个 BNC 接口;4 个 RS232, 2 个 RS485, 1 个 SDTY 卡插槽; 1 个 5V 电源输出; 8 路 I/O 输入; 1 路报警输入接口, 2 路报警输出接口; 1 个外同步 输入接口;7 个闪光灯输出接口;1 个 reset 接口;2 路 USB 接口", - "5) 彩色模式: ≤0.001 lx (应能分辨反射式视频矩阵测试卡 种彩色色块) ,黑白模式: ≤0.0001 lx (应能分辨反射式视 频分辨率测试卡种圆形轮廓)", - "6) 视频压缩标准检查: H.265; H.264; M JPEG", - "7) 支持 P-iris 自动光圈镜头", - "8) 速度检测误差白天≤5%, 晚上≤5%" - ] - }, - "监控立杆-2": { - "监控立杆-2": [ - "高 4.5 米, 横臂根据道路实际情况确定, 优质 Q235 钢管具 有强抗风坚固耐用安装简便的特点, 热镀锌, 表面防静电 喷塑处理,含开挖、地笼基础 、回填 、接地及辅材(线缆)" - ] - }, - "室外防水设备箱-2": { - "室外防水设备箱-2": [ - "订制平安城市 LOGO , 表面防静电喷塑处理(室外防水, 防剪线)" - ] - }, - "补光灯-2": { - "补光灯-2": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "枪球联动型摄像机": { - "枪球联动型摄像机": [ - "200 万+200 万像素, 星光级网络摄像机", - "支持人脸/人体自动检测并抓拍", - "定点相机: 支持 1920 × 1080@60fps, 星光级超低照度, 0.001Lux/F1.0 (彩色 ), 0.0005Lux/F1.0 (黑白 )", - "动点相机: 支持 1920 × 1080@60fps, 星光级超低照度, 0.002Lux/F1.6(彩色), 0.000 2Lux/F1.6(黑白 )", - "不低于 10 倍光学变倍, 16 倍数字变倍", - "支持宽动态 、透雾、 强光抑制 、 电子防抖", - "H.265/H.264/MJ PEG", - "支持 128GB Micro SD 卡", - "电源: DC12V", - "支持防雷 、 防浪涌 、防突波, IP66 防护等级" - ] - }, - "200万像素人脸抓拍机": { - "200万像素人脸抓拍机": [ - "200 万 像素, 1/1.8\" CMOS 宽动态人脸抓 拍摄像机;", - "最低照度彩色:0.001Lux, 黑白 0.000 1Lux ,0 Lux with LED;", - "快门 1 秒至 1/100,000 秒;", - "最大焦距不低于 32mm,倍率不低于 4 倍;", - "宽动态范围 140dB;", - "压缩标准 H.265/H.264/MJPEG;", - "支持背光补偿, 透雾, 电子 防抖;", - "支持智能报警, 包括移动侦测,遮挡报警, 网线 断, IP 地址冲突, 存储器满,存储器错;", - "支持对运动人脸进行检测 、跟踪 、抓 拍 、评分 、筛选, 输出最优的人脸抓图;", - "工作温度和湿度 -30℃~60℃,湿度小于 95%(无凝结);", - "防护等级 IP66;", - "补光 距离 50 米。" - ] - }, - "600万像素人脸抓拍机": { - "600万像素人脸抓拍机": [ - "600 万 像素, 1/1.8\" CMOS 宽动态人 脸抓拍摄像机;", - "最低照度彩色:0.001Lux, 黑白 0.0001Lux ,0 Lux with LED;", - "快门 1 秒至 1/100,000 秒;", - "最大焦距不低于 56mm,倍率不 低于 4 倍;", - "压缩标准 H.265/H.264/MJPEG;", - "支持背光补偿, 透雾, 电子防抖;", - "支持智能报警,包括移动侦测,遮挡报警, 网线断, IP 地址冲突,存储器满,存储器错;", - "支持对运动人脸 进行检测 、跟踪 、抓拍 、评分 、筛选, 输出最优的人脸抓 图;", - "工作温度和湿度 -30℃~60℃,湿度小 于 95%(无凝结);", - "防护等级 IP66;", - "补光距离 50 米。" - ] - }, - "枪机支架": { - "枪机支架": [ - "壁装支架/海康白/铝合金/尺寸 88 × 116.6 ×297.3mm" - ] - }, - "枪机电源": { - "枪机电源": [ - "12V/1A 圆头、两端带线式, 国标,输入线长 500mm,输出线长 1000mm" - ] - }, - "监控立杆-3": { - "监控立杆-3": [ - "H6.5*L12, 高 6.5 米横臂 12 米, 喷塑 、镀锌 (含 杆件布线 、地笼 M32-8-1500 安装) 3.基础开挖:杆件基础坑开挖, 规格 1600*16 00*1800 4.渣土清运:现场渣土清运, 运距 10km 以内 5.基础浇灌:杆件基础浇灌养护, C25 及以上混凝土 6.镀锌扁钢接地" - ] - }, - "室外防水设备箱-3": { - "室外防水设备箱-3": [ - "订制平安城市 LOGO , 表面防静电喷塑处理(室外防水, 防剪线)" - ] - }, - "补光灯-3": { - "补光灯-3": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "监控摄像设备(800万180度鹰眼)": { - "监控摄像设备(800万180度鹰眼)": [ - "1.名称:800 万 180 度鹰眼(含支架) 800 万 180 °AR 球型鹰眼;S 系列 800 万 180 °全景 一体式 网络高清摄像机,全景摄像机有 4 个 1/1.8\" 2MP Progressive Scan CMOS, 最高分辨率及帧率可达 4096 × 1800 @30fps, 星光级超低照度, 0.005Lux/F2.2(彩色 ), 0.0005Lux/F2.2 (黑白 );", - "特写摄像机采用 1/1.8\" 2MP Progressive Scan CMOS, 最高分辨率及帧率可达 1920 × 1080@30fps, 水平 360 °连续旋转,垂直-15 ° -90 °(自动翻转 ), 星光级超 低照度,0.002Lux/F1.5(彩色 ) , 0.0002Lux/F1.5(黑白 ), 200m 红外照射距离, 37 倍光学变倍, 16 倍数字变倍;", - "支持区域入侵 、越界 、进入区域 、离开区域事件侦测功能;", - "系统支持检测直径 300 米 180 °半圆形范围内运动目标, 可同时检测 30 个目标;", - "系统支持点击联动功能 、目标自动 跟踪功能 、手动跟踪功能;", - "支持强光抑制 、3D 数字降噪;", - "系统支持基于交通平台8600 实现交通云图立体防控;", - "系统支持在摄像机的实时视频画面中添加最多 500 个 AR 标签, 且可实现标签与标签联动的功能;", - "系统内置 7 路报警输入、 2 路报警输出、1 路音频输入、1 路音频输出,支持光口(FC) + 电口(RJ-45)网络接口设计,采用一体化设计,可快捷安装;", - "H.265/H.264/MJPEG;", - "支持防雷 、防浪涌 、防突波, IP66 防护等级。" - ] - }, - "室外防水设备箱-4": { - "室外防水设备箱-4": [ - "订制平安城市 LOGO , 表面防静电喷塑处理(室外防水, 防剪线)" - ] - }, - "综合管理平台软件": { - "综合管理平台软件": [ - "见配置要求清单" - ] - }, - "人脸大数据综合应用软件": { - "人脸大数据综合应用软件": [] - }, - "中心管理服务器": { - "中心管理服务器": [ - "E5-2620 V4(8 核 2.1GHz) ×2/16GB DDR4 ×2/300G SAS × 2/SAS_HBA/DVD/1GbE ×4/冗电/2U" - ] - }, - "人脸接入服务器": { - "人脸接入服务器": [ - "E5-2620 V4(8 核 2.1GHz) ×2/16GB DDR4 ×2/300G SAS × 2/SAS_HBA/DVD/1GbE ×4/冗电/2U" - ] - }, - "人脸大数据服务器": { - "人脸大数据服务器": [ - "支持 3000W 静态库或 8 亿抓拍库", - "支持 3000W 数据内存加速检索,内存加速检索响应时间小于 6 秒", - "抓拍库非内存加速数据单天检索小于 40 秒", - "CPU: 2*E5-2630 V3 , 2*8=1 6 核", - "内存: 8*32G=256G", - "硬盘: 1*240G SSD, 2*4T SATA, 6*48 0G SSD" - ] - }, - "人脸云分析服务器": { - "人脸云分析服务器": [ - "19 英寸 1U 标准机箱, 具有 1+1 冗余电源;", - "集成 16 颗 GPU 芯片;", - "4 个千兆自适应网口,1 个 VGA 接口、4 个 USB 3.0 接口和 2 个 USB 2.0 接口;", - "人脸图片处理能力: 80 张/秒;", - "支持 30W 黑名单, 最多支持 16 个库;", - "支持 1V1 比对。" - ] - }, - "视频结构化服务器": { - "视频结构化服务器": [ - "见配置要求清单" - ] - }, - "车辆识别应用软件": { - "车辆识别应用软件": [ - "对新建车辆识别抓拍机数据图片进行接入, 后端进行二次识别分析 。 同时具有车辆查询 、轨迹分析 、 区域碰撞 、 同行分析 、套牌分析 、落脚点分析等丰富的技战法应用。" - ] - }, - "车辆大数据应用服务器": { - "车辆大数据应用服务器": [ - "E5-2620 V4(8 核 2.1GHz) ×2/16GB DDR4 ×2/300G SAS × 2/SAS_HBA/DVD/1GbE ×4/冗电/2U" - ] - }, - "车辆云分析服务器": { - "车辆云分析服务器": [ - "对前端抓拍车辆图片进行二次识别, 车辆建模。" - ] - }, - "车辆大数据服务器": { - "车辆大数据服务器": [ - "E5-2620 V4(8 核 2.1GHz) ×2/16GB DDR4 ×2/300G SAS × 2/SAS_HBA/DVD/1GbE ×4/冗电/2U" - ] - }, - "人脸结构化服务器": { - "人脸结构化服务器": [ - "4U 机架式设备, 具有 2+2 冗余电源;", - "8 张 Tesla P4 卡;", - "2 颗 Intel E5-2680 V4( 14 核 2.4Ghz ), 128GB DDR4, 1 个 150GB SSD;", - "8 个 2.5 英寸 SATA 3.0 接口 ,支持热插拔,支持 RAID 0, 1, 5, 10", - "4 个 USB3.0 接口, 1 个 VGA 接口, 2 个千兆自适应网络接口" - ] - }, - "人脸、人体、车辆结构化分析算法": { - "人脸、人体、车辆结构化分析算法": [ - "配合 GPU 卡服务器使用" - ] - }, - "云存储管理系统": { - "系统功能": [ - "1、响应上层平台业务请求,对外提供业务响应接口;", - "2、负责录像计划的管理,向视频云存储接入软件下达录像计划;", - "3、负责存储资源管理,向业务应用分配存储空间;", - "4、维护系统运转,统一调度、协调云存储系统的运行与维护。", - "5、具体功能:集群管理、虚拟化管理、索引管理、存储资源管理、存储策略管理、存储设备管理等。" - ] - }, - "云存储运维系统": { - "系统功能": [ - "集成视频云存储的运维系统, 可进行软件 、硬件 、系统的运维。" - ] - }, - "云存储管理服务器": { - "云存储管理服务器": [ - "云存储系统管理服务器:E5-2620 V3(6 核 2.4GHz) × 2/16GB DDR4 X2/480G SSD ×3+150G SSD / 3008 /1GbE ×2/冗电/2U", - "操作系统:需支持 Centos7-64bit" - ] - }, - "云存储运维服务器": { - "云存储运维服务器": [ - "云存储系统专用运维节点,双系统, RAID 1,6 核多线程双 CPU,云存储定制 CentOS 64 位操作系统, 2U 机箱" - ] - }, - "流媒体分发服务器": { - "流媒体分发服务器": [ - "E5-2640 V4(10 核 2.4GHz ) ×2/16GB DDR4 ×2/300GB SAS × 2/SAS3008/DVD/1GbE ×4/冗电/导轨/2U/Windows Server 2008 R2 简体中文标准版激活码", - "1、电源: 高效能 550W 铂金 1+1 冗余电源;", - "2 、电源电压 200-240V/50Hz;", - "3 、机箱尺寸:87.8mm(高)×448mm(宽) ×794.4mm(深);", - "4、重量 最大 35 千克 (不含导轨 );" - ] - }, - "高速图片云存储节点": { - "高速图片云存储节点": [ - "8U 标准机架式 48 盘位;双 64 位多核处理器; 16GB 缓存; 冗余电源; 支持 SATA 硬盘; 4 个千兆网口; 1 个系统 SSD 盘; 1 个数据 SSD 盘; 支持外接 SAS 扩展柜;支持人脸 图片 的即存即取。" - ] - }, - "视频云存储节点": { - "视频云存储节点": [ - "见配置要求清单" - ] - }, - "硬盘": { - "硬盘": [ - "3.5 英寸 4000G 7200 128M SATA3" - ] - }, - "校时服务器": { - "校时服务器": [ - "1.名称:校时服务器", - "2.类别:根据授时信号的强度,支持 GPS/北斗/CDMA 自动切换校时, 产品标配是不带 CDMA 模块的", - "守时能力: 精度 24 小时<28us", - "授时容量: 单端口≥7000 次/秒", - "高授时精度 : < 5 us", - "授时频段: GPS 授时中心频率 1575MHz 北斗授时中心频率 2491MHz CDMA 授时中心频率 800MHz", - "机箱尺寸: 429.4mm*237.3mm*44.5mm(设备)/ 514mm*478mm*132mm(含包装)", - "重量: 5.05KG" - ] - }, - "校时服务器天线": { - "校时服务器天线": [ - "1.名称:校时服务器天线", - "2.类别:内导体材料: 裸铜丝; 结构: 1/1.40 ±0.02mm; 标称截面: 1.54 mm2", - "绝缘材料: 聚乙烯; 平均厚度: 1.7mm; 外导体: 材料铜丝" - ] - }, - "室内全彩显示屏": { - "室内全彩显示屏": [ - "1) 小间距 LED 全彩显示屏", - "2) 像素间距: 1.27", - "3) 封装类型: 亿光", - "4) 屏幕宽高比: 16:9, 压铸铝材质", - "5) 像素结构: LED 表贴三合一", - "6)单元分辨率: 480 ×270, 单元尺寸: 609.92mm( W ) × 343.08mm( H) ×75mm( D )", - "7) 像素密度: 619350 点/㎡", - "8)光学参数:显示屏亮度≥1200nits,色温 25 00K—10000K 可调, 水平 、垂直视角 160 ° , 推荐视距≥2m, 亮度均匀 性≥97%, 色度均匀性 ±0.003 Cx , Cy 之内 , 最大对比度≥ 8000:1", - "9) 处理深度: 16bits, 灰度等级: 65536Level", - "10) 电气参数: 峰值功耗 800W/㎡, 平均功耗 300W/㎡, 供电要求 110~264VAC ± 15%", - "11) 寿命: ≥ 10 万小时, 工作温度范围-10—45℃ , 存储 温度范围-20—60℃ , 工作湿度范围(RH)无结露 10-90%, 存储湿度范围( RH) 无结露 10-90%", - "12)功能特性: 支持任意方向、任意尺寸 、任意造型拼接, 画面均匀一致, 无黑线, 实现真正无缝拼接" - ] - }, - "LED全彩屏发送卡": { - "LED全彩屏发送卡": [ - "4 个千兆网口输出, 单个网口最大带载 65 万个像素点;", - "带载分辨率: 2048 × 1152@60Hz 或 1920 × 1200@60Hz;", - "DVI 、DP 、HDMI 、VGA 多信号输入, 支持信源自动检测, 无需手动切换信源;", - "16 bit 处理深度, 低亮高灰, 真实还原图像色彩;", - "3840Hz 高刷新率,纳秒级响应时间,视频画面更细腻流畅;", - "支持屏幕亮度自动调整, 自适应环境光亮度(配合多功能卡 使用 );", - "图像色温调节, 标准 、冷 、暖三色可调;" - ] - }, - "LED屏支架": { - "LED屏支架": [ - "1) 一般用于箱体产品", - "2) 落地安装", - "3) 屏表面离后墙 70cm", - "4) 地面需考虑承重" - ] - }, - "视频综合平台B20系列主控板": { - "视频综合平台B20系列主控板": [ - "8U 标准机箱,满足各种规模的监控需求;标准机架式设计,运营级 ATCA 机箱系统;插拔式模块化设计,可根据需求灵活扩展;5 槽位机箱,双电源适配器,单主控板;业务模块支持热插拔 、双电源冗余 、智能风扇自动调温,确保系统稳定可靠;双高速无阻塞背板设计,满足大容量视频数据高速交换的需求。", - "4 个 DVI 视频输入接口;接收数字视频信号输入;支持 1080P 编码;1 个 DB15 转 4 路音频输入;输入分辨率 1024 ×768@60Hz 、 1280 × 1024@60Hz 、 1280 ×800@60Hz 、 1366 ×768@60Hz 、 1440 ×900@60Hz 、 1680 × 1050@60Hz、1280 ×960@60Hz、1600 × 1200@60Hz、1280 ×720P@50Hz 、 1280 ×720P@60Hz 、 1920 × 1080I@50Hz 、 1920 × 1080I@60Hz 、 1920 × 1080P@50Hz 、 1 920 × 1080P@60Hz;音频输入口: 4 路音频输入, 1 个 DB15 转 BNC 接口;编码标准:标准 H.264;编码能力:4 路,支持的编码分辨率为:1080P/720P/4CIF/CIF/ QCIF;", - "8 路 HDMI 显示接口输出,奇数口支持 4K 输出;支持 16 路 800W/64 路 1080P/128 路 720P/256 路 4CIF 解码 H.264/H.265 解码;支持大屏拼接漫游;1 个 DB15 转 8 路音频输出;" - ] - }, - "配电柜": { - "配电柜": [ - "1) 类型: 30KW 配电柜", - "2) 控制: 欧姆龙 PLC 控制器, 网络远程控制", - "3) 元器件: 德力西断路器, 施耐德接触器", - "4) 输入电压: 380V", - "5) 输出电压: 220V", - "6) 输出回路: 双三相回路, 6 个单相回路", - "7) 尺寸: 450*600*200" - ] - }, - "控制软件": { - "控制软件": [] - }, - "线缆": { - "线缆": [ - "HAMI10 米", - "ZR -RVV 2.5 平方电源线", - "超六类屏蔽网线" - ] - }, - "ZR-RVV2.5平方电源线": { - "ZR-RVV2.5平方电源线": [] - }, - "超六类屏蔽网线": { - "超六类屏蔽网线": [] - }, - "网络交换机": { - "网络交换机": [ - "8 百兆电口+1 千兆电口, 二层非网管, 桌面式" - ] - }, - "热成像云台(640*512)": { - "热成像云台(640*512)": [ - "1. 具有多码流功能, 分辨率≥640x512。", - "2. 具有 8 倍数字变倍功能。", - "3. 焦距为 50mm, 固定光圈 F1.0。", - "4. 自带测温功能, 画面显示场景温度范围。", - "5. 能够显示当前场景的最高和最低温度值, 并能在当前场景中标注出最高温度值及其位置。", - "6. 拥有 14 中伪彩可供选择。", - "7. 支持水平 360 °连续转动 、俯仰角-90 °~30 °转动 、横滚角-45 °~45 °转动。", - "8. 相机支持内置 MicroSD 卡, 容量最大 128GB。" - ] - }, - "高清解码器": { - "高清解码器": [ - "1 路 HDMI 、VGA 、BNC 三种输出接口", - "支持 H.265、H.264、MPEG4、MJPEG 等主流的编码格式", - "支持 PS 、RTP 、TS 、ES 等主流的封装格式", - "支持 G.722、G.711A、G.726、G.711U、MPEG2-L2、AAC 音频格式的解码", - "支持 2 路 1200W,或 4 路 800W,或 6 路 500W,或 10 路 300W,或 16 路 1080P 及以下分辨率同时实时解码", - "支持 1/4/6/8/9/12/16 画面分割", - "支持 1 个 RJ45 网络接口", - "1 路音频输出 、 1 路对讲输入 、 1 路对讲输出", - "一个标准 232 接口 (RJ 45) 、一个标准 485 接口", - "8 路报警输入, 8 路报警输出" - ] - }, - "高清数字编码器": { - "高清数字编码器": [ - "支持 1 路 HDMI 或 1 路 VGA 视频输入, 自适应接入;", - "1 路音频输入;", - "支持 1 路 VGA 环通输出;", - "支持 H.264 编码, 1080P 、720P 等高清分辨率 实时编码;", - "1 个 10M/ 100M 自适应以太网口;", - "支持 1 个 microSD 存储卡插槽, microSD 最 大支持 128G;" - ] - }, - "4G图传服务器": { - "4G图传服务器": [ - "E5-2620 V4(8 核 2.1GHz) × 1/16GB DDR4 /1TB SATA × 2/SAS_HBA/DVD/1GbE ×4/冗电/2U", - "1、电源:高效能 550W 铂金 1+1 冗余电源;", - "2、电源电压 200-240V/50Hz;", - "3、机箱尺寸:87.8mm(高)×448mm(宽)×794.4mm(深);", - "4、重量 最大 35 千克;" - ] - }, - "监控摄像设备-1": { - "监控摄像设备-1": [ - "1.名称:200 万高清枪机", - "200 万星光级 1/1.8 ”CMOS 超宽动态 ICR 日夜型枪型网络摄像机; 传感器类型: 1/1.8 ” Progressive Scan CMOS; 最 低照度彩色 :0.001 lx (AGC 开,RJ45 输出),黑白:0.0001 lx (AGC 开, RJ45 输出); 快门: 1/3 秒至 1/100,000 秒; 宽动 态范围: 120dB; 视频压缩标准: H.265/H .264/MJPEG; 帧 率: 50Hz: 50fps(1920 × 1080,1280 ×960,1280 ×720); 支持 Micro SD/SDHC /SDXC 卡(128G)断网本地存储;感兴趣区域 ROI 支持三码流分别设置 4 个固定区域或动态跟踪 ;具备 人脸检测 、 区域入侵检测 、越界检测 、徘徊 、人员聚集、 场景变更 、虚焦检测 、音频异常检测等功能; 支持车辆捕 获 、车牌识别功能; 支持人脸侦测, 过线计数功能; 工作 温度和湿度: -30℃~60℃,湿度小于 95%(无凝结); 电源供 应 :AC24V / DC12V / PoE(802.3af);功耗: 6W MAX(当 ICR 切换时,9W MAX)" - ] - }, - "监控摄像设备-2": { - "监控摄像设备-2": [ - "1.名称:微卡口/智慧监控", - "水平分辨力 1000 TVL ,传感器类型: 彩色 CMOS , 尺寸≥ 1/1.9\"; 2) 相机自带 led 补光灯, 支持环境自适应开启功能。 3) 图片上可叠加 OSD 黑边, OSD 像素 0~1024Pixel 可调 4) 2 个 100/1000M 以太网口;1 个 BNC 接口;4 个 RS232, 2 个 RS485, 1 个 SDTY 卡插槽; 1 个 5V 电源输出; 8 路 I/O 输入; 1 路报警输入接口, 2 路报警输出接口; 1 个外同步 输入接口;7 个闪光灯输出接口;1 个 reset 接口;2 路 USB 接口 5) 彩色模式: ≤0.001 lx (应能分辨反射式视频矩阵测试卡 种彩色色块) ,黑白模式: ≤0.0001 lx (应能分辨反射式视 频分辨率测试卡种圆形轮廓) 6) 视频压缩标准检查: H.265; H.264; M JPEG 7) 支持 P-iris 自动光圈镜头 8) 速度检测误差白天≤5%, 晚上≤5%" - ] - }, - "监控摄像设备-3": { - "监控摄像设备-3": [ - "1.名称:枪球联动型摄像 机", - "200 万+200 万像素, 星光级网络摄像机; 支持人脸/人体自 动检测并抓拍; 定点相机: 支持 1920 × 1080@60fps, 星光 级超低照度, 0.001Lux/F1.0 (彩色 ), 0.0005Lux/F1.0 (黑 白 ); 动点相机: 支持 1920 × 1080@60fps, 星光级超低照 度, 0.002Lux/F1.6(彩色), 0.000 2Lux/F1.6(黑白 ); 不 低于 10 倍光学变倍, 16 倍数字变倍; 支持宽动态 、透雾、 强光抑制 、 电子防抖; H.265/H.264/MJ PEG; 支持 128GB Micro SD 卡; 电源: DC12V; 支持防雷 、 防浪涌 、防突波, IP66 防护等级" - ] - }, - "监控摄像设备-4": { - "监控摄像设备-4": [ - "1.名称:200 万像素人脸抓 拍机", - "200 万 像素, 1/1.8\" CMOS 宽动态人脸抓 拍摄像机; 最低照度彩色:0.001Lux, 黑白 0.000 1Lux ,0 Lux with LED; 快门 1 秒至 1/100,000 秒;最大焦距不低于 32m m,倍率不 低于 4 倍; 宽动态范围 140dB; 压缩标准 H.265/H.264/MJPEG; 支持背光补偿, 透雾, 电子 防抖; 支 持智能报警, 包括移动侦测,遮挡报警, 网线 断, IP 地址冲突, 存储器满,存储器错; 支持对运动人脸进行检测 、跟踪 、抓 拍 、评分 、筛选, 输出最优的人脸抓图; 工作温度和湿度 -30℃~60℃,湿度小于 95%(无凝结); 防护等级 IP66; 补光 距离 50 米" - ] - }, - "物位检测仪表": { - "物位检测仪表": [ - "1.名称:窄波雷达", - "2.型号:窄波雷达, 测速范围 10km/h~250km/h" - ] - }, - "视频控制设备-1": { - "视频控制设备-1": [ - "1.名称:智能终端", - "2.类别:可接入 8 路高清摄像机(支持视频和图片同时接入)" - ] - }, - "存储设备": { - "存储设备": [ - "1.名称:硬盘", - "2.类别:4 T SATA 企业级硬盘" - ] - }, - "交换机": { - "交换机": [ - "1.名称:交换机", - "2.功能:8 个百兆电口" - ] - }, - "小电器": { - "小电器": [ - "1.名称:稳压器", - "2.型号:稳压器≥1 KVA" - ] - }, - "监控摄像设备-5": { - "监控摄像设备-5": [ - "1.名称:600 万像素人脸抓 拍机", - "600 万 像素, 1/1.8\" CMOS 宽动态人 脸抓拍摄像机; 最低照度彩色:0.001Lux, 黑白 0.0001Lux ,0 Lux with LED; 快门 1 秒至 1/100,000 秒;最大焦距不低于 56mm,倍率不 低于 4 倍; 压缩标准 H.265/H.264/MJPEG; 支持背光补偿, 透雾, 电子防抖;支持智能报警,包括移动侦测,遮挡报警, 网线断, IP 地址冲突,存储器满,存储器错; 支持对运动人脸 进行检测 、跟踪 、抓拍 、评分 、筛选, 输出最优的人脸抓 图; 工作温度和湿度 -30℃~60℃,湿度小 于 95%(无凝结); 防护等级 IP66; 补光距离 50 米" - ] - }, - "监控摄像设备-6": { - "监控摄像设备-6": [ - "1.名称:800 万 180 度鹰 眼(含支架)", - "800 万 180 °AR 球型鹰眼;S 系列 800 万 180 °全景 一体式 网络高清摄像机,全景摄像机有 4 个 1/1.8\" 2MP Progressive Scan CMOS, 最高分辨率及帧率可达 4096 × 1800 @30fps, 星光级超低照度, 0.005Lux/F2.2(彩色 ), 0.0005Lux/F2.2 (黑白 ); 特写摄像机采用 1/1.8\" 2MP Progressive Scan CMOS, 最高分辨率及帧率可达 1920 × 1080@30fps, 水平 360 °连续旋转,垂直-15 ° -90 °(自动翻转 ), 星光级超 低照度,0.002Lux/F1.5(彩色 ) , 0.0002Lux/F1.5(黑白 ), 200m 红外照射距离, 37 倍光学变倍, 16 倍数字变倍; 支 持区域入侵 、越界 、进入区域 、离开区域事件侦测功能; 系统支持检测直径 300 米 180 °半圆形范围 内运动目标, 可同时检测 30 个目标;系统支持点击联动功能 、目 标自动 跟踪功能 、手动跟踪功能; 支持强光抑制 、3D 数字降噪; 系统支持基于交通平台8600 实现交通云图立体防控; 系统支持在摄像机的实时视频画面中添加最多 500 个 AR 标签, 且可实现标签与标签联动的功能;系统内置 7 路报警输入、 2 路报警输出、1 路音频输入、1 路音频输出,支持光口(FC) + 电口(RJ-45)网络接口设计,采用一体化设计,可快捷安装; H.265/H.264/MJPEG; 支持防雷 、防浪涌 、防突波, IP66 防护等级" - ] - }, - "监控立杆-4": { - "监控立杆-4": [ - "F 型杆, 高 8 米横臂 5 米, 喷塑 、镀锌 。 ( 含杆件 布线 、地笼 M32-8-1500 安装) 3.基础开挖:杆件基础坑开挖, 规格 2000*2000*2000 4.渣土清运:现场渣土清运, 运距 10km 以内 5.基础浇灌:杆件基础浇灌养护, C25 及以上混凝土" - ] - }, - "配线-1": { - "配线-1": [ - "1.配线形式: RVV -3*2.5 平方电源线" - ] - }, - "双绞线缆(网线)": { - "双绞线缆(网线)": [ - "1.名称:室外 6 类线" - ] - }, - "配线(控制线)": { - "配线(控制线)": [ - "1.配线形式: RVVP 4*1.0" - ] - }, - "配线(接地线)": { - "配线(接地线)": [ - "1.接地线: BVR 16" - ] - }, - "人(手)孔砌筑-1": { - "人(手)孔砌筑-1": [ - "1.名称:400*400 检查井" - ] - }, - "配管": { - "配管": [ - "1.名称:电气配管", - "2.材质: PE", - "3.规格:DN100" - ] - }, - "安全防范分系统调试": { - "安全防范分系统调试": [ - "1.名称:摄像头调试" - ] - }, - "电表报装": { - "电表报装": [ - "报装费, 不含电费" - ] - }, - "监控摄像设备-7": { - "监控摄像设备-7": [ - "1.名称:区间测速一体抓拍单元(含区间测速摄像机高清镜头 、 防护罩 、支架)", - "2.类别:区间测速化一体抓拍单元,900W 像素,视频分辨率 4096(H) ×2160(V), 帧率 1~25fps。 3.区间测速摄像机高清摄像头: 定焦高清镜头, 焦距 根据 现场情况选配 25-35MM。 4.安装支架及底托: 固定抓拍单元 、补光灯等设备" - ] - }, - "视频系统设备": { - "视频系统设备": [ - "1) 像素间距: 10mm", - "2) LED 像素组成:2R1G", - "3) 单元板尺寸: 256mm*128mm", - "4) 像素密度: 3906 pixels/m2", - "5) 保护电路:动态扫描方式", - "6) 驱动方式: 静态恒流驱动", - "7) 输入功率 (最大值) :800W/m2", - "8) 显示屏亮度 :≥4000CD/m2" - ] - }, - "监控立杆-5": { - "监控立杆-5": [] - }, - "人(手)孔砌筑-2": { - "人(手)孔砌筑-2": [ - "1.名称:400*400 检查井" - ] - }, - "视频控制设备-2": { - "视频控制设备-2": [ - "1.名称:信息采集发布终端", - "2.类别:信息采集发布控制,支持文字动态显示 。网络接口: 1 个 1RJ45 10M/100M/1000M 自适应以太网口;" - ] - }, - "配线-2": { - "配线-2": [ - "1.配线形式: RVVP 4*1.0" - ] - }, - "ZR-RVV2": { - "5平方电源线": [] - }, - "监控摄像设备-8": { - "监控摄像设备-8": [ - "1.名称:智能 LED 补光灯", - "2.类别:车道频闪补光灯" - ] - }, - "监控摄像设备-9": { - "监控摄像设备-9": [ - "1.名称:红外白爆闪灯", - "2.类别:红外白灯一体化闪光灯 。最佳距离 20-30 米, 色温 5800k" - ] - }, - "监控摄像设备-10": { - "监控摄像设备-10": [ - "1.名称:高清球机", - "2.类别:200 万高清球机, 30 倍数网络智能球机 3.球机支架:H1.5*L0.5 4.安装方式:立杆上安装" - ] - }, - "室外防水设备箱-5": { - "室外防水设备箱-5": [ - "订制平安城市 LOGO , 表面防静电喷塑处理(室外防水, 防剪线)" - ] - }, - "室外防水设备箱-6": { - "室外防水设备箱-6": [ - "订制平安城市 LOGO , 表面防静电喷塑处理(室外防水, 防剪线)" - ] - }, - "室外防水设备箱-7": { - "室外防水设备箱-7": [ - "订制平安城市 LOGO , 表面防静电喷塑处理(室外防水, 防剪线)" - ] - }, - "补光灯-4": { - "补光灯-4": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "补光灯-5": { - "补光灯-5": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "补光灯-6": { - "补光灯-6": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "补光灯-7": { - "补光灯-7": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "补光灯-8": { - "补光灯-8": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "补光灯-9": { - "补光灯-9": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "补光灯-10": { - "补光灯-10": [ - "LED 12 个 1W 大功率 LED ; 白光色温 正白; 流明度月 2000 lm ; 光束角度 30 °(标配 ), 其它可定制; 可视距 离 100m; 功率因素 >0.95; 工 作电压 AC110-220V/AC24V/DC12V;" - ] - }, - "配线-3": { - "配线-3": [ - "1.配线形式: RVVP -3*6 电源线" - ] - } - } +# 示例使用 +data1 = { + "采购需求": { + "高清数字枪机-1": [], + "枪机支架-1": [], + "高清数字半球机-1": [], + "网络硬盘录像机-1": [], + "监硬控硬盘-1": [], + "交换机-1": [], + "交换机-2": [], + "监视器-1": [], + "电源线-1": [], + "网线-1": [], + "水晶头-1": [], + "PVC线槽-1": [], + "辅料-1": [], + "安装调试-1": [], + "视频图像采集及存储系统": { + "系统功能": [] + } + } +} -good_list = [ - '监控立杆', '室外防水设备箱', '补光灯', '监控摄像设备', '视频控制设备', '配线', - '人(手)孔砌筑', '1200万高清枪机', '电源线', '网线', '防雷器', '设备箱插板', - '微卡口/智慧监控', '枪球联动型摄像机', '200万像素人脸抓拍机', '600万像素人脸抓拍机', - '枪机支架', '枪机电源', '监控摄像设备(800万180度鹰眼)', '综合管理平台软件', - '人脸大数据综合应用软件', '中心管理服务器', '人脸接入服务器', '人脸大数据服务器', - '人脸云分析服务器', '视频结构化服务器', '车辆识别应用软件', '车辆大数据应用服务器', - '车辆云分析服务器', '车辆大数据服务器', '人脸结构化服务器', - '人脸、人体、车辆结构化分析算法', '系统功能', '云存储管理服务器', - '云存储运维服务器', '流媒体分发服务器', '高速图片云存储节点', '视频云存储节点', - '硬盘', '校时服务器', '校时服务器天线', '室内全彩显示屏', 'LED全彩屏发送卡', - 'LED屏支架', '视频综合平台B20系列主控板', '配电柜', '控制软件', '线缆', - 'ZR-RVV2.5平方电源线', '超六类屏蔽网线', '网络交换机', '热成像云台(640*512)', - '高清解码器', '高清数字编码器', '4G图传服务器', '物位检测仪表', '存储设备', - '交换机', '小电器', '双绞线缆(网线)', '配线(控制线)', '配线(接地线)', '配管', - '安全防范分系统调试', '电表报装', '视频系统设备',"系统功能" -] - -special_keys = ['系统功能'] # 需要特殊处理的键 - -# # 调用函数并打印结果 -# filtered = filter_data(data, good_list, special_keys) -# print(filtered) - -# 调用函数并打印结果 -filtered = filter_data(data, good_list, special_keys) -print(json.dumps(filtered,ensure_ascii=False,indent=4)) +key_paths, good_list, grouped_paths, no_keys_added = generate_key_paths(data1) +print(json.dumps(data1,ensure_ascii=False,indent=4)) diff --git a/flask_app/货物标/货物标解析main.py b/flask_app/货物标/货物标解析main.py index cdc09e0..eaf9be3 100644 --- a/flask_app/货物标/货物标解析main.py +++ b/flask_app/货物标/货物标解析main.py @@ -246,6 +246,7 @@ def goods_bid_main(output_folder, file_path, file_type, unique_id): # 小解析也更新偏离表 #TODO 体育器材 符合性检查的外键 采购需求 +#TODO:同系统下的多个货物,记录一下数量 #商务标这里改为列表最里层 #good_list 金额 截取上下文 if __name__ == "__main__":