MaterialAssociationActivity - 物料码关联查询
概述
MaterialAssociationActivity 是一个 MES 专用的物料码关联查询节点,用于根据物料条码查询关联的产品序列号。该节点通过配置的物料关联规则,在追溯数据中查找物料条码对应的产品码,实现物料与产品的关联追溯。
基本信息
| 属性 | 值 |
|---|---|
| 显示名称 | 物料码关联查询 |
| 类名 | MaterialAssociationActivity |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 基类 | ProcessBusinessActivity |
| 分类 | 工序步骤 |
| 排序 | 13 |
| 发布 | 是 |
配置说明
该节点通过系统配置和流程上下文变量进行控制。
系统配置
| 配置项 | 说明 |
|---|---|
| MaterialAssociationConfig | 物料关联配置列表 |
物料关联配置(MaterialAssociationConfig)
| 字段 | 说明 |
|---|---|
| WorkSectionCode | 工序编号 |
| WorkSectionId | 工序标识 |
| MaterialName | 物料名称 |
| MaterialKey | 物料参数键 |
输入变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| MaterialCode | FlowItemCollection.MaterialCode | string | 待查询的物料条码 |
| OrderModel | FlowItemCollection.OrderModel | OrderModel | 工单模型(可选) |
| ProductModel | FlowItemCollection.ProductModel | AssociationProductModel | 产品型号(可选) |
输出变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| SerialNumber | FlowItemCollection.SerialNumber | string | 关联的产品序列号 |
| MaterialCodeAssociationDescriptionValue | FlowItemCollection.MaterialCodeAssociationDescriptionValue | string | 查询结果说明 |
业务逻辑
执行流程
┌─────────────────────────────────────────────────────────────┐
│ MaterialAssociationActivity │
├─────────────────────────────────────────────────────────────┤
│ EnterAsync - 初始化阶段 │
│ └─ 设置关联描述 = "未初始化" │
├─────────────────────────────────────────────────────────────┤
│ ProcessAsync - 处理阶段 │
│ ├─ 获取物料码 │
│ │ └─ 为空 → 返回"物料码获取失败" │
│ ├ ─ 获取物料关联配置 │
│ │ └─ 未配置 → 返回"物料产品关联工序未配置" │
│ ├─ 获取工艺路线 │
│ ├─ 遍历关联配置查询产品码 │
│ │ ├─ 检查工序是否在工艺路线中 │
│ │ └─ 调用追溯服务查询关联产品码 │
│ └─ 设置查询结果 │
│ ├─ 找到 → 设置 SerialNumber │
│ └─ 未找到 → 设置异常描述 │
└─────────────────────────────────────────────────────────────┘
查询逻辑
-
配置验证
- 检查物料关联配置是否存在
- 验证配置中的工序标识是否有效
-
工艺路线过滤
- 获取当前产品的工艺路线
- 只在工艺路线包含的工序中查询
-
关联查询
- 遍历物料关联配置
- 调用
IProductTraceChecker.GetSerialNumber查询 - 找到第一个匹配的产品码即返回
使用示例
基本流程配置
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 扫描物料条码 │────▶│MaterialAssociation│────▶│InboundInitialize │
│ │ │ 物料码关联查询 │ │ 进站初始化 │
└──────────────────┘ └──────────────────┘ └──────────────────┘
设置物料码
{
"Activities": [
{
"Name": "读取物料码",
"Type": "VariableReadActivity",
"VariableName": "MaterialCode"
},
{
"Name": "物料码关联查询",
"Type": "MaterialAssociationActivity"
},
{
"Name": "检查查询结果",
"Type": "ConditionActivity",
"Condition": "SerialNumber != null && SerialNumber != ''"
}
]
}
典型应用场景
┌──────────────────┐
│ 扫描物料条码 │
│ 设置 MaterialCode │
└────────┬─────────┘
│
▼
┌──────────────────┐
│MaterialAssociation│ ← 根据物料码查询产品码
│ 物料码关联查询 │
└────────┬─────────┘
│ 设置 SerialNumber
▼
┌──────────────────┐
│InboundInitialize │ ← 使用查询到的产品码进站
│ 进站初始化 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 后续入站检测 │
└──────────────────┘
物料关联配置示例
{
"MaterialAssociationConfig": [
{
"WorkSectionCode": "WS001",
"WorkSectionId": "550e8400-e29b-41d4-a716-446655440001",
"MaterialName": "主板",
"MaterialKey": "MainBoard"
},
{
"WorkSectionCode": "WS002",
"WorkSectionId": "550e8400-e29b-41d4-a716-446655440002",
"MaterialName": "电池",
"MaterialKey": "Battery"
}
]
}
错误处理
| 错误场景 | 描述值 | 说明 |
|---|---|---|
| 物料码为空 | 物料码获取失败 | 输入的物料码为空 |
| 配置未设置 | 物料产品关联工序未配置 | 系统未配置物料关联规则 |
| 查询异常 | 异常信息 | 查询过程发生异常 |
| 未找到关联 | 物料码未绑定产品码 | 物料码在追溯数据中无关联产品 |
依赖服务
| 服务接口 | 说明 |
|---|---|
| ISettingManager | 配置管理服务,获取物料关联配置 |
| IProductTraceChecker | 产品追溯检查服务,查询关联产品码 |
| IProcessRouteProvider | 工艺路线服务,获取产品工艺路线 |
| IAbnormalCauseProvider | 异常原因配置服务 |
注意事项
- 配置必需:需要在系统配置中设置物料关联规则
- 工艺路线过滤:只在产品工艺路线包含的工序中查询
- 首次匹配:找到第一个匹配的产品码即返回
- 追溯数据依赖:查询基于已有的追溯数据
- 异常处理:查询异常会被捕获并记录到描述变量
- 与入站配合:通常在入站初始化之前使用
相关节点
- ProcessBusinessActivity - 工序业务活动基类
- MaterialDetectionActivity - 物料检测节点
- InboundInitializeActivity - 入站初始化节点
- TrayAssociationActivity - 托盘关联节点
最后更新时间: 2025-11-28