优化案件模块
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user