feat(pl): optional escort selection on transport arrange
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
3dc71788d4
commit
ca3062b0e2
10 files changed
+339
-10
No files matched your search
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user