Files
AutoBOM/新增条件提取计划.md
Misaka_Company 845b25f27a feat: add azxs and bkxs condition extraction
Added two new extraction rules to clsConditionExtractor:
- azxs (安装形式): Extract installation form code from InstallForm field
- bkxs (表壳形式): Extract shell form code from ShellForm field

Examples:
- azxs: A0 (径向无边), Z0 (中轴向无边)
- bkxs: 532 (53=304外壳+安装式, 2=外卡式)

These new conditions can now be used in material selection expressions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-27 15:46:50 +08:00

7.2 KiB
Raw Blame History

新增条件提取功能实现计划

一、需求概述

需要向 clsConditionExtractor.cls 类增加两个新的条件提取:

  1. 安装形式 (azxs) - 从型号中提取安装形式代码
  2. 表壳形式 (bkxs) - 从型号中提取表壳形式代码

示例说明

以型号 YTHN-100.A0.532.M203.M17.Y3|BP-095.2312.M17.P3 为例:

  • A0 = 安装形式代码(径向无边)
  • 532 = 表壳形式代码,其中:
    • 53 = 表壳类型304外壳、安装式、可充油
    • 2 = 罩壳类型(外卡式)

二、参考文档依据

根据 布莱迪公司压力表产品选型大表.md 文档:

2.1 安装形式代码第159-204行

代码 说明
A0 径向无边
AT 径向前边
AH 径向后边
AM 膜片式径向
Z0 中轴向无边
B0 下轴向无边
... 共20多种安装形式

提取规则直接提取2位代码字母+数字组合)

2.2 表壳形式代码第207-266行

表壳形式由两部分组成:表壳类型(2位) + 罩壳类型(1位)

表壳类型示例:

代码 说明
00 特殊型
10 塑料表壳
20-24 碳钢喷塑外壳系列
30 坚固安全型
40 压铸铝喷塑外壳
50-55 304外壳系列
60-65 316L外壳系列

罩壳类型示例:

代码 说明
0 螺钉上紧式
1 内卡式
2 外卡式
3 滚边式
4-9 其他6种罩壳类型

提取规则

  • 整体提取3位代码532
  • 如果需要细分,可以拆分为:
    • 前2位表壳类型53
    • 后1位罩壳类型2

三、技术实现方案

3.1 代码检查

检查 clsModelParser 类是否已包含以下属性:

  • InstallForm - 安装形式代码
  • ShellForm - 表壳形式代码

说明:根据 clsConditionExtractor.cls 第113-116行显示解析器已经支持这些字段。

3.2 提取规则设计

规则1安装形式 (azxs)

m_ExtractionRules("azxs") = Array("InstallForm", "Direct")
  • 源字段InstallForm
  • 提取方法Direct(直接使用)

规则2表壳形式 (bkxs)

m_ExtractionRules("bkxs") = Array("ShellForm", "Direct")
  • 源字段ShellForm
  • 提取方法Direct(直接使用)

3.3 修改位置

clsConditionExtractor.clsInitializeRules() 方法中添加上述两条规则。

修改位置第29-47行InitializeRules 方法内部)


四、实现步骤

步骤1修改 clsConditionExtractor.cls

InitializeRules() 方法中添加两个新的提取规则:

Private Sub InitializeRules()
    ' 规则格式: Dictionary(变量名) = Array(源字段, 提取方法)

    ' 规则1: 过程连接 (gclj)
    m_ExtractionRules("gclj") = Array("ConnectionCode", "RemoveLastDigit")

    ' 规则2: 接液材质 (jycz)
    m_ExtractionRules("jycz") = Array("ConnectionCode", "GetLastDigit")

    ' 规则3: 量程范围 (lcfw)
    m_ExtractionRules("lcfw") = Array("RangeCode", "Direct")

    ' === 新增规则 ===
    ' 规则4: 安装形式 (azxs)
    m_ExtractionRules("azxs") = Array("InstallForm", "Direct")

    ' 规则5: 表壳形式 (bkxs)
    m_ExtractionRules("bkxs") = Array("ShellForm", "Direct")
End Sub

步骤2验证 ExtractValue 方法

检查 ExtractValue 方法第98-157行是否已支持 InstallFormShellForm 源字段。

确认点

  • 第113-114行Case "InstallForm" 已存在
  • 第115-116行Case "ShellForm" 已存在

结论:无需修改 ExtractValue 方法,它已经支持所需的源字段。

步骤3测试验证

创建或更新测试用例,验证提取功能:

' 测试用例
Dim parser As New clsModelParser
Dim extractor As New clsConditionExtractor
Dim conditions As Object

' 解析型号
parser.Parse "YTHN-100.A0.532.M203.M17.Y3|BP-095.2312.M17.P3"

' 提取条件
Set conditions = extractor.ExtractConditions(parser)

' 验证结果
Debug.Print "安装形式(azxs): " & conditions("azxs")  ' 应输出: A0
Debug.Print "表壳形式(bkxs): " & conditions("bkxs")  ' 应输出: 532

五、影响范围评估

5.1 影响的文件

文件 修改类型 说明
VBA/ClassModules/clsConditionExtractor.cls 修改 添加2条提取规则

5.2 兼容性

  • 向后兼容新增规则不影响现有条件gclj、jycz、lcfw的提取
  • 现有测试:无需修改现有测试用例
  • ⚠️ 物料匹配如需在物料选择条件中使用这些新条件需在Excel表格的"选择条件"列中使用新变量名azxs、bkxs

5.3 使用场景

新增的条件可以在以下场景中使用:

  1. 物料选择条件表达式

    azxs=A0 AND bkxs=532
    
  2. BOM完整性检查

    • 检查是否缺少特定安装形式的物料
    • 检查是否缺少特定表壳形式的物料
  3. 数据分析和统计

    • 按安装形式统计物料需求
    • 按表壳形式统计物料需求

六、可选增强功能(未来扩展)

6.1 表壳形式细分提取

如果需要将表壳形式细分为表壳类型和罩壳类型,可以添加:

' 表壳类型前2位
m_ExtractionRules("bklx") = Array("ShellForm", "GetFirstTwoDigits")

' 罩壳类型后1位
m_ExtractionRules("zklx") = Array("ShellForm", "GetLastDigit")

同时需要在 ExtractValue 方法中添加新的提取方法:

  • GetFirstTwoDigits取前2位字符
  • GetLastDigit:已存在,直接复用

6.2 条件验证

可以添加条件值验证功能,确保提取的值在合法范围内:

Public Function ValidateCondition(varName As String, value As String) As Boolean
    ' 验证安装形式是否合法
    ' 验证表壳形式是否合法
End Function

七、实施清单

  • 1. 备份 clsConditionExtractor.cls 文件
  • 2. 在 InitializeRules() 方法中添加 azxs 提取规则
  • 3. 在 InitializeRules() 方法中添加 bkxs 提取规则
  • 4. 更新代码注释,说明新增规则的用途
  • 5. 创建测试用例验证提取功能
  • 6. 运行现有测试套件,确保无回归问题
  • 7. 更新相关文档(如需要)
  • 8. 提交代码变更

八、预期结果

实现完成后,系统将能够:

  1. 从产品型号中自动提取安装形式代码azxs
  2. 从产品型号中自动提取表壳形式代码bkxs
  3. 在物料选择条件表达式中使用这两个新变量
  4. 保持向后兼容,不影响现有功能

测试验证示例

输入型号:YTHN-100.A0.532.M203.M17.Y3

提取结果:

  • gclj = M20
  • jycz = 3
  • lcfw = M17
  • azxs = A0 ⬅️ 新增
  • bkxs = 532 ⬅️ 新增

九、备注

  1. 本计划遵循现有代码的设计模式和命名规范
  2. 所有新增代码将包含中文注释,便于维护
  3. 修改完成后将更新 VBA 模块元数据(如需要)
  4. 建议在Excel开发环境中先进行手动测试确保功能正常

文档版本: 1.0 创建日期: 2026-01-27 作者: Claude Code