consolidator
97 строк · 5.4 Кб
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:
13product_up=None
14try:
15product = row["Первичный продукт"]
16strength = consolidator.strength_by_steel(row["Марка стали <Производство>"])
17if pd.isna(strength): strength="К52"
18strength_steel = consolidator.strength_mapping(strength,row["Марка стали <Производство>"])
19strength_led = consolidator.strength_led(strength_steel[0])
20if strength_led=="К0": strength_led="К52"
21gmsps = consolidator.get_gmsps(row["Марка стали <Производство>"],product)
22if "ГЮ" in gmsps:
23gmsps_ = consolidator.scalar_in_guid("Признак по НТД",
24f"`Производство`=='Лист, штрипс' and `НТД качества (трубы стальные) <Производство>`=='{row['НТД качества (прокат) <Производство>']}'","Доп параметр1")
25if pd.notna(gmsps_): gmsps=gmsps_
26
27diametr_=0
28thickness=row["Толщина, мм <Производство>"]
29width = row["Ширина листа (штрипса), мм <Производство>"]
30print(f"strength_steel:{strength_steel[0]}; strength_led:{strength_led}; gmsps: {gmsps}")
31## issue http://vsys01775:8282/flea/pyexcelcons3/-/issues/3
32if gmsps=="ГУ":
33width_led = consolidator.nearest_in_guid("Параметры по Продукту Прокат",
34f"`Производство`=='Лист. штрипс' and `Продукт`=='{product}' and `Мин`<={thickness}<=`Макс` and `Доп параметр2`=='ГУ'",
35"Доп параметр1",width,"Доп параметр1")
36else:
37width_led = consolidator.nearest_in_guid("Параметры по Продукту Прокат",
38f"`Производство`=='Лист. штрипс' and `Продукт`=='{product}' and `Доп параметр2`=='{gmsps}'",
39"Доп параметр1",width,"Доп параметр1")
40width_led_s=str(width_led).replace(".0","")
41
42
43if width==1500 or width==2000: diametr_=0
44q1020_1 = (width - 5) * (1 - 0.4 / 100) * (1 + 1.1 / 100) / 3.1416 + thickness
45q1420_1 = (width - 5) * (1 - 0 / 100) * (1 + 0.6 / 100) / 3.1416 + thickness
46d1020 = consolidator.nearest_in_guid("Диаметры ТБД","`Диаметры`>0","Диаметры",q1020_1,"Диаметры")
47d1420 = consolidator.nearest_in_guid("Диаметры ТБД","`Диаметры`>0","Диаметры",q1420_1,"Диаметры")
48delta_abs_1020=abs(q1020_1-d1020)
49delta_abs_1420=abs(q1420_1-d1420)
50if delta_abs_1020<delta_abs_1420 : diametr_=d1020
51else : diametr_=d1420
52
53if product=="ЛИСТ Р":
54pass
55if product=="ЛИСТ ТРБ":
56pass
57if product=="ПОЛОСА":
58product_up = f"{product} Ш{width_led_s} {gmsps}"
59if pd.notna(row["Признак БЗ"]) and row["Признак БЗ"]=="БЗ": product_up="ПОЛОСА Р БЗ"
60elif "ГУ" in gmsps:
61thickness_range = consolidator.scalar_in_guid("Параметры по Продукту Прокат",
62f"`Производство`=='Лист. штрипс' and `Продукт`=='{product}' and `Доп параметр2`=='ГУ' and `Доп параметр1`=={width_led}",
63"Диапазон")
64product_up=f"{product} {thickness_range} Ш{width_led_s} {gmsps}"
65
66print(f"{product} ; d1020: {q1020_1} => {d1020} => {delta_abs_1020}; d1420: {q1420_1} => {d1420} => {delta_abs_1420}; width_led: {width_led} ")
67
68row["error"] = pd.NA
69except Exception as exp:
70row["error"] = f"{exp}"
71finally:
72row["Продукт УП"]=product_up
73row["Время укрупнения"]=datetime.datetime.now()
74return row
75
76def debug_handle(self,inputDf:pd.DataFrame,consolidator:MainConsolidator,module:str=None)->pd.DataFrame:
77try:
78if module is None: return inputDf.apply(lambda row: self.handle(row,consolidator), axis=1)
79else: return inputDf[inputDf["Производство2"]==module].apply(lambda row: self.handle(row,consolidator), axis=1)
80except: raise
81
82def get_compiled(self):
83code:str=f"print('{__file__}')"
84try:
85with open(__file__,encoding="utf-8",mode="r") as f:
86code=f.read()
87except Exception as exp:
88code=f"print('error: {exp}')"
89finally:
90cc = compile(code,"","exec")
91return cc
92
93if __name__=="__sheet_strips__":
94consolidator:MainConsolidator
95record:pd.Series
96result:pd.Series
97result = handler.handle(record,consolidator)
98
99