跳到主要内容
版本:Next

MaterialUsageRecordActivity - 物料使用记录

概述

MaterialUsageRecordActivity 是一个 MES 专用的物料使用记录节点,用于在产品出站时记录物料使用情况并执行物料扣减。该节点基于追溯数据中的物料参数,自动扣减对应的物料库存。

基本信息

属性
显示名称物料使用记录
类名MaterialUsageRecordActivity
命名空间CMS.Plugin.MesSuite.Activitys
基类ActionActivity
分类工序步骤
排序29
发布

配置说明

配置属性

属性名显示名称类型默认值说明
ExecuteImmediately是否立即执行boolfalse是否同步执行扣减,false 时异步执行

输入变量

变量名常量类型说明
ApplicationDataFlowItemCollection.ApplicationDataProcessModel工艺模型
ProductModelFlowItemCollection.ProductModelAssociationProductModel产品型号
TraceModelFlowItemCollection.TraceModelTraceModel追溯模型
ParameterCollectDataFlowItemCollection.ParameterCollectDataIReadOnlyDictionary参数采集数据

业务逻辑

执行流程

┌─────────────────────────────────────────────────────────────┐
│ MaterialUsageRecordActivity │
├─────────────────────────────────────────────────────────────┤
│ ExecuteActionAsync - 执行阶段 │
│ ├─ 获取工艺模型、产品模型、追溯模型 │
│ ├─ 验证必要数据是否存在 │
│ └─ 执行物料扣减 │
│ ├─ ExecuteImmediately = true → 同步执行 │
│ └─ ExecuteImmediately = false → 异步执行 │
├─────────────────────────────────────────────────────────────┤
│ DecreaseMaterialAsync - 扣减处理 │
│ ├─ 遍历工艺配置的物料参数 │
│ ├─ 从追溯数据获取物料条码 │
│ ├─ 检查是否有独立的扣减流程 │
│ │ └─ 有触发信号配置 → 跳过(由扣减流程处理) │
│ ├─ 获取使用量(设备模式时从参数读取) │
│ └─ 调用物料服务执行扣减 │
└─────────────────────────────────────────────────────────────┘

扣减逻辑

  1. 遍历物料参数

    • 从工艺配置的 MaterialParameters 获取物料列表
    • 跳过名称为空的物料
  2. 获取物料条码

    • 从追溯模型的 MaterialParams 中获取对应物料的条码
  3. 检查扣减流程

    • 如果工序配置了独立的物料扣减流程(Type = 10008)
    • 且物料配置了触发信号,则跳过(由 MaterialDeductionActivity 处理)
  4. 获取使用量

    • 设备模式:从参数采集数据中读取使用量变量
    • 其他模式:使用系统默认用量
  5. 执行扣减

    • 调用 IMaterialProvider.DeductionAsync 执行扣减

执行模式

模式说明
同步执行ExecuteImmediately = true,等待扣减完成后继续流程
异步执行ExecuteImmediately = false,后台执行扣减,不阻塞流程

使用示例

基本配置

{
"Name": "物料使用记录",
"Type": "MaterialUsageRecordActivity",
"ExecuteImmediately": false
}

同步执行配置

{
"Name": "物料使用记录",
"Type": "MaterialUsageRecordActivity",
"ExecuteImmediately": true
}

典型出站流程

┌──────────────────┐
│OutboundInitialize│
│ 出站初始化 │
└────────┬─────────┘


┌──────────────────┐
│QualificationJudgment│
│ 质量判定 │
└────────┬─────────┘


┌──────────────────┐
│ParameterCollect │
│ 参数采集 │
└────────┬─────────┘


┌──────────────────┐
│ 追溯记录保存 │
└────────┬─────────┘


┌──────────────────┐
│MaterialUsageRecordActivity│ ← 物料使用记录
│ 物料使用记录 │
└──────────────────┘

与物料扣减流程的配合

┌─────────────────────────────────────────────────────────────┐
│ 物料扣减方式选择 │
├─────────────────────────────────────────────────────────────┤
│ 方式一:实时扣减(MaterialDeductionActivity) │
│ ├─ 配置扣减触发信号 │
│ ├─ 实时监听信号变化 │
│ └─ 立即执行扣减 │
├─────────────────────────────────────────────────────────────┤
│ 方式二:出站扣减(MaterialUsageRecordActivity) │
│ ├─ 不配置扣减触发信号 │
│ ├─ 在出站时统一扣减 │
│ └─ 基于追溯数据扣减 │
└─────────────────────────────────────────────────────────────┘

错误处理

错误场景处理方式
工艺模型为空不执行扣减
产品模型为空不执行扣减
追溯模型为空不执行扣减
扣减异常记录错误日志,不中断流程

依赖服务

服务接口说明
IMaterialProvider物料服务,执行扣减操作

注意事项

  1. 数据依赖:需要工艺模型、产品模型和追溯模型都存在才会执行
  2. 执行时机:通常在追溯记录保存之后执行
  3. 扣减冲突:如果物料配置了触发信号,会跳过(避免重复扣减)
  4. 异步执行:默认异步执行,不会阻塞出站流程
  5. 错误处理:扣减异常不会中断流程,只记录日志
  6. 追溯数据:物料条码从追溯数据中获取

相关节点


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