完成净重计算
This commit is contained in:
parent
935fd44f78
commit
7b0d0a28f2
@ -403,6 +403,7 @@ class InspectionDAO:
|
|||||||
tray_id,
|
tray_id,
|
||||||
COALESCE(axis_package_id, '') as axis_package_id,
|
COALESCE(axis_package_id, '') as axis_package_id,
|
||||||
COALESCE(weight, 0) as weight,
|
COALESCE(weight, 0) as weight,
|
||||||
|
COALESCE(net_weight, 0) as net_weight,
|
||||||
STRFTIME('%Y-%m-%d %H:%M:%S', pack_time) as pack_time
|
STRFTIME('%Y-%m-%d %H:%M:%S', pack_time) as pack_time
|
||||||
FROM inspection_pack_data
|
FROM inspection_pack_data
|
||||||
WHERE tray_id = ?
|
WHERE tray_id = ?
|
||||||
@ -416,7 +417,7 @@ class InspectionDAO:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"获取包装记录失败: {str(e)}")
|
logging.error(f"获取包装记录失败: {str(e)}")
|
||||||
return []
|
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:
|
Args:
|
||||||
@ -429,10 +430,10 @@ class InspectionDAO:
|
|||||||
# TODO:调用接口,获取到工程号对应的其他信息,比如材质,规格,后续完成
|
# TODO:调用接口,获取到工程号对应的其他信息,比如材质,规格,后续完成
|
||||||
try:
|
try:
|
||||||
sql = """
|
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)
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
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.cursor.execute(sql, params)
|
||||||
self.db.conn.commit()
|
self.db.conn.commit()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
BIN
db/jtDB.db
BIN
db/jtDB.db
Binary file not shown.
@ -2,12 +2,12 @@ from pymodbus.client import ModbusTcpClient
|
|||||||
|
|
||||||
client = ModbusTcpClient('localhost', port=5020)
|
client = ModbusTcpClient('localhost', port=5020)
|
||||||
client.connect()
|
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=6, values=[1])
|
||||||
# client.write_registers(address=5, values=[16])
|
# 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===")
|
print(result.registers[0],"123===")
|
||||||
client.close()
|
client.close()
|
||||||
@ -501,13 +501,13 @@ class MainWindowUI(QMainWindow):
|
|||||||
self.record_layout.addWidget(self.record_title)
|
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)
|
self.setup_table_common(self.record_table)
|
||||||
|
|
||||||
# 设置列标题
|
# 设置列标题
|
||||||
record_headers = ["序号", "订单", "品名", "规格", "托号", "轴包装号", "重量", "完成时间"]
|
record_headers = ["序号", "订单", "品名", "规格", "托号", "轴包装号", "毛重", "净重", "完成时间"]
|
||||||
for col, header in enumerate(record_headers):
|
for col, header in enumerate(record_headers):
|
||||||
self.record_table.setItem(0, col, self.create_header_item(header))
|
self.record_table.setItem(0, col, self.create_header_item(header))
|
||||||
|
|
||||||
@ -520,7 +520,7 @@ class MainWindowUI(QMainWindow):
|
|||||||
self.record_table.setRowHeight(row, 35)
|
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):
|
for col, width in enumerate(column_widths):
|
||||||
self.record_table.setColumnWidth(col, width)
|
self.record_table.setColumnWidth(col, width)
|
||||||
|
|
||||||
@ -593,7 +593,7 @@ class MainWindowUI(QMainWindow):
|
|||||||
self.inspection_headers = self.inspection_headers[:columns]
|
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)
|
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.setSpan(0, 2, 1, self.inspection_columns)
|
||||||
self.process_table.setItem(0, 2, self.create_header_item("检验"))
|
self.process_table.setItem(0, 2, self.create_header_item("检验"))
|
||||||
|
|
||||||
# 包装区域(2列)
|
# 包装区域(3列)
|
||||||
packaging_start_col = 2 + self.inspection_columns
|
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("包装"))
|
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))
|
self.process_table.setItem(1, 2 + i, self.create_header_item(header_text))
|
||||||
|
|
||||||
# 包装区域列标题
|
# 包装区域列标题
|
||||||
packaging_headers = ["贴标", "称重"]
|
packaging_headers = ["贴标", "毛重", "净重"]
|
||||||
for i, header in enumerate(packaging_headers):
|
for i, header in enumerate(packaging_headers):
|
||||||
self.process_table.setItem(1, packaging_start_col + i, self.create_header_item(header))
|
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
|
packaging_start_col = 2 + self.inspection_columns
|
||||||
self.process_table.setColumnWidth(packaging_start_col, 140) # 贴标
|
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) # 净重
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -753,7 +753,7 @@ class MainWindow(MainWindowUI):
|
|||||||
inspection_dao.save_inspection_data(order_id, data)
|
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 = [{
|
data = [{
|
||||||
'position': position,
|
'position': position,
|
||||||
'config_id': position,
|
'config_id': position,
|
||||||
@ -878,13 +878,21 @@ class MainWindow(MainWindowUI):
|
|||||||
self.save_inspection_data(order_id, tray_id, 11, 11, value, status)
|
self.save_inspection_data(order_id, tray_id, 11, 11, value, status)
|
||||||
|
|
||||||
elif column == packaging_start_col + 1:
|
elif column == packaging_start_col + 1:
|
||||||
# 称重列
|
# 毛重列
|
||||||
data_type = "称重"
|
data_type = "毛重"
|
||||||
self.statusBar().showMessage(f"正在保存称重数据: {value}", 1000)
|
self.statusBar().showMessage(f"正在保存称重数据: {value}", 1000)
|
||||||
# 设置单元格颜色为通过
|
# 设置单元格颜色为通过
|
||||||
cell_item.setBackground(QBrush(QColor("#c8e6c9"))) # 浅绿色
|
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)
|
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}")
|
logging.info(f"处理单元格变更: 行={row}, 列={column}, 类型={data_type}, 工程号={order_id}, 值={value}, 状态={status}")
|
||||||
@ -1090,6 +1098,10 @@ class MainWindow(MainWindowUI):
|
|||||||
# 称重列索引 = 2(序号和工程号) + 检验列数 + 1(贴标)
|
# 称重列索引 = 2(序号和工程号) + 检验列数 + 1(贴标)
|
||||||
weight_col = 2 + len(enabled_configs) + 1
|
weight_col = 2 + len(enabled_configs) + 1
|
||||||
self.process_table.setItem(row_idx, weight_col, QTableWidgetItem(str(value)))
|
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
|
row_idx += 1
|
||||||
|
|
||||||
# 设置表格为可编辑状态
|
# 设置表格为可编辑状态
|
||||||
@ -1129,12 +1141,14 @@ class MainWindow(MainWindowUI):
|
|||||||
# 从检验数据中获取贴标和称重数据
|
# 从检验数据中获取贴标和称重数据
|
||||||
label_value = ""
|
label_value = ""
|
||||||
weight_value = ""
|
weight_value = ""
|
||||||
|
net_weight_value = ""
|
||||||
for item in inspection_data:
|
for item in inspection_data:
|
||||||
if item['position'] == 11: # 贴标
|
if item['position'] == 11: # 贴标
|
||||||
label_value = item['value']
|
label_value = item['value']
|
||||||
elif item['position'] == 12: # 称重
|
elif item['position'] == 12: # 称重
|
||||||
weight_value = item['value']
|
weight_value = item['value']
|
||||||
|
elif item['position'] == 13: # 净重
|
||||||
|
net_weight_value = item['value']
|
||||||
|
|
||||||
# 只要贴标字段有值,就可以写入包装记录
|
# 只要贴标字段有值,就可以写入包装记录
|
||||||
if not label_value:
|
if not label_value:
|
||||||
@ -1152,7 +1166,7 @@ class MainWindow(MainWindowUI):
|
|||||||
finish_time = datetime.now()
|
finish_time = datetime.now()
|
||||||
|
|
||||||
# 将数据写入到数据库表 inspection_pack_data
|
# 将数据写入到数据库表 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()
|
self.show_pack_item()
|
||||||
@ -1223,10 +1237,15 @@ class MainWindow(MainWindowUI):
|
|||||||
weight_item.setTextAlignment(Qt.AlignCenter)
|
weight_item.setTextAlignment(Qt.AlignCenter)
|
||||||
self.record_table.setItem(row_index, 6, weight_item)
|
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]))
|
pack_time = QTableWidgetItem(str(item[7]))
|
||||||
weight_item.setTextAlignment(Qt.AlignCenter)
|
pack_time.setTextAlignment(Qt.AlignCenter)
|
||||||
self.record_table.setItem(row_index, 7, pack_time)
|
self.record_table.setItem(row_index, 8, pack_time)
|
||||||
# 更新包装记录统计数据
|
# 更新包装记录统计数据
|
||||||
self.update_package_statistics()
|
self.update_package_statistics()
|
||||||
def update_package_statistics(self):
|
def update_package_statistics(self):
|
||||||
@ -1495,6 +1514,8 @@ class MainWindow(MainWindowUI):
|
|||||||
|
|
||||||
# 计算称重列索引 - 称重位置在检验列之后的第二列(贴标后面)
|
# 计算称重列索引 - 称重位置在检验列之后的第二列(贴标后面)
|
||||||
weight_col = 2 + len(enabled_configs) + 1
|
weight_col = 2 + len(enabled_configs) + 1
|
||||||
|
# 计算净重列索引 - 净重位置在检验列之后的第三列(称重后面)
|
||||||
|
net_weight_col = 2 + len(enabled_configs) + 2
|
||||||
|
|
||||||
# 获取当前选中的行或第一个数据行
|
# 获取当前选中的行或第一个数据行
|
||||||
current_row = self.process_table.currentRow()
|
current_row = self.process_table.currentRow()
|
||||||
@ -1531,6 +1552,15 @@ class MainWindow(MainWindowUI):
|
|||||||
tray_id = self.tray_edit.currentText()
|
tray_id = self.tray_edit.currentText()
|
||||||
self.save_inspection_data(order_id, tray_id, 12, 12, str(weight), "pass")
|
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)
|
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user