feat(report):add status agreement

This commit is contained in:
shahzeydyfah
2025-01-24 11:35:48 +03:30
parent d1859a5c46
commit 5ec724d252
5 changed files with 39 additions and 2 deletions
+1
View File
@@ -19,5 +19,6 @@ class TaskEnv:
CLN_PROJECT_STS = 'project_sts'
CLN_PROJECT = 'project'
CLN_PROJECT_PRICE_REPORT = 'price_report'
CLN_PROJECT_AGREEMENT = 'project_agreement'
+5
View File
@@ -141,5 +141,10 @@ class ProjectPriceReport(BaseModel):
amount_adjust: Optional[int] = Field(description='مبلغ تعدیل')
first_amount: Optional[int] = Field(description=' مبلغ اولیه پیمان')
class ProjectStatusAgreement(BaseModel):
id: Optional[uuid.UUID] = Field(alias='_id')
project_id: Optional[uuid.UUID] = Field(description="کد شناسایی پروژه در این فیلد قرار می گیرد")
status:str
+14 -2
View File
@@ -6,7 +6,7 @@ import requests
from fastapi import HTTPException
from app.config import TaskEnv
from app.models.project import ProjectModel, UpdateSts, ProjectSts, Design
from app.models.project import ProjectModel, UpdateSts, ProjectSts, Design, ProjectStatusAgreement
from core.repositories.base import BaseRepository
from core.service.mongo_db import use_collection
from core.utils.table_engine import TableEngineRequestType, TableEngineExport
@@ -66,6 +66,13 @@ class ProjectRepository(BaseRepository[ProjectModel]):
coding.has_monitor = False
await use_collection(COLLECTION).insert_one(coding.mongo_dict())
if coding.design.status_agreement:
_model=ProjectStatusAgreement(
project_id= coding.id,
status= coding.design.status_agreement
).init_id().cu_at()
await use_collection(TaskEnv.CLN_PROJECT_AGREEMENT).insert_one(_model.mongo_dict())
return await self.get(coding.id)
@@ -83,9 +90,14 @@ class ProjectRepository(BaseRepository[ProjectModel]):
if update.monitor:
update.has_monitor = True
await self.update_report_price(update)
update.u_at()
await use_collection(COLLECTION).update_one({"_id":_id},{"$set":update.mongo_dict()})
if old_project.design.status_agreement != update.design.status_agreement:
_model = ProjectStatusAgreement(
project_id=_id,
status=update.design.status_agreement
).init_id().cu_at()
await use_collection(TaskEnv.CLN_PROJECT_AGREEMENT).insert_one(_model.mongo_dict())
return await self.get(_id)
async def update_design_sts(self, _id: UUID, update: UpdateSts):
+14
View File
@@ -433,4 +433,18 @@ class ReportRepository():
]).to_list(None)
return result
async def design_sts(self):
result = await use_collection(TaskEnv.CLN_PROJECT).aggregate([
{"$group":{"_id":'$design.sts','count':{'$sum':1},"projectIds": {"$addToSet": "$_id"}}}
])
return result
async def status_agreement(self):
result = await use_collection(TaskEnv.CLN_PROJECT).aggregate([
{"$group":{"_id":'$design.status_agreement','count':{'$sum':1},"projectIds": {"$addToSet": "$_id"}}}
])
return result
+5
View File
@@ -117,4 +117,9 @@ def design_progress_status():
def design_progress_status_state():
pass
@router.get('/status_agreement/donut', tags=_tag_base)
@shrink(repo.status_agreement)
def status_agreement():
pass
app.include_router(router)