DuplicateCodeDetectionActivity - 重码校验
概述
DuplicateCodeDetectionActivity 是一个 MES 专用的重码校验节点,用于在产品入站时检测产品序列号是否已在当前工序重复进站。该节点可防止同一产品在同一工序重复加工,确保生产数据的准确性。
基本信息
| 属性 | 值 |
|---|---|
| 显示名称 | 重码校验 |
| 类名 | DuplicateCodeDetectionActivity |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 基类 | InboundDetectionActivity |
| 分类 | 工序步骤 |
| 排序 | 16 |
| 发布 | 是 |
配置说明
该节点通过工艺配置和流程上下文变量进行控制,无需直接配置属性。
工艺配置
| 配置项 | 说明 |
|---|---|
| DuplicateCodeDetection | 正常生产时的重码检测开关 |
| DuplicateCodeDetectionOfInspection | 点检时的重码检测开关 |
输入变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| SerialNumber | FlowItemCollection.SerialNumber | string | 产品序列号 |
| ProductModel | FlowItemCollection.ProductModel | AssociationProductModel | 产品型号信息 |
| HasRepairMark | FlowItemCollection.HasRepairMark | bool | 是否为返修标记 |
| HasInspectionMark | FlowItemCollection.HasInspectionMark | bool | 是否为点检标记 |
输出变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| Inbound_ResultVariable_Value | FlowItemCollection.InboundResultValue | string | 入站结果(校验失败时) |
| Inbound_Description_Value | FlowItemCollection.InboundDescriptionValue | string | 入站异常描述(校验失败时) |
业务逻辑
执行流程
┌─────────────────────────────────────────────────────────────┐
│ DuplicateCodeDetectionActivity │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查功能是否启用 │
│ ├─ 点检模式 → 检查 DuplicateCodeDetectionOfInspection │
│ └─ 正常模式 → 检查 DuplicateCodeDetection │
├─────────────────────────────────────────────────────────────┤
│ 2. 检查是否为返修 │
│ └─ 返修产品 → 跳过校验 │
├─────────────────────────────────────────────────────────────┤
│ 3. 执行重码检测 │
│ ├─ 获取产品型号和序列号 │
│ ├─ 调用 IProductTraceChecker 服务 │
│ └─ 检查是否已在当前工序进站 │
├─────────────────────────────────────────────────────────────┤
│ 4. 处理检测结果 │
│ ├─ 通过 → 继续流程 │
│ └─ 失败 → 设置入站结果和异常描述 │
└─────────────────────────────────────────────────────────────┘
检测逻辑
-
功能启用检查
- 根据是否为点检模式选择对应的配置项
- 功能禁用时直接跳过检测
-
返修跳过
- 返修产品不进行重码检测
- 允许返修产品重复进站
-
重码检测
- 调用所有注册的
IProductTraceChecker服务 - 检查产品序列号是否已在当前工序存在追溯记录
- 任一检查器返回失败则整体失败
- 调用所有注册的
数据类型区分
| 模式 | TraceDataType | 说明 |
|---|---|---|
| 点检模式 | InspectionPoint | 点检数据 |
| 正常模式 | Normal | 正常生产数据 |
使用示例
典型入站流程
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│InboundInitialize │────▶│DuplicateCodeDetection│──▶│ProductStateDetection│
│ 入站初始化 │ │ 重码校验 │ │ 产品状态检测 │
└──────────────────┘ └──────────────────┘ └──────────────────┘
完整入站检测流程
┌──────────────────┐
│ InboundInitialize │
│ 入站初始化 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│DuplicateCodeDetection│
│ 重码校验 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ProductStateDetection│
│ 产品状态检测 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│MissingProcessDetection│
│ 漏工序检测 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ MaterialDetection │
│ 物料检测 │
└──────────────────┘
错误处理
| 错误场景 | 处理方式 |
|---|---|
| 重码检测失败 | 设置入站结果为"重复进站",记录异常原因 |
| 产品型号为空 | 跳过检测(无法执行) |
| 序列号为空 | 跳过检测(无法执行) |
异常原因配置
当检测到重码时,系统会:
- 从
IEntryResultProvider获取"重复进站"结果配置 - 从
IAbnormalCauseProvider获取异常原因模板 - 替换模板中的工序代码占位符
依赖服务
| 服务接口 | 说明 |
|---|---|
| IProductTraceChecker | 产品追溯检查服务,执行实际的重码检测 |
| IEntryResultProvider | 入站结果配置服务 |
| IAbnormalCauseProvider | 异常原因配置服务 |
注意事项
- 功能启用:需要在工艺配置中启用重码检测功能
- 返修处理:返修产品会自动跳过重码检测
- 点检模式:点检模式使用独立的配置项
- 检查器顺序:多个
IProductTraceChecker按注册顺序执行,任一失败则停止 - 追溯数据:检测基于追溯数据,确保追溯记录正确写入
- 性能考虑:大量追溯数据时注意查询性能
相关节点
- InboundDetectionActivity - 进站检测基类
- InboundInitializeActivity - 入站初始化节点
- ProductStateDetectionActivity - 产品状态检测节点