Commit 2b5d9de7 authored by mayinghao's avatar mayinghao

添加版本

parent 969fd073
...@@ -24,8 +24,10 @@ from PyQt5.QtGui import QColor ...@@ -24,8 +24,10 @@ from PyQt5.QtGui import QColor
from cryptography.fernet import Fernet from cryptography.fernet import Fernet
from multipleThread.thread_upload import Upload_Thread from multipleThread.thread_upload import Upload_Thread
from multipleThread.thread_resume import Resume_Thread from multipleThread.thread_resume import Resume_Thread
from multipleThread.config import version
from multipleThread.config import * 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 # 命令行查看文件md5
# certutil -hashfile music.mp4 MD5 # certutil -hashfile music.mp4 MD5
...@@ -34,18 +36,8 @@ from multipleThread.config import * ...@@ -34,18 +36,8 @@ from multipleThread.config import *
# 当前用户 # 当前用户
user_now = '' user_now = ''
token = '' 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 = {} job_list = {}
...@@ -623,7 +615,6 @@ class DeviceTableModel(QAbstractTableModel): ...@@ -623,7 +615,6 @@ class DeviceTableModel(QAbstractTableModel):
self.endResetModel() self.endResetModel()
class DeviceTableModel_product(QAbstractTableModel): class DeviceTableModel_product(QAbstractTableModel):
def __init__(self, data, headers, parent=None): def __init__(self, data, headers, parent=None):
super().__init__(parent) super().__init__(parent)
...@@ -671,17 +662,18 @@ class DeviceTableModel_product(QAbstractTableModel): ...@@ -671,17 +662,18 @@ class DeviceTableModel_product(QAbstractTableModel):
def filter_data(self, manufacturer): def filter_data(self, manufacturer):
"""根据厂商过滤数据""" """根据厂商过滤数据"""
self.beginResetModel() self.beginResetModel()
if manufacturer == "所有品牌": if manufacturer == "所有品牌":
self._filtered_data = self._data.copy() self._filtered_data = self._data.copy()
else: else:
self._filtered_data = [device for device in self._data if device[3] == manufacturer] self._filtered_data = [device for device in self._data if device[3] == manufacturer]
print(self._filtered_data)
self.endResetModel() self.endResetModel()
@property
def filtered_data(self):
return self._filtered_data
# 导航页 # 导航页
...@@ -822,6 +814,7 @@ class productInfoWindow(QMainWindow): ...@@ -822,6 +814,7 @@ class productInfoWindow(QMainWindow):
self.send_data = 0 self.send_data = 0
self.uuid_str = '' self.uuid_str = ''
self.oss_prefix = "upload/order/" self.oss_prefix = "upload/order/"
self.combos = []
# 必须文件夹 # 必须文件夹
...@@ -841,17 +834,26 @@ class productInfoWindow(QMainWindow): ...@@ -841,17 +834,26 @@ class productInfoWindow(QMainWindow):
product_info = data1["obj"]["pList"]["result"] product_info = data1["obj"]["pList"]["result"]
# 总订单数量 # 总订单数量
pages = data1["obj"]["pList"]["pages"] 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 = [] result = []
single_order = [] single_order = []
for j in product_info: for j in product_info:
#print(j["productVersionList"])
for p in order_property: for p in order_property:
version_list = {}
if p == "goods_brand": if p == "goods_brand":
single_order.append(j["goods_brand"]["name"]) single_order.append(j["goods_brand"]["name"])
elif p == "gc": elif p == "gc":
single_order.append(j["gc"]["className"]) 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: else:
single_order.append(j[p]) single_order.append(j[p])
result.append(single_order) result.append(single_order)
...@@ -887,7 +889,7 @@ class productInfoWindow(QMainWindow): ...@@ -887,7 +889,7 @@ class productInfoWindow(QMainWindow):
page_list = [str(x) for x in range(1, pages+1)] page_list = [str(x) for x in range(1, pages+1)]
self.page_list_combo.addItems(page_list) self.page_list_combo.addItems(page_list)
self.page_list_combo.currentTextChanged.connect(self.update_page_info) 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.station_code = {1: "设计", 2: "生产", 3: "售后", 4: "采购", 5: "品保"}
self.order_status_code = {1: "进行中", 2: "已完成", 0: "未开始"} self.order_status_code = {1: "进行中", 2: "已完成", 0: "未开始"}
# 创建模型和视图 # 创建模型和视图
...@@ -906,7 +908,6 @@ class productInfoWindow(QMainWindow): ...@@ -906,7 +908,6 @@ class productInfoWindow(QMainWindow):
for row in range(len(self.devices)): for row in range(len(self.devices)):
self.add_operation_buttons(row) self.add_operation_buttons(row)
# 布局 # 布局
self.main_layout.addWidget(self.table_view) self.main_layout.addWidget(self.table_view)
self.status_label = QLabel() self.status_label = QLabel()
...@@ -953,8 +954,7 @@ class productInfoWindow(QMainWindow): ...@@ -953,8 +954,7 @@ class productInfoWindow(QMainWindow):
else: else:
self.progress_bars[value[0]].setValue(value[1]) self.progress_bars[value[0]].setValue(value[1])
def add_progress_bar_and_button(self, file_path, order_id, type_info, version_id):
def add_progress_bar_and_button(self, file_path, order_id, type_info):
# 创建水平布局 # 创建水平布局
widget = QWidget() widget = QWidget()
...@@ -982,7 +982,7 @@ class productInfoWindow(QMainWindow): ...@@ -982,7 +982,7 @@ class productInfoWindow(QMainWindow):
self.progress_widgets.append({"widget": widget, "progess_bar": progress_bar, "label": status_label, "index": current_index}) self.progress_widgets.append({"widget": widget, "progess_bar": progress_bar, "label": status_label, "index": current_index})
#self.buttons.append(button) #self.buttons.append(button)
thread = QThread() 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.filename = file_path
upload.moveToThread(thread) upload.moveToThread(thread)
upload.updateSignal.connect(self.changeProcessbar) upload.updateSignal.connect(self.changeProcessbar)
...@@ -1018,7 +1018,7 @@ class productInfoWindow(QMainWindow): ...@@ -1018,7 +1018,7 @@ class productInfoWindow(QMainWindow):
self.table_filelist.setItem(row_position, 2, file_type) self.table_filelist.setItem(row_position, 2, file_type)
self.table_filelist.setItem(row_position, 3, create_time) 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 self.send_data = 0
key = filename.split('/')[-1] key = filename.split('/')[-1]
...@@ -1067,7 +1067,7 @@ class productInfoWindow(QMainWindow): ...@@ -1067,7 +1067,7 @@ class productInfoWindow(QMainWindow):
bucket.complete_multipart_upload(oss_key, upload_id, parts, headers=headers) bucket.complete_multipart_upload(oss_key, upload_id, parts, headers=headers)
#self.file_label.setText(f"{filename}上传完成") #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, 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"} '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: if type_info >= 12:
...@@ -1076,16 +1076,28 @@ class productInfoWindow(QMainWindow): ...@@ -1076,16 +1076,28 @@ class productInfoWindow(QMainWindow):
response = requests.post(callback_url, data=datas, headers=headers) response = requests.post(callback_url, data=datas, headers=headers)
res = response.json() res = response.json()
if res["obj"] == "保存成功": 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() data = response.json()
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
info_append = f"{time_str} {filename}上传成功\n" info_append = f"{time_str} {filename}上传成功\n"
self.status_info += info_append self.status_info += info_append
res=process_data(data) res = process_data(data)
self.update_table_filelist(res, order_id) self.update_table_filelist(res, order_id)
def handle_bom(self, row, type_info): 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( files, _ = QFileDialog.getOpenFileNames(
self, self,
...@@ -1097,9 +1109,9 @@ class productInfoWindow(QMainWindow): ...@@ -1097,9 +1109,9 @@ class productInfoWindow(QMainWindow):
for file_path in files: for file_path in files:
# 如果小于5M直接上传,大于5M开启线程上传 # 如果小于5M直接上传,大于5M开启线程上传
if os.path.getsize(file_path) < part_size: 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: 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): def update_page_info(self, page_num):
...@@ -1114,17 +1126,25 @@ class productInfoWindow(QMainWindow): ...@@ -1114,17 +1126,25 @@ class productInfoWindow(QMainWindow):
product_info = data1["obj"]["pList"]["result"] product_info = data1["obj"]["pList"]["result"]
# 总订单数量 # 总订单数量
list_num = 200 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 = [] result = []
single_order = [] single_order = []
for j in product_info: for j in product_info:
for p in order_property: for p in order_property:
version_list = {}
if p == "goods_brand": if p == "goods_brand":
single_order.append(j["goods_brand"]["name"]) single_order.append(j["goods_brand"]["name"])
elif p == "gc": elif p == "gc":
single_order.append(j["gc"]["className"]) 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: else:
single_order.append(j[p]) single_order.append(j[p])
result.append(single_order) result.append(single_order)
...@@ -1143,7 +1163,7 @@ class productInfoWindow(QMainWindow): ...@@ -1143,7 +1163,7 @@ class productInfoWindow(QMainWindow):
self.brand_combo.clear() self.brand_combo.clear()
self.brand_combo.addItems(brands) self.brand_combo.addItems(brands)
self.brand_combo.currentTextChanged.connect(self.filter_devices) self.brand_combo.currentTextChanged.connect(self.filter_devices)
self.combos.clear()
for row in range(len(self.devices)): for row in range(len(self.devices)):
self.add_operation_buttons(row) self.add_operation_buttons(row)
...@@ -1163,11 +1183,37 @@ class productInfoWindow(QMainWindow): ...@@ -1163,11 +1183,37 @@ class productInfoWindow(QMainWindow):
def update_operation_buttons(self): def update_operation_buttons(self):
"""更新所有行的操作按钮""" """更新所有行的操作按钮"""
self.combos.clear()
for row in range(self.model.rowCount()): for row in range(self.model.rowCount()):
self.add_operation_buttons(row) 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): 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 = QPushButton("生产资料")
btn_edit.clicked.connect(lambda _, r=row: self.handle_bom(r, 12)) btn_edit.clicked.connect(lambda _, r=row: self.handle_bom(r, 12))
...@@ -1187,7 +1233,7 @@ class productInfoWindow(QMainWindow): ...@@ -1187,7 +1233,7 @@ class productInfoWindow(QMainWindow):
# 将按钮布局添加到表格第5列 # 将按钮布局添加到表格第5列
self.table_view.setIndexWidget( self.table_view.setIndexWidget(
self.model.index(row, 5), self.model.index(row, 6),
btn_widget btn_widget
) )
...@@ -1205,7 +1251,7 @@ class productInfoWindow(QMainWindow): ...@@ -1205,7 +1251,7 @@ class productInfoWindow(QMainWindow):
btn_layout2.setSpacing(5) btn_layout2.setSpacing(5)
self.table_view.setIndexWidget( self.table_view.setIndexWidget(
self.model.index(row, 6), self.model.index(row, 7),
btn_widget2 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