上传文件至 kg_lab_6.13

7.3 优化条件分支
This commit is contained in:
2025-07-03 09:59:59 +08:00
parent ddcad7a1e4
commit 850f0476c1
+78 -1
View File
@@ -72,7 +72,7 @@ def parse_keyword(keyword, indicator_name):
# 默认处理(普通关键字)
return {"映射规则": keyword, "指标映射": [keyword]}
def xml_to_json(xml_content):
def xml_to_json2(xml_content):
root = ET.fromstring(xml_content)
records = root.findall('.//records/record')
@@ -392,6 +392,83 @@ def xml_to_json(xml_content):
return json.dumps(result, ensure_ascii=False, indent=4)
def xml_to_json(xml_content):
root = ET.fromstring(xml_content)
records = root.findall('.//records/record')
result = []
# 定义需要特殊处理的数据来源类型
scope_based_sources = ["主材单价", "主材参数", "主材数量", "定额参数", "定额数量", "工程费用"]
direct_sources = ["报表指标", "指标库"]
project_division = ["项目划分费用"]
for record in records:
unit = record.get("单位")
unit_type = record.get("单价类型")
order = record.get("序号")
extraction_method = record.get("提取方式")
indicator_type = record.get("指标类型")
index_extraction_scope = record.get("指标提取范围")
data_sources = record.get("数据来源")
indicator_name = record.get("指标名称")
keyword = record.get("关键字")
parsed = parse_keyword(keyword, indicator_name)
base_item = {
"指标名称": indicator_name,
"code": "",
"单位": unit,
"单价类型": unit_type,
"序号": order,
"提取方式": extraction_method,
"指标类型": indicator_type,
"数据来源": data_sources
}
if data_sources in direct_sources:
base_item["指标描述"] = {
"指标映射": parsed["指标映射"],
"映射规则": parsed["映射规则"]
}
result.append(base_item)
elif data_sources in project_division:
mapping_desc = f"查找一下项目划分节点【{index_extraction_scope}】下费用预览的【{indicator_name}"
base_item["指标描述"] = {
"指标映射": mapping_desc,
"映射规则": parsed["映射规则"]
}
result.append(base_item)
elif data_sources in scope_based_sources:
temp0 = parsed["指标映射"]
temp1 = parsed["映射规则"]
if index_extraction_scope:
# 取数据来源的最后两个字(如"单价"、"参数"等)
temp2 = data_sources[-2:]
mapping_desc = f"从项目划分【{index_extraction_scope}】下所有子孙项目划分中查找名称属于{temp0}的所有{temp2}"
else:
mapping_desc = f"从【{data_sources}】中获取{temp0}的属性"
base_item["指标描述"] = {
"指标映射": mapping_desc,
"映射规则": temp1
}
result.append(base_item)
else:
# 处理未定义的数据来源类型
base_item["指标描述"] = {
"指标映射": parsed["指标映射"],
"映射规则": parsed["映射规则"]
}
result.append(base_item)
return json.dumps(result, ensure_ascii=False, indent=4)
def transform_text(text, input_str="【FFFFF】"):
import re