From 98865f5d7eabe5a4c2eebe13d29b9e2b59c82f2b Mon Sep 17 00:00:00 2001 From: Misaka_Company Date: Tue, 28 Apr 2026 11:57:47 +0800 Subject: [PATCH] fix(cleaner): preserve production IDs in operation history MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 总排号 field was always empty because getCleanerData() resolved production IDs to order numbers before passing them to the cleaner, losing the original inputs. Now originalInputs are carried through the full chain so the resolver can properly set productionId. Co-Authored-By: Claude Opus 4.6 --- src/main/services/cleaner/cleaner-application-service.ts | 3 ++- src/main/services/validation/validation-application-service.ts | 2 ++ src/main/types/cleaner.types.ts | 1 + src/renderer/src/hooks/cleaner/api.ts | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/services/cleaner/cleaner-application-service.ts b/src/main/services/cleaner/cleaner-application-service.ts index 63f0314..15e8c4c 100644 --- a/src/main/services/cleaner/cleaner-application-service.ts +++ b/src/main/services/cleaner/cleaner-application-service.ts @@ -66,7 +66,8 @@ export class CleanerApplicationService { } const resolver = new OrderNumberResolver(dbService) - const mappings = await resolver.resolve(input.orderNumbers) + const inputsToResolve = input.originalInputs?.length ? input.originalInputs : input.orderNumbers + const mappings = await resolver.resolve(inputsToResolve) const validOrderNumbers = resolver.getValidOrderNumbers(mappings) const warnings = resolver.getWarnings(mappings) diff --git a/src/main/services/validation/validation-application-service.ts b/src/main/services/validation/validation-application-service.ts index 1fd3531..27726c8 100644 --- a/src/main/services/validation/validation-application-service.ts +++ b/src/main/services/validation/validation-application-service.ts @@ -236,6 +236,7 @@ export class ValidationApplicationService { ): Promise<{ success: boolean orderNumbers?: string[] + originalInputs?: string[] materialCodes?: string[] error?: string }> { @@ -288,6 +289,7 @@ export class ValidationApplicationService { return { success: true, orderNumbers, + originalInputs: sharedIds, materialCodes } } catch (error) { diff --git a/src/main/types/cleaner.types.ts b/src/main/types/cleaner.types.ts index 5c73cc7..d241665 100644 --- a/src/main/types/cleaner.types.ts +++ b/src/main/types/cleaner.types.ts @@ -13,6 +13,7 @@ export interface CleanerProgress { export interface CleanerInput { orderNumbers: string[] + originalInputs?: string[] materialCodes: string[] dryRun: boolean headless?: boolean diff --git a/src/renderer/src/hooks/cleaner/api.ts b/src/renderer/src/hooks/cleaner/api.ts index a05489d..a778b8f 100644 --- a/src/renderer/src/hooks/cleaner/api.ts +++ b/src/renderer/src/hooks/cleaner/api.ts @@ -10,6 +10,7 @@ import type { CleanerExportItem, MaterialBatchChange } from './helpers' interface CleanerDataPayload { success?: boolean orderNumbers?: string[] + originalInputs?: string[] materialCodes?: string[] } @@ -147,6 +148,7 @@ export async function runCleanerExecution(params: { const response = await window.electron.cleaner.runCleaner({ orderNumbers: orderNumberList, + originalInputs: cleanerData?.originalInputs, materialCodes: materialCodeList, dryRun: params.dryRun, headless: params.headless,