跳到主要内容
版本:Next

DuplicateCodeDetectionActivity - 重码校验

概述

DuplicateCodeDetectionActivity 是一个 MES 专用的重码校验节点,用于在产品入站时检测产品序列号是否已在当前工序重复进站。该节点可防止同一产品在同一工序重复加工,确保生产数据的准确性。

基本信息

属性
显示名称重码校验
类名DuplicateCodeDetectionActivity
命名空间CMS.Plugin.MesSuite.Activitys
基类InboundDetectionActivity
分类工序步骤
排序16
发布

配置说明

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

工艺配置

配置项说明
DuplicateCodeDetection正常生产时的重码检测开关
DuplicateCodeDetectionOfInspection点检时的重码检测开关

输入变量

变量名常量类型说明
SerialNumberFlowItemCollection.SerialNumberstring产品序列号
ProductModelFlowItemCollection.ProductModelAssociationProductModel产品型号信息
HasRepairMarkFlowItemCollection.HasRepairMarkbool是否为返修标记
HasInspectionMarkFlowItemCollection.HasInspectionMarkbool是否为点检标记

输出变量

变量名常量类型说明
Inbound_ResultVariable_ValueFlowItemCollection.InboundResultValuestring入站结果(校验失败时)
Inbound_Description_ValueFlowItemCollection.InboundDescriptionValuestring入站异常描述(校验失败时)

业务逻辑

执行流程

┌─────────────────────────────────────────────────────────────┐
│ DuplicateCodeDetectionActivity │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查功能是否启用 │
│ ├─ 点检模式 → 检查 DuplicateCodeDetectionOfInspection │
│ └─ 正常模式 → 检查 DuplicateCodeDetection │
├─────────────────────────────────────────────────────────────┤
│ 2. 检查是否为返修 │
│ └─ 返修产品 → 跳过校验 │
├─────────────────────────────────────────────────────────────┤
│ 3. 执行重码检测 │
│ ├─ 获取产品型号和序列号 │
│ ├─ 调用 IProductTraceChecker 服务 │
│ └─ 检查是否已在当前工序进站 │
├─────────────────────────────────────────────────────────────┤
│ 4. 处理检测结果 │
│ ├─ 通过 → 继续流程 │
│ └─ 失败 → 设置入站结果和异常描述 │
└─────────────────────────────────────────────────────────────┘

检测逻辑

  1. 功能启用检查

    • 根据是否为点检模式选择对应的配置项
    • 功能禁用时直接跳过检测
  2. 返修跳过

    • 返修产品不进行重码检测
    • 允许返修产品重复进站
  3. 重码检测

    • 调用所有注册的 IProductTraceChecker 服务
    • 检查产品序列号是否已在当前工序存在追溯记录
    • 任一检查器返回失败则整体失败

数据类型区分

模式TraceDataType说明
点检模式InspectionPoint点检数据
正常模式Normal正常生产数据

使用示例

典型入站流程

┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐
│InboundInitialize │────▶│DuplicateCodeDetection│──▶│ProductStateDetection│
│ 入站初始化 │ │ 重码校验 │ │ 产品状态检测 │
└──────────────────┘ └──────────────────┘ └──────────────────┘

完整入站检测流程

┌──────────────────┐
│ InboundInitialize │
│ 入站初始化 │
└────────┬─────────┘


┌──────────────────┐
│DuplicateCodeDetection│
│ 重码校验 │
└────────┬─────────┘


┌──────────────────┐
│ProductStateDetection│
│ 产品状态检测 │
└────────┬─────────┘


┌──────────────────┐
│MissingProcessDetection│
│ 漏工序检测 │
└────────┬─────────┘


┌──────────────────┐
│ MaterialDetection │
│ 物料检测 │
└──────────────────┘

错误处理

错误场景处理方式
重码检测失败设置入站结果为"重复进站",记录异常原因
产品型号为空跳过检测(无法执行)
序列号为空跳过检测(无法执行)

异常原因配置

当检测到重码时,系统会:

  1. IEntryResultProvider 获取"重复进站"结果配置
  2. IAbnormalCauseProvider 获取异常原因模板
  3. 替换模板中的工序代码占位符

依赖服务

服务接口说明
IProductTraceChecker产品追溯检查服务,执行实际的重码检测
IEntryResultProvider入站结果配置服务
IAbnormalCauseProvider异常原因配置服务

注意事项

  1. 功能启用:需要在工艺配置中启用重码检测功能
  2. 返修处理:返修产品会自动跳过重码检测
  3. 点检模式:点检模式使用独立的配置项
  4. 检查器顺序:多个 IProductTraceChecker 按注册顺序执行,任一失败则停止
  5. 追溯数据:检测基于追溯数据,确保追溯记录正确写入
  6. 性能考虑:大量追溯数据时注意查询性能

相关节点


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