Tighten lab item routing and dedupe rows

This commit is contained in:
2026-05-19 17:41:24 +08:00
parent b55112b457
commit 4909705a2d
5 changed files with 127 additions and 24 deletions

View File

@@ -464,6 +464,7 @@ def _postprocess_workbook(
workbook = load_workbook(path)
try:
_normalize_unmatched_columns(workbook)
_deduplicate_regular_rows(workbook)
summary_records = _collect_summary_records(workbook)
_remove_not_found_rows(workbook)
_remove_empty_unmatched_columns(workbook)
@@ -555,6 +556,25 @@ def _remove_not_found_rows(workbook) -> None:
sheet.delete_rows(row_index, 1)
def _deduplicate_regular_rows(workbook) -> None:
for sheet in workbook.worksheets:
if sheet.title == SUMMARY_SHEET_NAME or sheet.max_row < 3:
continue
seen = set()
for row_index in range(sheet.max_row, 1, -1):
values = tuple(
_cell_text(sheet.cell(row_index, col).value)
for col in range(1, sheet.max_column + 1)
)
if not any(values):
continue
if values in seen:
sheet.delete_rows(row_index, 1)
else:
seen.add(values)
def _collect_summary_records(workbook) -> list[dict[str, object]]:
records: list[dict[str, object]] = []
for sheet in workbook.worksheets: