GenerateCodeActivity - 生成码
概述
GenerateCodeActivity 是一个 MES 专用的条码生成节点,用于在生产过程中根据配置的条码规则自动生成产品条码。该节点支持多种条码匹配方式,包括产品识别码匹配、指定条码规则和自动匹配当前产品等。
基本信息
| 属性 | 值 |
|---|---|
| 显示名称 | 生成码 |
| 类名 | GenerateCodeActivity |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 基类 | ProcessBusinessActivity |
| 分类 | 工序步骤 |
| 排序 | 7 |
| 发布 | 是 |
配置说明
该节点通过流程上下文变量进行配置,无需直接配置属性。
输入变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| GenerateCode_ProductVariable_Value | GenerateCodeProductVariableValue | string | 产品识别码,用于匹配条码规则 |
| GenerateCode_CustomerNameVariable_Value | GenerateCodeCustomerNameVariableValue | string | 客户名称,用于筛选适用的条码规则 |
| GenerateCode_BarcodeRule | GenerateCodeBarcodeRule | string | 指定的条码规则 ID(GUID 格式) |
输出变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| GenerateCode_BarcodeVariable_Value | GenerateCodeBarcodeVariableValue | string | 生成的条码结果 |
| GenerateCode_Description_Value | GenerateCodeDescriptionValue | string | 生成条码异常说明(失败时) |
业务逻辑
执行流程
┌─────────────────────────────────────────────────────────────┐
│ GenerateCodeActivity │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查功能是否启用 │
│ └─ 工艺模型 GenerateCode != Enable → 返回禁用说明 │
├─────────────────────────────────────────────────────────────┤
│ 2. 确定条码规则(三种方式) │
│ ├─ 方式一:产品识别码匹配 │
│ │ └─ 根据识别码查找产品 → 匹配条码规则 │
│ ├─ 方式二:指定条码规则 │
│ │ └─ 直接使用配置的条码规则 ID │
│ └─ 方式三:自动匹配当前产品 │
│ └─ 从配方/工单/点检任务获取产品 → 匹配条码规则 │
├─────────────────────────────────────────────────────────────┤
│ 3. 生成条码 │
│ └─ 调用 IBarcodeProvider.GenerateAsync() │
├─────────────────────────────────────────────────────────────┤
│ 4. 输出结果 │
│ ├─ 成功 → 存储条码到上下文,缓存条码 │
│ └─ 失败 → 存储错误信息到上下文 │
└─────────────────────────────────────────────────────────────┘
条码规则匹配优先级
-
产品识别码匹配(最高优先级)
- 当
GenerateCode_ProductVariable_Value有值时 - 根据识别码查找产品型号
- 结合工序和客户名称匹配条码规则
- 当
-
指定条码规则
- 当
GenerateCode_BarcodeRule有 值时 - 直接使用指定的条码规则 ID
- 当
-
自动匹配当前产品(默认)
- 从配方下发信息获取产品
- 或从当前工序段的工单获取产品
- 或从点检任务获取产品
产品获取逻辑
┌─────────────────────────────────────────────────────────────┐
│ 获取当前产品 │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查配方下发方式 │
│ └─ 模式2(工序识别产品时下发)→ 返回 null │
├─────────────────────────────────────────────────────────────┤
│ 2. 从配方下发信息获取 │
│ └─ 有配方信息 → 返回产品 │
├─────────────────────────────────────────────────────────────┤
│ 3. 从工单获取 │
│ └─ 查询当前工序段的生产工单 → 返回产品 │
├─────────────────────────────────────────────────────────────┤
│ 4. 从点检任务获取 │
│ └─ 存在点检任务 → 返回点检任务中的产品 │
└────────────────────────────────────────────────── ───────────┘
使用示例
基本流程配置
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ InboundInitialize │────▶│ GenerateCodeActivity│────▶│ PrintLabelActivity│
│ 入站初始化 │ │ 生成条码 │ │ 打印标签 │
└──────────────────┘ └──────────────────┘ └──────────────────┘
使用产品识别码匹配
{
"Activities": [
{
"Name": "设置产品识别码",
"Type": "VariableWriteActivity",
"VariableName": "GenerateCode_ProductVariable_Value",
"VariableValue": "PROD-001"
},
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
}
]
}
指定条码规则
{
"Activities": [
{
"Name": "设置条码规则",
"Type": "VariableWriteActivity",
"VariableName": "GenerateCode_BarcodeRule",
"VariableValue": "550e8400-e29b-41d4-a716-446655440000"
},
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
}
]
}
指定客户名称
{
"Activities": [
{
"Name": "设置客户",
"Type": "VariableWriteActivity",
"VariableName": "GenerateCode_CustomerNameVariable_Value",
"VariableValue": "客户A"
},
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
}
]
}
获取生成结果
{
"Activities": [
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
},
{
"Name": "读取条码",
"Type": "VariableReadActivity",
"VariableName": "GenerateCode_BarcodeVariable_Value"
}
]
}
错误处理
| 错误场景 | 错误信息 | 处理建议 |
|---|---|---|
| 功能未启用 | 生成码禁用 | 在工艺配置中启用生成码功能 |
| 产品识别码无效 | 条码生成失败:{识别码} 找不到对应产品型号 | 检查产品识别码是否正确 |
| 条码规则格式错误 | 条码生成失败:{规则} 条码规则格式不匹配 | 确保条码规则为有效的 GUID |
| 未找到产品 | 条码生成失败:未找到产品型号 | 确保有有效的工单或配方下发 |
| 条码规则为空 | 条码生成失败:生成条码规则不能为空 | 配置条码规则或确保产品有关联的条码规则 |
| 生成失败 | 条码生成失败:{结果}, {错误信息} | 检查条码规则配置和序列号状态 |
依赖服务
| 服务接口 | 说明 |
|---|---|
| IBarcodeProvider | 条码生成服务,提供条码规则匹配和生成功能 |
| IProductProvider | 产品服务,根据 识别码查找产品 |
| IOrderProvider | 工单服务,获取当前工序段的生产工单 |
| ISettingProvider | 配置服务,获取配方下发方式设置 |
| LmesGenerateCodeCache | 条码缓存服务,缓存生成的条码 |
注意事项
- 功能启用:需要在工艺配置中启用生成码功能(GenerateCode = Enable)
- 条码规则配置:确保在条码管理模块中配置了正确的条码规则
- 产品关联:条码规则需要与产品型号正确关联
- 客户筛选:如果配置了客户名称,只会匹配该客户适用的条码规则
- 缓存机制:生成的条码会缓存 10 秒,用于重码检测
- 配方下发模式:配方下发方式为"工序识别产品时下发"时,不会自动获取产品
相关节点
- ProcessBusinessActivity - 工序业务活动基类
- DuplicateCodeDetectionActivity - 重码检测节点
- PrintLabelActivity - 标签打印节点
- InboundInitializeActivity - 入站初始化节点
最后更新时间: 2025-11-28