fix: improve component inventory insufficient error handling
All checks were successful
NTFY Notification / notify (push) Successful in 4s

- Change component inventory insufficient from Error to Warning type in error report
- Propagate productionOrderNo to M08_ComponentProcessor functions for proper error tracking
- Update CheckComponentInventory to record warnings instead of errors for insufficient inventory
- Pass productionOrderNo through ProcessComponentRecord call chain

Changes:
- M08_ComponentProcessor: Add productionOrderNo parameter to ProcessComponentRecord and CheckComponentInventory
- M08_ComponentProcessor: Change insufficient inventory Record to RecordWarning
- M08_ComponentProcessor: Use productionOrderNo in all error/warning recordings
- M09_BOMExtractor: Pass productionOrderNo to ProcessComponentRecord call

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Misaka_Company
2026-02-26 10:27:10 +08:00
parent 7fea574531
commit c4d7b248c4
2 changed files with 11 additions and 9 deletions

View File

@@ -143,7 +143,8 @@ Public Function ProcessComponentRecord( _
ByVal params As Object, _ ByVal params As Object, _
ByVal logger As clsErrorLogger, _ ByVal logger As clsErrorLogger, _
ByVal matchedRowNum As Long, _ ByVal matchedRowNum As Long, _
ByVal orderQty As Long _ ByVal orderQty As Long, _
ByVal productionOrderNo As String _
) As Collection ) As Collection
On Error GoTo ErrorHandler On Error GoTo ErrorHandler
@@ -173,7 +174,7 @@ Public Function ProcessComponentRecord( _
Set headerMap = M07_BOMMatcher.BuildWorksheetHeaderMap(wsComponent) Set headerMap = M07_BOMMatcher.BuildWorksheetHeaderMap(wsComponent)
' 步骤4: 检查部件库存 ' 步骤4: 检查部件库存
If CheckComponentInventory(wsComponent, matchedRowNum, headerMap, orderQty) Then If CheckComponentInventory(wsComponent, matchedRowNum, headerMap, orderQty, productionOrderNo) Then
' 库存充足,返回部件物料 ' 库存充足,返回部件物料
Dim componentInfo As Object Dim componentInfo As Object
Set componentInfo = ExtractComponentInfo(wsComponent, matchedRowNum, headerMap, "部件") Set componentInfo = ExtractComponentInfo(wsComponent, matchedRowNum, headerMap, "部件")
@@ -197,7 +198,7 @@ Public Function ProcessComponentRecord( _
ErrorHandler: ErrorHandler:
If Not logger Is Nothing Then If Not logger Is Nothing Then
logger.Record "", "M08.ProcessComponentRecord", "SystemError", _ logger.Record productionOrderNo, "M08.ProcessComponentRecord", "SystemError", _
"处理部件记录失败: " & Err.Description, "" "处理部件记录失败: " & Err.Description, ""
End If End If
@@ -244,7 +245,8 @@ Private Function CheckComponentInventory( _
ByVal wsComponent As Worksheet, _ ByVal wsComponent As Worksheet, _
ByVal rowNum As Long, _ ByVal rowNum As Long, _
ByVal headerMap As Object, _ ByVal headerMap As Object, _
ByVal orderQty As Long _ ByVal orderQty As Long, _
ByVal productionOrderNo As String _
) As Boolean ) As Boolean
On Error GoTo ErrorHandler On Error GoTo ErrorHandler
@@ -291,7 +293,7 @@ Private Function CheckComponentInventory( _
If g_InventoryDict Is Nothing Or Not g_InventoryDict.Exists(componentCode) Then If g_InventoryDict Is Nothing Or Not g_InventoryDict.Exists(componentCode) Then
' 未找到库存数据记录警告并返回False库存不足 ' 未找到库存数据记录警告并返回False库存不足
If Not g_Logger Is Nothing Then If Not g_Logger Is Nothing Then
g_Logger.RecordWarning "", "M08.CheckComponentInventory", "InventoryNotFound", _ g_Logger.RecordWarning productionOrderNo, "M08.CheckComponentInventory", "InventoryNotFound", _
"部件[" & componentCode & "]未找到库存数据,视为库存不足", "" "部件[" & componentCode & "]未找到库存数据,视为库存不足", ""
End If End If
CheckComponentInventory = False CheckComponentInventory = False
@@ -319,9 +321,9 @@ Private Function CheckComponentInventory( _
g_AccumulatedDemandDict(componentCode) = totalDemand g_AccumulatedDemandDict(componentCode) = totalDemand
CheckComponentInventory = True CheckComponentInventory = True
Else Else
' 库存不足,记录错误 ' 库存不足,记录警告(不是错误
If Not g_Logger Is Nothing Then If Not g_Logger Is Nothing Then
g_Logger.Record "", "M08.CheckComponentInventory", "InsufficientInventory", _ g_Logger.RecordWarning productionOrderNo, "M08.CheckComponentInventory", "InsufficientInventory", _
"部件[" & componentCode & "]库存不足。库存=" & stockQty & ", 累计需求=" & totalDemand, "" "部件[" & componentCode & "]库存不足。库存=" & stockQty & ", 累计需求=" & totalDemand, ""
End If End If
CheckComponentInventory = False CheckComponentInventory = False
@@ -331,7 +333,7 @@ Private Function CheckComponentInventory( _
ErrorHandler: ErrorHandler:
If Not g_Logger Is Nothing Then If Not g_Logger Is Nothing Then
g_Logger.Record "", "M08.CheckComponentInventory", "SystemError", _ g_Logger.Record productionOrderNo, "M08.CheckComponentInventory", "SystemError", _
"库存检查失败: " & Err.Description, "" "库存检查失败: " & Err.Description, ""
End If End If
' 出错时返回False库存不足 ' 出错时返回False库存不足

View File

@@ -466,7 +466,7 @@ Private Function MatchAllMaterialTypesWithValidation( _
If bomMatchResult("success") Then If bomMatchResult("success") Then
Set componentMaterials = M08_ComponentProcessor.ProcessComponentRecord( _ Set componentMaterials = M08_ComponentProcessor.ProcessComponentRecord( _
ws, params, logger, bomMatchResult("rowNums")(1), orderQty) ws, params, logger, bomMatchResult("rowNums")(1), orderQty, productionOrderNo)
Debug.Print " -> 返回物料数: " & componentMaterials.count Debug.Print " -> 返回物料数: " & componentMaterials.count
End If End If