diff --git a/utils/离散备料计划维护数据清理.py b/utils/离散备料计划维护数据清理.py index 8fa54c9..28e30ea 100644 --- a/utils/离散备料计划维护数据清理.py +++ b/utils/离散备料计划维护数据清理.py @@ -113,56 +113,62 @@ class DiscreteMaterialPlanCleaner: detail_status = re.search(r"备料状态:(.+)$", status_text.replace("\n", "")).group(1) # 6. 执行清理逻辑 - if detail_count > 0 and detail_status == "审批通过": - # --- 点击修改并等待状态切换 (保留原逻辑) --- - detail_inner_frame.get_by_role("button", name="修改").click() - - # 关键判断:等待保存按钮出现,确认进入编辑模式 - save_button_locator = detail_inner_frame.get_by_role("button", name="保存") - save_button_locator.wait_for(state="visible", timeout=10000) - self._log("已进入编辑模式(保存按钮已就绪)") - # --------------------------------------- - - detail_inner_frame.get_by_text("展开").first.click() - - child_form = detail_inner_frame.locator(".card-table-side-box") - button_wrapper = child_form.locator(".button-wrapper") - - delete_row_btn = button_wrapper.get_by_role("button", name="删行") - next_btn = button_wrapper.locator(".icon-jiantouyou") - collapse_btn = button_wrapper.locator(".icon-celashouqi") - - last_row_number = None - while True: - # 稳定性检查:等待行号更新 - current_row = self._get_input_value(child_form, r"^行号$") - if current_row == last_row_number: - time.sleep(0.5) - - material_code = self._get_input_value(child_form, r"^材料编码") - material_name = self._get_input_value(child_form, r"^材料名称") - pending_qty = self._get_input_value(child_form, r"^累计待发数量$") - - if material_code in self.to_delete_set: - self._log(f"发现匹配物料: {material_name} ({material_code})") - if not pending_qty or float(pending_qty) == 0: - delete_row_btn.click() - self._log(f"✅ 已点击删行") - continue - else: - self._log(f"⚠️ 待发数量为 {pending_qty},跳过删除", "warn") + if detail_status == "审批通过": + if detail_count >0: + # --- 点击修改并等待状态切换 (保留原逻辑) --- + detail_inner_frame.get_by_role("button", name="修改").click() - if self._is_button_enabled(next_btn): - last_row_number = current_row - next_btn.click() - else: - break + # 关键判断:等待保存按钮出现,确认进入编辑模式 + save_button_locator = detail_inner_frame.get_by_role("button", name="保存") + save_button_locator.wait_for(state="visible", timeout=10000) + self._log("已进入编辑模式(保存按钮已就绪)") + # --------------------------------------- - collapse_btn.click() - - # 执行最终保存逻辑(如业务需要) - # save_button_locator.click() + detail_inner_frame.get_by_text("展开").first.click() + + child_form = detail_inner_frame.locator(".card-table-side-box") + button_wrapper = child_form.locator(".button-wrapper") + + delete_row_btn = button_wrapper.get_by_role("button", name="删行") + next_btn = button_wrapper.locator(".icon-jiantouyou") + collapse_btn = button_wrapper.locator(".icon-celashouqi") + last_row_number = None + while True: + # 稳定性检查:等待行号更新 + current_row = self._get_input_value(child_form, r"^行号$") + if current_row == last_row_number: + time.sleep(0.5) + + material_code = self._get_input_value(child_form, r"^材料编码") + material_name = self._get_input_value(child_form, r"^材料名称") + pending_qty = self._get_input_value(child_form, r"^累计待发数量$") + + if material_code in self.to_delete_set: + self._log(f"发现匹配物料: {material_name} ({material_code})") + if not pending_qty or float(pending_qty) != 0: + delete_row_btn.click() + self._log(f"✅ 已点击删行") + continue + else: + self._log(f"⚠️ 待发数量为 {pending_qty},跳过删除", "warn") + else: + self._log(f"物料 {material_name} ({material_code}) 不在删除列表中,不做处理") + if self._is_button_enabled(next_btn): + last_row_number = current_row + next_btn.click() + else: + break + collapse_btn.click() + + # 执行最终保存逻辑(如业务需要) + # save_button_locator.click() + else: + self._log("订单无备料计划数据,无需处理") + elif detail_status == "完成": + self._log("订单已完成,无需处理") + else: + self._log(f"订单状态为 [{detail_status}],不符合处理条件", "warn") page2.close() def setup_query_interface(self, inner_frame):