From 79d542381df8b98252fd04c25a271124e192c2c0 Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Wed, 15 Jan 2025 23:14:06 +0330 Subject: [PATCH] feat(report):change report sts --- app/models/report.py | 2 ++ app/repositories/report.py | 13 ++++++------- app/urls/report.py | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/models/report.py b/app/models/report.py index 6bb3bd5..742df3f 100644 --- a/app/models/report.py +++ b/app/models/report.py @@ -6,6 +6,8 @@ from pydantic import Field class StatusReport(pydantic.BaseModel): state: Optional[str] + type_id: Optional[int] = Field(description='کد شناسایی نوع پروژه در این فیلد قرار می گیرد') + nature_id: Optional[int] = Field(description='کد شناسایی ماهبت در این فیلد قرار می گیرد') class ReportCountry(pydantic.BaseModel): type_id: int = Field(description='کد شناسایی نوع پروژه در این فیلد قرار می گیرد') diff --git a/app/repositories/report.py b/app/repositories/report.py index 209f626..926690b 100644 --- a/app/repositories/report.py +++ b/app/repositories/report.py @@ -9,9 +9,12 @@ class ReportRepository(): async def project_status(self, _inp: StatusReport, type): if _inp.state: match = {f'{type}.sts': {'$exists': 1}, 'design.state': _inp.state} - else: match = {f'{type}.sts': {'$exists': 1}} + if _inp.type_id: + match.update({'design.type_id': _inp.type_id}) + if _inp.nature_id: + match.update({'design.nature_id': _inp.nature_id}) report = await use_collection(TaskEnv.CLN_PROJECT).aggregate([ { "$match": match @@ -41,12 +44,6 @@ class ReportRepository(): match.update({'design.nature_id': _inp.nature_id}) if _inp.monitor_type: match.update({'monitor.base_information.type': _inp.monitor_type}) - - # count_nature = await use_collection(TaskEnv.CLN_PROJECT).count_documents( - # {'design.nature_id':_inp.nature_id,'design.state':_inp.state}) - # count_type = await use_collection(TaskEnv.CLN_PROJECT).count_documents({'design.type_id': _inp.type_id,'design.state':_inp.state}) - # count_monitor_type = await use_collection(TaskEnv.CLN_PROJECT).count_documents({'monitor.base_information.type': _inp.monitor_type,'design.state':_inp.state}) - report = await use_collection(TaskEnv.CLN_PROJECT).aggregate([ {"$match": match}, {'$group': { @@ -132,6 +129,7 @@ class ReportRepository(): return report async def list_donut(self, _inp: DonutList): + _filter = None if _inp.type == 1: _filter = {'design.nature_id': int(_inp.donut_select)} if _inp.type == 2: @@ -173,6 +171,7 @@ class ReportRepository(): if report: for i in report: get_list.append(i['_id']) + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({"_id":{"$in":get_list}}).to_list(None) return get_list async def sum_delay_percent(self): diff --git a/app/urls/report.py b/app/urls/report.py index 81e6005..33a4584 100644 --- a/app/urls/report.py +++ b/app/urls/report.py @@ -8,11 +8,13 @@ _tag_base = [router_base_url] router = generate_router(router_base_url, auth_dependencies=False, version='v2') repo = ReportRepository() +#نقشه:وضعیت های طراحی @router.post('/design/sts', tags=_tag_base) @shrink(repo.project_status_design) def project_status_design(_inp: StatusReport): pass +#نقشه:وضعیت های نظارت @router.post('/monitor/sts', tags=_tag_base) @shrink(repo.project_status_monitor) def project_status_monitor(_inp: StatusReport):