From a9304328d4b1612b644530441021c34065cba8d7 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Mon, 5 Jan 2026 17:37:53 +0700 Subject: [PATCH] fix id changes every fetch because of delete is_actual = 0 --- src/modules/plant/run_plant_simulation.py | 32 +++++++++++------- .../__pycache__/model.cpython-311.pyc | Bin 5383 -> 5383 bytes src/plant_transaction_data/model.py | 17 ---------- src/plant_transaction_data/router.py | 3 ++ 4 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/modules/plant/run_plant_simulation.py b/src/modules/plant/run_plant_simulation.py index aa51baf..a463795 100644 --- a/src/modules/plant/run_plant_simulation.py +++ b/src/modules/plant/run_plant_simulation.py @@ -213,25 +213,31 @@ def main(): v = param_map.get(name, default) return float(v) if v is not None else float(default) - # 0-1 Generate New data Projection (is_actual=0) if not exist - # Hapus data projection lama (is_actual = 0) - cur.execute(f""" - DELETE - FROM {table_tr_data} - WHERE is_actual = 0 {get_filter_and()} - """) - - # Hitung kebutuhan jumlah baris projection baru agar total (actual + projection) - # sama dengan parameter umur_teknis + # 0-1 Sync Projection data (is_actual=0) + # Check Total Rows cur.execute(f""" SELECT COALESCE(COUNT(*), 0) FROM {table_tr_data} - WHERE is_actual = 1 {get_filter_and()} + {get_filter_where()} """) - count_actual = cur.fetchone()[0] if cur.rowcount != -1 else 0 + count_total = cur.fetchone()[0] if cur.rowcount != -1 else 0 umur_teknis = int(get_param("umur_teknis")) - proj_needed = max(0, umur_teknis - int(count_actual)) + proj_needed = umur_teknis - int(count_total) + + if proj_needed < 0: + excess = abs(proj_needed) + delete_sql = f""" + DELETE FROM {table_tr_data} + WHERE id IN ( + SELECT id FROM {table_tr_data} + WHERE is_actual = 0 {get_filter_and()} + ORDER BY seq DESC + LIMIT {excess} + ) + """ + cur.execute(delete_sql) + proj_needed = 0 # Ambil seq dan tahun terakhir sebagai titik awal penomoran berikutnya cur.execute(f"SELECT COALESCE(MAX(seq), 0) FROM {table_tr_data} {get_filter_where()}") diff --git a/src/plant_transaction_data/__pycache__/model.cpython-311.pyc b/src/plant_transaction_data/__pycache__/model.cpython-311.pyc index 1eea0c8de3bd077211a10b16a0a95c0a319ee3ac..e9468f909c8bab5f0e7c1bfc23c8af2facb98d39 100644 GIT binary patch delta 23 dcmZqIYS-dh&dbZi00bhFqBEQLH}d@y0RTZJ1_J;9 delta 23 dcmZqIYS-dh&dbZi00fth_+)Mr-pKb;1OQ7E2N(bV diff --git a/src/plant_transaction_data/model.py b/src/plant_transaction_data/model.py index 06fc54b..8cfe166 100644 --- a/src/plant_transaction_data/model.py +++ b/src/plant_transaction_data/model.py @@ -76,20 +76,3 @@ class PlantTransactionData(Base, DefaultMixin, IdentityMixin): chart_capex_biaya_investasi_tambahan = Column(Float, nullable=True) chart_capex_acquisition_cost = Column(Float, nullable=True) chart_capex_annualized = Column(Float, nullable=True) - # fs_chart_total_revenue = Column(Float, nullable=True) - # fs_chart_revenue_a = Column(Float, nullable=True) - # fs_chart_revenue_b = Column(Float, nullable=True) - # fs_chart_revenue_c = Column(Float, nullable=True) - # fs_chart_revenue_d = Column(Float, nullable=True) - # fs_chart_revenue_annualized = Column(Float, nullable=True) - # fs_chart_fuel_cost_component_c = Column(Float, nullable=True) - # fs_chart_fuel_cost = Column(Float, nullable=True) - # fs_chart_fuel_cost_annualized = Column(Float, nullable=True) - # fs_chart_oem_component_bd = Column(Float, nullable=True) - # fs_chart_oem_bd_cost = Column(Float, nullable=True) - # fs_chart_oem_periodic_maintenance_cost = Column(Float, nullable=True) - # fs_chart_oem_annualized = Column(Float, nullable=True) - # fs_chart_capex_component_a = Column(Float, nullable=True) - # fs_chart_capex_biaya_investasi_tambahan = Column(Float, nullable=True) - # fs_chart_capex_acquisition_cost = Column(Float, nullable=True) - # fs_chart_capex_annualized = Column(Float, nullable=True) diff --git a/src/plant_transaction_data/router.py b/src/plant_transaction_data/router.py index c36b6a6..59b77bf 100644 --- a/src/plant_transaction_data/router.py +++ b/src/plant_transaction_data/router.py @@ -171,6 +171,9 @@ async def update_transaction_data( db_session=db_session, transaction_data_id=transaction_data_id ) + print(transaction_data) + print(transaction_data_id) + if not transaction_data: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND,