11.21 解决了复杂、多层的采购需求bug

This commit is contained in:
zy123 2024-11-21 17:42:32 +08:00
parent 0f17a5dd76
commit eaf46068c8
3 changed files with 131 additions and 739 deletions

View File

@ -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)

View File

@ -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}
def get_suffix_label(key):
"""
根据当前计数获取字母后缀并更新suffix_map
"""
suffix_map[key] += 1
return get_suffix(suffix_map[key])
# 第二遍遍历:根据统计结果添加后缀或特殊命名
filtered_data = {}
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}"
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:
if key_counter[inner_key] > 1:
# 对于重复键,添加后缀
suffix = get_suffix_label(inner_key)
new_key = f"{inner_key}-{suffix}"
other_keys.append(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:
new_key = inner_key
filtered_data[new_key] = values
# 只有一个键匹配:删除后缀并添加到 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)
return 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
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)
# 示例用法
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 16 核多线程双 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/h250km/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 电源线"
]
# 更新 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
# 示例使用
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))

View File

@ -246,6 +246,7 @@ def goods_bid_main(output_folder, file_path, file_type, unique_id):
# 小解析也更新偏离表
#TODO 体育器材 符合性检查的外键 采购需求
#TODO:同系统下的多个货物,记录一下数量
#商务标这里改为列表最里层
#good_list 金额 截取上下文
if __name__ == "__main__":