投标加入利益检索
This commit is contained in:
@@ -1409,6 +1409,57 @@ class roxyExhibition(APIView):
|
||||
itme["project_conflicts"] = []
|
||||
itme["bid_conflicts"] = []
|
||||
|
||||
# 如果是投标登记类型,检索冲突信息并添加到返回字段(与立项相同逻辑)
|
||||
if info.type == "投标登记":
|
||||
try:
|
||||
from business.views import conflict_search
|
||||
bid_id = int(info.user_id)
|
||||
bid = Bid.objects.filter(id=bid_id, is_deleted=False).first()
|
||||
if bid and bid.BiddingUnit:
|
||||
conflict_result = conflict_search(bidding_unit=bid.BiddingUnit, exclude_bid_id=bid_id)
|
||||
def parse_json_fields_bid(records):
|
||||
"""将记录中的 JSON 字符串字段解析为列表,与立项展示逻辑一致"""
|
||||
processed = []
|
||||
for record in records:
|
||||
new_record = dict(record)
|
||||
if 'client_info' in new_record and new_record['client_info']:
|
||||
try:
|
||||
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
|
||||
if 'party_info' in new_record and new_record['party_info']:
|
||||
try:
|
||||
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
|
||||
if 'BiddingUnit' in new_record and new_record['BiddingUnit']:
|
||||
try:
|
||||
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
|
||||
processed.append(new_record)
|
||||
return processed
|
||||
itme["prefiling_conflicts"] = parse_json_fields_bid(conflict_result.get('prefiling_conflicts', []))
|
||||
itme["project_conflicts"] = parse_json_fields_bid(conflict_result.get('project_conflicts', []))
|
||||
itme["bid_conflicts"] = parse_json_fields_bid(conflict_result.get('bid_conflicts', []))
|
||||
else:
|
||||
itme["prefiling_conflicts"] = []
|
||||
itme["project_conflicts"] = []
|
||||
itme["bid_conflicts"] = []
|
||||
except (ValueError, TypeError, AttributeError, ImportError):
|
||||
itme["prefiling_conflicts"] = []
|
||||
itme["project_conflicts"] = []
|
||||
itme["bid_conflicts"] = []
|
||||
|
||||
data.append(itme)
|
||||
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -1116,10 +1116,21 @@ class BidRegistration(APIView):
|
||||
today = datetime.datetime.now()
|
||||
formatted_date = today.strftime("%Y-%m-%d")
|
||||
|
||||
# 利益冲突检索(与立项相同逻辑):比对预立案、立项、投标三张表
|
||||
conflict_result = conflict_search(bidding_unit=BiddingUnit, exclude_bid_id=bib.id)
|
||||
conflict_parts = []
|
||||
if conflict_result['prefiling_conflicts']:
|
||||
conflict_parts.append(f"预立案冲突:{len(conflict_result['prefiling_conflicts'])}条(ID:{','.join([str(r['id']) for r in conflict_result['prefiling_conflicts'][:5]])}{'...' if len(conflict_result['prefiling_conflicts']) > 5 else ''})")
|
||||
if conflict_result['project_conflicts']:
|
||||
conflict_parts.append(f"立项冲突:{len(conflict_result['project_conflicts'])}条(合同编号:{','.join([r['ContractNo'] for r in conflict_result['project_conflicts'][:3]])}{'...' if len(conflict_result['project_conflicts']) > 3 else ''})")
|
||||
if conflict_result['bid_conflicts']:
|
||||
conflict_parts.append(f"投标冲突:{len(conflict_result['bid_conflicts'])}条(项目:{','.join([(r.get('ProjectName') or '')[:20] for r in conflict_result['bid_conflicts'][:3]])}{'...' if len(conflict_result['bid_conflicts']) > 3 else ''})")
|
||||
conflict_text = ";冲突记录:" + ";".join(conflict_parts) if conflict_parts else ""
|
||||
|
||||
# 使用统一的审核流程函数
|
||||
from User.utils import create_approval_with_team_logic
|
||||
|
||||
content = f"项目名称:{ProjectName},申请日期:{times}"
|
||||
content = f"项目名称:{ProjectName},申请日期:{times},招标单位:{BiddingUnit}{conflict_text}"
|
||||
|
||||
approval, approvers_order_json, needs_approval = create_approval_with_team_logic(
|
||||
team_name=team_name,
|
||||
|
||||
Reference in New Issue
Block a user