From 2ad33fcbe4bcf76815fee73dc8d6d6efa58ef567 Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Tue, 28 Oct 2025 10:22:54 +0700 Subject: [PATCH] add remark --- src/sparepart/model.py | 26 +++++++++++++++++--------- src/sparepart/router.py | 14 +++++++++++++- src/sparepart/schema.py | 7 ++++++- src/sparepart/service.py | 29 +++++++++++++++++++++++++++-- 4 files changed, 63 insertions(+), 13 deletions(-) diff --git a/src/sparepart/model.py b/src/sparepart/model.py index 346cb14..ff24267 100644 --- a/src/sparepart/model.py +++ b/src/sparepart/model.py @@ -7,17 +7,17 @@ from src.models import DefaultMixin, IdentityMixin, TimeStampMixin from src.workorder.model import MasterWorkOrder -class MasterSparePart(Base, DefaultMixin): - __tablename__ = "oh_ms_sparepart" +# class MasterSparePart(Base, DefaultMixin): +# __tablename__ = "oh_ms_sparepart" - assetnum = Column(String, nullable=False) - location_tag = Column(String, nullable=False) - stock = Column(Integer, nullable=False, default=0) - name = Column(String, nullable=False) - cost_per_stock = Column(Float, nullable=False) - unit = Column(String, nullable=False) +# assetnum = Column(String, nullable=False) +# location_tag = Column(String, nullable=False) +# stock = Column(Integer, nullable=False, default=0) +# name = Column(String, nullable=False) +# cost_per_stock = Column(Float, nullable=False) +# unit = Column(String, nullable=False) - sparepart_procurements = relationship("MasterSparepartProcurement", lazy="selectin") +# sparepart_procurements = relationship("MasterSparepartProcurement", lazy="selectin") class MasterSparepartProcurement(Base, DefaultMixin): @@ -33,3 +33,11 @@ class MasterSparepartProcurement(Base, DefaultMixin): eta_requisition = Column(Date, nullable=False) eta_ordered = Column(Date, nullable=True) eta_received = Column(Date, nullable=True) + + + +class SparepartRemark(Base, DefaultMixin): + __tablename__ = "oh_ms_sparepart_remark" + + itemnum = Column(String, nullable=False) + remark = Column(String, nullable=False) \ No newline at end of file diff --git a/src/sparepart/router.py b/src/sparepart/router.py index f705653..8498c20 100644 --- a/src/sparepart/router.py +++ b/src/sparepart/router.py @@ -4,8 +4,9 @@ from src.database.core import CollectorDbSession from src.database.service import (CommonParameters, DbSession, search_filter_sort_paginate) from src.models import StandardResponse +from src.sparepart.schema import SparepartRemark -from .service import get_spareparts_paginated +from .service import create_remark, get_spareparts_paginated router = APIRouter() @@ -22,6 +23,17 @@ async def get_sparepart(collector_db_session:CollectorDbSession, db_session: DbS data=data, message="Data retrieved successfully", ) + + +@router.post("", response_model=StandardResponse[SparepartRemark]) +async def create_remark_route(collector_db_session:CollectorDbSession, db_session: DbSession, remark_in:SparepartRemark): + sparepart_remark = await create_remark(db_session=db_session, collector_db_session=collector_db_session, remark_in=remark_in) + + return StandardResponse( + data=sparepart_remark, + message="Remark Created successfully" + ) + # @router.post("", response_model=StandardResponse[ActivityMasterCreate]) diff --git a/src/sparepart/schema.py b/src/sparepart/schema.py index efa700a..0313888 100644 --- a/src/sparepart/schema.py +++ b/src/sparepart/schema.py @@ -74,4 +74,9 @@ class ProcurementRecord: order_date: date expected_delivery_date: date status: ProcurementStatus - po_vendor_delivery_date: date \ No newline at end of file + po_vendor_delivery_date: date + + +class SparepartRemark(DefultBase): + itemnum: str + remark:str \ No newline at end of file diff --git a/src/sparepart/service.py b/src/sparepart/service.py index 5cafe96..6c8b23f 100644 --- a/src/sparepart/service.py +++ b/src/sparepart/service.py @@ -9,7 +9,7 @@ import numpy as np from dataclasses import dataclass from enum import Enum -from sqlalchemy import Delete, Select, text +from sqlalchemy import Delete, Select, select, text from sqlalchemy.orm import joinedload, selectinload from src.auth.service import CurrentUser @@ -19,6 +19,7 @@ from src.logging import setup_logging from src.overhaul_activity.service import get_standard_scope_by_session_id from src.overhaul_scope.service import get as get_scope, get_overview_overhaul from src.overhaul_scope.service import get_prev_oh +from src.sparepart.model import SparepartRemark from src.sparepart.schema import ProcurementRecord, ProcurementStatus, SparepartRequirement, SparepartStock @@ -1368,4 +1369,28 @@ ORDER BY po.item_num, po.pr_issue_date DESC; - \ No newline at end of file +async def create_remark(*, db_session, collector_db_session, remark_in): + # Step 1: Check if remark already exists for this itemnum + result = await db_session.execute( + select(SparepartRemark).where(SparepartRemark.itemnum == remark_in.itemnum) + ) + existing_remark = result.scalar_one_or_none() + + # Step 2: If it already exists, you can decide what to do + if existing_remark: + # Option B: Update existing remark (if needed) + existing_remark.remark = remark_in.remark + await db_session.commit() + await db_session.refresh(existing_remark) + return existing_remark + + # Step 3: If it doesn’t exist, create new one + new_remark = SparepartRemark( + itemnum=remark_in.itemnum, + remark=remark_in.remark, + ) + db_session.add(new_remark) + await db_session.commit() + await db_session.refresh(new_remark) + + return new_remark