优化案件模块

This commit is contained in:
27942
2026-01-22 12:53:55 +08:00
parent 0a90fad51a
commit 9cb170ce11

View File

@@ -1340,46 +1340,47 @@ class roxyExhibition(APIView):
exclude_project_id=project_id
)
# 处理冲突记录中的JSON格式数据只显示name字段
def process_conflict_records(records):
"""处理冲突记录中的JSON格式字段只提取name"""
# 处理冲突记录:将 client_info、party_info、BiddingUnit 字段从 JSON 字符串解析为列表
# 直接返回原始列表,不提取 name 字段
def parse_json_fields(records):
"""将记录中的 JSON 字符串字段解析为列表,不提取 name"""
processed = []
for record in records:
new_record = dict(record)
# 处理 client_info 字段
# 处理 client_info 字段:如果是 JSON 字符串,解析为列表
if 'client_info' in new_record and new_record['client_info']:
try:
client_data = json.loads(new_record['client_info'])
if isinstance(client_data, list):
names = [item.get('name', '') for item in client_data if isinstance(item, dict) and item.get('name')]
new_record['client_info'] = ''.join(names) if names else new_record['client_info']
if isinstance(new_record['client_info'], str):
parsed = json.loads(new_record['client_info'])
if isinstance(parsed, list):
new_record['client_info'] = parsed
except (json.JSONDecodeError, TypeError, ValueError):
pass
# 处理 party_info 字段
pass # 解析失败,保持原值
# 处理 party_info 字段:如果是 JSON 字符串,解析为列表
if 'party_info' in new_record and new_record['party_info']:
try:
party_data = json.loads(new_record['party_info'])
if isinstance(party_data, list):
names = [item.get('name', '') for item in party_data if isinstance(item, dict) and item.get('name')]
new_record['party_info'] = ''.join(names) if names else new_record['party_info']
if isinstance(new_record['party_info'], str):
parsed = json.loads(new_record['party_info'])
if isinstance(parsed, list):
new_record['party_info'] = parsed
except (json.JSONDecodeError, TypeError, ValueError):
pass
# 处理 BiddingUnit 字段
pass # 解析失败,保持原值
# 处理 BiddingUnit 字段:如果是 JSON 字符串,解析为列表
if 'BiddingUnit' in new_record and new_record['BiddingUnit']:
try:
bidding_data = json.loads(new_record['BiddingUnit'])
if isinstance(bidding_data, list):
names = [item.get('name', '') for item in bidding_data if isinstance(item, dict) and item.get('name')]
new_record['BiddingUnit'] = ''.join(names) if names else new_record['BiddingUnit']
if isinstance(new_record['BiddingUnit'], str):
parsed = json.loads(new_record['BiddingUnit'])
if isinstance(parsed, list):
new_record['BiddingUnit'] = parsed
except (json.JSONDecodeError, TypeError, ValueError):
pass
pass # 解析失败,保持原值
processed.append(new_record)
return processed
# 添加三个冲突字段,并处理其中的JSON格式数据
itme["prefiling_conflicts"] = process_conflict_records(conflict_records.get('prefiling_conflicts', []))
itme["project_conflicts"] = process_conflict_records(conflict_records.get('project_conflicts', []))
itme["bid_conflicts"] = process_conflict_records(conflict_records.get('bid_conflicts', []))
# 添加三个冲突字段,解析 JSON 字符串为列表
itme["prefiling_conflicts"] = parse_json_fields(conflict_records.get('prefiling_conflicts', []))
itme["project_conflicts"] = parse_json_fields(conflict_records.get('project_conflicts', []))
itme["bid_conflicts"] = parse_json_fields(conflict_records.get('bid_conflicts', []))
else:
# 如果没有找到项目或缺少信息,返回空数组
itme["prefiling_conflicts"] = []