From 79eca2b44fedcc094b5c3eaeb53c91cf22d46f66 Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Thu, 12 Jun 2025 10:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=AF=84=E5=AD=98=E5=99=A8?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E4=BB=A5=E5=8F=8A=E5=AF=B9=E5=BA=94=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/inspection_dao.py | 20 ++- db/jtDB.db | Bin 40960 -> 49152 bytes from pymodbus.py | 5 +- utils/inspection_config_manager.py | 11 +- utils/modbus_monitor.py | 2 +- utils/register_handlers.py | 154 +++++++++++++++++---- widgets/main_window.py | 213 +++++++++++++++++------------ 7 files changed, 290 insertions(+), 115 deletions(-) diff --git a/dao/inspection_dao.py b/dao/inspection_dao.py index b800046..274531f 100644 --- a/dao/inspection_dao.py +++ b/dao/inspection_dao.py @@ -439,4 +439,22 @@ class InspectionDAO: logging.error(f"保存包装记录失败: {str(e)}") self.db.conn.rollback() - \ No newline at end of file + def delete_inspection_data(self, order_id, tray_id): + """删除检验数据 + + Args: + order_id: 工程号 + tray_id: 托盘号 + """ + try: + sql = """ + UPDATE inspection_data + SET is_deleted = TRUE + WHERE order_id = ? AND tray_id = ? + """ + params = (order_id, tray_id) + self.db.cursor.execute(sql, params) + self.db.conn.commit() + except Exception as e: + logging.error(f"删除检验数据失败: {str(e)}") + self.db.conn.rollback() \ No newline at end of file diff --git a/db/jtDB.db b/db/jtDB.db index 12c64cc8bcb42740b7f61e03fc84b2e4d469cead..43d2da0f54b9a083f6b1fe1ab71c616c1cff9f92 100644 GIT binary patch delta 1557 zcmbtU&1(}u9Gzqn(`0wEsZi{aC@EM3A!TM~Hy>+gzz@7c8e4jZ7Tg4TP;ApQ^`jO^ z26{+68Rk;(=&h&L;K7Sj1kZy1fEV?u*LtwCyD`aT6ST;}!tU?=-n{o_e$zPgHX7WE zsGk4;gjPJ~AqPf1=lRwCl8eW~e)iWR9kDkMq@(tD{HxR|ggBl&c)jL}aFM`14K&XB z#!`X(_IRWj;D|3m-!~^cDlP5A=2JSxx&~)5S}K!Ct}9T{5-^!SD2{riG=y4hv$nCk zGP0hu>%=En7m20agJ$ZQKrg z2G-NQZ+sMa7Q`nrha%Cau_bdz5a`X->8Nc6WpqWc7y7od`~BrEDiYPk@w|zPjlwbB z2+dbyFUL`-GR61d=%vbyi+$e?ekR2*^#HIyP#8=HgS1eYFezq7wTS#1AcgjT^g-H| zu7zjAucR^Yw|FSL70>Z^_<&Fn{GmOzk=vpAEwaT(JsxR7#4?tH(Yg7n2|HuRti!cZ zt=5fPiNlPJRb5FBWNj5RRmT~J_C@lKnEEJwUNhU7oi)3?jCLCvqPg}!t(oD+aA*~uR8_9d+D72@h zvmM<;dIRb3y+j_-A0_#^DhLRv4tsV7o1)=Vims&`RFW55X^|Y4B^&hT^5g}i+MfFE zgC1FDgtDa8!CGgc|L$;M%Vf=Tna4ce=}sWGU`1oc)YdiN-MkMRf|p3u^q$A2cl=*e xY(`H3pp$iaa92LBx>t5iN0wA<+juadKKb2A6te66(uv35=cns}Oyj%bP delta 282 zcmZo@U~V|TG(nm*ih+TFYodZZW7NikdV9t*F(+ z%&{PPbMAt}yqwXErhE*ljEsVl9oLDm85tEM78g(EU#~cMLk)|#sg;qLm8n^AWpPPr z?z7Gr&u7mtjA}HQys%7?!;qWX5Q}0 0: QMessageBox.warning(self, "设备故障", f"故障1: {error_desc}") - # 在这里添加其他故障处理逻辑 - pass + # error_1 属于上料故障,需要把上料寄存器置为 0 + modbus = ModbusUtils() + client = modbus.get_client() + modbus.write_register_until_success(client, 2, 0) + modbus.close_client(client) + self.show_operation_status("上料", "input", error_desc) + @Slot(int, str) def handle_error_2(self, error_code, error_desc): @@ -1679,8 +1687,12 @@ class MainWindow(MainWindowUI): # 如果有故障,显示提示 if error_code > 0: QMessageBox.warning(self, "设备故障", f"故障2: {error_desc}") - # 在这里添加其他故障处理逻辑 - pass + # error_2 属于下料故障,需要把下料寄存器置为 0 + modbus = ModbusUtils() + client = modbus.get_client() + modbus.write_register_until_success(client, 3, 0) + modbus.close_client(client) + self.show_operation_status("下料", "output", error_desc) @Slot(int, str) def handle_error_3(self, error_code, error_desc): @@ -1693,5 +1705,38 @@ class MainWindow(MainWindowUI): # 如果有故障,显示提示 if error_code > 0: QMessageBox.warning(self, "设备故障", f"故障3: {error_desc}") - # 在这里添加其他故障处理逻辑 - pass \ No newline at end of file + # error_3 属于全局故障,需要把上料和下料寄存器置为 0 + modbus = ModbusUtils() + client = modbus.get_client() + modbus.write_register_until_success(client, 2, 0) + modbus.write_register_until_success(client, 3, 0) + modbus.close_client(client) + self.show_operation_status("上料", "input", error_desc) + self.show_operation_status("下料", "output", error_desc) + + @Slot(int) + def handle_unloading_level(self, level): + """处理下料层数信息""" + self.unloading_level_label.setText(f"下料层数:{level}") + + @Slot(int) + def handle_unloading_position(self, position): + """处理下料位置信息""" + self.unloading_position_label.setText(f"下料位置:{position}") + + @Slot(int) + def handle_ng(self, ng): + """处理NG信号, 删除当前在处理的数据(也就是第一条数据)""" + if ng == 1: + # 获取当前选中的行或第一个数据行,并删除 + order_id = self.process_table.item(2, 1).text().strip() + tray_id = self.tray_edit.currentText() + self.inspection_manager.delete_inspection_data(order_id, tray_id) + # 触发重新查询,更新数据 + self.load_finished_inspection_data() + logging.info(f"已删除当前在处理的数据: order_id: {order_id}, tray_id: {tray_id}") + # 复原NG信号 + modbus = ModbusUtils() + client = modbus.get_client() + modbus.write_register_until_success(client, 6, 0) + modbus.close_client(client) \ No newline at end of file