跳到主要内容
版本:Next

GenerateCodeActivity - 生成码

概述

GenerateCodeActivity 是一个 MES 专用的条码生成节点,用于在生产过程中根据配置的条码规则自动生成产品条码。该节点支持多种条码匹配方式,包括产品识别码匹配、指定条码规则和自动匹配当前产品等。

基本信息

属性
显示名称生成码
类名GenerateCodeActivity
命名空间CMS.Plugin.MesSuite.Activitys
基类ProcessBusinessActivity
分类工序步骤
排序7
发布

配置说明

该节点通过流程上下文变量进行配置,无需直接配置属性。

输入变量

变量名常量类型说明
GenerateCode_ProductVariable_ValueGenerateCodeProductVariableValuestring产品识别码,用于匹配条码规则
GenerateCode_CustomerNameVariable_ValueGenerateCodeCustomerNameVariableValuestring客户名称,用于筛选适用的条码规则
GenerateCode_BarcodeRuleGenerateCodeBarcodeRulestring指定的条码规则 ID(GUID 格式)

输出变量

变量名常量类型说明
GenerateCode_BarcodeVariable_ValueGenerateCodeBarcodeVariableValuestring生成的条码结果
GenerateCode_Description_ValueGenerateCodeDescriptionValuestring生成条码异常说明(失败时)

业务逻辑

执行流程

┌─────────────────────────────────────────────────────────────┐
│ GenerateCodeActivity │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查功能是否启用 │
│ └─ 工艺模型 GenerateCode != Enable → 返回禁用说明 │
├─────────────────────────────────────────────────────────────┤
│ 2. 确定条码规则(三种方式) │
│ ├─ 方式一:产品识别码匹配 │
│ │ └─ 根据识别码查找产品 → 匹配条码规则 │
│ ├─ 方式二:指定条码规则 │
│ │ └─ 直接使用配置的条码规则 ID │
│ └─ 方式三:自动匹配当前产品 │
│ └─ 从配方/工单/点检任务获取产品 → 匹配条码规则 │
├─────────────────────────────────────────────────────────────┤
│ 3. 生成条码 │
│ └─ 调用 IBarcodeProvider.GenerateAsync() │
├─────────────────────────────────────────────────────────────┤
│ 4. 输出结果 │
│ ├─ 成功 → 存储条码到上下文,缓存条码 │
│ └─ 失败 → 存储错误信息到上下文 │
└─────────────────────────────────────────────────────────────┘

条码规则匹配优先级

  1. 产品识别码匹配(最高优先级)

    • GenerateCode_ProductVariable_Value 有值时
    • 根据识别码查找产品型号
    • 结合工序和客户名称匹配条码规则
  2. 指定条码规则

    • GenerateCode_BarcodeRule 有值时
    • 直接使用指定的条码规则 ID
  3. 自动匹配当前产品(默认)

    • 从配方下发信息获取产品
    • 或从当前工序段的工单获取产品
    • 或从点检任务获取产品

产品获取逻辑

┌─────────────────────────────────────────────────────────────┐
│ 获取当前产品 │
├─────────────────────────────────────────────────────────────┤
│ 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条码缓存服务,缓存生成的条码

注意事项

  1. 功能启用:需要在工艺配置中启用生成码功能(GenerateCode = Enable)
  2. 条码规则配置:确保在条码管理模块中配置了正确的条码规则
  3. 产品关联:条码规则需要与产品型号正确关联
  4. 客户筛选:如果配置了客户名称,只会匹配该客户适用的条码规则
  5. 缓存机制:生成的条码会缓存 10 秒,用于重码检测
  6. 配方下发模式:配方下发方式为"工序识别产品时下发"时,不会自动获取产品

相关节点


最后更新时间: 2025-11-28