feat: add preprocessing with value mapping to BOM Extraction System
All checks were successful
NTFY Notification / notify (push) Successful in 4s
All checks were successful
NTFY Notification / notify (push) Successful in 4s
Add a preprocessing step to the BOM Extraction System to enhance parameter extraction with mapping values from "对照表" worksheet. For azxs (安装形式) and lcfw (量程范围), the system now stores both the raw parsed value AND the mapped value from the lookup table, enabling flexible dual-value matching. Changes: - Create M06A_Mapper.bas: New module for value mapping - Load azxs/lcfw mappings from "对照表" worksheet - Return dual-value format "raw,mapped" (e.g., "A0,径向") - Support graceful degradation if "对照表" not found - Define constants locally to avoid VBA cross-module reference issues - Modify M06_ModelParser.bas: - Extract raw parameter values first - Apply mapping via M06A_Mapper if initialized - Store dual values for azxs and lcfw parameters - Modify M07_BOMMatcher.bas: - Update EvaluateCellCondition() to support dual-value matching - Split by comma and check if ANY value matches - Backward compatible with single-value parameters - Modify M09_BOMExtractor.bas: - Initialize M06A_Mapper during RunBOMExtraction() - Add WorksheetExists() helper function - Log warning if "对照表" worksheet not found - Define MAPPING_SHEET_NAME constant locally - Modify M04_Config.bas: - Add mapping table configuration constants - MAPPING_SHEET_NAME, MAPPING_COL_LCFW_KEY, etc. - Update CLAUDE.md: - Document new M06A_Mapper module - Update data flow diagram with mapping step - Document dual-value matching behavior - Update system architecture diagram - Update docs/RunBOMExtraction_运行机制详解.md: - Add M06A_Mapper to all diagrams and documentation - Add detailed value mapping section - Update sequence diagrams with mapping flow - Update parameter examples with dual-value format - Bump documentation version to 3.0 Example: Input: Product model "YTHN-100.A0.531.G123.M04.Y3" Parse: azxs="A0", lcfw="M04" Map: azxs="A0,径向", lcfw="M04,高压" Match: BOM库 with azxs="径向" OR "A0" → MATCH Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,9 @@
|
||||
' ==============================================================================
|
||||
Option Explicit
|
||||
|
||||
' 模块级常量 - 映射表配置
|
||||
Private Const MAPPING_SHEET_NAME As String = "对照表"
|
||||
|
||||
' 模块级变量
|
||||
Private g_Logger As clsErrorLogger
|
||||
Private g_BOMWorkbook As Workbook
|
||||
@@ -92,6 +95,18 @@ Public Function RunBOMExtraction() As String
|
||||
M07_BOMMatcher.InitBOMMatcher g_Logger
|
||||
M08_ComponentProcessor.InitComponentProcessor g_Logger
|
||||
|
||||
' 初始化映射器(新增)
|
||||
If WorksheetExists(MAPPING_SHEET_NAME) Then
|
||||
Dim wsMapping As Worksheet
|
||||
Set wsMapping = ThisWorkbook.Sheets(MAPPING_SHEET_NAME)
|
||||
M06A_Mapper.InitMapper g_Logger, wsMapping
|
||||
Else
|
||||
If Not g_Logger Is Nothing Then
|
||||
g_Logger.RecordWarning 0, "M09.RunBOMExtraction", "MappingTableMissing", _
|
||||
"未找到对照表工作表,azxs和lcfw将仅使用原始值匹配", ""
|
||||
End If
|
||||
End If
|
||||
|
||||
' 步骤4: 处理每个产品型号
|
||||
Application.StatusBar = "正在处理产品型号..."
|
||||
|
||||
@@ -1026,4 +1041,21 @@ Private Function OpenBOMLibrary() As Workbook
|
||||
|
||||
ErrorHandler:
|
||||
Set OpenBOMLibrary = Nothing
|
||||
End Function
|
||||
|
||||
' ------------------------------------------------------------------------------
|
||||
' 检查工作表是否存在
|
||||
'
|
||||
' 输入:
|
||||
' sheetName - 工作表名称
|
||||
'
|
||||
' 输出:
|
||||
' Boolean - True表示工作表存在,False表示不存在
|
||||
' ------------------------------------------------------------------------------
|
||||
Private Function WorksheetExists(ByVal sheetName As String) As Boolean
|
||||
On Error Resume Next
|
||||
Dim ws As Worksheet
|
||||
Set ws = ThisWorkbook.Sheets(sheetName)
|
||||
WorksheetExists = Not ws Is Nothing
|
||||
On Error GoTo 0
|
||||
End Function
|
||||
Reference in New Issue
Block a user