feat:新增一键生成虚拟订单号功能
This commit is contained in:
parent
d81765e7d2
commit
3246e8981f
BIN
db/jtDB.db
BIN
db/jtDB.db
Binary file not shown.
@ -2,7 +2,7 @@ from pymodbus.client import ModbusTcpClient
|
||||
import time
|
||||
client = ModbusTcpClient('localhost', port=5020)
|
||||
client.connect()
|
||||
client.write_registers(address=11, values=[11322])
|
||||
client.write_registers(address=11, values=[14322])
|
||||
# client.write_registers(address=3, values=[0])
|
||||
# time.sleep(2)
|
||||
# client.write_registers(address=0, values=[0])
|
||||
|
||||
@ -187,6 +187,29 @@ class MainWindowUI(QMainWindow):
|
||||
|
||||
self.order_layout.addWidget(self.order_label)
|
||||
self.order_layout.addWidget(self.order_edit)
|
||||
|
||||
# 添加虚拟工程号按钮
|
||||
self.virtual_order_button = QPushButton("虚拟工程号")
|
||||
self.virtual_order_button.setFixedHeight(30)
|
||||
self.virtual_order_button.setFixedWidth(100)
|
||||
self.virtual_order_button.setFont(QFont("微软雅黑", 10))
|
||||
self.virtual_order_button.setStyleSheet("""
|
||||
QPushButton {
|
||||
background-color: #e3f2fd;
|
||||
border: 1px solid #2196f3;
|
||||
border-radius: 3px;
|
||||
padding: 2px 5px;
|
||||
color: #1976d2;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #bbdefb;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #90caf9;
|
||||
}
|
||||
""")
|
||||
self.order_layout.addWidget(self.virtual_order_button)
|
||||
|
||||
self.order_layout.addStretch() # 添加弹性空间,将组件推到左侧
|
||||
self.task_layout.addLayout(self.order_layout)
|
||||
|
||||
|
||||
@ -296,6 +296,9 @@ class MainWindow(MainWindowUI):
|
||||
self.stop_button.clicked.connect(self.handle_stop)
|
||||
self.delete_row_button.clicked.connect(self.handle_delete_row)
|
||||
|
||||
# 连接虚拟工程号按钮事件
|
||||
self.virtual_order_button.clicked.connect(self.handle_virtual_order)
|
||||
|
||||
|
||||
# 连接托盘完成按钮事件
|
||||
self.tray_complete_button.clicked.connect(self.handle_tray_complete)
|
||||
@ -977,6 +980,32 @@ class MainWindow(MainWindowUI):
|
||||
logging.warning("工程号为空")
|
||||
QMessageBox.warning(self, "输入提示", "请输入有效的工程号")
|
||||
|
||||
def handle_virtual_order(self):
|
||||
"""处理虚拟工程号按钮点击事件"""
|
||||
try:
|
||||
# 获取当前订单代码
|
||||
order_code = self._current_order_code
|
||||
if not order_code:
|
||||
QMessageBox.warning(self, "提示", "请先选择订单")
|
||||
return
|
||||
|
||||
# 生成基于时间戳的虚拟工程号
|
||||
import datetime
|
||||
timestamp = datetime.datetime.now()
|
||||
virtual_gc_note = f"{timestamp.strftime('%Y%m%d_%H%M%S')}"
|
||||
|
||||
# 直接添加虚拟工程号到微丝产线表格,跳过接口调用
|
||||
self.add_new_inspection_row(virtual_gc_note, order_code)
|
||||
|
||||
# 清空工程号输入框
|
||||
self.order_edit.clear()
|
||||
|
||||
logging.info(f"已生成虚拟工程号并直接添加: {virtual_gc_note}")
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"生成虚拟工程号失败: {str(e)}")
|
||||
QMessageBox.critical(self, "错误", f"生成虚拟工程号失败: {str(e)}")
|
||||
|
||||
def test_rapid_scanning(self):
|
||||
"""测试快速连续扫码的场景,确保最新扫码的工程号始终在最后"""
|
||||
logging.info("开始测试快速连续扫码场景")
|
||||
@ -1548,12 +1577,13 @@ class MainWindow(MainWindowUI):
|
||||
finally:
|
||||
self._loading_data_in_progress = False
|
||||
|
||||
def load_finished_record_to_package_record(self, order_id, gc_note, tray_id):
|
||||
def load_finished_record_to_package_record(self, order_id, gc_note, tray_id, axios_num=None):
|
||||
"""加载已完成检验数据到包装记录
|
||||
|
||||
Args:
|
||||
order_id: 工程号
|
||||
tray_id: 托盘号
|
||||
axios_num: 轴号,如果为None则使用数据库中的轴号
|
||||
"""
|
||||
try:
|
||||
from dao.inspection_dao import InspectionDAO
|
||||
@ -1566,8 +1596,13 @@ class MainWindow(MainWindowUI):
|
||||
logging.warning(f"未找到工程号 {gc_note} 托盘号 {tray_id} 的检验数据")
|
||||
return
|
||||
|
||||
# 获取轴号并保存
|
||||
# 使用传入的轴号,如果没有传入则使用数据库中的轴号
|
||||
if axios_num is not None:
|
||||
label_value = axios_num
|
||||
logging.info(f"使用传入的轴号: {label_value}")
|
||||
else:
|
||||
label_value = self.get_axios_num_by_order_id(self._current_order_code)
|
||||
logging.info(f"使用数据库中的轴号: {label_value}")
|
||||
|
||||
# 从检验数据中获取贴标和称重数据
|
||||
weight_value = ""
|
||||
@ -1579,7 +1614,7 @@ class MainWindow(MainWindowUI):
|
||||
net_weight_value = item['value']
|
||||
|
||||
# 只要贴标字段有值,就可以写入包装记录
|
||||
if label_value == None or label_value == "":
|
||||
if label_value is None or label_value == "":
|
||||
logging.warning(f"工程号 {order_id} 托盘号 {tray_id} 的贴标字段为空,不添加到包装记录")
|
||||
return
|
||||
|
||||
@ -1588,7 +1623,7 @@ class MainWindow(MainWindowUI):
|
||||
finish_time = datetime.now()
|
||||
|
||||
# 将数据写入到数据库表 inspection_pack_data
|
||||
inspection_dao.save_package_record(order_id, tray_id, str(label_value+1), weight_value,net_weight_value, finish_time,gc_note)
|
||||
inspection_dao.save_package_record(order_id, tray_id, str(label_value), weight_value, net_weight_value, finish_time, gc_note)
|
||||
|
||||
# 回显数据,但避免循环调用
|
||||
if not getattr(self, '_loading_data_in_progress'):
|
||||
@ -2566,9 +2601,12 @@ class MainWindow(MainWindowUI):
|
||||
inspection_dao.update_product_status(self._current_order_code, gc_note, tray_id, 'labeled')
|
||||
logging.info(f"工程号 {gc_note} 的贴标已完成,状态更新为labeled")
|
||||
|
||||
# 调用加载到包装记录的方法
|
||||
self.load_finished_record_to_package_record(self._current_order_code,gc_note, tray_id)
|
||||
logging.info(f"贴标完成,已将工程号 {gc_note} 的记录加载到包装记录")
|
||||
# 获取当前行的轴号,用于保存到包装记录
|
||||
current_axios_num = self.get_current_row_axios_num(data_row)
|
||||
|
||||
# 调用加载到包装记录的方法,传入正确的轴号
|
||||
self.load_finished_record_to_package_record(self._current_order_code, gc_note, tray_id, current_axios_num)
|
||||
logging.info(f"贴标完成,已将工程号 {gc_note} 的记录加载到包装记录,轴号: {current_axios_num}")
|
||||
|
||||
# 删除当前处理的行
|
||||
self.process_table.removeRow(data_row)
|
||||
@ -3826,7 +3864,7 @@ class MainWindow(MainWindowUI):
|
||||
background-color: #ffcdd2;
|
||||
}
|
||||
""")
|
||||
self.delete_row_button.clicked.connect(self.handle_delete_row)
|
||||
# 删除按钮的信号连接已在 connect_signals 函数中处理,这里不需要重复连接
|
||||
|
||||
# 打印托盘号按钮
|
||||
self.print_tray_button = QPushButton("打印托盘号")
|
||||
@ -3908,7 +3946,6 @@ class MainWindow(MainWindowUI):
|
||||
if current_row >= 2: # 确保不是表头行
|
||||
selected_rows = [self.process_table.model().index(current_row, 0)]
|
||||
else:
|
||||
QMessageBox.warning(self, "提示", "请先选择要删除的微丝产线数据行")
|
||||
return
|
||||
|
||||
# 确认删除
|
||||
@ -3993,7 +4030,6 @@ class MainWindow(MainWindowUI):
|
||||
if current_row >= 0: # 包装记录表格没有表头行
|
||||
selected_rows = [self.record_table.model().index(current_row, 0)]
|
||||
else:
|
||||
QMessageBox.warning(self, "提示", "请先选择要删除的包装记录行")
|
||||
return
|
||||
|
||||
# 确认删除
|
||||
|
||||
@ -270,47 +270,51 @@ class OrderQueryDialog(OrderQueryDialogUI):
|
||||
# 处理查询结果
|
||||
results = []
|
||||
for row in rows:
|
||||
# 将元组转换为字典
|
||||
# 将元组转换为字典,使用安全的索引访问
|
||||
try:
|
||||
order_data = {
|
||||
"note": row[0],
|
||||
"mo": row[1],
|
||||
"customer": row[2],
|
||||
"customerexp": row[3],
|
||||
"khno": row[4],
|
||||
"ddzl": row[5],
|
||||
"khjq": row[6],
|
||||
"code": row[7],
|
||||
"type": row[8],
|
||||
"cz": row[9],
|
||||
"size": row[10],
|
||||
"cd": row[11],
|
||||
"maxsl": row[12],
|
||||
"spack": row[13],
|
||||
"zx_name": row[14],
|
||||
"zx_code": row[15],
|
||||
"zx_zl": row[16],
|
||||
"template_name": row[17],
|
||||
"bqlb": row[18],
|
||||
"dycz": row[19],
|
||||
"luno": row[20],
|
||||
"corp": row[21],
|
||||
"sl": row[22],
|
||||
"tccd": row[23],
|
||||
"bccd": row[24],
|
||||
"ysl": row[25],
|
||||
"qfqd": row[26],
|
||||
"yzgg": row[27],
|
||||
"tqd": row[28],
|
||||
"bqd": row[29],
|
||||
"bzfs": row[30],
|
||||
"ddyq": row[31],
|
||||
"remarks_hb": row[32],
|
||||
"bz_tqd": row[33],
|
||||
"bz_bqd": row[34],
|
||||
"zzyq": row[35],
|
||||
"rq": row[36]
|
||||
"note": row[0] if len(row) > 0 else "",
|
||||
"mo": row[1] if len(row) > 1 else "",
|
||||
"customer": row[2] if len(row) > 2 else "",
|
||||
"customerexp": row[3] if len(row) > 3 else "",
|
||||
"khno": row[4] if len(row) > 4 else "",
|
||||
"ddzl": row[5] if len(row) > 5 else "",
|
||||
"khjq": row[6] if len(row) > 6 else "",
|
||||
"code": row[7] if len(row) > 7 else "",
|
||||
"type": row[8] if len(row) > 8 else "",
|
||||
"cz": row[9] if len(row) > 9 else "",
|
||||
"size": row[10] if len(row) > 10 else "",
|
||||
"cd": row[11] if len(row) > 11 else "",
|
||||
"maxsl": row[12] if len(row) > 12 else "",
|
||||
"spack": row[13] if len(row) > 13 else "",
|
||||
"zx_name": row[14] if len(row) > 14 else "",
|
||||
"zx_code": row[15] if len(row) > 15 else "",
|
||||
"zx_zl": row[16] if len(row) > 16 else "",
|
||||
"template_name": row[17] if len(row) > 17 else "",
|
||||
"bqlb": row[18] if len(row) > 18 else "",
|
||||
"dycz": row[19] if len(row) > 19 else "",
|
||||
"luno": row[20] if len(row) > 20 else "",
|
||||
"corp": row[21] if len(row) > 21 else "",
|
||||
"sl": row[22] if len(row) > 22 else "",
|
||||
"tccd": row[23] if len(row) > 23 else "",
|
||||
"bccd": row[24] if len(row) > 24 else "",
|
||||
"ysl": row[25] if len(row) > 25 else "",
|
||||
"qfqd": row[26] if len(row) > 26 else "",
|
||||
"yzgg": row[27] if len(row) > 27 else "",
|
||||
"tqd": row[28] if len(row) > 28 else "",
|
||||
"bqd": row[29] if len(row) > 29 else "",
|
||||
"bzfs": row[30] if len(row) > 30 else "",
|
||||
"ddyq": row[31] if len(row) > 31 else "",
|
||||
"remarks_hb": row[32] if len(row) > 32 else "",
|
||||
"bz_tqd": row[33] if len(row) > 33 else "",
|
||||
"bz_bqd": row[34] if len(row) > 34 else "",
|
||||
"zzyq": row[35] if len(row) > 35 else "",
|
||||
"rq": row[36] if len(row) > 36 else ""
|
||||
}
|
||||
results.append(order_data)
|
||||
except Exception as e:
|
||||
logging.error(f"处理查询结果行时出错: {str(e)}, 行数据: {row}")
|
||||
continue
|
||||
|
||||
# 保存查询结果
|
||||
self.query_results = results
|
||||
|
||||
Loading…
Reference in New Issue
Block a user