首次提交by MimoCode

This commit is contained in:
tang1219
2026-06-15 14:50:15 +08:00
parent 584b31da50
commit ead13f863c
166 changed files with 14908 additions and 1 deletions
+37
View File
@@ -0,0 +1,37 @@
from datetime import date, timedelta
from sqlalchemy import select
from app.database import async_session_factory
from app.models.batch import Batch
from app.models.medicine import Medicine
from app.config import settings
async def check_expiring_medicines():
async with async_session_factory() as db:
today = date.today()
for days in settings.EXPIRY_WARNING_DAYS:
target_date = today + timedelta(days=days)
query = select(Batch, Medicine).join(
Medicine, Batch.medicine_id == Medicine.id
).where(
Batch.expiry_date <= target_date,
Batch.is_expired == False,
Batch.quantity > 0
)
result = await db.execute(query)
batches = result.all()
if batches:
from app.notifications.manager import notification_manager
title = f"药品过期提醒 ({days}天内)"
content = "以下药品即将过期,请及时处理:\n\n"
for batch, medicine in batches:
content += f"- {medicine.name}: {batch.batch_no or '默认批次'} "
content += f"(过期日期: {batch.expiry_date})\n"
await notification_manager.send_notification(title, content)