Scheduling/dataset_importer.py

139 lines
3.6 KiB
Python
Raw Normal View History

2021-04-18 19:34:13 +00:00
from typing import List, Dict
import mysql.connector
import model
def import_order(res) -> Dict[str, model.Order]:
"""
导入订单
:param res: 数据库返回的行对象
:return: 订单对象集合
"""
orders: Dict[str, model.Order] = {}
for record in res:
order: model.Order = model.Order(record[0], record[1])
order.set_time(record[2], record[3])
orders[order.order_id] = order
return orders
def import_product(res) -> Dict[str, model.Product]:
"""
导入产品
:param res: 数据库返回的行对象
:return: 产品对象集合
"""
products: Dict[str, model.Product] = {}
for record in res:
product: model.Product = model.Product(record[0], record[1])
products[product.product_id] = product
return products
def import_order_product(res, orders: Dict[str, model.Order], products: Dict[str, model.Product]) -> None:
for record in res:
orders[record[0]].add_product(products[record[1]], record[2])
def import_product_component(res, products: Dict[str, model.Product]):
for record in res:
products[record[0]].add_semi_product(products[record[1]], record[2])
def import_process(res, products: Dict[str, model.Product]) -> Dict[str, model.Process]:
processes: Dict[str, model.Process] = {}
for record in res:
process: model.Process = model.Process(record[0], record[1], products[record[2]], record[9])
process.set_mode_quantity(record[5], record[6], record[7])
process.set_product_time(record[8])
products[record[2]].set_process(process)
processes[process.pcs_id] = process
for record in res:
pre_process = None
if record[3] is not None:
pre_process = processes[record[3]]
last_process = None
if record[4] is not None:
last_process = processes[record[4]]
processes[record[0]].set_pre_last_pcs(pre_process, last_process)
return processes
def import_resource(res) -> Dict[str, model.Resource]:
resources: Dict[str, model.Resource] = {}
for record in res:
resource = model.Resource(record[0], record[1], record[2], record[4])
resource.set_amount(record[3])
resources[resource.rsc_id] = resource
return resources
def import_resource_attributes(res, resources: Dict[str, model.Resource]):
for record in res:
resources[record[0]].set_basic_attr(record[1])
resources[record[0]].add_attr(record[2])
def import_dataset():
conn = mysql.connector.connect(
host="gz-cynosdbmysql-grp-4ynd0gkb.sql.tencentcdb.com",
port="23027",
user="outsoursing",
password="Npu1234!",
database="outsoursing_dataset")
cur = conn.cursor()
cur.execute("SELECT * FROM aps_order;")
res = cur.fetchall()
orders = import_order(res)
cur.execute("SELECT * FROM aps_product;")
res = cur.fetchall()
products = import_product(res)
cur.execute("SELECT * FROM aps_order_product;")
res = cur.fetchall()
import_order_product(res, orders, products)
cur.execute("SELECT * FROM aps_product_component;")
res = cur.fetchall()
import_product_component(res, products)
cur.execute("SELECT * FROM aps_process;")
res = cur.fetchall()
processes = import_process(res, products)
cur.execute("SELECT * FROM aps_resource;")
res = cur.fetchall()
resources = import_resource(res)
cur.execute("SELECT * FROM aps_resource_arrtibutes;")
res = cur.fetchall()
import_resource_attributes(res, resources)
conn.close()
return orders, products, processes, resources