add api to add overhail activity

feature/reliability_stat
Cizz22 11 months ago
parent cb979385cf
commit 2ae301a78b

@ -9,7 +9,7 @@ class OverhaulJob(Base, DefaultMixin):
__tablename__ = "oh_tr_overhaul_job"
overhaul_activity_id = Column(UUID(as_uuid=True), ForeignKey(
"oh_ms_overhaul_activity.id"), nullable=False)
"oh_tr_overhaul_activity.id"), nullable=False)
scope_equipment_job_id = Column(UUID(as_uuid=True), ForeignKey(
"oh_ms_scope_equipment_job.id", ondelete="cascade"), nullable=False)
@ -22,3 +22,7 @@ class OverhaulJob(Base, DefaultMixin):
scope_equipment_job = relationship(
"ScopeEquipmentJob", lazy="raise"
)
overhaul_activity = relationship(
"OverhaulActivity", lazy="raise"
)

@ -13,24 +13,34 @@ from src.models import StandardResponse
router = APIRouter()
@router.get("/{overhaul_session_id}", response_model=StandardResponse[OverhaulJobPagination])
async def get_jobs(common: CommonParameters, overhaul_session_id: str):
@router.get("/{overhaul_equipment_id}", response_model=StandardResponse[OverhaulJobPagination])
async def get_jobs(common: CommonParameters, overhaul_equipment_id: str):
"""Get all scope pagination."""
# return
results = await get_all(common=common, overhaul_session_id=overhaul_session_id)
results = await get_all(common=common, overhaul_equipment_id=overhaul_equipment_id)
return StandardResponse(
data=results,
message="Data retrieved successfully",
)
@router.post("/{overhaul_equipment_id}", response_model=StandardResponse[None])
async def create_overhaul_equipment_jobs(db_session: DbSession, overhaul_equipment_id, overhaul_job_in: OverhaulJobCreate):
"""Get all scope activity pagination."""
# return
await create(db_session=db_session, overhaul_equipment_id=overhaul_equipment_id, overhaul_job_in=overhaul_job_in)
return StandardResponse(
data=None,
message="Data created successfully",
)
@router.post("", response_model=StandardResponse[List[str]])
async def create_scope(db_session: DbSession, scope_in: OverhaulJobCreate):
overhaul_job = await create(db_session=db_session, scope_in=scope_in)
# @router.post("", response_model=StandardResponse[List[str]])
# async def create_scope(db_session: DbSession, scope_in: OverhaulJobCreate):
# overhaul_job = await create(db_session=db_session, scope_in=scope_in)
return StandardResponse(data=overhaul_job, message="Data created successfully")
# return StandardResponse(data=overhaul_job, message="Data created successfully")
# @router.put("/{scope_id}", response_model=StandardResponse[ScopeRead])

@ -5,7 +5,7 @@ from uuid import UUID
from pydantic import Field
from src.models import DefultBase, Pagination
from src.job.schema import ActivityMasterRead
from src.scope_equipment_job.schema import ScopeEquipmentJobRead
class OverhaulJobBase(DefultBase):
pass
@ -18,13 +18,15 @@ class OverhaulJobCreate(OverhaulJobBase):
class OverhaulJobUpdate(OverhaulJobBase):
pass
class OverhaulActivity(DefultBase):
id: UUID
overhaul_scope_id: UUID
class OverhaulJobRead(OverhaulJobBase):
id: UUID
overhaul_session_id: str
status: str
notes: str
job: ActivityMasterRead
scope_equipment_job: ScopeEquipmentJobRead
overhaul_activity: OverhaulActivity
class OverhaulJobPagination(Pagination):

@ -1,6 +1,7 @@
from sqlalchemy import Select, Delete, func
from sqlalchemy.orm import selectinload
from src.database.service import search_filter_sort_paginate
from .model import OverhaulJob
@ -12,29 +13,38 @@ from src.auth.service import CurrentUser
async def get_all(*, common, overhaul_session_id: str):
async def get_all(*, common, overhaul_equipment_id: str):
"""Returns all documents."""
query = Select(OverhaulJob).where(OverhaulJob.overhaul_scope_id == overhaul_session_id)
query = Select(OverhaulJob).where(OverhaulJob.overhaul_activity_id == overhaul_equipment_id).options(
selectinload(OverhaulJob.scope_equipment_job), selectinload(OverhaulJob.overhaul_activity)
)
results = await search_filter_sort_paginate(model=query, **common)
return results
async def create(*, db_session: DbSession, overhaul_session_id, scope_job_in: OverhaulJobCreate):
scope_jobs = []
async def create(*, db_session: DbSession, overhaul_equipment_id, overhaul_job_in: OverhaulJobCreate):
overhaul_jobs = []
if not overhaul_session_id:
if not overhaul_equipment_id:
raise ValueError("assetnum parameter is required")
for job_id in scope_job_in.job_ids:
scope_equipment_job = OverhaulJob(
overhaul_session_id=overhaul_session_id, job_id=job_id)
equipment_stmt = Select(OverhaulJob).where(
OverhaulJob.overhaul_activity_id == overhaul_equipment_id)
scope_jobs.append(scope_equipment_job)
equipment = await db_session.scalar(equipment_stmt)
db_session.add_all(scope_jobs)
for job_id in overhaul_job_in.job_ids:
overhaul_equipment_job = OverhaulJob(
overhaul_activity_id=overhaul_equipment_id, scope_equipment_job_id=job_id
)
overhaul_jobs.append(overhaul_equipment_job)
db_session.add_all(overhaul_jobs)
await db_session.commit()
return scope_job_in.job_ids
return overhaul_job_in.job_ids
# async def update(*, db_session: DbSession, scope: OverhaulScope, scope_in: ScopeUpdate):
@ -57,4 +67,3 @@ async def create(*, db_session: DbSession, overhaul_session_id, scope_job_in: Ov
# query = Delete(OverhaulScope).where(OverhaulScope.id == scope_id)
# await db_session.execute(query)
# await db_session.commit()

@ -18,5 +18,5 @@ class ScopeEquipmentJob(Base, DefaultMixin):
"MasterEquipment", lazy="raise", primaryjoin="and_(ScopeEquipmentJob.assetnum == foreign(MasterEquipment.assetnum))", uselist=False)
job = relationship(
"MasterActivity", lazy="raise"
"MasterActivity", lazy="selectin"
)

@ -23,7 +23,6 @@ class ScopeEquipmentJobUpdate(ScopeEquipmentJobBase):
class ScopeEquipmentJobRead(ScopeEquipmentJobBase):
id: UUID
assetnum: str
job: ActivityMasterRead

Loading…
Cancel
Save