feat(pl): optional escort selection on transport arrange

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-09-13 10:48:23 +08:00
1 parent 3dc71788d4
commit ca3062b0e2
10 files changed
+339 -10

No files matched your search

+24
View File
@@ -439,6 +439,7 @@ def _apply_transport_arrange_fields(
payload: TransportArrange,
vehicle_info: dict,
driver_info: Optional[dict],
escort_info: Optional[dict],
carrier_name: Optional[str],
start_point: Optional[str],
end_point: Optional[str],
@@ -450,6 +451,9 @@ def _apply_transport_arrange_fields(
transport.driver_id = driver_info["id"] if driver_info else None
transport.driver_name = driver_info["name"] if driver_info else None
transport.driver_phone = driver_info["phone"] if driver_info else None
transport.escort_id = escort_info["id"] if escort_info else None
transport.escort_name = escort_info["name"] if escort_info else None
transport.escort_phone = escort_info["phone"] if escort_info else None
transport.carrier_id = payload.carrier_id or vehicle_info.get("carrier_id")
transport.carrier_name = carrier_name
transport.transport_medium = payload.transport_medium
@@ -653,6 +657,9 @@ def create_transport(
driver_id=payload.driver_id,
driver_name=payload.driver_name,
driver_phone=payload.driver_phone,
escort_id=payload.escort_id,
escort_name=payload.escort_name,
escort_phone=payload.escort_phone,
carrier_id=payload.carrier_id,
carrier_name=payload.carrier_name,
transport_medium=payload.transport_medium,
@@ -696,12 +703,16 @@ def create_transport(
plan.license_plate = transport.license_plate
plan.driver_id = transport.driver_id
plan.driver_name = transport.driver_name
plan.escort_id = transport.escort_id
plan.escort_name = transport.escort_name
plan.escort_phone = transport.escort_phone
if transport.vehicle_id:
snapshot = build_transport_resource_snapshot(
db,
tenant_no,
transport.vehicle_id,
selected_driver_id=transport.driver_id,
selected_escort_id=transport.escort_id,
)
apply_resource_snapshot_json(
plan=plan, transport=transport, snapshot=snapshot
@@ -766,6 +777,13 @@ def arrange_transport(
if not driver_info:
raise HTTPException(status_code=400, detail="司机不存在")
# 获取押运员信息(可选)
escort_info = None
if payload.escort_id:
escort_info = _resolve_driver_info(db, tenant_no, payload.escort_id)
if not escort_info:
raise HTTPException(status_code=400, detail="押运员不存在")
# 检查产品属性(易制毒/易制爆需要证件,以 CRM 产品主数据为准)
products = db.query(PlPlanProduct).filter(
PlPlanProduct.plan_id == plan_id,
@@ -811,6 +829,7 @@ def arrange_transport(
payload=payload,
vehicle_info=vehicle_info,
driver_info=driver_info,
escort_info=escort_info,
carrier_name=carrier_name,
start_point=start_point,
end_point=end_point,
@@ -835,6 +854,7 @@ def arrange_transport(
payload=payload,
vehicle_info=vehicle_info,
driver_info=driver_info,
escort_info=escort_info,
carrier_name=carrier_name,
start_point=start_point,
end_point=end_point,
@@ -858,12 +878,16 @@ def arrange_transport(
plan.license_plate = transport.license_plate
plan.driver_id = transport.driver_id
plan.driver_name = transport.driver_name
plan.escort_id = transport.escort_id
plan.escort_name = transport.escort_name
plan.escort_phone = transport.escort_phone
if transport.vehicle_id:
snapshot = build_transport_resource_snapshot(
db,
tenant_no,
transport.vehicle_id,
selected_driver_id=transport.driver_id,
selected_escort_id=transport.escort_id,
)
apply_resource_snapshot_json(plan=plan, transport=transport, snapshot=snapshot)
plan.transport_status = "arranged"