consolidator
58 строк · 3.1 Кб
1import os
2import sys
3import pandas as pd
4import datetime
5from MainConsolidator import MainConsolidator
6
7class handler(object):
8@staticmethod
9def module_name():
10return 'КПК Заготовка колесная'
11@staticmethod
12def handle(row:pd.Series,consolidator:MainConsolidator)->pd.Series:
13weigth_s="-"
14diameter=0
15standart="-"
16try:
17
18diameter = consolidator.scalar_in_guid("Диаметры колес",f"`Производство`=='КПК Колесная заготовка' and `Диаметры SAP`=={row['Диаметр, мм <Производство>']}","Диаметры УП")
19weigth = consolidator.nearest_in_guid("Параметры по Продукту КПК",
20f"`Производство`=='КПК Колесная заготовка' and `Доп параметр1`=={diameter}",
21"Доп параметр2",
22row["Теоретический вес колесной заготовки, кг <Производство>"],
23"Доп параметр2")
24weigth_s=str(weigth).replace(".",",").replace(",0","")
25standart = consolidator.scalar_in_guid("Стандарты колесной заготовки",f"`Вес`=={weigth}","Стандарт для колесной заготовки")
26print(f"{row['Диаметр, мм <Производство>']} -> {diameter}: {row['Теоретический вес колесной заготовки, кг <Производство>']} -> {weigth_s} : {standart}")
27if pd.isna(diameter) or pd.isna(standart): raise Exception("Не определен вес или стандарт")
28row["error"] = pd.NA
29except Exception as exp:
30row["error"] = f"{exp}"
31finally:
32row["Продукт УП"]=f"КОЛЕС ЗАГОТОВКА Д{diameter} В{weigth_s} {standart}"
33if pd.notna(diameter) and diameter==473: row["Продукт УП"]="ИНСТРУМЕНТ ДЕФОРМАЦИИ"
34row["Время укрупнения"]=datetime.datetime.now()
35return row
36
37def debug_handle(self,inputDf:pd.DataFrame,consolidator:MainConsolidator,module:str=None)->pd.DataFrame:
38try:
39if module is None: return inputDf.apply(lambda row: self.handle(row,consolidator), axis=1)
40else: return inputDf[inputDf["Производство2"]==module].apply(lambda row: self.handle(row,consolidator), axis=1)
41except: raise
42
43def get_compiled(self):
44code:str=f"print('{__file__}')"
45try:
46with open(__file__,encoding="utf-8",mode="r") as f:
47code=f.read()
48except Exception as exp:
49code=f"print('error: {exp}')"
50finally:
51cc = compile(code,"","exec")
52return cc
53
54if __name__=="__billet_wheel__":
55consolidator:MainConsolidator
56record:pd.Series
57result:pd.Series
58result = handler.handle(record,consolidator)
59
60