首次提交by MimoCode
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user