From 198784f144f8498dd9851f7096f753b5b6be9a69 Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Sun, 14 Jun 2026 23:40:15 +0330 Subject: [PATCH] fix(report):add design progress gant chart --- app/repositories/report.py | 39 ++++++++++++++++++++++++++++++++++++++ app/urls/report.py | 6 ++++++ 2 files changed, 45 insertions(+) diff --git a/app/repositories/report.py b/app/repositories/report.py index 7a5f9e1..96bd598 100644 --- a/app/repositories/report.py +++ b/app/repositories/report.py @@ -532,6 +532,45 @@ class ReportRepository(): res['audit_program'] = result return res + # فرآیند طراحی گانت چارت + async def design_chart(self, project_id: uuid): + list_design_progress = await use_collection('design_progress').find({"project_id": project_id}).sort('type', 1).to_list(None) + if not list_design_progress: + return {} + list_design_progress_ids = [doc["_id"] for doc in list_design_progress] + list_design_progress_record = await use_collection('design_progress_record').find({"design_progress_id": {"$in":list_design_progress_ids}}).to_list(None) + grouped_records = {} + for i in list_design_progress: + t = i["type"] + st = i.get("sub_type") + if st: + grouped_records.setdefault(t, {})[st] = { + "progress": i, + "records": [] + } + else: + grouped_records.setdefault(t, { + "progress": i, + "records": [] + }) + + print(grouped_records) + for item in list_design_progress: + for record in list_design_progress_record: + if record["design_progress_id"] == item['_id']: + if 'sub_type' not in item: + grouped_records[item['type']]["records"].append(record) + else: + grouped_records[item['type']][item['sub_type']]["records"].append(record) + return grouped_records + + + + + + + + diff --git a/app/urls/report.py b/app/urls/report.py index 56ee303..a2a0cf5 100644 --- a/app/urls/report.py +++ b/app/urls/report.py @@ -139,4 +139,10 @@ def status_agreement_progress(): def get_extra_project(project_id: uuid.UUID): pass +# فرآیند طراحی گانت چارت +@router.get('/design/chart/{project_id}', tags=_tag_base) +@shrink(repo.design_chart) +def design_chart(project_id: uuid.UUID): + pass + app.include_router(router) \ No newline at end of file