# 布莱迪压力表产品BOM自动提取系统 # 需求规格说明书 --- **文档版本**: V1.0 **创建日期**: 2025年2月 **编制部门**: 信息技术部 --- ## 1. 项目概述 ### 1.1 项目背景 布莱迪公司在压力表产品生产过程中,需要根据客户订单的产品型号提取对应的BOM(物料清单)。当前手工提取流程存在效率低、易出错等问题。为提高工作效率,减少人为错误,需要开发一套基于Excel VBA的自动化BOM提取系统。 ### 1.2 项目目标 本系统旨在实现以下目标: 1. 自动解析产品型号,提取关键参数 2. 基于提取参数,自动匹配BOM库中的物料 3. 输出标准化的BOM清单,便于物料领用 4. 记录异常情况,便于人工复核 5. 提供代码接口,支持未来功能扩展 --- ## 2. 功能需求 ### 2.1 产品型号解析功能 #### 2.1.1 型号结构识别 系统需要从完整产品型号中识别并提取表头部分。产品型号的完整格式为: ``` [表头]|[表盘]|[附件]|[法兰隔膜] ``` 其中,仅提取表头部分,其余部分暂时丢弃。表头部分的标准结构为: ``` [型号]-[公称外径].[安装形式].[壳体形式].[过程连接&接液材质].[量程范围].[仪表特性] ``` #### 2.1.2 参数提取规则 系统需要按照以下规则提取各项参数: | 参数名称 | 变量名 | 提取规则 | |---------|--------|---------| | 型号 | xh | '-'符号之前的字母组合(预留,暂不参与BOM匹配) | | 公称外径 | gcwj | '-'符号之后,第一个'.'之前的数字(预留,暂不参与BOM匹配) | | 安装形式 | azxs | 第一段(如:A0) | | 表壳形式 | bkxs | 第二段(如:531),包含表壳和罩壳代码 | | 过程连接 | gclj | 第三段去除最后一位数字(如:M203→M20) | | 接液材质 | jycz | 第三段的最后一位数字(如:M203→3) | | 量程范围 | lcfw | 第四段(如:M06) | | 附加功能 | fjgn | 量程范围之后的所有段(用','或'.'分隔,如:N3,N2) | #### 2.1.3 型号完整性验证 系统需要验证表头型号是否包含完整的结构。如果型号缺少必要的段落,应记录为异常情况,并在提取备注中说明。 #### 2.1.4 测试用例 系统需要能够正确处理以下测试型号: - `YTHN-100.A0.531.G123.M04.Y3|BP-088.2312.B09.0A3` - `YTHN-100.BZ.531.M201.M09.Y3|BP-088.2312.M37.0A3` - `YTHN-100.A0.531.M203.M06.Y3|BP-088.2312.M06.0A3|LSG-1.14x2.M20F.M20.3^HDJ.M20F.BW.14×2×60.3^TSFJ^WHP.70X20X1.3` - `YTHN-100.A0.531.M203.P21.Y3|BP-088.2312.M39.0A3|HDJ.M20F.BW.14×2×60.3^LSG-1.14x2.M20F.M20.3^TSFJ^WHP.70X20X1.3` - `YTHN-100.A0.531.M201.M03.N1.Y3|BP-088.2312.M31.0A4` - `YTHN-100.A0.531.M201.M04.N1,N2.Y3|BP-088.2312.M32.0A3` - `YTHN-100.A0.531.M201.M04.N1.N2.Y3|BP-088.2312.M32.0A3` - `YTHN-100.A0.531.Z121.M07.Y3|BP-088.2312.M07.0A3` - `YTHN-100.A0.531.Z121.M08.Y3|BP-088.2312.M08.0A3` --- ### 2.2 BOM匹配功能 #### 2.2.1 BOM库文件结构 BOM库数据保存在与当前工作簿同目录下的**BOM库.xlsx**文件中。该文件包含多个工作表,每个工作表代表一类物料,常见的工作表包括: - 接头 - 弹性元件 - 机芯 - 部件 - 边 #### 2.2.2 匹配规则 系统采用AND逻辑进行匹配,即BOM库记录中的所有条件列都必须满足才算匹配成功。具体规则如下: | 规则类型 | 说明 | |---------|------| | 空值匹配 | BOM库单元格为空时,视为通配符(Match All),条件成立 | | 否定匹配 | BOM库单元格以'!='开头(如:!=SCRJ),则提取值不等于该值时条件成立 | | 精确匹配 | BOM库单元格为普通值时,提取值必须完全相等 | | 包含匹配(fjgn) | 对于附加功能字段,只要提取的功能列表包含BOM库中的值即可(如:提取出N3,N2,BOM库中是N3,则匹配成功) | #### 2.2.3 部件物料特殊处理 '部件'工作表中的记录比较特殊,每条记录包含三个物料的数据: 1. 部件物料本身 2. 接头物料 3. 弹性元件物料 **选择策略:** - 优先选择'部件'物料 - 当'部件'物料库存不足时,选择'接头'和'弹性元件'物料 - 库存检查接口预留,当前默认库存充足(返回True) **部件物料验证规则:** 针对"部件"这个物料和其子物料"接头"和"弹性元件",在提取出的物料中,只有满足以下两种情况的一种,才算正常: - 一条"部件"物料 - 一条"接头"物料 + 一条"弹性元件"物料 如果出现其他组合(如:只有接头没有弹性元件,或同时有部件和接头),则视为异常,需要在提取备注中记录。 #### 2.2.4 匹配结果验证 对于每个产品型号,在各个物料类别工作表中应该匹配到恰好1条记录。以下情况视为异常: - 某个类别未匹配到任何记录(0条) - 某个类别匹配到多条记录(>1条) 所有异常情况需要记录到**提取备注**字段中,便于后续人工复核。 --- ### 2.3 数据输入输出 #### 2.3.1 输入数据源 订单数据来源于当前工作簿中的某个工作表。该工作表应包含产品型号列,系统需要能够识别并读取该列数据。 #### 2.3.2 输出结果格式 系统将提取结果输出到当前工作簿的新工作表中。输出采用纵向展开格式,即每个物料一行,一个订单可能对应多行记录。 **输出字段包括:** | 字段名称 | 说明 | |---------|------| | 原始产品型号 | 完整的产品型号字符串 | | 提取条件值 | azxs、bkxs、gclj、jycz、lcfw、fjgn等参数的值 | | 物料类型 | 如:机芯、部件、接头、弹性元件、边等 | | 物料名称 | 从BOM库中提取的物料名称 | | 物料编码 | 从BOM库中提取的物料编码 | | 物料数量 | 从BOM库中提取的物料数量 | | 提取备注 | 记录提取过程中的异常信息,如:型号不完整、匹配失败、匹配多条等 | --- ## 3. 技术规格要求 ### 3.1 代码架构要求 #### 3.1.1 模块化设计 系统采用模块化设计,各功能模块之间保持解耦。主要模块包括: - **型号解析模块**:负责解析产品型号,提取参数 - **BOM匹配模块**:负责根据参数匹配BOM库中的物料 - **数据输出模块**:负责将结果写入工作表 - **库存查询模块**:负责查询物料库存状态(预留接口) #### 3.1.2 接口设计 所有关键函数需要明确定义输入和输出接口。接口定义应包括: - 函数名称和用途说明 - 输入参数:名称、类型、说明 - 输出结果:类型、说明 - 异常处理:可能的错误情况及处理方式 #### 3.1.3 代码注释 所有函数、过程必须包含详细的注释,说明: - 功能描述 - 参数说明 - 返回值说明 - 使用示例 - 注意事项 --- ### 3.2 质量保证要求 #### 3.2.1 单元测试 关键接口需要编写单元测试。测试应覆盖: - 正常输入情况 - 边界值情况 - 异常输入情况 - 特殊字符处理 #### 3.2.2 异常处理 系统采用容错设计,遇到异常时继续运行,将异常信息记录在提取备注中。异常情况包括但不限于: - 型号格式不完整 - BOM库文件不存在或无法打开 - 某类物料匹配失败(0条或多条) - 数据类型不匹配 - 部件物料组合异常(不符合验证规则) --- ### 3.3 扩展性要求 #### 3.3.1 参数扩展 系统设计应支持未来新增提取参数。当前提取的参数包括:azxs、bkxs、gclj、jycz、lcfw、fjgn。 未来可能需要提取的参数包括但不限于: - lcdw(量程单位) - btcy(表头充油) - bp(表盘) - dskd(单双刻度) - 其他业务参数 #### 3.3.2 接口预留 系统需要预留以下接口: | 接口名称 | 功能说明 | |---------|---------| | 库存查询接口 | 输入:物料编码;输出:布尔值(True=有库存,False=无库存)。当前默认返回True | | 部件选择接口 | 输入:部件库存状态;输出:选择结果(部件或接头+弹性元件) | --- ## 4. 非功能性需求 ### 4.1 性能要求 系统应能够在合理时间内完成BOM提取任务。对于包含100条订单记录的工作表,处理时间应控制在1分钟以内。 ### 4.2 可维护性 代码结构清晰,注释完整,便于后续维护和功能扩展。变量命名规范,使用有意义的名称。 ### 4.3 可靠性 系统采用容错设计,即使遇到异常数据也能继续运行,确保已处理的数据不会丢失。所有异常情况都应被记录,便于追溯和排查问题。 --- ## 5. 附录 ### 5.1 可能的选择条件字段 以下是BOM库工作表中可能出现的所有选择条件字段,系统在识别条件列时应灵活处理: | 变量名 | 变量标签 | |-------|---------| | azxs | 安装形式 | | bkxs | 表壳形式 | | gclj | 过程连接 | | jycz | 接液材质 | | lcdw | 量程单位 | | lcfw | 量程范围 | | fjgn | 附加功能 | | btcy | 表头充油 | | bp | 表盘 | | dskd | 单双刻度 | | nqlc | 内圈量程 | | bptx | 表盘特性 | | jddj | 精度等级 | | cpdm | 产品代码 | | tsjz | 特殊介质 | | tsyq | 特殊要求 | | bpts | 表盘套色 | | kdxh | 刻度线红色 | --- ### 5.2 测试型号示例 以下测试型号可用于验证系统功能: | 编号 | 产品型号 | |-----|---------| | 1 | `YTHN-100.A0.531.G123.M04.Y3|BP-088.2312.B09.0A3` | | 2 | `YTHN-100.BZ.531.M201.M09.Y3|BP-088.2312.M37.0A3` | | 3 | `YTHN-100.A0.531.M203.M06.Y3|BP-088.2312.M06.0A3|LSG-1.14x2.M20F.M20.3^HDJ.M20F.BW.14×2×60.3^TSFJ^WHP.70X20X1.3` | | 4 | `YTHN-100.A0.531.M203.P21.Y3|BP-088.2312.M39.0A3|HDJ.M20F.BW.14×2×60.3^LSG-1.14x2.M20F.M20.3^TSFJ^WHP.70X20X1.3` | | 5 | `YTHN-100.A0.531.M201.M03.N1.Y3|BP-088.2312.M31.0A4` | | 6 | `YTHN-100.A0.531.M201.M04.N1,N2.Y3|BP-088.2312.M32.0A3` | | 7 | `YTHN-100.A0.531.M201.M04.N1.N2.Y3|BP-088.2312.M32.0A3` | | 8 | `YTHN-100.A0.531.Z121.M07.Y3|BP-088.2312.M07.0A3` | | 9 | `YTHN-100.A0.531.Z121.M08.Y3|BP-088.2312.M08.0A3` | --- **文档结束**