完成净重计算

This commit is contained in:
zhu-mengmeng 2025-06-14 00:34:40 +08:00
parent 935fd44f78
commit 7b0d0a28f2
8 changed files with 56 additions and 24 deletions

View File

@ -403,6 +403,7 @@ class InspectionDAO:
tray_id,
COALESCE(axis_package_id, '') as axis_package_id,
COALESCE(weight, 0) as weight,
COALESCE(net_weight, 0) as net_weight,
STRFTIME('%Y-%m-%d %H:%M:%S', pack_time) as pack_time
FROM inspection_pack_data
WHERE tray_id = ?
@ -416,7 +417,7 @@ class InspectionDAO:
except Exception as e:
logging.error(f"获取包装记录失败: {str(e)}")
return []
def save_package_record(self, order_id, tray_id, label_value, weight_value, finish_time):
def save_package_record(self, order_id, tray_id, label_value, weight_value,net_weight_value, finish_time):
"""保存包装记录
Args:
@ -429,10 +430,10 @@ class InspectionDAO:
# TODO调用接口获取到工程号对应的其他信息比如材质规格后续完成
try:
sql = """
INSERT INTO inspection_pack_data (order_id, tray_id, axis_package_id, weight, pack_time, create_time, create_by, update_time, update_by, is_deleted)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
INSERT INTO inspection_pack_data (order_id, tray_id, axis_package_id, weight, net_weight, pack_time, create_time, create_by, update_time, update_by, is_deleted)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
"""
params = (order_id, tray_id, label_value, weight_value, finish_time, datetime.now(), 'system', datetime.now(), 'system', False)
params = (order_id, tray_id, label_value, weight_value, net_weight_value, finish_time, datetime.now(), 'system', datetime.now(), 'system', False)
self.db.cursor.execute(sql, params)
self.db.conn.commit()
except Exception as e:

Binary file not shown.

View File

@ -2,12 +2,12 @@ from pymodbus.client import ModbusTcpClient
client = ModbusTcpClient('localhost', port=5020)
client.connect()
client.write_registers(address=11, values=[112])
# client.write_registers(address=11, values=[110])
# client.write_registers(address=6, values=[1])
# client.write_registers(address=5, values=[16])
# client.write_registers(address=13, values=[1])
client.write_registers(address=13, values=[1])
result = client.read_holding_registers(address=4, count=1)
result = client.read_holding_registers(address=13, count=1)
print(result.registers[0],"123===")
client.close()

View File

@ -501,13 +501,13 @@ class MainWindowUI(QMainWindow):
self.record_layout.addWidget(self.record_title)
# 创建表格
self.record_table = QTableWidget(14, 8) # 14行7列:序号、订单、品名、规格、托号、轴包装号、重量
self.record_table = QTableWidget(14, 9) # 14行9列:序号、订单、品名、规格、托号、轴包装号、重量、净重、完成时间
# 应用通用表格设置
self.setup_table_common(self.record_table)
# 设置列标题
record_headers = ["序号", "订单", "品名", "规格", "托号", "轴包装号", "重量", "完成时间"]
record_headers = ["序号", "订单", "品名", "规格", "托号", "轴包装号", "毛重", "净重", "完成时间"]
for col, header in enumerate(record_headers):
self.record_table.setItem(0, col, self.create_header_item(header))
@ -520,7 +520,7 @@ class MainWindowUI(QMainWindow):
self.record_table.setRowHeight(row, 35)
# 设置列宽
column_widths = [70, 220, 160, 160, 160, 160, 160, 190] # 各列的默认宽度
column_widths = [70, 200, 130, 130, 160, 120, 120, 120, 160] # 各列的默认宽度
for col, width in enumerate(column_widths):
self.record_table.setColumnWidth(col, width)
@ -593,7 +593,7 @@ class MainWindowUI(QMainWindow):
self.inspection_headers = self.inspection_headers[:columns]
# 计算总列数
total_columns = 2 + self.inspection_columns + 2 # 上料2列 + 检验N列 + 包装2
total_columns = 2 + self.inspection_columns + 3 # 上料2列 + 检验N列 + 包装3
self.process_table.setColumnCount(total_columns)
# 重新设置列宽
@ -614,9 +614,9 @@ class MainWindowUI(QMainWindow):
self.process_table.setSpan(0, 2, 1, self.inspection_columns)
self.process_table.setItem(0, 2, self.create_header_item("检验"))
# 包装区域(2列)
# 包装区域(3列)
packaging_start_col = 2 + self.inspection_columns
self.process_table.setSpan(0, packaging_start_col, 1, 2)
self.process_table.setSpan(0, packaging_start_col, 1, 3)
self.process_table.setItem(0, packaging_start_col, self.create_header_item("包装"))
# 第二行:列标题
@ -636,7 +636,7 @@ class MainWindowUI(QMainWindow):
self.process_table.setItem(1, 2 + i, self.create_header_item(header_text))
# 包装区域列标题
packaging_headers = ["贴标", ""]
packaging_headers = ["贴标", "毛重", ""]
for i, header in enumerate(packaging_headers):
self.process_table.setItem(1, packaging_start_col + i, self.create_header_item(header))
@ -653,4 +653,5 @@ class MainWindowUI(QMainWindow):
# 包装区域列宽
packaging_start_col = 2 + self.inspection_columns
self.process_table.setColumnWidth(packaging_start_col, 140) # 贴标
self.process_table.setColumnWidth(packaging_start_col + 1, 140) # 称重
self.process_table.setColumnWidth(packaging_start_col + 1, 140) # 毛重
self.process_table.setColumnWidth(packaging_start_col + 2, 140) # 净重

View File

@ -753,7 +753,7 @@ class MainWindow(MainWindowUI):
inspection_dao.save_inspection_data(order_id, data)
# 为贴标和称重也创建空记录
for position in [11, 12]: # 11是贴标12是称
for position in [11, 12, 13]: # 11是贴标12是毛重13是净
data = [{
'position': position,
'config_id': position,
@ -878,13 +878,21 @@ class MainWindow(MainWindowUI):
self.save_inspection_data(order_id, tray_id, 11, 11, value, status)
elif column == packaging_start_col + 1:
# 重列
data_type = ""
# 重列
data_type = ""
self.statusBar().showMessage(f"正在保存称重数据: {value}", 1000)
# 设置单元格颜色为通过
cell_item.setBackground(QBrush(QColor("#c8e6c9"))) # 浅绿色
# 保存重数据position和config_id都是12
# 保存重数据position和config_id都是12
self.save_inspection_data(order_id, tray_id, 12, 12, value, status)
elif column == packaging_start_col + 2:
# 净重列
data_type = "净重"
self.statusBar().showMessage(f"正在保存净重数据: {value}", 1000)
# 设置单元格颜色为通过
cell_item.setBackground(QBrush(QColor("#c8e6c9"))) # 浅绿色
# 保存净重数据position和config_id都是13
self.save_inspection_data(order_id, tray_id, 13, 13, value, status)
# 记录详细日志
logging.info(f"处理单元格变更: 行={row}, 列={column}, 类型={data_type}, 工程号={order_id}, 值={value}, 状态={status}")
@ -1090,6 +1098,10 @@ class MainWindow(MainWindowUI):
# 称重列索引 = 2(序号和工程号) + 检验列数 + 1(贴标)
weight_col = 2 + len(enabled_configs) + 1
self.process_table.setItem(row_idx, weight_col, QTableWidgetItem(str(value)))
elif position == 13: # 净重
# 净重列索引 = 2(序号和工程号) + 检验列数 + 2(贴标和称重)
net_weight_col = 2 + len(enabled_configs) + 2
self.process_table.setItem(row_idx, net_weight_col, QTableWidgetItem(str(value)))
row_idx += 1
# 设置表格为可编辑状态
@ -1129,12 +1141,14 @@ class MainWindow(MainWindowUI):
# 从检验数据中获取贴标和称重数据
label_value = ""
weight_value = ""
net_weight_value = ""
for item in inspection_data:
if item['position'] == 11: # 贴标
label_value = item['value']
elif item['position'] == 12: # 称重
weight_value = item['value']
elif item['position'] == 13: # 净重
net_weight_value = item['value']
# 只要贴标字段有值,就可以写入包装记录
if not label_value:
@ -1152,7 +1166,7 @@ class MainWindow(MainWindowUI):
finish_time = datetime.now()
# 将数据写入到数据库表 inspection_pack_data
inspection_dao.save_package_record(order_id, tray_id, label_value, weight_value, finish_time)
inspection_dao.save_package_record(order_id, tray_id, label_value, weight_value,net_weight_value, finish_time)
# 回显数据
self.show_pack_item()
@ -1223,10 +1237,15 @@ class MainWindow(MainWindowUI):
weight_item.setTextAlignment(Qt.AlignCenter)
self.record_table.setItem(row_index, 6, weight_item)
# 净重 - 第8列
net_weight_item = QTableWidgetItem(str(item[6]))
net_weight_item.setTextAlignment(Qt.AlignCenter)
self.record_table.setItem(row_index, 7, net_weight_item)
# 包装时间
pack_time = QTableWidgetItem(str(item[6]))
weight_item.setTextAlignment(Qt.AlignCenter)
self.record_table.setItem(row_index, 7, pack_time)
pack_time = QTableWidgetItem(str(item[7]))
pack_time.setTextAlignment(Qt.AlignCenter)
self.record_table.setItem(row_index, 8, pack_time)
# 更新包装记录统计数据
self.update_package_statistics()
def update_package_statistics(self):
@ -1495,6 +1514,8 @@ class MainWindow(MainWindowUI):
# 计算称重列索引 - 称重位置在检验列之后的第二列(贴标后面)
weight_col = 2 + len(enabled_configs) + 1
# 计算净重列索引 - 净重位置在检验列之后的第三列(称重后面)
net_weight_col = 2 + len(enabled_configs) + 2
# 获取当前选中的行或第一个数据行
current_row = self.process_table.currentRow()
@ -1531,6 +1552,15 @@ class MainWindow(MainWindowUI):
tray_id = self.tray_edit.currentText()
self.save_inspection_data(order_id, tray_id, 12, 12, str(weight), "pass")
# 保存净重到数据库(毛重-工字轮重量TODO 先默认工字轮重量为10g后续从接口获取
net_weight = weight - 10
self.save_inspection_data(order_id, tray_id, 13, 13, str(net_weight), "pass")
# 设置净重单元格
net_weight_item = QTableWidgetItem(str(net_weight))
net_weight_item.setTextAlignment(Qt.AlignCenter)
self.process_table.setItem(data_row, net_weight_col, net_weight_item)
# 重新连接信号
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)