Files
shanxia2.0/backend/app/crud/delivery_warning_resolve.py
T
2026-05-12 16:35:07 +08:00

56 lines
1.8 KiB
Python

"""配送预警:任务完成/取消时自动结案(写历史后更新主表)"""
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)