diff --git a/app/repositories/contract.py b/app/repositories/contract.py index 51cdd30..7df3203 100644 --- a/app/repositories/contract.py +++ b/app/repositories/contract.py @@ -7,6 +7,11 @@ from app.models.contract import ContractModel, AddendumModel, ExtensionModel from core.repositories.base import BaseRepository from core.service.mongo_db import use_collection from core.utils import get_time +from core.utils.table_engine import TableEngineRequestType, TableEngineExport +from typing import TypeVar +from core.utils.te import NewTableEngine + +T = TypeVar('T') class ContractRepository(BaseRepository): @@ -66,3 +71,21 @@ class ContractRepository(BaseRepository): {"project_id": project_id} ).to_list(None) return contract + + async def fetch_report(self, _input: TableEngineRequestType): + query = await NewTableEngine.mongo( + query_class=use_collection(TaskEnv.CLN_CONTRACT), + soft_deleted=True, + model=ContractModel, + return_query=True, + inputs=_input.te) \ + .to_dict() + print(query) + if query: + count = await use_collection(TaskEnv.CLN_CONTRACT).aggregate([ + {'$match':query['query']}, + {'$group': {"_id": None, 'count': {'$sum': 1},'sum':{"$sum":"$amount"}}} + ]).to_list(None) + return count[0] + else: + return [] diff --git a/app/repositories/project.py b/app/repositories/project.py index a698071..8e70d66 100644 --- a/app/repositories/project.py +++ b/app/repositories/project.py @@ -38,6 +38,8 @@ class ProjectRepository(BaseRepository[ProjectModel]): if coding.monitor: coding.monitor.code = 'S'+code coding.has_monitor = True + else: + coding.has_monitor = False coding.init_id().cu_at() await use_collection(COLLECTION).insert_one(coding.mongo_dict()) return await self.get(coding.id) diff --git a/app/urls/contract.py b/app/urls/contract.py index 8c9b0f0..ee6b29b 100644 --- a/app/urls/contract.py +++ b/app/urls/contract.py @@ -66,4 +66,9 @@ def delete(_id: UUID): def fetch(body: TableEngineRequestType = Body(...)): pass +@router.post('/report', response_model=TableEngineExport[ThisModel], tags=_tag_base) +@shrink(repo.fetch_report) +def fetch_report(body: TableEngineRequestType = Body(...)): + pass + app.include_router(router) \ No newline at end of file