Commit 2b5d9de7 authored by mayinghao's avatar mayinghao

添加版本

parent 969fd073
......@@ -24,8 +24,10 @@ from PyQt5.QtGui import QColor
from cryptography.fernet import Fernet
from multipleThread.thread_upload import Upload_Thread
from multipleThread.thread_resume import Resume_Thread
from multipleThread.config import version
from multipleThread.config import *
from multipleThread.config import login_url, order_detail_url, order_info_url, product_manager_url, \
product_callback_url, fileupload_url
# 命令行查看文件md5
# certutil -hashfile music.mp4 MD5
......@@ -34,18 +36,8 @@ from multipleThread.config import *
# 当前用户
user_now = ''
token = ''
# 工厂上传登录地址
login_url = 'https://emku.laidecloud.com/console/pc/userLoginByToken.ajax'
# order信息地址
order_info_url = "https://emku.laidecloud.com/console/productOrder/experimentOrderList.ajax"
# order detail
order_detail_url = "https://emku.laidecloud.com/console/productOrder/uploadorderdetail.ajax"
product_manager_url = "https://emku.laidecloud.com/console/goods/goods_list.ajax"
product_callback_url = "https://emku.laidecloud.com/console/seller/getFiles.ajax"
#获取上传文件列表
fileupload_url = "https://emku.laidecloud.com/console/productOrder/onupload.ajax"
print(f"{fileupload_url} {login_url} {order_detail_url} {order_info_url} {product_manager_url}")
# 未完成任务列表
job_list = {}
......@@ -623,7 +615,6 @@ class DeviceTableModel(QAbstractTableModel):
self.endResetModel()
class DeviceTableModel_product(QAbstractTableModel):
def __init__(self, data, headers, parent=None):
super().__init__(parent)
......@@ -671,17 +662,18 @@ class DeviceTableModel_product(QAbstractTableModel):
def filter_data(self, manufacturer):
"""根据厂商过滤数据"""
self.beginResetModel()
if manufacturer == "所有品牌":
self._filtered_data = self._data.copy()
else:
self._filtered_data = [device for device in self._data if device[3] == manufacturer]
print(self._filtered_data)
self.endResetModel()
@property
def filtered_data(self):
return self._filtered_data
# 导航页
......@@ -822,6 +814,7 @@ class productInfoWindow(QMainWindow):
self.send_data = 0
self.uuid_str = ''
self.oss_prefix = "upload/order/"
self.combos = []
# 必须文件夹
......@@ -841,17 +834,26 @@ class productInfoWindow(QMainWindow):
product_info = data1["obj"]["pList"]["result"]
# 总订单数量
pages = data1["obj"]["pList"]["pages"]
order_property = ["id", "goods_name", "en_name", "goods_brand", "gc"]
order_property = ["id", "goods_name", "en_name", "goods_brand", "gc","productVersionList"]
# 处理数据
result = []
single_order = []
for j in product_info:
#print(j["productVersionList"])
for p in order_property:
version_list = {}
if p == "goods_brand":
single_order.append(j["goods_brand"]["name"])
elif p == "gc":
single_order.append(j["gc"]["className"])
elif p == "productVersionList":
if len(j["productVersionList"]) > 0:
for z in j["productVersionList"]:
version_list[z["version_no"]] = z["id"]
if len(version_list) == 0:
version_list[""] = -1
single_order.append(version_list)
else:
single_order.append(j[p])
result.append(single_order)
......@@ -887,7 +889,7 @@ class productInfoWindow(QMainWindow):
page_list = [str(x) for x in range(1, pages+1)]
self.page_list_combo.addItems(page_list)
self.page_list_combo.currentTextChanged.connect(self.update_page_info)
self.headers = ["id", "商品名称", "英文名称", "品牌", "分类名", "上传", "上传"]
self.headers = ["id", "商品名称", "英文名称", "品牌", "分类名", "版本", "上传", "上传"]
self.station_code = {1: "设计", 2: "生产", 3: "售后", 4: "采购", 5: "品保"}
self.order_status_code = {1: "进行中", 2: "已完成", 0: "未开始"}
# 创建模型和视图
......@@ -906,7 +908,6 @@ class productInfoWindow(QMainWindow):
for row in range(len(self.devices)):
self.add_operation_buttons(row)
# 布局
self.main_layout.addWidget(self.table_view)
self.status_label = QLabel()
......@@ -953,8 +954,7 @@ class productInfoWindow(QMainWindow):
else:
self.progress_bars[value[0]].setValue(value[1])
def add_progress_bar_and_button(self, file_path, order_id, type_info):
def add_progress_bar_and_button(self, file_path, order_id, type_info, version_id):
# 创建水平布局
widget = QWidget()
......@@ -982,7 +982,7 @@ class productInfoWindow(QMainWindow):
self.progress_widgets.append({"widget": widget, "progess_bar": progress_bar, "label": status_label, "index": current_index})
#self.buttons.append(button)
thread = QThread()
upload = Upload_Thread(self.counter, order_id, type_info, token)
upload = Upload_Thread(self.counter, order_id, type_info, token, version_id)
upload.filename = file_path
upload.moveToThread(thread)
upload.updateSignal.connect(self.changeProcessbar)
......@@ -1018,7 +1018,7 @@ class productInfoWindow(QMainWindow):
self.table_filelist.setItem(row_position, 2, file_type)
self.table_filelist.setItem(row_position, 3, create_time)
def upload_file(self, filename, order_id, type_info):
def upload_file(self, filename, order_id, type_info, version_id):
# 显示上传进度条
self.send_data = 0
key = filename.split('/')[-1]
......@@ -1067,7 +1067,7 @@ class productInfoWindow(QMainWindow):
bucket.complete_multipart_upload(oss_key, upload_id, parts, headers=headers)
#self.file_label.setText(f"{filename}上传完成")
datas = {"id": str(order_id), "name": self.uuid_str+"."+extension, "path": name_prefix, "info": key, "type": type_info}
datas = {"id": str(order_id), "name": self.uuid_str+"."+extension, "path": name_prefix, "info": key, "type": type_info, "product_version_id": version_id}
headers = {'token': token,
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
if type_info >= 12:
......@@ -1076,16 +1076,28 @@ class productInfoWindow(QMainWindow):
response = requests.post(callback_url, data=datas, headers=headers)
res = response.json()
if res["obj"] == "保存成功":
response = requests.post(product_callback_url, data={"id": order_id}, headers=headers)
if version_id == -1:
version_id = ''
if datas["product_version_id"] == -1:
datas["product_version_id"] = ''
response = requests.post(product_callback_url, data={"id": order_id, "product_version_id": version_id}, headers=headers)
data = response.json()
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
info_append = f"{time_str} {filename}上传成功\n"
self.status_info += info_append
res=process_data(data)
res = process_data(data)
self.update_table_filelist(res, order_id)
def handle_bom(self, row, type_info):
combo = self.combos[row]
version_id = -1
if combo:
value = combo.currentText()
version_id = self.model.filtered_data[row][-1][value]
print(f"---->{version_id}")
# 上传文件逻辑
files, _ = QFileDialog.getOpenFileNames(
self,
......@@ -1097,9 +1109,9 @@ class productInfoWindow(QMainWindow):
for file_path in files:
# 如果小于5M直接上传,大于5M开启线程上传
if os.path.getsize(file_path) < part_size:
self.upload_file(file_path,self.devices[row][0], type_info)
self.upload_file(file_path,self.model.filtered_data[row][0], type_info, version_id)
else:
self.add_progress_bar_and_button(file_path, self.devices[row][0], type_info)
self.add_progress_bar_and_button(file_path, self.model.filtered_data[row][0], type_info, version_id)
# 更新列表信息
def update_page_info(self, page_num):
......@@ -1114,17 +1126,25 @@ class productInfoWindow(QMainWindow):
product_info = data1["obj"]["pList"]["result"]
# 总订单数量
list_num = 200
order_property = ["id", "goods_name", "en_name", "goods_brand", "gc"]
order_property = ["id", "goods_name", "en_name", "goods_brand", "gc", "productVersionList"]
# 处理数据
result = []
single_order = []
for j in product_info:
for p in order_property:
version_list = {}
if p == "goods_brand":
single_order.append(j["goods_brand"]["name"])
elif p == "gc":
single_order.append(j["gc"]["className"])
elif p == "productVersionList":
if len(j["productVersionList"]) > 0:
for z in j["productVersionList"]:
version_list[z["version_no"]] = z["id"]
if len(version_list) == 0:
version_list[""] = -1
single_order.append(version_list)
else:
single_order.append(j[p])
result.append(single_order)
......@@ -1143,7 +1163,7 @@ class productInfoWindow(QMainWindow):
self.brand_combo.clear()
self.brand_combo.addItems(brands)
self.brand_combo.currentTextChanged.connect(self.filter_devices)
self.combos.clear()
for row in range(len(self.devices)):
self.add_operation_buttons(row)
......@@ -1163,11 +1183,37 @@ class productInfoWindow(QMainWindow):
def update_operation_buttons(self):
"""更新所有行的操作按钮"""
self.combos.clear()
for row in range(self.model.rowCount()):
self.add_operation_buttons(row)
def on_value_changed(self, row, value):
print(self.model.filtered_data[row][-1][value])
def add_operation_buttons(self, row):
version_list = self.model._filtered_data[row][-1]
version_keys = list(version_list.keys())
combo = QComboBox()
combo.addItems(version_keys)
combo.setStyleSheet("""
QComboBox {
text-align: center;
}
QComboBox QAbstractItemView {
text-align: center;
}
""")
combo.setCurrentIndex(0)
self.combos.append(combo)
combo.currentTextChanged.connect(lambda text, r=row: self.on_value_changed(r, text))
self.table_view.setIndexWidget(
self.model.index(row, 5),
combo
)
# 创建操作按钮
btn_edit = QPushButton("生产资料")
btn_edit.clicked.connect(lambda _, r=row: self.handle_bom(r, 12))
......@@ -1187,7 +1233,7 @@ class productInfoWindow(QMainWindow):
# 将按钮布局添加到表格第5列
self.table_view.setIndexWidget(
self.model.index(row, 5),
self.model.index(row, 6),
btn_widget
)
......@@ -1205,7 +1251,7 @@ class productInfoWindow(QMainWindow):
btn_layout2.setSpacing(5)
self.table_view.setIndexWidget(
self.model.index(row, 6),
self.model.index(row, 7),
btn_widget2
)
......
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