修改费用计算代码
This commit is contained in:
@@ -57,6 +57,37 @@ def transform_expense_preview(input_file, output_file):
|
||||
print(f"原始expensePreview中的顶级分类: {list(original_expense_preview.keys())}")
|
||||
print(f"projectDivision中的顶级分类: {list(project_division.keys())}")
|
||||
|
||||
# 先清理 projectDivision:递归删除任意带有 "删除": "1" 或 1 的节点
|
||||
def _filter_deleted_nodes(obj):
|
||||
# 若当前对象本身标记了删除,则直接丢弃
|
||||
if isinstance(obj, dict):
|
||||
flag = obj.get("删除")
|
||||
if flag == "1" or flag == 1:
|
||||
return None
|
||||
new_obj = {}
|
||||
for k, v in obj.items():
|
||||
filtered = _filter_deleted_nodes(v)
|
||||
if filtered is not None:
|
||||
new_obj[k] = filtered
|
||||
return new_obj
|
||||
elif isinstance(obj, list):
|
||||
new_list = []
|
||||
for item in obj:
|
||||
filtered = _filter_deleted_nodes(item)
|
||||
if filtered is not None:
|
||||
new_list.append(filtered)
|
||||
return new_list
|
||||
else:
|
||||
return obj
|
||||
|
||||
cleaned_project_division = _filter_deleted_nodes(project_division) or {}
|
||||
if cleaned_project_division != project_division:
|
||||
print("已根据 '删除' 标记清理 projectDivision 中的节点")
|
||||
project_division = cleaned_project_division
|
||||
# 回写清理后的结构,确保后续流程与落盘一致
|
||||
if "projectData" in data:
|
||||
data["projectData"]["projectDivision"] = project_division
|
||||
|
||||
# 创建新的expensePreview结构
|
||||
new_expense_preview = {}
|
||||
|
||||
@@ -478,6 +509,37 @@ def transform_json_types(input_file_path, output_file_path=None):
|
||||
with open(input_file_path, "r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
|
||||
# 在主网流程中,同样先清理 projectDivision:递归删除任意带有 "删除": "1" 或 1 的节点
|
||||
def _filter_deleted_nodes(obj):
|
||||
if isinstance(obj, dict):
|
||||
flag = obj.get("删除")
|
||||
if flag == "1" or flag == 1:
|
||||
return None
|
||||
new_obj = {}
|
||||
for k, v in obj.items():
|
||||
filtered = _filter_deleted_nodes(v)
|
||||
if filtered is not None:
|
||||
new_obj[k] = filtered
|
||||
return new_obj
|
||||
elif isinstance(obj, list):
|
||||
new_list = []
|
||||
for item in obj:
|
||||
filtered = _filter_deleted_nodes(item)
|
||||
if filtered is not None:
|
||||
new_list.append(filtered)
|
||||
return new_list
|
||||
else:
|
||||
return obj
|
||||
|
||||
try:
|
||||
pd = data.get("projectData", {}).get("projectDivision", {})
|
||||
cleaned_pd = _filter_deleted_nodes(pd) or {}
|
||||
if cleaned_pd != pd and "projectData" in data:
|
||||
data["projectData"]["projectDivision"] = cleaned_pd
|
||||
print("[主网] 已根据 '删除' 标记清理 projectDivision 中的节点")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# 递归处理函数
|
||||
def traverse(obj):
|
||||
if isinstance(obj, dict):
|
||||
|
||||
Reference in New Issue
Block a user