From d1859a5c46fe25231ad14c324e993870a7fc80ee Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Fri, 24 Jan 2025 00:39:05 +0330 Subject: [PATCH] feat(report):add design_progress_status_state --- app/models/design_progress.py | 1 + app/repositories/design_progress.py | 3 +++ app/repositories/report.py | 12 ++++++++++++ app/urls/report.py | 5 +++++ 4 files changed, 21 insertions(+) diff --git a/app/models/design_progress.py b/app/models/design_progress.py index e04d4a5..605982f 100644 --- a/app/models/design_progress.py +++ b/app/models/design_progress.py @@ -29,6 +29,7 @@ class CreateDesignProgress(pydantic.BaseModel): 6.تائید دانشگاه علوم پزشکی 7.گزارش های کلیه رشته ها """) + state:Optional[str] class UpdateDesignProgress(pydantic.BaseModel): complete_at: Optional[datetime.datetime] = Field(description='تاریخ تکمیل مدارک') diff --git a/app/repositories/design_progress.py b/app/repositories/design_progress.py index 207a34a..099837a 100644 --- a/app/repositories/design_progress.py +++ b/app/repositories/design_progress.py @@ -5,6 +5,7 @@ from uuid import UUID from fastapi import HTTPException +from app.config import TaskEnv from app.models.design_progress import DesignProgressModel, CreateDesignProgress, RecordModel, GetRecord, \ UpdateDesignProgress from core.repositories.base import BaseRepository @@ -24,11 +25,13 @@ class DesignProgressRepository(BaseRepository): "sub_type": _inp.sub_type }) if not exist: + project = await use_collection(TaskEnv.CLN_PROJECT).find_one({"_id":_inp.project_id}) progress = DesignProgressModel( project_id=_inp.project_id, type=_inp.type, parent_id=_inp.parent_id, sub_type=_inp.sub_type, + state = project['design']['state'] ) progress.init_id().cu_at() await use_collection(COLLECTION).insert_one(progress.mongo_dict()) diff --git a/app/repositories/report.py b/app/repositories/report.py index 5246256..585671b 100644 --- a/app/repositories/report.py +++ b/app/repositories/report.py @@ -421,4 +421,16 @@ class ReportRepository(): ]).to_list(None) return result + async def design_progress_status_state(self): + result = await use_collection("design_progress").aggregate([ + {'$match':{'complete_at':{"$exists":0},'parent_id':{"$exists":0}}}, + {"$group": + {'_id': {'state':"$state",'type':'$type'}, + 'count': {'$sum': 1}, + "projectIds": {"$addToSet": "$project_id"}, + }, + } + ]).to_list(None) + return result + diff --git a/app/urls/report.py b/app/urls/report.py index 1864887..e3de63c 100644 --- a/app/urls/report.py +++ b/app/urls/report.py @@ -112,4 +112,9 @@ def progress_month_report(_inp:PhysicalMonth = Body(...)): def design_progress_status(): pass +@router.get('/design_progress/status/state', tags=_tag_base) +@shrink(repo.design_progress_status_state) +def design_progress_status_state(): + pass + app.include_router(router) \ No newline at end of file