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
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
|