| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- """配送预警:任务完成/取消时自动结案(写历史后更新主表)"""
- from datetime import datetime
- from sqlalchemy.orm import Session
- from app.models.models import BizDeliveryWarning, BizDeliveryWarningHis
- def auto_resolve_open_warnings_for_task(db: Session, task_id: str) -> int:
- """将某配送任务下未结案预警全部自动处理(配送完成等场景)。"""
- warnings = (
- db.query(BizDeliveryWarning)
- .filter(
- BizDeliveryWarning.task_id == task_id,
- BizDeliveryWarning.is_del == 0,
- BizDeliveryWarning.is_resolved == 0,
- )
- .all()
- )
- if not warnings:
- return 0
- now = datetime.now()
- for warning in warnings:
- his = BizDeliveryWarningHis(
- id=warning.id,
- task_id=warning.task_id,
- order_id=warning.order_id,
- warning_type=warning.warning_type,
- urgency_level=warning.urgency_level,
- remaining_minutes=warning.remaining_minutes,
- message=warning.message,
- is_sent=warning.is_sent,
- sent_time=warning.sent_time,
- is_resolved=warning.is_resolved,
- resolved_time=warning.resolved_time,
- resolved_by=warning.resolved_by,
- resolved_note=warning.resolved_note,
- create_at=warning.create_at,
- create_by=warning.create_by,
- create_name=warning.create_name,
- update_at=warning.update_at,
- update_by=warning.update_by,
- his_create_at=now,
- )
- db.add(his)
- warning.is_resolved = 1
- warning.resolved_time = now
- warning.resolved_by = "system"
- warning.resolved_note = "auto:配送已完成"
- warning.update_at = now
- warning.update_by = "system"
- db.commit()
- return len(warnings)
|