You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
8.2 KiB
Python

from datetime import datetime
from typing import List, Optional
from uuid import UUID
from pydantic import Field
from src.models import DefaultBase, Pagination
MAX_PRICE = 1_000_000_000_000_000 # thousands of trillion
class EquipmentBase(DefaultBase):
assetnum: Optional[str] = Field(None, nullable=True)
acquisition_year: Optional[int] = Field(None, nullable=True)
acquisition_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
capital_cost_record_time: Optional[int] = Field(None, nullable=True)
design_life: Optional[int] = Field(None, nullable=True)
forecasting_start_year: Optional[int] = Field(None, nullable=True)
forecasting_target_year: Optional[int] = Field(None, nullable=True)
manhours_rate: Optional[float] = Field(None, nullable=True)
harga_saat_ini: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_eac_seq: Optional[int] = Field(None, nullable=True)
minimum_eac_year: Optional[int] = Field(None, nullable=True)
minimum_eac: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_npv: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_pmt: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_pmt_aq_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_is_actual: Optional[int] = Field(None, nullable=True)
efdh_equivalent_forced_derated_hours: Optional[float] = Field(None, nullable=True)
foh_forced_outage_hours: Optional[float] = Field(None, nullable=True)
category_no: Optional[str] = Field(None, nullable=True)
proportion: Optional[float] = Field(None, nullable=True)
created_at: Optional[datetime] = Field(None, nullable=True)
updated_at: Optional[datetime] = Field(None, nullable=True)
created_by: Optional[str] = Field(None, nullable=True)
updated_by: Optional[str] = Field(None, nullable=True)
class EquipmentMasterBase(DefaultBase):
location_tag: Optional[str] = Field(None, nullable=True)
assetnum: Optional[str] = Field(None, nullable=True)
name: Optional[str] = Field(None, nullable=True)
class MasterBase(DefaultBase):
assetnum: Optional[str] = Field(None, nullable=True)
tahun: Optional[int] = Field(None, nullable=True)
seq: Optional[int] = Field(None, nullable=True)
is_actual: Optional[float] = Field(None, nullable=True)
raw_cm_interval: Optional[float] = Field(None, nullable=True)
raw_cm_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
raw_cm_labor_time: Optional[float] = Field(None, nullable=True)
raw_cm_labor_human: Optional[float] = Field(None, nullable=True)
raw_pm_interval: Optional[float] = Field(None, nullable=True)
raw_pm_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
raw_pm_labor_time: Optional[float] = Field(None, nullable=True)
raw_pm_labor_human: Optional[float] = Field(None, nullable=True)
raw_predictive_interval: Optional[float] = Field(None, nullable=True)
raw_predictive_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
raw_predictive_labor_time: Optional[float] = Field(None, nullable=True)
raw_predictive_labor_human: Optional[float] = Field(None, nullable=True)
raw_oh_interval: Optional[float] = Field(None, nullable=True)
raw_oh_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
raw_oh_labor_time: Optional[float] = Field(None, nullable=True)
raw_oh_labor_human: Optional[float] = Field(None, nullable=True)
raw_project_task_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
raw_loss_output_MW: Optional[float] = Field(None, nullable=True)
raw_loss_output_price: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
raw_operational_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
raw_maintenance_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_cm_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_cm_labor_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_pm_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_pm_labor_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_predictive_labor_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_oh_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_oh_labor_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_project_material_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_lost_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_operation_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
rc_maintenance_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
asset_criticality: Optional[float] = Field(None, nullable=True)
rc_total_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
eac_npv: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
eac_annual_mnt_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
eac_annual_acq_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
eac_disposal_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
eac_eac: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
efdh_equivalent_forced_derated_hours: Optional[float] = Field(None, nullable=True)
foh_forced_outage_hours: Optional[float] = Field(None, nullable=True)
category_no: Optional[str] = Field(None, nullable=True)
proportion: Optional[float] = Field(None, nullable=True)
class EquipmentCreate(EquipmentBase):
pass
class EquipmentUpdate(EquipmentBase):
pass
class EquipmentRead(DefaultBase):
equipment_master_record: EquipmentMasterBase
equipment_data: EquipmentBase
chart_data: List[MasterBase]
min_eac_value: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
min_seq: Optional[float] = Field(None, nullable=True)
min_eac_year: Optional[float] = Field(None, nullable=True)
last_actual_year: Optional[int] = Field(None, nullable=True)
maximo_data: Optional[List[dict]] = Field(None, nullable=True)
joined_maximo: Optional[List[dict]] = Field(None, nullable=True)
min_eac_disposal_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
class EquipmentTop10(EquipmentBase):
id: UUID
equipment_master: EquipmentMasterBase
forecasting_target_year: Optional[int] = Field(None, nullable=True)
minimum_eac_seq: Optional[int] = Field(None, nullable=True)
minimum_eac_year: Optional[int] = Field(None, nullable=True)
minimum_eac: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_npv: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_pmt: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_pmt_aq_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_is_actual: Optional[int] = Field(None, nullable=True)
harga_saat_ini: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
remaining_life: Optional[int] = Field(None, nullable=True)
class EquipmentTop10Pagination(Pagination):
items: List[EquipmentTop10] = []
class EquipmentDataMaster(EquipmentBase):
id: UUID
equipment_master: Optional[EquipmentMasterBase] = Field(None, nullable=True)
forecasting_target_year: Optional[int] = Field(None, nullable=True)
minimum_eac_seq: Optional[int] = Field(None, nullable=True)
minimum_eac_year: Optional[int] = Field(None, nullable=True)
minimum_eac: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_npv: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_pmt: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_pmt_aq_cost: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
minimum_is_actual: Optional[int] = Field(None, nullable=True)
harga_saat_ini: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
# class EquipmentTop10EconomicLife(DefaultBase):
# equipment: EquipmentDataMaster
# economic_life: int
class EquipmentPagination(Pagination):
items: List[EquipmentDataMaster] = []
class CountRemainingLifeResponse(DefaultBase):
safe: int
warning: int
critical: int