From 54683e612eb500508f775ef625917fec4f4de277 Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Tue, 4 Jun 2024 21:43:17 +0330 Subject: [PATCH] feat:add monitor secondary physical progress --- app/config/__init__.py | 1 + app/models/monito_physical_progress.py | 3 ++ .../monitor_physical_secondary_progress.py | 26 ++++++++++ app/models/monitor_rial_progress.py | 2 + .../monitor_physical_secondary_progress.py | 17 +++++++ app/urls/__init__.py | 3 +- app/urls/monitor_physical.py | 8 ++-- app/urls/monitor_rial.py | 8 ++-- app/urls/monitor_secondary.py | 47 +++++++++++++++++++ 9 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 app/models/monitor_physical_secondary_progress.py create mode 100644 app/repositories/monitor_physical_secondary_progress.py create mode 100644 app/urls/monitor_secondary.py diff --git a/app/config/__init__.py b/app/config/__init__.py index 4836422..170bb00 100644 --- a/app/config/__init__.py +++ b/app/config/__init__.py @@ -9,5 +9,6 @@ class TaskEnv: CLN_BILL = 'bill' CLN_MONITOR_PYSICAL = 'monitor_physical' CLN_MONITOR_RIAL = 'monitor_rial' + CLN_MONITOR_SECONDARY = 'monitor_secondary' diff --git a/app/models/monito_physical_progress.py b/app/models/monito_physical_progress.py index 4d01581..9580826 100644 --- a/app/models/monito_physical_progress.py +++ b/app/models/monito_physical_progress.py @@ -15,3 +15,6 @@ class PhysicalProgressModel(BaseModel): medium_progress:Optional[int] = Field(description="متوسط پیشرفت فیزیکی ماهانه از ابتدا تا کنون") deviation:Optional[int] = Field(description="انحراف از برنامه") date_at:Optional[datetime.datetime] = Field(description="تاریخ گزارش پیشرفت") + last_month:Optional[int] = Field(description='واقعی ماه اخیر') + last_three_month:Optional[int] = Field(description='واقعی ماه اخیر') + diff --git a/app/models/monitor_physical_secondary_progress.py b/app/models/monitor_physical_secondary_progress.py new file mode 100644 index 0000000..43a7506 --- /dev/null +++ b/app/models/monitor_physical_secondary_progress.py @@ -0,0 +1,26 @@ +import uuid +from datetime import datetime +from typing import Optional, Literal + +from pydantic import Field + +from core.models.base import BaseModel + + +class SecondaryProgressModel(BaseModel): + id: Optional[uuid.UUID] = Field(alias='_id') + project_id: Optional[uuid.UUID] = Field(description="کد شناسایی پروژه در این فیلد قرار می گیرد") + title:Optional[str] = Field(description='عنوان در این فیلد قرار میگیرد') + weight:Optional[int]=Field(description='وزن در این فیلد قرار می گیرد') + program: Optional[int] = Field(description=" برنامه ای") + real: Optional[int] = Field(description=" واقعی") + deviation:Optional[int] = Field(description="انحراف از برنامه") + date_at:Optional[datetime] = Field(description="تاریخ گزارش پیشرفت") + last_month:Optional[int] = Field(description='واقعی ماه اخیر') + collection:Optional[Literal['all','work','various','secondary_building','block']] = Field(description=""" + all: کلی + work: پیشرفت جبهه های کاری + various: پیشرفت رشته های مختلف + secondary_building: پیشرفت ساختمان های جنبی + block: پیشرفت بلوک ها + """) diff --git a/app/models/monitor_rial_progress.py b/app/models/monitor_rial_progress.py index 92b2e9f..30c2b3a 100644 --- a/app/models/monitor_rial_progress.py +++ b/app/models/monitor_rial_progress.py @@ -16,3 +16,5 @@ class RialProgressModel(BaseModel): last_status_pyment:Optional[int] = Field(description='آخرین صورت وضعیت موقت پرداخت شده:') last_adjustment_verify:Optional[int]=Field(description='آخرین تعدیل تائید شده') last_adjustment_payment:Optional[int] = Field(description='آخرین تعدیل پرداخت شده') + last_month:Optional[int] = Field(description='واقعی ماه اخیر') + diff --git a/app/repositories/monitor_physical_secondary_progress.py b/app/repositories/monitor_physical_secondary_progress.py new file mode 100644 index 0000000..0462a68 --- /dev/null +++ b/app/repositories/monitor_physical_secondary_progress.py @@ -0,0 +1,17 @@ +import uuid + +from app.config import TaskEnv +from app.models.monitor_physical_secondary_progress import SecondaryProgressModel +from core.repositories.base import BaseRepository +from core.service.mongo_db import use_collection + +class SecondaryProgressRepository(BaseRepository): + def __init__(self): + super().__init__(collection=TaskEnv.CLN_MONITOR_SECONDARY, model=SecondaryProgressModel) + + async def last_record(self,project_id:uuid.UUID): + last = await use_collection(TaskEnv.CLN_MONITOR_SECONDARY).find({'project_id':project_id}).sort("$natural", -1).to_list(None) + if last: + return last[0] + else: + return {} \ No newline at end of file diff --git a/app/urls/__init__.py b/app/urls/__init__.py index 5ccaa9f..ee2b541 100644 --- a/app/urls/__init__.py +++ b/app/urls/__init__.py @@ -10,4 +10,5 @@ from .bill_delay import * from .contract import * # from .bill import * from .monitor_physical import * -from .monitor_rial import * \ No newline at end of file +from .monitor_rial import * +from .monitor_secondary import * \ No newline at end of file diff --git a/app/urls/monitor_physical.py b/app/urls/monitor_physical.py index 5f94849..7f3d2d9 100644 --- a/app/urls/monitor_physical.py +++ b/app/urls/monitor_physical.py @@ -34,10 +34,10 @@ def update(_id: UUID, coding: ThisModel = Body(...)): def get(_id: UUID): pass -@router.delete('/{_id}', response_model=ThisModel, tags=_tag_base) -@shrink(repo.delete) -def delete(_id: UUID): - pass +# @router.delete('/{_id}', response_model=ThisModel, tags=_tag_base) +# @shrink(repo.delete) +# def delete(_id: UUID): +# pass @router.post('', response_model=TableEngineExport[ThisModel], tags=_tag_base) @shrink(repo.fetch) diff --git a/app/urls/monitor_rial.py b/app/urls/monitor_rial.py index 7cc1384..cfee200 100644 --- a/app/urls/monitor_rial.py +++ b/app/urls/monitor_rial.py @@ -34,10 +34,10 @@ def update(_id: UUID, coding: ThisModel = Body(...)): def get(_id: UUID): pass -@router.delete('/{_id}', response_model=ThisModel, tags=_tag_base) -@shrink(repo.delete) -def delete(_id: UUID): - pass +# @router.delete('/{_id}', response_model=ThisModel, tags=_tag_base) +# @shrink(repo.delete) +# def delete(_id: UUID): +# pass @router.post('', response_model=TableEngineExport[ThisModel], tags=_tag_base) @shrink(repo.fetch) diff --git a/app/urls/monitor_secondary.py b/app/urls/monitor_secondary.py new file mode 100644 index 0000000..f90a4f5 --- /dev/null +++ b/app/urls/monitor_secondary.py @@ -0,0 +1,47 @@ +from uuid import UUID + +from fastapi import Body + +from app.models.monitor_physical_secondary_progress import SecondaryProgressModel +from app.repositories.monitor_physical_secondary_progress import SecondaryProgressRepository +from core.app import app +from core.utils.router import generate_router, shrink +from core.utils.table_engine import TableEngineExport, TableEngineRequestType + +ThisModel = SecondaryProgressModel +router_base_url = 'monitor-secondary' +_tag_base = [router_base_url] +router = generate_router(router_base_url, auth_dependencies=False, version='v2') +repo = SecondaryProgressRepository() + +@router.post('/create', response_model=ThisModel, tags=_tag_base) +@shrink(repo.create) +def create(coding: ThisModel = Body(...)): + pass + +@router.post('/last/{project_id}', response_model=ThisModel, tags=_tag_base) +@shrink(repo.last_record) +def last_record(project_id:UUID): + pass + +@router.put('/{_id}', response_model=ThisModel, tags=_tag_base) +@shrink(repo.update) +def update(_id: UUID, coding: ThisModel = Body(...)): + pass + +@router.get('/{_id}', response_model=ThisModel, tags=_tag_base) +@shrink(repo.get) +def get(_id: UUID): + pass + +# @router.delete('/{_id}', response_model=ThisModel, tags=_tag_base) +# @shrink(repo.delete) +# def delete(_id: UUID): +# pass + +@router.post('', response_model=TableEngineExport[ThisModel], tags=_tag_base) +@shrink(repo.fetch) +def fetch(body: TableEngineRequestType = Body(...)): + pass + +app.include_router(router) \ No newline at end of file