feat(cleaner): add configurable row number protection toggle
This commit is contained in:
@@ -169,6 +169,7 @@ export interface ShouldDeleteParams {
|
||||
pendingQty: string
|
||||
materialCode: string
|
||||
deleteSet: Set<string>
|
||||
enableRowProtection: boolean
|
||||
}
|
||||
|
||||
function clampNumber(
|
||||
@@ -244,13 +245,13 @@ export class CleanerService {
|
||||
* Determine if a material should be deleted
|
||||
*/
|
||||
shouldDeleteMaterial(params: ShouldDeleteParams): boolean {
|
||||
const { rowNumber, pendingQty, materialCode, deleteSet } = params
|
||||
const { rowNumber, pendingQty, materialCode, deleteSet, enableRowProtection } = params
|
||||
|
||||
if (!deleteSet.has(materialCode)) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (rowNumber >= 2000 && rowNumber < 8000) {
|
||||
if (enableRowProtection && rowNumber >= 2000 && rowNumber < 8000) {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -262,12 +263,12 @@ export class CleanerService {
|
||||
}
|
||||
|
||||
getSkipReason(params: ShouldDeleteParams): string {
|
||||
const { rowNumber, pendingQty, materialCode, deleteSet } = params
|
||||
const { rowNumber, pendingQty, materialCode, deleteSet, enableRowProtection } = params
|
||||
|
||||
if (!deleteSet.has(materialCode)) {
|
||||
return '物料不在删除清单中'
|
||||
}
|
||||
if (rowNumber >= 2000 && rowNumber < 8000) {
|
||||
if (enableRowProtection && rowNumber >= 2000 && rowNumber < 8000) {
|
||||
return '行号在 2000-7999 范围内(受保护)'
|
||||
}
|
||||
if (pendingQty && pendingQty.trim() !== '') {
|
||||
@@ -317,6 +318,7 @@ export class CleanerService {
|
||||
input.sessionRefreshOrderThreshold && input.sessionRefreshOrderThreshold > 0
|
||||
? Math.trunc(input.sessionRefreshOrderThreshold)
|
||||
: DEFAULT_SESSION_REFRESH_ORDER_THRESHOLD
|
||||
const enableRowProtection = input.enableRowProtection ?? true
|
||||
|
||||
log.info('Starting cleaner', {
|
||||
totalOrders,
|
||||
@@ -446,6 +448,7 @@ export class CleanerService {
|
||||
detailPage: openedDetailPage,
|
||||
deleteSet,
|
||||
dryRun,
|
||||
enableRowProtection,
|
||||
expectedOrderNumber: orderNumber,
|
||||
progressState,
|
||||
onProgress: input.onProgress
|
||||
@@ -567,6 +570,7 @@ export class CleanerService {
|
||||
),
|
||||
deleteSet,
|
||||
dryRun,
|
||||
enableRowProtection,
|
||||
onProgress: input.onProgress
|
||||
})
|
||||
|
||||
@@ -1149,6 +1153,7 @@ export class CleanerService {
|
||||
detailPage: Page
|
||||
deleteSet: Set<string>
|
||||
dryRun: boolean
|
||||
enableRowProtection: boolean
|
||||
progressState: ProgressState
|
||||
expectedOrderNumber?: string
|
||||
onProgress?: (
|
||||
@@ -1157,7 +1162,7 @@ export class CleanerService {
|
||||
extra?: Partial<import('../../types/cleaner.types').CleanerProgress>
|
||||
) => void
|
||||
}): Promise<OrderCleanDetail> {
|
||||
const { detailPage, deleteSet, dryRun, progressState, expectedOrderNumber, onProgress } = params
|
||||
const { detailPage, deleteSet, dryRun, enableRowProtection, progressState, expectedOrderNumber, onProgress } = params
|
||||
const processStartTime = Date.now()
|
||||
|
||||
log.info('[ORDER_START] 开始处理订单', {
|
||||
@@ -1482,7 +1487,8 @@ export class CleanerService {
|
||||
rowNumber: rowNumInt,
|
||||
pendingQty,
|
||||
materialCode,
|
||||
deleteSet
|
||||
deleteSet,
|
||||
enableRowProtection
|
||||
})
|
||||
|
||||
if (shouldDelete && !dryRun) {
|
||||
@@ -1559,7 +1565,8 @@ export class CleanerService {
|
||||
rowNumber: rowNumInt,
|
||||
pendingQty,
|
||||
materialCode,
|
||||
deleteSet
|
||||
deleteSet,
|
||||
enableRowProtection
|
||||
})
|
||||
log.debug('[物料跳过] 物料不满足删除条件', {
|
||||
orderNumber,
|
||||
@@ -2097,13 +2104,14 @@ export class CleanerService {
|
||||
failedDetails: OrderCleanDetail[]
|
||||
deleteSet: Set<string>
|
||||
dryRun: boolean
|
||||
enableRowProtection: boolean
|
||||
onProgress?: (
|
||||
message: string,
|
||||
progress?: number,
|
||||
extra?: Partial<import('../../types/cleaner.types').CleanerProgress>
|
||||
) => void
|
||||
}): Promise<RetryResult> {
|
||||
const { workFrame, popupPage, failedDetails, deleteSet, dryRun, onProgress } = params
|
||||
const { workFrame, popupPage, failedDetails, deleteSet, dryRun, enableRowProtection, onProgress } = params
|
||||
|
||||
const result: RetryResult = {
|
||||
retriedOrders: 0,
|
||||
@@ -2204,6 +2212,7 @@ export class CleanerService {
|
||||
detailPage,
|
||||
deleteSet,
|
||||
dryRun,
|
||||
enableRowProtection,
|
||||
expectedOrderNumber: orderNumber,
|
||||
progressState: {
|
||||
ordersStarted: detailIndex,
|
||||
|
||||
Reference in New Issue
Block a user