consolidator

Форк
0
/
makeDump.py 
117 строк · 7.1 Кб
1
import glob
2
import pandas as pd
3
import oracledb as ora
4
# from MyConfig import MyConfig
5

6
def handler(row:pd.Series,cursor:ora.Cursor)->pd.Series:
7
    try:
8
        sql = "select nvl(max(m.scp_product_name),'нет') from scm_fact.product_map_sap_scp m where m.sap_product_code=:NOM"
9
        cursor.execute(sql,[row["ID в SAP ERP VMZ"]])
10
        record = cursor.fetchone()
11
        row["Продукт УП"]=str(record[0])
12
        print(f"{row['ID в SAP ERP VMZ']} -> {record[0]}")
13
        return row
14
    except Exception as exp:
15
        print(f"ora error: {exp}")
16
        row["Продукт УП"] = f"ora error: {exp}"
17
        return row
18

19
if __name__=="__main__":
20
    connection:ora.Connection = None
21
    cursor:ora.Cursor = None
22
    path_pattern="D:\\work\\Укрупнение\\current\\pyExcelCons3\\msa\\*.xlsx"
23
    dump_path = "D:\\work\\Укрупнение\\current\\pyExcelCons3\\misc\\full_dump.xlsx"
24
    config = "D:\\work\\Укрупнение\\current\\pyExcelCons3\\config.json"
25
    try:
26
        # consCfg = MyConfig(config)
27
        columns = [
28
                "ID в SAP ERP VMZ",
29
                "Вид материала в SAP ERP",
30
                "Полное наименование материала",
31
                "Производство",
32
                "№ чертежа <Производство>",
33
                "Вакуумирование <Производство>",
34
                "Группа труб * <Производство>",
35
                "Диаметр ступицы, мм <Производство>",
36
                "Диаметр, мм <Производство>",
37
                "Длина листа, мм <Производство>",
38
                "Длина раската, мм <Производство>",
39
                "Длина раскроя, мм <Производство>",
40
                "Исходная заготовка <Производство>",
41
                "Категория <Производство>",
42
                "Класс прочности <Производство>",
43
                "Класс прочности <Корпоративный классификатор>",
44
                "Код СКМТР <Производство>",
45
                "Марка стали <Производство>",
46
                "Марка стали* <Корпоративный классификатор>",
47
                "Муфта с узлом уплотнения <Производство>",
48
                "Муфта специальная <Производство>",
49
                "Номер калибровки колеса <Производство>",
50
                "НТД внутреннего покрытия <Производство>",
51
                "НТД геометрии <Производство>",
52
                "НТД качества (трубы стальные) <Производство>",
53
                "НТД наружного покрытия <Производство>",
54
                "НТД Химического состава <Производство>",
55
                "Размер профиля 1, мм <Производство>",
56
                "Размер профиля 2, мм <Производство>",
57
                "Теоретический вес колеса после ТО, кг <Производство>",
58
                "Теоретический вес колеса, кг <Производство>",
59
                "Теоретический вес колесной заготовки, кг <Производство>",
60
                "Теоретический вес чернового колеса, кг <Производство>",
61
                "Термообработка <Производство>",
62
                "Тип покрытия муфты <Производство>",
63
                "Тип резьбы <Производство>",
64
                "Тип трубы <Производство>",
65
                "Типоразмер изложницы <Производство>",
66
                "Толщина материнского сляба, мм <Производство>",
67
                "Толщина, мм <Корпоративный классификатор>",
68
                "Толщина покрытия, мм <Производство>",
69
                "Толщина стенки заготовки, мм <Производство>",
70
                "Толщина, мм <Производство>",
71
                "Уровень исполнения * <Производство>",
72
                "Характер кромки <Производство>",
73
                "Ширина листа (штрипса), мм <Производство>",
74
                "Ширина материнского сляба, мм <Производство>",
75
                "Ширина сляба, мм <Корпоративный классификатор>",
76
                "Ширина рулона, мм <Производство>",
77
                "Ширина штрипса, мм <Производство>",
78
                "НТД наружного покрытия 2 <Производство>",
79
                "Тип покрытия 2 <Производство>",
80
                "Толщина раската, мм <Производство>",
81
                "Ширина раската, мм <Производство>",
82
                "Контракт, спецификация <Производство>",
83
                "НТД качества (колеса) <Производство>",
84
                "НТД качества (прокат) <Производство>",
85
                "НТД качества (слитки стальные) <Корпоративный классификатор>",
86
                "Покраска <Производство>",
87
                "Тип покрытия <Производство>",
88
                "Толщина стенки, мм <Производство>"
89
        ]
90
        ora.init_oracle_client(lib_dir=".\\ora")
91
        connection = ora.connect(dsn="172.17.80.116/scpora",user="manage_dw",password="ufyjwhb")
92
        cursor:ora.Cursor = connection.cursor()
93
        print(f"connect to oracle: {connection.version}")
94
        
95
        files=[f for f in glob.glob(path_pattern)]
96
        dfs=[]
97
        for f in files:
98
            print(f"load file: {f}")
99
            xl = pd.ExcelFile(f)
100
            for sheet_name in xl.sheet_names:
101
                df=xl.parse(sheet_name=sheet_name)
102
                print(f"\tread sheet [{sheet_name}]")
103
                dfs.append(df)
104
            print("file done")
105
        dumpDf = pd.concat(dfs)
106
        dumpDf = dumpDf[columns]
107
        print("concated")
108
        dumpDf = dumpDf.apply(lambda row: handler(row,cursor), axis=1)
109
        print("df handled")        
110
        dumpDf.to_excel(dump_path,index=False)
111
        print(f"dump '{dump_path}' saved")
112
    except Exception as exp:
113
        print(f"general error: {exp}")
114
    finally:
115
        if cursor is not None: cursor.close()
116
        if connection is not None: connection.close()
117
        print("oracle disconnected")

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.