diff --git a/db/jtDB.db b/db/jtDB.db index c3f5656..010dbb1 100644 Binary files a/db/jtDB.db and b/db/jtDB.db differ diff --git a/from pymodbus.py b/from pymodbus.py index b818fa1..cbb9ec3 100644 --- a/from pymodbus.py +++ b/from pymodbus.py @@ -15,7 +15,7 @@ client.write_registers(address=11, values=[9422]) # client.write_registers(address=2, values=[0]) # client.write_registers(address=13, values=[1]) # time.sleep(2) -client.write_registers(address=13, values=[0]) +client.write_registers(address=13, values=[1]) diff --git a/widgets/main_window.py b/widgets/main_window.py index bf56ea2..40eb596 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -219,6 +219,46 @@ class MainWindow(MainWindowUI): inspection_dao = InspectionDAO() axios_num = inspection_dao.get_axios_num_by_order_id(order_id) return axios_num + + def get_current_row_axios_num(self, data_row): + """获取当前行的轴号,优先使用用户输入的轴号,否则使用数据库中的轴号+1 + + Args: + data_row: 数据行索引 + + Returns: + int: 轴号 + """ + try: + # 获取启用的检验配置 + enabled_configs = self.inspection_manager.get_enabled_configs() + + # 计算贴标列索引 - 贴标位置在检验列之后的第一列 + label_col = 2 + len(enabled_configs) + + # 获取当前行的贴标值(轴号) + label_item = self.process_table.item(data_row, label_col) + if label_item: + current_axios = label_item.text().strip() + if current_axios and current_axios.isdigit(): + # 如果当前行有有效的轴号,直接使用 + axios_num = int(current_axios) + logging.info(f"使用当前行轴号: {axios_num}") + return axios_num + + # 如果当前行没有轴号,使用数据库中的轴号+1 + tray_id = self.tray_edit.currentText() + db_axios_num = self.get_axios_num(tray_id) + axios_num = db_axios_num + 1 + logging.info(f"当前行无轴号,使用数据库轴号+1: {axios_num}") + return axios_num + + except Exception as e: + logging.error(f"获取当前行轴号失败: {str(e)}") + # 出错时使用数据库轴号+1作为备选 + tray_id = self.tray_edit.currentText() + db_axios_num = self.get_axios_num(tray_id) + return db_axios_num + 1 def load_config(self): """加载配置文件""" config_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "config", "app_config.json") @@ -2196,7 +2236,8 @@ class MainWindow(MainWindowUI): net_weight_item = QTableWidgetItem(str(net_weight_kg)) net_weight_item.setTextAlignment(Qt.AlignCenter) self.process_table.setItem(data_row, net_weight_col, net_weight_item) - axios_num = self.get_axios_num_by_order_id(self._current_order_code) + 1 + # 获取轴号,优先使用当前行的轴号 + axios_num = self.get_current_row_axios_num(data_row) # 如果开启 api 模式,则调用接口添加到包装记录 if AppMode.is_api(): from dao.inspection_dao import InspectionDAO @@ -2428,8 +2469,8 @@ class MainWindow(MainWindowUI): # 计算贴标列索引 - 贴标位置在检验列之后的第一列 label_col = 2 + len(enabled_configs) - # 生成贴标号(托盘号+轴号) - axios_num = self.get_axios_num(tray_id)+1 + # 生成贴标号(托盘号+轴号),优先使用当前行的轴号 + axios_num = self.get_current_row_axios_num(data_row) # 断开单元格变更信号,避免程序自动写入时触发 try: