Commit c08d46d4 authored by aakash.bedi's avatar aakash.bedi

batch_master_qty logic added

parent d3a3dfc7
...@@ -33,80 +33,58 @@ class BatchMaster: ...@@ -33,80 +33,58 @@ class BatchMaster:
logger.exception(f"Exception - {e}") logger.exception(f"Exception - {e}")
@staticmethod @staticmethod
def preprocess_master_df(df, process_stage_name, batch_product, ideal_batch_cycle_time_hr, batch_setup_time_hr, def preprocess_master_df_proto(df, process_stage_name):
process_stage_id, work_order_no="P2E-STD-01", work_order_item_no="P2E-STD-01-01",
final_product="P2E"):
try: try:
df.rename(columns={'Batch Number': 'batch_no', 'Start Time.1': 'batch_start_time', df.rename(columns={'Batch Number': 'batch_no', 'Start Time.1': 'batch_start_time',
'End Time.1': 'batch_end_time', 'Downtime': 'downtime', 'End Time.1': 'batch_end_time', 'Downtime': 'downtime',
'Equipment': 'used_equipment'}, inplace=True) 'Equipment': 'used_equipment'}, inplace=True)
df_stage = pd.DataFrame(index=[i for i in range(len(df))]) df_stage = pd.DataFrame(index=[i for i in range(len(df))])
if process_stage_name == "Stage-01": if process_stage_name == "Stage-01":
df_stage['batch_no'] = df['batch_no']
df_stage['input_qty'] = df['Input Qty. (kg) F00056-BULK-001']
df_stage['formaldehyde_content'] = df['F00041-BULK-001 content nil'] df_stage['formaldehyde_content'] = df['F00041-BULK-001 content nil']
df_stage['unreactive_alpha_picoline'] = df['un reacted F00056-BULK-001 ( for infor.)'] df_stage['unreactive_alpha_picoline'] = df['un reacted F00056-BULK-001 ( for infor.)']
df_stage['moisture_content'] = df['Moisture content \n(for infor)'] df_stage['moisture_content'] = df['Moisture content \n(for infor)']
df_stage['input_qty'] = df['Input Qty. (kg) F00056-BULK-001']
elif process_stage_name == "Stage-02": elif process_stage_name == "Stage-02":
df_stage['formaldehyde_content'] = None df_stage['batch_no'] = df['batch_no']
df_stage['input_qty'] = df['Input Qty.\n(kg) Stage-I'] df_stage['input_qty'] = df['Input Qty.\n(kg) Stage-I']
df_stage['formaldehyde_content'] = None
df_stage['unreactive_alpha_picoline'] = df['F00056-BULK-001 \n(NLT 50 %)'] df_stage['unreactive_alpha_picoline'] = df['F00056-BULK-001 \n(NLT 50 %)']
df_stage['moisture_content'] = df['Moisture content \n(for Information).1'] df_stage['moisture_content'] = df['Moisture content \n(for Information).1']
elif process_stage_name == "Stage-03": elif process_stage_name == "Stage-03":
df_stage['formaldehyde_content'] = None df_stage['batch_no'] = df['batch_no']
df_stage['input_qty'] = df['Input Qty. (kg) Stage-I'] df_stage['input_qty'] = df['Input Qty. (kg) Stage-I']
df_stage['moisture_content'] = df['M/C for infor'] df_stage['formaldehyde_content'] = None
df_stage['unreactive_alpha_picoline'] = None df_stage['unreactive_alpha_picoline'] = None
df_stage['moisture_content'] = df['M/C for infor']
elif process_stage_name == "Stage-04": elif process_stage_name == "Stage-04":
df_stage['formaldehyde_content'] = None df_stage['batch_no'] = df['batch_no']
df_stage['input_qty'] = None df_stage['input_qty'] = None
df_stage['moisture_content'] = df['NMT 0.5%'] df_stage['formaldehyde_content'] = None
df_stage['unreactive_alpha_picoline'] = None df_stage['unreactive_alpha_picoline'] = None
df_stage['moisture_content'] = df['NMT 0.5%']
elif process_stage_name == "Stage-05": elif process_stage_name == "Stage-05":
df_stage['formaldehyde_content'] = None df_stage['batch_no'] = df['batch_no']
df_stage['input_qty'] = None df_stage['input_qty'] = None
df_stage['moisture_content'] = df[' NMT 1.0%'] df_stage['formaldehyde_content'] = None
df_stage['unreactive_alpha_picoline'] = None df_stage['unreactive_alpha_picoline'] = None
df_stage['moisture_content'] = df[' NMT 1.0%']
df_stage['batch_no'] = df['batch_no']
df_stage['process_stage_name'] = process_stage_name
df_stage['process_stage_id'] = process_stage_id
df_stage['work_order_no'] = work_order_no
df_stage['work_order_item_no'] = work_order_item_no
df_stage['final_product'] = final_product
df_stage['batch_product'] = batch_product
df_stage['batch_start_time'] = df['batch_start_time']
df_stage['batch_end_time'] = df['batch_end_time']
df_stage['downtime'] = pd.to_timedelta(df['downtime'], unit='hours')
df_stage['ideal_batch_cycle_time_hr'] = ideal_batch_cycle_time_hr
df_stage['batch_cycle_time'] = df_stage['batch_end_time'] - df_stage['batch_start_time'] - df_stage['downtime']
df_stage['batch_cycle_time_minutes'] = df_stage['batch_cycle_time'].dt.total_seconds() // 60
df_stage['batch_setup_time_hr'] = batch_setup_time_hr
df_stage['selected_equipments'] = df['used_equipment']
df_stage['created_on'] = df['batch_start_time'].dt.date
df_stage['created_by'] = 'Aakash'
df_stage['last_updated_on'] = df['batch_end_time'].dt.date
df_stage['last_updated_by'] = 'Aakash'
df_stage = df_stage.astype({'batch_cycle_time': str})
df_stage = df_stage[['batch_no', 'final_product', 'batch_product', 'process_stage_name', 'process_stage_id',
'work_order_no', 'work_order_item_no', 'ideal_batch_cycle_time_hr', 'batch_start_time',
'batch_end_time', 'downtime', 'batch_cycle_time', 'batch_cycle_time_minutes',
'batch_setup_time_hr', 'selected_equipments', 'input_qty', 'formaldehyde_content',
'unreactive_alpha_picoline', 'moisture_content', 'created_on', 'created_by',
'last_updated_on', 'last_updated_by']]
df_stage.reset_index(drop=True, inplace=True) df_stage.reset_index(drop=True, inplace=True)
df_stage = df_stage[['batch_no', 'input_qty', 'formaldehyde_content',
'unreactive_alpha_picoline', 'moisture_content']]
return df_stage return df_stage
except Exception as e: except Exception as e:
logger.exception(f"Exception - {e}") logger.exception(f"Exception - {e}")
@staticmethod @staticmethod
def preprocess_master_df_proto(df, process_stage_name, batch_product, ideal_batch_cycle_time_hr, batch_setup_time_hr, def preprocess_master_df(df, process_stage_name, batch_product, ideal_batch_cycle_time_hr, batch_setup_time_hr,
process_stage_id, work_order_no="P2E-STD-01", work_order_item_no="P2E-STD-01-01", process_stage_id, work_order_no="P2E-STD-01", work_order_item_no="P2E-STD-01-01",
final_product="P2E-Stage-05"): final_product="P2E-Stage-05"):
try: try:
df = df[['Batch Number', 'Start Time.1', 'End Time.1', 'Downtime', 'Equipment']] df = df[['Batch Number', 'Start Time.1', 'End Time.1', 'Downtime', 'Equipment']]
...@@ -216,20 +194,21 @@ class BatchMaster: ...@@ -216,20 +194,21 @@ class BatchMaster:
df.set_index('batch_no').to_sql("batch_master", df.set_index('batch_no').to_sql("batch_master",
"postgresql://ilens:iLens$456@192.168.0.207:5328/ilens_ai", "postgresql://ilens:iLens$456@192.168.0.207:5328/ilens_ai",
if_exists="replace") if_exists="replace")
logger.debug(f'Pushed batch_master to postgres') logger.debug(f'Pushed batch_master to postgres')
return df return df
except Exception as e: except Exception as e:
logger.exception(f"Exception - {e}") logger.exception(f"Exception - {e}")
@staticmethod @staticmethod
def join_df(data_master, data_kpi): def join_df_proto(df_master, df_other):
try: try:
df = pd.merge(left=data_master, right=data_kpi[['batch_no', 'kpi_name', 'kpi_description', df = pd.merge(left=df_master, right=df_other, how='left', on='batch_no')
'kpi_value']], how='left', on='batch_no') df['bct_input_qty_ratio'] = df['batch_cycle_time_minutes']/df['input_qty']
df.reset_index(drop=True, inplace=True) df.reset_index(drop=True, inplace=True)
df.to_excel(f"{base_path}/master_join.xlsx", index=False) df.to_excel(f"{base_path}/master_proto.xlsx", index=False)
logger.info(f'Pushing master_join to postgres') logger.info(f'Pushing master_join to postgres')
df.set_index('batch_no').to_sql("master_join", "postgresql://ilens:iLens$456@192.168.0.207:5328/ilens_ai", if_exists='replace') df.set_index('batch_no').to_sql("master_proto", "postgresql://ilens:iLens$456@192.168.0.207:5328/ilens_ai", if_exists='replace')
logger.debug(f'Pushed master_join to postgres') logger.debug(f'Pushed master_join to postgres')
except Exception as e: except Exception as e:
logger.exception(f"Exception - {e}") logger.exception(f"Exception - {e}")
...@@ -237,32 +216,17 @@ class BatchMaster: ...@@ -237,32 +216,17 @@ class BatchMaster:
def orchestrator_master_proto(self): def orchestrator_master_proto(self):
try: try:
df_stage_1, df_stage_2, df_stage_3, df_stage_4, df_stage_5 = self.read_df() df_stage_1, df_stage_2, df_stage_3, df_stage_4, df_stage_5 = self.read_df()
df_stage_1 = self.preprocess_master_df(df_stage_1, process_stage_name="Stage-01", df_stage_1 = self.preprocess_master_df_proto(df_stage_1, process_stage_name="Stage-01")
process_stage_id="P2E-STAGE-001", df_stage_2 = self.preprocess_master_df_proto(df_stage_2, process_stage_name="Stage-02")
batch_product="P2E-Stage-01", ideal_batch_cycle_time_hr=12, df_stage_3 = self.preprocess_master_df_proto(df_stage_3, process_stage_name="Stage-03")
batch_setup_time_hr=1) df_stage_4 = self.preprocess_master_df_proto(df_stage_4, process_stage_name="Stage-04")
df_stage_2 = self.preprocess_master_df(df_stage_2, process_stage_name="Stage-02", df_stage_5 = self.preprocess_master_df_proto(df_stage_5, process_stage_name="Stage-05")
process_stage_id="P2E-STAGE-002",
batch_product="P2E-Stage-02", ideal_batch_cycle_time_hr=24,
batch_setup_time_hr=1)
df_stage_3 = self.preprocess_master_df(df_stage_3, process_stage_name="Stage-03",
process_stage_id="P2E-STAGE-003",
batch_product="P2E-Stage-03", ideal_batch_cycle_time_hr=48,
batch_setup_time_hr=1)
df_stage_4 = self.preprocess_master_df(df_stage_4, process_stage_name="Stage-04",
process_stage_id="P2E-STAGE-004",
batch_product="P2E-Stage-04", ideal_batch_cycle_time_hr=124,
batch_setup_time_hr=1)
df_stage_5 = self.preprocess_master_df(df_stage_5, process_stage_name="Stage-05",
process_stage_id="P2E-STAGE-005",
batch_product="P2E-Stage-05", ideal_batch_cycle_time_hr=None,
batch_setup_time_hr=1)
df = pd.concat([df_stage_1, df_stage_2, df_stage_3, df_stage_4, df_stage_5], axis=0) df = pd.concat([df_stage_1, df_stage_2, df_stage_3, df_stage_4, df_stage_5], axis=0)
df.reset_index(drop=True, inplace=True) df.reset_index(drop=True, inplace=True)
df.to_excel(f"{base_path}/batch_master_proto.xlsx", index=False) df.to_excel(f"{base_path}/batch_master_quantity.xlsx", index=False)
logger.info(f'Pushing batch_master to postgres') logger.info(f'Pushing batch_master to postgres')
df.set_index('batch_no').to_sql("batch_master_proto", df.set_index('batch_no').to_sql("batch_master_quantity",
"postgresql://ilens:iLens$456@192.168.0.207:5328/ilens_ai", "postgresql://ilens:iLens$456@192.168.0.207:5328/ilens_ai",
if_exists="replace") if_exists="replace")
logger.debug(f'Pushed batch_master to postgres') logger.debug(f'Pushed batch_master to postgres')
...@@ -273,7 +237,9 @@ class BatchMaster: ...@@ -273,7 +237,9 @@ class BatchMaster:
if __name__=="__main__": if __name__=="__main__":
batch_master = BatchMaster() batch_master = BatchMaster()
df_master = batch_master.orchestrator_master_proto() df_master = batch_master.orchestrator_master()
df_kpi = batch_master.orchestrator_kpi() # df_kpi = batch_master.orchestrator_kpi()
batch_master.join_df(df_master=df_master, df_kpi=df_kpi) df_master_quantity = batch_master.orchestrator_master_proto()
# batch_master.join_df(df_master=df_master, df_kpi=df_kpi)
batch_master.join_df_proto(df_master=df_master, df_other=df_master_quantity)
logger.info(f'{df_master.shape}') logger.info(f'{df_master.shape}')
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment