diff --git a/src/overhaul_activity/router.py b/src/overhaul_activity/router.py index ea45aae..ad18fdd 100644 --- a/src/overhaul_activity/router.py +++ b/src/overhaul_activity/router.py @@ -15,23 +15,24 @@ router = APIRouter() @router.get( - "/{overhaul_session}", response_model=StandardResponse[List[OverhaulActivityRead]] + "/{overhaul_session}", response_model=StandardResponse[OverhaulActivityPagination] ) async def get_scope_equipments( - db_session: DbSession, + common: CommonParameters, overhaul_session: str, - assetnum: Optional[str] = Query(None), + location_tag: Optional[str] = Query(None), scope_name: Optional[str] = Query(None), ): """Get all scope activity pagination.""" # return data = await get_all( - db_session=db_session, - assetnum=assetnum, + common=common, + location_tag=location_tag, scope_name=scope_name, overhaul_session_id=overhaul_session, ) + return StandardResponse( data=data, message="Data retrieved successfully", diff --git a/src/overhaul_activity/service.py b/src/overhaul_activity/service.py index 73ebc45..1f26ae1 100644 --- a/src/overhaul_activity/service.py +++ b/src/overhaul_activity/service.py @@ -13,11 +13,14 @@ from src.database.service import CommonParameters, search_filter_sort_paginate from src.overhaul_activity.utils import get_material_cost, get_service_cost from src.overhaul_scope.model import OverhaulScope from src.overhaul_scope.service import get as get_session -from src.standard_scope.model import MasterEquipment +from src.standard_scope.model import MasterEquipment, StandardScope from src.standard_scope.service import get_by_oh_session_id from src.workscope_group.model import MasterActivity from src.equipment_workscope_group.model import EquipmentWorkscopeGroup - +from src.overhaul_scope.model import MaintenanceType +from src.workscope_group_maintenance_type.model import WorkscopeOHType +from src.overhaul_scope.service import get as get_overhaul +from src.standard_scope.model import EquipmentOHHistory from .model import OverhaulActivity from .schema import (OverhaulActivityCreate, OverhaulActivityRead, OverhaulActivityUpdate) @@ -43,9 +46,9 @@ async def get( async def get_all( *, - db_session: DbSession, + common: CommonParameters, overhaul_session_id: UUID, - assetnum: Optional[str] = None, + location_tag: Optional[str] = None, scope_name: Optional[str] = None ): # query = ( @@ -70,13 +73,32 @@ async def get_all( ##raise Exception(results['items'][0].equipment.parent.__dict__) - equipments, overhaul = await get_by_oh_session_id( - db_session=db_session, oh_session_id=overhaul_session_id + # equipments, overhaul = await get_by_oh_session_id( + # db_session=db_session, oh_session_id=overhaul_session_id + # ) + + overhaul = await get_overhaul(db_session=common['db_session'], overhaul_session_id=overhaul_session_id) + + query = ( + Select(StandardScope) + .outerjoin(StandardScope.oh_history) # Use outerjoin to handle None values + .join(StandardScope.workscope_groups) + .join(EquipmentWorkscopeGroup.workscope_group) + .join(MasterActivity.oh_types) + .join(WorkscopeOHType.oh_type) + .filter(MaintenanceType.name == overhaul.maintenance_type.name).filter( + (StandardScope.is_alternating_oh == False) | + (StandardScope.oh_history == None) | + (StandardScope.oh_history.has(EquipmentOHHistory.last_oh_type != overhaul.maintenance_type.name)) + ).distinct() ) + equipments = await search_filter_sort_paginate(model=query, **common) + data = equipments['items'] + results = [] - for equipment in equipments: + for equipment in data: res = OverhaulActivityRead( id=equipment.id, material_cost=35000000000, @@ -88,7 +110,9 @@ async def get_all( results.append(res) - return results + equipments['items'] = results + + return equipments async def get_all_by_session_id(*, db_session: DbSession, overhaul_session_id):