From 69c86268888d7fd8d95f9cedfd5a71e523cb70d1 Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Wed, 23 Jul 2025 14:16:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E5=8C=85=E8=A3=85=E8=AE=B0=E5=BD=95=E6=98=AF=E5=90=A6=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=BB=E7=AA=97=E5=8F=A3=E6=93=8D=E4=BD=9C=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=8F=8A=E5=AD=97=E6=AE=B5=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/app_config.json | 2 +- dao/inspection_dao.py | 28 +++++++++++++++++++++++++++ db/jtDB.db | Bin 262144 -> 262144 bytes ui/main_window_ui.py | 2 +- widgets/main_window.py | 43 ++++++++++++++--------------------------- 5 files changed, 45 insertions(+), 30 deletions(-) diff --git a/config/app_config.json b/config/app_config.json index ce0c39a..6cbd52d 100644 --- a/config/app_config.json +++ b/config/app_config.json @@ -120,7 +120,7 @@ } }, "electricity": { - "auto_start": true, + "auto_start": false, "interval_minutes": 30 } } \ No newline at end of file diff --git a/dao/inspection_dao.py b/dao/inspection_dao.py index e14dab2..e55d58c 100644 --- a/dao/inspection_dao.py +++ b/dao/inspection_dao.py @@ -642,6 +642,34 @@ class InspectionDAO: logging.error(f"获取产品状态失败: {str(e)}") return 'init' # 出错时返回默认状态 + def check_package_record_exists(self, order_id, gc_note, tray_id): + """检查指定工程号和托盘号的包装记录是否已存在 + + Args: + order_id: 订单号 + gc_note: 工程号 + tray_id: 托盘号 + + Returns: + bool: 记录是否存在 + """ + try: + sql = """ + SELECT COUNT(*) FROM wsbz_inspection_pack_data + WHERE order_id = ? AND gc_note = ? AND tray_id = ? AND is_deleted = FALSE + """ + params = (order_id, gc_note, tray_id) + + with SQLUtils('sqlite', database='db/jtDB.db') as db: + db.cursor.execute(sql, params) + result = db.cursor.fetchone() + + return result[0] > 0 if result else False + + except Exception as e: + logging.error(f"检查包装记录是否存在失败: {str(e)}") + return False + def update_product_status(self, order_id, gc_note, tray_id, new_status): """更新产品的状态 diff --git a/db/jtDB.db b/db/jtDB.db index 388d6a8ca728923d9dca0a0f51ffd954b7f54f01..76564b0afaaa62ea3a9704f18abeb9650e1904bb 100644 GIT binary patch delta 681 zcmaKoQEO6R7{`z2ERSuyzHZJ=Vq#-NgnD}4bKci;JQuTO5Qu~f$6`SgL|>s@jC5_L zwdQO}E-I+7bWyN$pvbf@5PgWyvw72?+sHbtn`ooU=l^@2-vj?-(w0oxaxPQ*(aEr> z{o(qL2@{{c7P@Dia{`XC`J8!lu^&qJL#BE^#G23B%zTuwHUSzc4-(58K3W^Lsl0f1 z#^)V&d+p3P08RirE(Zlpx831%Gr%#<7|~fl@OV6S`{{)XAb;bXD<3PHZv~JP@MHa1 zMZdouiAxmy4#F`cA%bV42z6Su-BjD(X}s4Trxl9)Dn+wb5W<)eLWvj*$cP{jtKD|J z*M1U_2sRkrPfF!ZGb_`*?NmNj5{k}cb|i6e1|bxn`qtBKYPnlkFqDR|(^%;hGQG7| zoyPM^2+!-aioUd}XV-R`ANRH&{(tOlwtDGRL$R~;K+nE5_Pgn1FTH{#k@~SL(sR45 zEhC*@9P*|&GHiV#!(BZy=mV1s{06^($@;NPj(}n^!5!uQ^x>;dwYVxf!h;e6-@>@H zZ>?CTz;{qG%FY6Idan55CF`7!PhnY;R1ITMk%NS)5eZ4uj}*Uj5JlqQSUhG_tRPB) z-1O~zNB#I`?(5j71tJFO@Dr@Ub$AEfgb|30UngKfDDVS}Z24PEG^A=&5(?%+2|+^P f$iGC^sG<=n6b23wNzo`43fy6YGmeVYpWNkNFGk4U-@c z5|@B~0}HoZy#uEL4+ahU01v7UR1W?Qs18yMvmt=m2(us%4g~^LcbA}{0vWd!&I9ft Y3Ih+a01xI5%n!1&5fG#gm$Lr@PG-zExBvhE diff --git a/ui/main_window_ui.py b/ui/main_window_ui.py index d5466fd..ae9195a 100644 --- a/ui/main_window_ui.py +++ b/ui/main_window_ui.py @@ -12,7 +12,7 @@ class MainWindowUI(QMainWindow): "库房": "lib", "机台": "jt", "客户": "customerexp", - "订单数量": "maxsl", + "订单数量": "sl", "规格": "size", "材质": "cz", "种类": "type_name", diff --git a/widgets/main_window.py b/widgets/main_window.py index e05d8ad..c7b798c 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -839,31 +839,12 @@ class MainWindow(MainWindowUI): client = modbus.get_client() try: # 判断当前操作类型(通过检查当前下料信息是否存在) - if self._current_unload_info and self._current_unload_num > 0: - # 下料模式 - 停止下料操作 - success3 = modbus.write_register_until_success(client, 3, 0) - - if success3: - logging.info(f"停止下料操作:当前层数 {self._current_unload_num}/{self._total_unload_num}") - QMessageBox.information(self, "操作提示", "已停止下料操作") - # 恢复开始按钮和下料按钮原始样式 - self.restore_start_button_style() - self.restore_output_button_style() - else: - QMessageBox.warning(self, "错误", "停止下料操作失败") + success3 = modbus.write_register_until_success(client, 3, 0) + success2 = modbus.write_register_until_success(client, 2, 0) + if success3 and success2: + logging.info("停止操作成功") else: - # 上料模式 - 停止上料操作 - success2 = modbus.write_register_until_success(client, 2, 0) - - if success2: - self._is_loading_active = False # 标记上料任务已停止 - logging.info("停止上料操作") - QMessageBox.information(self, "操作提示", "已停止上料操作") - # 恢复开始按钮和上料按钮原始样式 - self.restore_start_button_style() - self.restore_input_button_style() - else: - QMessageBox.warning(self, "错误", "停止上料操作失败") + logging.error("停止操作失败") except Exception as e: logging.error(f"停止操作失败: {str(e)}") @@ -1680,6 +1661,11 @@ class MainWindow(MainWindowUI): from dao.inspection_dao import InspectionDAO inspection_dao = InspectionDAO() + # 首先检查该工程号的包装记录是否已存在 + if inspection_dao.check_package_record_exists(order_id, gc_note, tray_id): + logging.warning(f"工程号 {gc_note} 托盘号 {tray_id} 的包装记录已存在,跳过添加") + return + # 获取该工程号的所有检验数据 inspection_data = inspection_dao.get_inspection_data_by_order(order_id, gc_note, tray_id) @@ -1709,7 +1695,6 @@ class MainWindow(MainWindowUI): logging.warning(f"工程号 {order_id} 托盘号 {tray_id} 的贴标字段为空,不添加到包装记录") return - # 获取当前时间作为完成时间 finish_time = datetime.now() @@ -2787,11 +2772,13 @@ class MainWindow(MainWindowUI): logging.info(f"工程号 {gc_note} 的贴标已完成,状态更新为labeled") # 获取当前行的轴号,用于保存到包装记录 - current_axios_num = self.get_current_row_axios_num(data_row) + # 使用写入单元格的轴号,而不是重新计算轴号 + axios_num_to_use = axios_num + logging.info(f"使用写入单元格的轴号: {axios_num_to_use}") # 调用加载到包装记录的方法,传入正确的轴号 - self.load_finished_record_to_package_record(self._current_order_code, gc_note, tray_id, current_axios_num) - logging.info(f"贴标完成,已将工程号 {gc_note} 的记录加载到包装记录,轴号: {current_axios_num}") + self.load_finished_record_to_package_record(self._current_order_code, gc_note, tray_id, axios_num_to_use) + logging.info(f"贴标完成,已将工程号 {gc_note} 的记录加载到包装记录,轴号: {axios_num_to_use}") # 删除当前处理的行 self.process_table.removeRow(data_row)