From 7dbf1c1efc0f850c59a279896c81cd7fa2e2a143 Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Sun, 20 Jul 2025 15:34:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=9E=E7=8E=B0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apis/gc_api.py | 28 ++++++++++++++++++++++++ config/app_config.json | 1 + db/jtDB.db | Bin 192512 -> 192512 bytes from pymodbus.py | 2 +- widgets/main_window.py | 48 ++++++++++++++++++++++++++++++++--------- 5 files changed, 68 insertions(+), 11 deletions(-) diff --git a/apis/gc_api.py b/apis/gc_api.py index 10b951d..10dfac2 100644 --- a/apis/gc_api.py +++ b/apis/gc_api.py @@ -125,6 +125,34 @@ class GcApi: logging.error(f"添加订单信息失败: {str(e)}") return None + def remove_order_info(self, xpack, ddmo, sgc): + """ + 删除订单信息 + + Args: + xpack: 托盘号 + ddmo: 订单号 + sgc: 工程号 + + Returns: + dict: 接口响应结果 + """ + try: + # API 配置中的键名 + api_key = "remove_order_info" + # 构建 form-data 格式的数据 + data = { + "xpack": xpack, + "ddmo": ddmo, + "gch": sgc + } + # 调用接口 + response = self.api_utils.post(api_key, data=data) + return response + except Exception as e: + logging.error(f"删除订单信息失败: {str(e)}") + return {"status": False, "message": f"删除订单信息失败: {str(e)}"} + def get_xpack(self, order_id,corp_id): """ 获取包装号 diff --git a/config/app_config.json b/config/app_config.json index 36bc314..963bb67 100644 --- a/config/app_config.json +++ b/config/app_config.json @@ -15,6 +15,7 @@ "get_gc_info": "/jsjt/xcsc/tprk/getBZGCInfoToWsbz.do", "get_order_info": "/jsjt/xcsc/tprk/getXsddBzrkGridListToWsbz.do", "add_order_info": "/jsjt/xcsc/tprk/bzrkAdd01.do", + "remove_order_info": "/jsjt/xcsc/tprk/removeByOrder.do", "get_xpack": "/jsjt/xcsc/tprk/getXpackToWsbz.do", "ismt_option": "/jsjt/xcsc/tprk/ismtOptioTonWsbz.do", "get_params": "/select/getcombcodeWsbz.do", diff --git a/db/jtDB.db b/db/jtDB.db index faadd79ec74d2b66181f317a6c87c305d27c3652..b23c4dbba04e536055e0484e9dcd478c8ece05c8 100644 GIT binary patch delta 3941 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 Bfm;9o diff --git a/from pymodbus.py b/from pymodbus.py index cbb9ec3..237b659 100644 --- a/from pymodbus.py +++ b/from pymodbus.py @@ -2,7 +2,7 @@ from pymodbus.client import ModbusTcpClient import time client = ModbusTcpClient('localhost', port=5020) client.connect() -client.write_registers(address=11, values=[9422]) +client.write_registers(address=11, values=[14322]) # client.write_registers(address=3, values=[0]) # time.sleep(2) # client.write_registers(address=0, values=[0]) diff --git a/widgets/main_window.py b/widgets/main_window.py index 011a7d6..6ae64cf 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -294,7 +294,7 @@ class MainWindow(MainWindowUI): self.start_button.clicked.connect(self.handle_start) self.stop_button.clicked.connect(self.handle_stop) self.delete_row_button.clicked.connect(self.handle_delete_row) - + # 连接托盘完成按钮事件 self.tray_complete_button.clicked.connect(self.handle_tray_complete) @@ -3831,6 +3831,20 @@ class MainWindow(MainWindowUI): # 获取托盘号 tray_id = self.tray_edit.currentText() + # 如果开启 api 模式,则调用接口删除远程数据 + if AppMode.is_api(): + from apis.gc_api import GcApi + gc_api = GcApi() + + # 调用删除接口 + response = gc_api.remove_order_info(tray_id, self._current_order_code, gc_note) + if response.get("status", False): + logging.info(f"已从远程删除订单信息: 托盘号={tray_id}, 订单号={self._current_order_code}, 工程号={gc_note}") + else: + error_msg = response.get("message", "未知错误") + logging.warning(f"远程删除订单信息失败: {error_msg}") + # 可以选择是否继续删除本地数据,这里选择继续 + # 从数据库中删除该工程号的检验数据 inspection_dao.delete_inspection_data(self._current_order_code, gc_note, tray_id) logging.info(f"已从数据库中删除工程号 {gc_note} 的检验数据") @@ -3842,8 +3856,9 @@ class MainWindow(MainWindowUI): # 重新加载数据 self._safe_load_data() - # 清除选中状态,防止误操作 + # 确保清除选中状态,防止误操作 self.process_table.clearSelection() + self.process_table.setCurrentItem(None) # 显示成功消息 QMessageBox.information(self, "删除成功", "已成功删除选中的微丝产线数据") @@ -3911,17 +3926,26 @@ class MainWindow(MainWindowUI): logging.warning(f"第 {row} 行工程号为空,跳过删除") continue - # 获取托盘号(第6列) - tray_id_item = self.record_table.item(row, 5) - if not tray_id_item: - logging.warning(f"第 {row} 行托盘号为空,跳过删除") - continue - - tray_id = tray_id_item.text().strip() + # 获取托盘号(从前端组件获取) + tray_id = self.tray_edit.currentText() if not tray_id: - logging.warning(f"第 {row} 行托盘号为空,跳过删除") + logging.warning("托盘号为空,跳过删除") continue + # 如果开启 api 模式,则调用接口删除远程数据 + if AppMode.is_api(): + from apis.gc_api import GcApi + gc_api = GcApi() + + # 调用删除接口 + response = gc_api.remove_order_info(tray_id, order_id, gc_note) + if response.get("status", False): + logging.info(f"已从远程删除订单信息: 托盘号={tray_id}, 订单号={order_id}, 工程号={gc_note}") + else: + error_msg = response.get("message", "未知错误") + logging.warning(f"远程删除订单信息失败: {error_msg}") + # 可以选择是否继续删除本地数据,这里选择继续 + # 从数据库中删除该包装记录 success = inspection_dao.delete_package_record(order_id, gc_note, tray_id) if success: @@ -3936,7 +3960,11 @@ class MainWindow(MainWindowUI): # 重新加载包装记录 self.show_pack_item() + + # 确保清除选中状态,防止误操作 self.record_table.clearSelection() + self.record_table.setCurrentItem(None) + # 显示成功消息 QMessageBox.information(self, "删除成功", "已成功删除选中的包装记录")