优化案件模块

This commit is contained in:
27942
2026-01-16 15:19:05 +08:00
parent 3aaece3d07
commit d03412b650

View File

@@ -120,29 +120,35 @@ def search_related_records(client_info, party_info, exclude_project_id=None):
project_list = list(project_records[:10].values('id', 'ContractNo', 'times', 'type', 'client_info', 'party_info'))
result['project_conflicts'] = project_list
# 检索投标表 - 投标表没有明确的委托人和相对方字段,所以如果BiddingUnit同时包含委托人相对方信息,则视为冲突
if client_name and party_name:
bid_records = Bid.objects.filter(is_deleted=False)
# BiddingUnit需要同时包含委托人和相对方信息
bid_records = bid_records.filter(
Q(BiddingUnit__icontains=client_name) & Q(BiddingUnit__icontains=party_name)
)
# 检索投标表 - 投标表只有BiddingUnit字段,需要检查是否包含委托人相对方信息
# BiddingUnit可能同时包含委托人和相对方或者只包含其中一方
bid_records = Bid.objects.filter(is_deleted=False)
bid_q = Q()
# 如果有提取出的名称,优先使用名称匹配
if client_name:
bid_q |= Q(BiddingUnit__icontains=client_name)
if party_name:
bid_q |= Q(BiddingUnit__icontains=party_name)
# 如果有完整的client_info和party_info也尝试匹配截取前50个字符
if client_info:
# 提取client_info中的关键信息去除标点符号和数字后的名称部分
client_info_clean = client_info[:50].strip()
if client_info_clean:
bid_q |= Q(BiddingUnit__icontains=client_info_clean)
if party_info:
# 提取party_info中的关键信息
party_info_clean = party_info[:50].strip()
if party_info_clean:
bid_q |= Q(BiddingUnit__icontains=party_info_clean)
# 如果构建了查询条件,执行查询
if bid_q:
bid_records = bid_records.filter(bid_q)
bid_list = list(bid_records[:10].values('id', 'ProjectName', 'times', 'BiddingUnit'))
result['bid_conflicts'] = bid_list
elif (client_info or client_name) and (party_info or party_name):
# 如果提供了完整的client_info和party_info也在BiddingUnit中查找
bid_records = Bid.objects.filter(is_deleted=False)
search_client = client_info[:50] if client_info else client_name
search_party = party_info[:50] if party_info else party_name
if search_client and search_party:
bid_records = bid_records.filter(
Q(BiddingUnit__icontains=search_client) & Q(BiddingUnit__icontains=search_party)
)
bid_list = list(bid_records[:10].values('id', 'ProjectName', 'times', 'BiddingUnit'))
result['bid_conflicts'] = bid_list
return result