diff --git a/app/models/register_status.py b/app/models/register_status.py index 229976e..a3fdcd3 100644 --- a/app/models/register_status.py +++ b/app/models/register_status.py @@ -40,11 +40,11 @@ class RegisterStatusModel(BaseModel): 4.ماقبل قطعی 5.قطعی """) - number_start: Optional[float] = Field(description="شماره صورت وضعیت") - number_end: Optional[float] = Field(description="شماره صورت وضعیت") + number: Optional[float] = Field(description="شماره صورت وضعیت") index: Optional[Literal[1,2]] = Field(description=""" 1.قطعی 2. علی الحساب """) amount: Optional[AmountStatus] = Field(description="مبالغ") - related_to_number:Optional[int] = Field(description="شماره صورت وضعیت مرتبط") + related_to_number_start:Optional[int] = Field(description="شماره صورت وضعیت مرتبط") + related_to_number_end:Optional[int] = Field(description="شماره صورت وضعیت مرتبط") diff --git a/app/repositories/report.py b/app/repositories/report.py index 118589f..be0ef14 100644 --- a/app/repositories/report.py +++ b/app/repositories/report.py @@ -402,6 +402,9 @@ class ReportRepository(): from_date = _inp.from_date.combine(_inp.from_date.date(), time.min) result = await use_collection(TaskEnv.CLN_MONITOR_PYSICAL).aggregate([ {"$match":{"date_at":{"$lte":to_date,"$gte":from_date}}}, + { + "$sort": {'date_at': -1} + }, {"$group": {'_id': {"year": "$year", "month": "$month"}, 'avg': {'$avg': "$real"}}, @@ -432,6 +435,23 @@ class ReportRepository(): } ]).to_list(None) return result + #روند وضعیت پروژه ها + async def design_progress_status_progress(self): + result = await use_collection("design_progress").aggregate([ + {'$match':{'complete_at':{"$exists":0},'parent_id':{"$exists":0}}}, + {"$group": + {'_id': {"created_at": { + "$dateToString": { + "format": "%Y-%m-%d", # Format to extract date only (YYYY-MM-DD) + "date": "$created_at" + } + },'type':'$type'}, + 'count': {'$sum': 1}, + "projectIds": {"$addToSet": "$project_id"}, + }, + } + ]).to_list(None) + return result async def design_sts(self): result = await use_collection(TaskEnv.CLN_PROJECT).aggregate([ @@ -446,6 +466,27 @@ class ReportRepository(): ]).to_list(None) return result + async def status_agreement_progress(self): + result = await use_collection(TaskEnv.CLN_PROJECT_AGREEMENT).aggregate([ + { + "$group": { + "_id": { + "created_at": { + "$dateToString": { + "format": "%Y-%m-%d", # Format to extract date only (YYYY-MM-DD) + "date": "$created_at" + } + }, + "status": "$status" + }, + "count": {"$sum": 1}, + "projectIds": {"$addToSet": "$_id"} + } + } + ]).to_list(None) + + return result + diff --git a/app/urls/report.py b/app/urls/report.py index e93b4c9..b7a25e5 100644 --- a/app/urls/report.py +++ b/app/urls/report.py @@ -117,9 +117,19 @@ def design_progress_status(): def design_progress_status_state(): pass +@router.get('/design_progress/status/progress', tags=_tag_base) +@shrink(repo.design_progress_status_progress) +def design_progress_status_progress(): + pass +# وضعیت دارا بودن موافقت نامه @router.get('/status_agreement/donut', tags=_tag_base) @shrink(repo.status_agreement) def status_agreement(): pass +#روند وضعیت موافقت نامه ها +@router.get('/status_agreement/progress', tags=_tag_base) +@shrink(repo.status_agreement_progress) +def status_agreement_progress(): + pass app.include_router(router) \ No newline at end of file