feat: add unmatched materials section to execution report
Track materials that are not in the delete list and display them in a new "未处理物料" (Unmatched Materials) section in the report. Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
This commit is contained in:
@@ -71,6 +71,7 @@ class DiscreteMaterialPlanCleaner:
|
||||
'processed_materials': 0, # 已处理物料数
|
||||
'deleted_materials': [], # [{order_id, material_code, material_name}]
|
||||
'skipped_materials': [], # [{order_id, material_code, material_name, reason}]
|
||||
'unmatched_materials': [], # [{order_id, material_code, material_name}] 不在删除列表的物料
|
||||
'errors': [], # [{order_id, error_message}]
|
||||
'start_time': None,
|
||||
'end_time': None,
|
||||
@@ -370,6 +371,12 @@ class DiscreteMaterialPlanCleaner:
|
||||
self._log(
|
||||
f"ℹ️ 物料 {material_name} ({material_code}) 不在删除列表中,不做处理"
|
||||
)
|
||||
# 记录到 unmatched_materials
|
||||
self.stats['unmatched_materials'].append({
|
||||
'order_id': order_id,
|
||||
'material_code': material_code,
|
||||
'material_name': material_name
|
||||
})
|
||||
if self._is_button_enabled(next_btn):
|
||||
last_row_number = current_row
|
||||
next_btn.click()
|
||||
@@ -495,6 +502,7 @@ class DiscreteMaterialPlanCleaner:
|
||||
report_lines.append(f"- 处理物料: {self.stats['processed_materials']}/{self.stats['total_materials']} 条")
|
||||
report_lines.append(f"- 删除物料: {len(self.stats['deleted_materials'])} 条")
|
||||
report_lines.append(f"- 跳过物料: {len(self.stats['skipped_materials'])} 条")
|
||||
report_lines.append(f"- 未处理物料: {len(self.stats['unmatched_materials'])} 条")
|
||||
report_lines.append(f"- 错误数量: {len(self.stats['errors'])} 个")
|
||||
report_lines.append(f"- 执行模式: {'预览模式 (dryrun)' if self.dryrun else '正常执行'}")
|
||||
if self.manager_names:
|
||||
@@ -521,6 +529,16 @@ class DiscreteMaterialPlanCleaner:
|
||||
report_lines.append(f"| {item['order_id']} | {item['material_code']} | {item['material_name']} | {item['reason']} |")
|
||||
report_lines.append("")
|
||||
|
||||
# 未处理物料明细
|
||||
if self.stats['unmatched_materials']:
|
||||
report_lines.append("## 未处理物料")
|
||||
report_lines.append("")
|
||||
report_lines.append("| 订单号 | 物料编码 | 物料名称 |")
|
||||
report_lines.append("|--------|----------|----------|")
|
||||
for item in self.stats['unmatched_materials']:
|
||||
report_lines.append(f"| {item['order_id']} | {item['material_code']} | {item['material_name']} |")
|
||||
report_lines.append("")
|
||||
|
||||
# 错误明细
|
||||
if self.stats['errors']:
|
||||
report_lines.append("## 错误明细")
|
||||
|
||||
Reference in New Issue
Block a user