Commit 74015538 authored by mayinghao's avatar mayinghao

工厂上传添加已上传文件列表和刷新按钮

parent 1b68d653
# Default ignored files
/shelf/
/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.8" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/emuafactory.iml" filepath="$PROJECT_DIR$/.idea/emuafactory.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
gAAAAABojF59CopXg1XOHp_3Aqu-KhwMznMHPpFxaoIcxHTQ25IJATEiYr0LPIqGe5hwsT0D1vNEAx4pCitPCCin7RWNs87DHIRVzOvc59yfHzfrurOZrqCiKbBRRwBbKCwihqB6OU-kfBwGukNfIW7CkWBKr6pw600G9M0Tv81fz9o45QmPdhM2M0OOBBX4dTWTNHvdPCGdGKQAx5kbPJo_T1-ovr_CEw==
\ No newline at end of file
...@@ -41,6 +41,9 @@ order_info_url = "https://emku.laidecloud.com/console/productOrder/experimentOrd ...@@ -41,6 +41,9 @@ order_info_url = "https://emku.laidecloud.com/console/productOrder/experimentOrd
# order detail # order detail
order_detail_url = "https://emku.laidecloud.com/console/productOrder/uploadorderdetail.ajax" order_detail_url = "https://emku.laidecloud.com/console/productOrder/uploadorderdetail.ajax"
#获取上传文件列表
fileupload_url = "https://emku.laidecloud.com/console/productOrder/onupload.ajax"
# 未完成任务列表 # 未完成任务列表
job_list = {} job_list = {}
...@@ -51,6 +54,15 @@ uncomplete_json_folder = "./upload_tag" ...@@ -51,6 +54,15 @@ uncomplete_json_folder = "./upload_tag"
thread_index = 0 thread_index = 0
# 纳秒转日期时间
def nanoseconds_to_date(nano_seconds):
timestamp = nano_seconds/ 1000
utc_time = datetime.datetime.utcfromtimestamp(timestamp)
beijing_time = utc_time + datetime.timedelta(hours=8)
str_date=beijing_time.strftime("%Y-%m-%d %H:%M:%S")
return str_date
# 密码加密存储类 # 密码加密存储类
class PasswordManager: class PasswordManager:
def __init__(self, storage_file='data.json', key_file='secret.key'): def __init__(self, storage_file='data.json', key_file='secret.key'):
...@@ -115,9 +127,10 @@ class PasswordManager: ...@@ -115,9 +127,10 @@ class PasswordManager:
class OrderDetail(QMainWindow): class OrderDetail(QMainWindow):
_instance = None _instance = None
def __init__(self, sample_data): def __init__(self, sample_data, father_id=0):
super().__init__() super().__init__()
self.setWindowTitle("订单详情") self.setWindowTitle("订单详情")
self.father_id = father_id
self.setGeometry(100, 100, 1200, 600) self.setGeometry(100, 100, 1200, 600)
self.data = sample_data self.data = sample_data
self.oss_prefix = "upload/order/" self.oss_prefix = "upload/order/"
...@@ -163,7 +176,7 @@ class OrderDetail(QMainWindow): ...@@ -163,7 +176,7 @@ class OrderDetail(QMainWindow):
self.table = QTableWidget() self.table = QTableWidget()
self.table.setColumnCount(8) self.table.setColumnCount(8)
self.table.setHorizontalHeaderLabels([ self.table.setHorizontalHeaderLabels([
"id", "工站", "人员", "状态", "预计完成时间", "实际完成日期", "图纸文件", "BoM文件" "id", "工站", "人员", "状态", "预计完成时间", "实际完成日期", "图纸文件", "BOM文件"
]) ])
# 设置表格属性 # 设置表格属性
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
...@@ -176,8 +189,110 @@ class OrderDetail(QMainWindow): ...@@ -176,8 +189,110 @@ class OrderDetail(QMainWindow):
layout.addWidget(self.table) layout.addWidget(self.table)
self.table_filelist = QTableWidget()
self.table_filelist.setColumnCount(4)
self.table_filelist.setHorizontalHeaderLabels(["工站", "类型", "文件名", "上传日期"])
self.table_filelist.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
self.table_filelist.setSortingEnabled(True)
# 设置所有单元格默认居中对齐
header = self.table_filelist.horizontalHeader()
header.setDefaultSectionSize(290)
header.setSectionResizeMode(QHeaderView.Interactive) # 允许调整列宽
#header.setSectionResizeMode(QHeaderView.Stretch) # 所有列
header.setDefaultAlignment(Qt.AlignCenter)
#header.setSectionsMovable(True) # 允许拖动列顺序
layout.addWidget(self.table_filelist)
self.refresh_button= QPushButton()
self.refresh_button.setMaximumWidth(100)
self.refresh_button.setMinimumHeight(30)
self.refresh_button.setText("刷新")
self.refresh_button.clicked.connect(self.update_table_filelist)
layout.addWidget(self.refresh_button)
self.load_file_data()
#self.check_if_has_unfinished() #self.check_if_has_unfinished()
#加载文件数据
def load_file_data(self):
data_file = self.data
row = 0
for info in data_file:
if len(info[6]) > 0:
row += len(info[6])
self.table_filelist.setRowCount(row)
row = 0
try:
# 设置表格行数
for info in data_file:
if len(info[6]) > 0:
for file_info in info[6]:
station_name = QTableWidgetItem(file_info[0])
file_item = QTableWidgetItem(file_info[1])
file_item.setTextAlignment(Qt.AlignCenter)
create_time = QTableWidgetItem(file_info[2])
file_type = QTableWidgetItem(file_info[3])
station_name.setTextAlignment(Qt.AlignCenter)
file_item.setTextAlignment(Qt.AlignCenter)
create_time.setTextAlignment(Qt.AlignCenter)
file_type.setTextAlignment(Qt.AlignCenter)
self.table_filelist.setItem(row, 0, station_name)
self.table_filelist.setItem(row, 1, file_type)
self.table_filelist.setItem(row, 2, file_item)
self.table_filelist.setItem(row, 3, create_time)
row += 1
except Exception as e:
print(f"Error: {e}")
def update_table_filelist(self):
datas = {"id": str(self.father_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"}
fileupload_list = []
response = requests.post(fileupload_url, data=datas, headers=headers)
data1 = response.json()
for j in data1["obj"]["allChilds"]:
station_true_name = j["station_ture_name"]
if len(j["tzFiles"]) > 0:
for h in j["tzFiles"]:
fileupload_list.append([station_true_name, h['info'], h['addTime'], "图纸文件"])
if len(j["lcFiles"]) > 0:
for file in j["lcFiles"]:
fileupload_list.append([station_true_name, file['info'], file["addTime"], "BOM文件"])
fileupload_list.sort(key=lambda x: x[2], reverse=True)
self.table_filelist.setRowCount(0)
self.table_filelist.setRowCount(len(fileupload_list))
for row, file_info in enumerate(fileupload_list):
station_name = QTableWidgetItem(file_info[0])
file_item = QTableWidgetItem(file_info[1])
file_type =QTableWidgetItem(file_info[3])
create_time = QTableWidgetItem(nanoseconds_to_date(file_info[2]))
station_name.setTextAlignment(Qt.AlignCenter)
file_item.setTextAlignment(Qt.AlignCenter)
create_time.setTextAlignment(Qt.AlignCenter)
file_type.setTextAlignment(Qt.AlignCenter)
self.table_filelist.setItem(row, 0, station_name)
self.table_filelist.setItem(row,1, file_type)
self.table_filelist.setItem(row, 2, file_item)
self.table_filelist.setItem(row, 3, create_time)
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
info_append = f"{time_str} 刷新成功\n"
self.file_label.setText(info_append)
def load_sample_data(self): def load_sample_data(self):
"""加载示例数据""" """加载示例数据"""
sample_data = self.data sample_data = self.data
...@@ -202,7 +317,6 @@ class OrderDetail(QMainWindow): ...@@ -202,7 +317,6 @@ class OrderDetail(QMainWindow):
def upload_drawing(self, row): def upload_drawing(self, row):
type_info = 3 type_info = 3
print(self.data[row][0])
"""上传图纸文件""" """上传图纸文件"""
# file_path, _ = QFileDialog.getOpenFileName( # file_path, _ = QFileDialog.getOpenFileName(
# self, "选择图纸文件", "", "图纸文件 (*.dwg *.dxf *.pdf);;所有文件 (*)" # self, "选择图纸文件", "", "图纸文件 (*.dwg *.dxf *.pdf);;所有文件 (*)"
...@@ -224,7 +338,6 @@ class OrderDetail(QMainWindow): ...@@ -224,7 +338,6 @@ class OrderDetail(QMainWindow):
def handle_bom(self, row): def handle_bom(self, row):
type_info = 4 type_info = 4
print(self.data[row][0])
# 上传文件逻辑 # 上传文件逻辑
file_path, _ = QFileDialog.getOpenFileName( file_path, _ = QFileDialog.getOpenFileName(
...@@ -282,6 +395,7 @@ class OrderDetail(QMainWindow): ...@@ -282,6 +395,7 @@ class OrderDetail(QMainWindow):
upload.filename = file_path upload.filename = file_path
upload.moveToThread(thread) upload.moveToThread(thread)
upload.updateSignal.connect(self.changeProcessbar) upload.updateSignal.connect(self.changeProcessbar)
upload.finishSignal.connect(self.update_table_filelist)
self.uploads.append(upload) self.uploads.append(upload)
self.threads.append(thread) self.threads.append(thread)
thread.started.connect(self.uploads[-1].run) thread.started.connect(self.uploads[-1].run)
...@@ -302,6 +416,7 @@ class OrderDetail(QMainWindow): ...@@ -302,6 +416,7 @@ class OrderDetail(QMainWindow):
info_append = f"{time_str} {value[2]}上传成功\n" info_append = f"{time_str} {value[2]}上传成功\n"
self.status_info += info_append self.status_info += info_append
self.file_label.setText(self.status_info) self.file_label.setText(self.status_info)
self.update_table_filelist()
else: else:
self.progress_bars[value[0]].setValue(value[1]) self.progress_bars[value[0]].setValue(value[1])
...@@ -311,7 +426,6 @@ class OrderDetail(QMainWindow): ...@@ -311,7 +426,6 @@ class OrderDetail(QMainWindow):
un_finished_job = os.listdir("./upload_tag") un_finished_job = os.listdir("./upload_tag")
if len(un_finished_job) >= 1: if len(un_finished_job) >= 1:
for j in un_finished_job: for j in un_finished_job:
print(j)
with open("./upload_tag" + "/" + j, "r+") as f: with open("./upload_tag" + "/" + j, "r+") as f:
upload_data = json.loads(f.read()) upload_data = json.loads(f.read())
upload_id = list(upload_data.keys())[0] upload_id = list(upload_data.keys())[0]
...@@ -321,7 +435,6 @@ class OrderDetail(QMainWindow): ...@@ -321,7 +435,6 @@ class OrderDetail(QMainWindow):
type_info = info[2] type_info = info[2]
uuid_str = info[3] uuid_str = info[3]
total_size = info[4] total_size = info[4]
print(f"{upload_id} {local_file_path}")
# 添加UI内容 # 添加UI内容
h_layout = QHBoxLayout() h_layout = QHBoxLayout()
...@@ -350,7 +463,6 @@ class OrderDetail(QMainWindow): ...@@ -350,7 +463,6 @@ class OrderDetail(QMainWindow):
self.resume_loads.append(resume_thread) self.resume_loads.append(resume_thread)
self.threads.append(thread) self.threads.append(thread)
thread.started.connect(self.resume_loads[self.counter].run) thread.started.connect(self.resume_loads[self.counter].run)
print(f"self counter {self.counter}")
thread.start() thread.start()
print(thread.isRunning()) print(thread.isRunning())
...@@ -424,6 +536,7 @@ class OrderDetail(QMainWindow): ...@@ -424,6 +536,7 @@ class OrderDetail(QMainWindow):
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}
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"}
# try:
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"] == "保存成功":
...@@ -431,6 +544,9 @@ class OrderDetail(QMainWindow): ...@@ -431,6 +544,9 @@ class OrderDetail(QMainWindow):
info_append = f"{time_str} {filename}上传成功\n" info_append = f"{time_str} {filename}上传成功\n"
self.status_info += info_append self.status_info += info_append
self.file_label.setText(self.status_info) self.file_label.setText(self.status_info)
self.update_table_filelist()
# except Exception as e:
# print("wrong")
class DeviceTableModel(QAbstractTableModel): class DeviceTableModel(QAbstractTableModel):
...@@ -706,7 +822,6 @@ class EqipInfoWindow(QMainWindow): ...@@ -706,7 +822,6 @@ class EqipInfoWindow(QMainWindow):
def handle_close(self): def handle_close(self):
self.detail_page = None self.detail_page = None
print("detail page close")
def edit_device(self, row): def edit_device(self, row):
print(self.detail_page) print(self.detail_page)
...@@ -720,8 +835,6 @@ class EqipInfoWindow(QMainWindow): ...@@ -720,8 +835,6 @@ class EqipInfoWindow(QMainWindow):
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"}
response = requests.post(order_detail_url, headers=headers, data=datas) response = requests.post(order_detail_url, headers=headers, data=datas)
print(response.text == "")
if response.text != "": if response.text != "":
data1 = response.json() data1 = response.json()
all_orders = [] all_orders = []
...@@ -749,8 +862,15 @@ class EqipInfoWindow(QMainWindow): ...@@ -749,8 +862,15 @@ class EqipInfoWindow(QMainWindow):
full_name = j["userName"] + j["trueName"] full_name = j["userName"] + j["trueName"]
order_status = self.order_status_code[j["order_status"]] order_status = self.order_status_code[j["order_status"]]
all_orders.append([order_id, station_true_name, full_name, order_status, expect_date, actual_time]) tzFiles = []
self.detail_page = OrderDetail(all_orders) if len(j["tzFiles"]) > 0:
for file in j["tzFiles"]:
tzFiles.append([station_true_name, file['info'], nanoseconds_to_date(file['addTime']), "图纸文件"])
if len(j["lcFiles"]) > 0:
for file in j["lcFiles"]:
tzFiles.append([station_true_name, file['info'], nanoseconds_to_date(file['addTime']), "BOM文件"])
all_orders.append([order_id, station_true_name, full_name, order_status, expect_date, actual_time, tzFiles])
self.detail_page = OrderDetail(all_orders,self.devices[original_index][0])
self.detail_page.destroyed.connect(self.handle_close) self.detail_page.destroyed.connect(self.handle_close)
self.detail_page.show() self.detail_page.show()
else: else:
...@@ -838,11 +958,10 @@ class LoginWindow(QMainWindow): ...@@ -838,11 +958,10 @@ class LoginWindow(QMainWindow):
try: try:
response = requests.post(login_url, data=myobj) response = requests.post(login_url, data=myobj)
data = response.json() data = response.json()
print(data)
if data['resMsg'] == "登录成功": if data['resMsg'] == "登录成功":
print("access success")
global user_now, token global user_now, token
user_now = account user_now = account
global token
token = data['obj']['token'] token = data['obj']['token']
try: try:
# 登录成功且记住账号没有被选中 # 登录成功且记住账号没有被选中
......
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
...@@ -15,7 +15,7 @@ class Upload_Thread(QObject): ...@@ -15,7 +15,7 @@ class Upload_Thread(QObject):
#自定义信号声明 #自定义信号声明
# 使用自定义信号和UI主线程通讯,参数是发送信号时附带参数的数据类型,可以是str、int、list等 # 使用自定义信号和UI主线程通讯,参数是发送信号时附带参数的数据类型,可以是str、int、list等
finishSignal = pyqtSignal(str) finishSignal = pyqtSignal()
updateSignal = pyqtSignal(tuple) updateSignal = pyqtSignal(tuple)
def __init__(self, thread_num=0, order_id=None, type_info=None, token=""): def __init__(self, thread_num=0, order_id=None, type_info=None, token=""):
...@@ -105,7 +105,6 @@ class Upload_Thread(QObject): ...@@ -105,7 +105,6 @@ class Upload_Thread(QObject):
self.send_data = 0 self.send_data = 0
upload_id = bucket.init_multipart_upload(oss_key).upload_id upload_id = bucket.init_multipart_upload(oss_key).upload_id
print(upload_id)
with open("./upload_tag/tmp_" + key + ".json", "w+") as f: with open("./upload_tag/tmp_" + key + ".json", "w+") as f:
json.dump({upload_id: [self.filename, self.order_id, self.type_info, self.uuid_str, self.total_size]}, f) json.dump({upload_id: [self.filename, self.order_id, self.type_info, self.uuid_str, self.total_size]}, f)
...@@ -113,7 +112,6 @@ class Upload_Thread(QObject): ...@@ -113,7 +112,6 @@ class Upload_Thread(QObject):
if os.path.exists(self.filename): if os.path.exists(self.filename):
total_size = os.path.getsize(self.filename) total_size = os.path.getsize(self.filename)
print(total_size)
circle = total_size // part_size circle = total_size // part_size
# 最后一包数据 # 最后一包数据
left_bytes = total_size % part_size left_bytes = total_size % part_size
...@@ -158,6 +156,10 @@ class Upload_Thread(QObject): ...@@ -158,6 +156,10 @@ class Upload_Thread(QObject):
headers = {'token': self.token, headers = {'token': self.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"}
response = requests.post(callback_url, data=datas,headers=headers) try:
res = response.json() response = requests.post(callback_url, data=datas,headers=headers)
print(res["obj"]) res = response.json()
print(res["obj"])
self.finishSignal.emit()
except Exception as e:
print("wrong")
LnqGFP4d04AjE2AyhG9kPERz94o9xkDgKSP0teA05d8=
\ No newline at end of file
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