diff --git a/dao/inspection_dao.py b/dao/inspection_dao.py index 274531f..cf01c0c 100644 --- a/dao/inspection_dao.py +++ b/dao/inspection_dao.py @@ -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: diff --git a/db/jtDB.db b/db/jtDB.db index a85b1d6..8b0a9fb 100644 Binary files a/db/jtDB.db and b/db/jtDB.db differ diff --git a/from pymodbus.py b/from pymodbus.py index 35d88c5..a13ebc9 100644 --- a/from pymodbus.py +++ b/from pymodbus.py @@ -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() \ No newline at end of file diff --git a/ui/main_window_ui.py b/ui/main_window_ui.py index c6151f3..db87a8e 100644 --- a/ui/main_window_ui.py +++ b/ui/main_window_ui.py @@ -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) # 称重 \ No newline at end of file + self.process_table.setColumnWidth(packaging_start_col + 1, 140) # 毛重 + self.process_table.setColumnWidth(packaging_start_col + 2, 140) # 净重 \ No newline at end of file diff --git a/utils/__pycache__/config_loader.cpython-310.pyc b/utils/__pycache__/config_loader.cpython-310.pyc index b0dd2df..fce5f6b 100644 Binary files a/utils/__pycache__/config_loader.cpython-310.pyc and b/utils/__pycache__/config_loader.cpython-310.pyc differ diff --git a/utils/__pycache__/sql_utils.cpython-310.pyc b/utils/__pycache__/sql_utils.cpython-310.pyc index a1332ee..f1020e0 100644 Binary files a/utils/__pycache__/sql_utils.cpython-310.pyc and b/utils/__pycache__/sql_utils.cpython-310.pyc differ diff --git a/widgets/__pycache__/login_widget.cpython-310.pyc b/widgets/__pycache__/login_widget.cpython-310.pyc index 96561a0..8907f22 100644 Binary files a/widgets/__pycache__/login_widget.cpython-310.pyc and b/widgets/__pycache__/login_widget.cpython-310.pyc differ diff --git a/widgets/main_window.py b/widgets/main_window.py index 159d05a..d2c6919 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -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)