fix: min eac data

main
MrWaradana 2 months ago
parent eced769a17
commit 7a0248df8b

@ -162,6 +162,7 @@ async def get_equipment(db_session: DbSession, collector_db_session: CollectorDb
chart_data,
min_eac_value,
min_seq,
min_eac_year,
last_actual_year,
maximo_data
) = await get_master_by_assetnum(db_session=db_session, collector_db_session=collector_db_session, assetnum=assetnum)
@ -179,6 +180,7 @@ async def get_equipment(db_session: DbSession, collector_db_session: CollectorDb
chart_data=chart_data,
min_eac_value=min_eac_value,
min_seq=min_seq,
min_eac_year=min_eac_year,
last_actual_year=last_actual_year,
maximo_data=maximo_data
),

@ -87,6 +87,7 @@ class EquipmentRead(DefaultBase):
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)

@ -101,21 +101,9 @@ async def get_master_by_assetnum(
last_actual_year_result = await db_session.execute(last_actual_year_query)
last_actual_year = last_actual_year_result.scalar()
# Third query specifically for minimum eac_eac
min_query = (
Select(func.min(func.cast(EquipmentTransactionRecords.eac_eac, Float)), EquipmentTransactionRecords.seq)
.join(EquipmentTransactionRecords.equipment)
.filter(Equipment.assetnum == assetnum)
.group_by(EquipmentTransactionRecords.seq)
.order_by(func.min(func.cast(EquipmentTransactionRecords.eac_eac, Float)))
.limit(1)
)
min_result = await db_session.execute(min_query)
min_record = min_result.first()
min_eac_value = (
float(min_record[0]) if min_record and min_record[0] is not None else None
)
min_seq = min_record[1] if min_record else None
min_eac_value = equipment_record.minimum_eac if equipment_record else None
min_seq = equipment_record.minimum_eac_seq if equipment_record else None
min_eac_year = equipment_record.minimum_eac_year if equipment_record else None
maximo_query = f"""
SELECT
@ -137,6 +125,7 @@ async def get_master_by_assetnum(
records,
min_eac_value,
min_seq,
min_eac_year,
last_actual_year,
maximo_record
)

@ -274,7 +274,7 @@ class Eac:
lowest_eac_record = min(zeros, key=lambda x: float(x.get("npv", 0)))
else:
lowest_eac_record = min(rslt, key=lambda x: float(x.get("eac", 0)))
# print(json.dumps(lowest_eac_record))
print(json.dumps(lowest_eac_record))
# Update lcc_equipment_tr_data
update_query = """
UPDATE lcc_ms_equipment_data
@ -363,7 +363,7 @@ if __name__ == "__main__":
sys.exit(1)
cursor = connection.cursor(cursor_factory=DictCursor)
query_main = "SELECT DISTINCT(assetnum) FROM ms_equipment_master"
query_main = "SELECT DISTINCT(assetnum) FROM ms_equipment_master WHERE assetnum = 'A26190'"
cursor.execute(query_main)
results = cursor.fetchall()

@ -23,18 +23,17 @@ async def main():
# print(f"Error in query_data: {str(e)}")
# return
try:
await predict_run()
except Exception as e:
print(f"Error in predict_equipment_data: {str(e)}")
return
# try:
# await predict_run()
# except Exception as e:
# print(f"Error in predict_equipment_data: {str(e)}")
# return
try:
# eac = Eac()
# eac.hitung_eac_equipment(assetnum)
result = await eac_run()
if asyncio.iscoroutine(result):
result = await result
result = eac_run()
result = result if not asyncio.iscoroutine(result) else await result
# if the function returned a list of objects, optionally log or handle it
if isinstance(result, (list, tuple)):

Loading…
Cancel
Save