You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

814 lines
38 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Andon 系统文档
> 本文档针对 aucma-mes 项目中的安灯系统Andon从**项目文档**与**操作手册**两个维度进行说明,既帮助理解整体业务设计,也指导一线用户具体使用。
---
## 一、项目文档(业务与设计说明)
### 1.1 系统整体概述
安灯系统用于对生产现场的异常、需求等进行**呼叫、响应、处理和追踪**,构建从“发现问题”到“解决问题”的完整闭环。核心目标:
- **快速呼叫**:现场在工位/设备/系统中发起安灯呼叫;
- **规则驱动**:依据预先配置的安灯规则自动匹配处理要求;
- **自动派工/通知**:将事件自动派发给责任人或责任角色;
- **全过程留痕**:记录确认、开始处理、完成、取消等里程碑时间;
- **可视化看板**:通过安灯看板统一展示当前安灯状态和历史数据。
从实现上,安灯系统围绕以下几个核心领域模型展开:
- **AndonRule安灯规则配置**:定义不同呼叫类型在不同产线/工位/班组上的处理策略、时限和通知对象;
- **AndonEvent安灯事件**:每一次安灯呼叫形成的一条事件记录,是业务闭环的中心实体;
- **AndonEventAssignment安灯派工记录**:围绕事件派发给具体人员或角色的待办/任务;
- **AndonEventLog安灯事件日志**:记录与事件相关的所有关键操作,形成审计追踪;
- **AndonBoardConfig安灯看板配置**:配置各类安灯看板的产线/工位范围、展示字段及刷新策略。
上述模型在后端分别由对应的 Service 与 Mapper 实现,在前端对应以下页面:
- `views/production/andonRule/index.vue`:安灯规则配置;
- `views/production/andonEvent/index.vue`:安灯事件管理;
- `views/production/andonEventAssignment/index.vue`:安灯派工记录管理;
- `views/production/andonEventLog/index.vue`:安灯事件日志查询;
- `views/production/andonBoardConfig/index.vue`:安灯看板配置。
---
### 1.2 模块职责概览
#### 1.2.1 安灯规则配置AndonRule
**职责**
- 定义安灯呼叫类型及其适用范围(产线、工位/工序、班组、触发源类型等);
- 设置确认时限ACK Timeout和解决时限Resolve Timeout
- 定义默认优先级Priority
- 定义通知对象(具体用户列表、角色列表);
- 通过字段 `isFlag` 控制规则是否生效。
**典型字段(来自 AndonRule / AndonRuleMapper.xml**
- `ruleName`:规则名称;
- `callTypeCode`:呼叫类型编码;
- `productLineCode` / `stationCode` / `teamCode`:适用产线、工位、班组;
- `sourceType`:限定触发源类型(如工位、设备、报警、手动等);
- `ackTimeoutMin`:确认时限(分钟);
- `resolveTimeoutMin`:解决时限(分钟);
- `priorityDefault`:默认优先级;
- `notifyUsers`:通知用户 ID 列表(逗号分隔);
- `notifyRoles`:通知角色 Key 列表(逗号分隔,当前主要作为兜底);
- `remark`:扩展配置 JSON如派工模式、是否取消其他派工、解决时限锚点等
- `isFlag`:是否有效。
#### 1.2.2 安灯事件AndonEvent
**职责**
- 表示一条实际发生的安灯呼叫记录;
- 保存安灯发生环境(产线/工位/班组/工单/物料/设备等);
- 保存业务里程碑信息(确认时间、开始处理时间、完成时间等);
- 保存规则计算得到的截止时间和优先级;
- 通过状态字段反映事件生命周期(待处理、处理中、已解决、已取消等)。
**典型字段(来自 AndonEvent / AndonEventMapper.xml**
- 标识与基础信息:
- `eventId`:事件主键;
- `callCode`:安灯呼叫单号;
- `callTypeCode`:呼叫类型编码,对应规则的 `callTypeCode`
- 触发源与位置:
- `sourceType` / `sourceRefId`:触发源类型及引用 ID工位编码、设备编码、报警号等
- `productLineCode` / `stationCode` / `teamCode`:产线、工位、班组;
- `orderCode` / `materialCode` / `deviceId` / `deviceCode`:关联工单、物料、设备;
- 状态与优先级:
- `priority`:事件优先级,未设置时从规则 `priorityDefault` 继承;
- `eventStatus`事件状态PENDING/PROCESSING/RESOLVED/CANCELLED对应字典 `andon_event_status`
- 时间与里程碑:
- `ackBy` / `ackTime`:确认人及确认时间;
- `responseStartTime`:开始处理时间;
- `responseEndTime`:处理完成/解决时间;
- `ackDeadline`:系统计算的确认截止时间;
- `resolveDeadline`:系统计算的解决截止时间;
- `escalateLevel` / `escalateTime`:升级级别与时间(预留扩展);
- 其他:
- `description`:呼叫描述;
- `resolution`:解决/处理措施;
- `cancelReason`:取消原因;
- `isFlag` / `remark`:有效标记与备注。
在 Service 层(`AndonEventServiceImpl`)中,对新增/修改事件进行了规则匹配、时限计算以及状态变更的封装。
#### 1.2.3 安灯派工记录AndonEventAssignment
**职责**
- 表示围绕某个安灯事件创建的派工/待办记录;
- 记录任务被派给了谁(用户/角色/班组)、何时派工、接单与完成时间;
- 维护派工的状态(已派工、已接单、已完成、已取消、已拒绝等);
- 与事件状态联动,构成完整处理闭环。
**典型字段(来自 AndonEventAssignment / Mapper**
- `assignmentId`:派工记录主键;
- `eventId`:所属安灯事件;
- `assigneeUserId` / `assigneeUserName`:被分配用户信息;
- `assigneeRoleKey` / `assigneeTeamCode`:被分配角色与班组;
- `assignedTime`:派工时间;
- `acceptTime`:接单时间(在 Service 中根据状态自动补充);
- `finishTime`:完成时间(在 Service 中根据状态自动补充);
- `status`:派工状态(字典 `andon_status`
- `isFlag`:是否有效;
- `remark`:备注。
在 Service 层(`AndonEventAssignmentServiceImpl`)中,`updateAndonEventAssignment` 会根据派工状态自动:
- 补充自身接单/完成时间;
- 联动更新事件的开始处理时间、完成时间及状态;
- 写入对应的事件日志;
- 在配置允许时,自动取消同一事件下的其他并行派工。
#### 1.2.4 安灯事件日志AndonEventLog
**职责**
- 记录所有与安灯事件相关的关键操作,形成审计轨迹;
- 为事后追溯、责任划分和优化分析提供依据。
**典型字段:**
- `logId`:日志主键;
- `eventId`:关联事件;
- `operation`:操作类型(字典 `andon_operation`,如 CREATE、ASSIGN、ACK、RESOLVE、CANCEL 等);
- `content`:操作内容描述;
- `operatorUserId` / `operatorUserName`:操作人;
- `operationTime`:操作时间;
- `remark`:备注。
事件日志通常由后端 Service 自动写入:
- 事件创建/编辑/取消;
- 自动派工创建;
- 派工接单/完成/取消/拒绝;
- 自动取消其他派工等。
#### 1.2.5 安灯看板配置AndonBoardConfig
**职责**
- 为车间现场的安灯看板(大屏)提供配置;
- 指定看板关联产线/工位、展示字段、刷新周期等。
**典型字段:**
- `boardCode` / `boardName`:看板编码与名称;
- `productLineCode` / `stationCode`:关联产线与工位/工序;
- `displayFields`看板展示字段配置JSON 或约定字符串);
- `refreshIntervalSec`:刷新间隔(秒);
- `isFlag`:是否有效;
- `remark`:备注。
前端看板程序可根据 `boardCode` 读取配置,再按产线/工位范围实时拉取 AndonEvent 数据进行可视化展示。
---
### 1.3 业务流程说明(从呼叫到关闭的闭环)
#### 1.3.1 前置:配置安灯规则
1. 管理人员在“安灯规则配置”页面维护规则:
- 定义规则名称与呼叫类型编码;
- 选择适用的产线/工位/班组与触发源类型;
- 设置确认时限、解决时限与默认优先级;
- 选择通知用户(以及可选的通知角色);
- 启用(`isFlag = 1`)。
2. 后端通过 `AndonRuleMapper.selectAndonRuleList` 根据条件查询有效规则,为后续事件创建与派工提供基础。
#### 1.3.2 创建安灯事件AndonEvent
安灯事件可以由前端页面手工新增,也可以由外部系统/设备通过接口推送,后端统一通过 `AndonEventServiceImpl.insertAndonEvent` 处理:
1. 写入事件的 `createTime`
2. 调用 `applyRuleAndCompute(e, true)`
-`callTypeCode + isFlag` 从规则表拉取候选规则;
- 通过 `pickBestRule` 根据产线/工位/班组/触发源类型的匹配度选择最优规则;
- 若命中规则:
- 若事件未设置 `priority`,使用规则的 `priorityDefault`
- 根据规则的 `ackTimeoutMin` 计算确认截止时间 `ackDeadline`
- 根据规则的 `resolveTimeoutMin``remark.resAnchor` 计算解决截止时间 `resolveDeadline`
3. 调用 `andonEventMapper.insertAndonEvent` 入库;
4. 调用 `autoCreateAssignments(e)` 基于规则自动创建派工记录;
5. 写入一条 `CREATE` 类型的事件日志。
#### 1.3.3 自动派工AndonEventAssignment
`autoCreateAssignments` 的主要逻辑:
1. 再次根据事件信息匹配最佳规则;
2. 从规则的 `remark` 中解析派工模式与兜底策略:
- `mode``single`(单人)或 `multi`(多人),默认 `single`
- `fallback``role` 或 `none`,决定在没有用户或单人模式未创建成功时是否按角色兜底;
3. 优先依据 `notifyUsers` 创建派工:
- 对每个用户 ID 创建 `AndonEventAssignment`,状态初始为 ASSIGNED
- 单人模式下创建第一条后即停止;
4. 如未成功创建,且 `fallback = role`,则依据 `notifyRoles` 按角色创建派工;
5. 若成功创建至少一条派工,则写入一条 `ASSIGN` 类型的事件日志。
#### 1.3.4 派工状态与事件状态联动
当派工记录状态被修改(`AndonEventAssignmentServiceImpl.updateAndonEventAssignment`)时:
1. 派工自身里程碑时间维护:
- 若状态变更为 ACCEPTED 且 `acceptTime` 为空,则写入当前时间;
- 若状态变更为 DONE 且 `finishTime` 为空,则写入当前时间;
2. 事件联动:
- 若派工状态为 ACCEPTED
- 若事件 `responseStartTime` 为空,则写入当前时间;
- 事件状态设置为 PROCESSING
- 写入 `ACCEPT` 操作日志;
- 若派工状态为 DONE
- 若事件 `responseEndTime` 为空,则写入当前时间;
- 事件状态设置为 RESOLVED
- 写入 `RESOLVE` 操作日志;
- 根据规则策略 `cancelOthers` 可自动取消同一事件下其他未完成派工(状态置为 CANCELLED并写 `CANCEL_OTHERS` 日志);
- 若派工状态为 CANCELLED
- 写入 `CANCEL_ASSIGNMENT` 操作日志;
- 若派工状态为 REJECTED
- 写入 `REJECT` 操作日志。
#### 1.3.5 事件生命周期操作(确认/开始处理/完成/取消)
`AndonEventServiceImpl` 中提供了对事件基础生命周期的操作方法(同时前端也通过专用按钮调用):
1. `acknowledgeEvent`(确认事件):
- 记录确认人 `ackBy` 与确认时间 `ackTime`
- 将事件状态设置为 PROCESSING
- 写入 `ACK` 日志;
2. `startProcessEvent`(开始处理):
- 记录 `responseStartTime`
- 事件状态置为 PROCESSING
- 调用 `applyRuleAndCompute` 重新计算解决截止时间(以开始处理时间为锚点);
- 写入“开始处理”编辑日志;
3. `completeEvent`(完成事件):
- 记录 `responseEndTime``resolution`
- 事件状态置为 RESOLVED
- 写入 `RESOLVE` 日志;
4. `cancelEvent`(取消事件):
- 记录 `cancelReason`
- 事件状态置为 CANCELLED
- 级联调用 `cascadeCancelAssignments` 将该事件下所有派工置为 CANCELLED
- 写入 `CANCEL` 日志。
#### 1.3.6 日志与看板
- 日志AndonEventLog由各类 Service 方法在关键节点自动写入;
- 看板AndonBoardConfig前端根据配置定时拉取 AndonEvent 数据,在大屏展示当前安灯分布和状态。
---
### 1.4 关键扩展配置remark JSON
部分高级策略通过 `remark` 字段以 JSON 形式保存,例如:
```json
{
"mode": "single|multi",
"fallback": "role|none",
"cancelOthers": true,
"resAnchor": "start|ack|create"
}
```
含义说明:
- `mode`:派工模式
- `single`:单人模式,只创建一条派工记录;
- `multi`:多人模式,按照用户列表全部创建;
- `fallback`:兜底策略
- `role`:当 `notifyUsers` 为空或未成功创建时,退回按 `notifyRoles` 创建派工;
- `none`:不进行角色兜底;
- `cancelOthers`:是否在某条派工完成后自动取消同一事件下其他并行派工,默认 `true`
- `resAnchor`:解决时限起算锚点
- `start`:优先从 `responseStartTime` 起算,若为空则退回确认时间,再退回创建时间;
- `ack`:从确认时间起算,若为空则退回创建时间;
- `create`:直接从创建时间起算。
### 1.5 前后端代码逻辑概览
本节从“前端页面 → 前端 api → 后端 Controller → Service → Mapper/数据库”的角度,梳理各模块的主要调用链,方便开发、联调与排查问题。
#### 1.5.1 安灯事件AndonEvent调用链
**前端页面与 api**
- 页面:`views/production/andonEvent/index.vue`
- api`api/production/andonEvent.js`
- `listAndonEvent(query)``GET /production/andonEvent/list`
- `getAndonEvent(eventId)``GET /production/andonEvent/{eventId}`
- `addAndonEvent(data)``POST /production/andonEvent`
- `updateAndonEvent(data)``PUT /production/andonEvent`
- `delAndonEvent(eventId)``DELETE /production/andonEvent/{eventId}`
- `acknowledgeEvent(eventId)``POST /production/andonEvent/acknowledge/{eventId}`
- `startProcessEvent(eventId)``POST /production/andonEvent/startProcess/{eventId}`
- `completeEvent(eventId, resolution)``POST /production/andonEvent/complete/{eventId}``resolution` 通过查询参数传递;
- `cancelEvent(eventId, cancelReason)``POST /production/andonEvent/cancel/{eventId}``cancelReason` 通过查询参数传递。
**后端 Controller** `AndonEventController``/production/andonEvent`
- `list(AndonEvent andonEvent)`:查询事件列表,调用 `IAndonEventService.selectAndonEventList`,由 `AndonEventMapper.selectAndonEventList` 查询 `andon_event` 表;
- `add(AndonEvent andonEvent)`:新增事件,补全 `createBy`/`createTime` 后调用 `insertAndonEvent`
- `edit(AndonEvent andonEvent)`:修改事件,补全 `updateBy`/`updateTime` 后调用 `updateAndonEvent`
- `acknowledge(Long eventId)`:确认事件,调用 `acknowledgeEvent(eventId, getUsername())`
- `startProcess(Long eventId)`:开始处理,调用 `startProcessEvent(eventId, getUsername())`
- `complete(Long eventId, String resolution)`:完成事件,调用 `completeEvent(eventId, resolution, getUsername())`
- `cancel(Long eventId, String cancelReason)`:取消事件,调用 `cancelEvent(eventId, cancelReason, getUsername())`
**Service 关键逻辑:** `AndonEventServiceImpl`
- `insertAndonEvent`:执行规则匹配与时限计算(`applyRuleAndCompute`)→ 写入事件(`insertAndonEvent` Mapper→ 自动创建派工(`autoCreateAssignments`)→ 写入创建日志(`logEvent`
- `updateAndonEvent`:根据最新时间重算截止时间;如状态为取消则调用 `cascadeCancelAssignments` 级联取消派工,并写取消日志;
- `acknowledgeEvent` / `startProcessEvent` / `completeEvent` / `cancelEvent`:维护确认/开始处理/完成/取消相关字段与状态,调用 `AndonEventMapper.updateAndonEvent` 落库,并通过 `logEvent` 写入相应操作日志。
**调用链时序图示例(新增安灯事件):**
```mermaid
sequenceDiagram
participant U as 用户
participant V as AndonEvent 页面<br/>index.vue
participant A as andonEvent.js
participant C as AndonEventController
participant S as AndonEventServiceImpl
participant RM as AndonRuleMapper
participant EM as AndonEventMapper
participant AM as AndonEventAssignmentMapper
participant LM as AndonEventLogMapper
U->>V: 点击“新增”并提交安灯表单
V->>A: addAndonEvent(data)
A->>C: POST /production/andonEvent
C->>S: insertAndonEvent(andonEvent)
S->>RM: selectAndonRuleList(...)
RM-->>S: 返回候选规则
S->>S: applyRuleAndCompute(匹配规则并计算截止时间)
S->>EM: insertAndonEvent(写入 andon_event)
S->>AM: insertAndonEventAssignment(根据规则创建派工)
S->>LM: insertAndonEventLog(记录创建日志)
S-->>C: 返回插入结果
C-->>A: AjaxResult
A-->>V: 响应成功,刷新事件列表
```
#### 1.5.2 安灯规则AndonRule调用链
**前端页面与 api**
- 页面:`views/production/andonRule/index.vue`
- api`api/production/andonRule.js`
- `listAndonRule(query)``GET /production/andonRule/list`
- `getAndonRule(ruleId)``GET /production/andonRule/{ruleId}`
- `addAndonRule(data)``POST /production/andonRule`
- `updateAndonRule(data)``PUT /production/andonRule`
- `delAndonRule(ruleId)``DELETE /production/andonRule/{ruleId}`
- `getAndonRuleList(query)``GET /production/andonRule/getAndonRuleList`(安灯事件新增时用于加载规则下拉)
**后端 Service 与 Mapper**
- `IAndonRuleService` / `AndonRuleServiceImpl`:提供规则的增删改查能力;
- `AndonRuleMapper``AndonRuleMapper.xml`):与 `andon_rule` 表交互;
- 规则查询 `selectAndonRuleList``AndonEventServiceImpl.applyRuleAndCompute``autoCreateAssignments` 调用,用于为事件匹配最佳规则及派工策略。
#### 1.5.3 安灯派工记录AndonEventAssignment调用链
**前端页面与 api**
- 页面:`views/production/andonEventAssignment/index.vue`
- api`api/production/andonEventAssignment.js`
- `listAndonEventAssignment(query)``GET /production/andonEventAssignment/list`
- `getAndonEventAssignment(assignmentId)``GET /production/andonEventAssignment/{assignmentId}`
- `addAndonEventAssignment(data)``POST /production/andonEventAssignment`
- `updateAndonEventAssignment(data)``PUT /production/andonEventAssignment`
- `delAndonEventAssignment(assignmentId)``DELETE /production/andonEventAssignment/{assignmentId}`
- `getAndonEventAssignmentList(query)``GET /production/andonEventAssignment/getAndonEventAssignmentList`
**后端 Service 与 Mapper**
- `IAndonEventAssignmentService` / `AndonEventAssignmentServiceImpl`
- `insertAndonEventAssignment` 在自动派工或手工新增派工时调用,写入 `createTime` 后通过 `AndonEventAssignmentMapper.insertAndonEventAssignment` 持久化;
- `updateAndonEventAssignment` 根据派工状态自动补 `acceptTime` / `finishTime`,并通过 `AndonEventMapper` 联动更新事件的状态与时间里程碑,同时调用 `AndonEventLogMapper.insertAndonEventLog` 写日志;
- `AndonEventAssignmentMapper`:与 `andon_event_assignment` 表交互。
#### 1.5.4 安灯事件日志AndonEventLog调用链
**前端页面与 api**
- 页面:`views/production/andonEventLog/index.vue`
- api`api/production/andonEventLog.js`
- `listAndonEventLog(query)``GET /production/andonEventLog/list`
- `getAndonEventLog(logId)``GET /production/andonEventLog/{logId}`
- `addAndonEventLog(data)``POST /production/andonEventLog`
- `updateAndonEventLog(data)``PUT /production/andonEventLog`
- `delAndonEventLog(logId)``DELETE /production/andonEventLog/{logId}`
- `getAndonEventLogList(query)``GET /production/andonEventLog/getAndonEventLogList`
**后端 Service 与 Mapper**
- `IAndonEventLogService` / `AndonEventLogServiceImpl`:提供日志的增删改查;
- `AndonEventLogMapper`:与 `andon_event_log` 表交互;
- 实际业务中,大多由 `AndonEventServiceImpl`、`AndonEventAssignmentServiceImpl` 内部调用 `AndonEventLogMapper.insertAndonEventLog` 自动写入,不建议前端直接新增/修改。
#### 1.5.5 安灯看板配置AndonBoardConfig调用链
**前端页面与 api**
- 页面:`views/production/andonBoardConfig/index.vue`
- api`api/production/andonBoardConfig.js`
- `listAndonBoardConfig(query)``GET /production/andonBoardConfig/list`
- `getAndonBoardConfig(boardId)``GET /production/andonBoardConfig/{boardId}`
- `addAndonBoardConfig(data)``POST /production/andonBoardConfig`
- `updateAndonBoardConfig(data)``PUT /production/andonBoardConfig`
- `delAndonBoardConfig(boardId)``DELETE /production/andonBoardConfig/{boardId}`
- `getAndonBoardConfigList(query)``GET /production/andonBoardConfig/getAndonBoardConfigList`
**后端 Service 与 Mapper**
- `IAndonBoardConfigService` / `AndonBoardConfigServiceImpl`:看板配置的增删改查;
- `AndonBoardConfigMapper`:与 `andon_board_config` 表交互;
- 前端看板展示页可基于 `boardCode` 拉取对应配置,再结合 `AndonEvent` 列表做可视化展示。
---
## 二、操作手册(终端用户使用说明)
本章节面向车间一线操作人员、班组长、维修/质量/设备人员及生产管理人员,说明在各个前端页面上的具体操作方式和注意事项,并结合系统后台逻辑帮助理解业务闭环。
### 2.1 用户角色与使用边界(概览)
> 实际角色划分以项目实施时的权限配置为准,本节仅给出典型场景参考。
- **一线操作工**
- 在出现异常时发起安灯呼叫;
- 补充或更新呼叫描述信息。
- **班组长/线长**
- 维护本产线/班组相关的安灯规则;
- 跟踪本线的安灯事件进度,必要时协助调整处理优先级;
- 在特殊情况下取消不再需要处理的事件。
- **维修/质量/设备工程师**
- 作为安灯派工的接收者,接单并处理问题;
- 在系统中填写解决措施,完成派工与事件;
- **生产/质量管理人员**
- 通过事件列表、派工列表、日志和看板分析异常分布与响应效率;
- 调整规则和组织方式以持续优化。
---
### 2.2 安灯规则配置页面使用说明
对应前端:`views/production/andonRule/index.vue`
#### 2.2.1 页面结构
- **查询区域**
- 可按“规则名称”进行模糊查询;
- 其它高级条件(产线/工位/班组等)可按需要扩展使用;
- **列表区域**
- 展示规则名称、呼叫类型、适用范围、时限、默认优先级、通知对象等;
- 支持列显隐配置;
- **操作按钮**
- 新增:添加新的安灯规则;
- 修改:编辑选中规则;
- 删除:逻辑层面删除不再需要的规则(建议谨慎使用,优先通过 `isFlag` 失效)。
#### 2.2.2 新增/编辑规则
在弹出的规则表单中:
- 填写“规则名称”“呼叫类型编码”;
- 选择适用产线、工位/工序、班组(可选);
- 设置确认时限与解决时限(分钟);
- 设置默认优先级15
- 在“通知用户”中多选需要被通知的人员;
- 必要时在“备注”中约定高级策略(如取消其它派工、解决时限锚点等);
- 提交后,系统在新增时会自动设置默认值(优先级 3、确认 5 分钟、解决 30 分钟、`isFlag=1` 等)。
**建议:** 上线前先由工艺/设备/质量等相关部门共同评审规则配置,确保呼叫类型、适用范围和处理时限合理。
---
### 2.3 安灯事件页面使用说明
对应前端:`views/production/andonEvent/index.vue`
#### 2.3.1 查看与筛选安灯事件
- 在顶部查询区域,可按“安灯呼叫单号”等条件查询;
- 列表中可看到事件的呼叫类型、触发源类型、产线/工位/班组、工单号、设备、优先级、状态、各类时间节点等;
- 可通过右上角列配置按钮开启/关闭不关心的列,简化视图。
#### 2.3.2 新增安灯事件(手工发起呼叫)
点击“新增”,在弹窗中:
- 系统会自动给出一条默认的呼叫单号(如 `AD + 时间戳`),可直接使用;
- 选择“呼叫类型编码”:
- 下拉选项来自安灯规则列表(仅取有效规则);
- 推荐按实际业务场景选择对应类型;
- 选择“触发源类型”与“触发源引用”:
- 若是工位安灯:选择触发源类型为工位,并从下拉中选择具体工位;
- 若是设备安灯:选择触发源类型为设备,并选择设备台账中的设备;
- 报警/手动等类型可直接输入引用 ID
- 选择产线、工位/工序、班组(均为下拉框);
- 如有需要,可录入工单号、设备编码等辅助信息;
- 在“呼叫描述”中尽量详细描述问题现象和影响范围;
- 提交后:
- 系统将自动匹配规则并计算确认/解决截止时间与优先级;
- 自动生成相关派工记录;
- 写入事件创建日志。
#### 2.3.3 事件确认、完成与取消
在事件列表的“操作”列中,根据事件状态会显示不同按钮:
- **确认**(仅待处理状态显示):
- 点击后,系统记录当前用户为确认人,并写入确认时间;
- 事件状态变为“处理中”;
- 写入确认日志;
- **完成**(处理中状态显示):
- 点击后,在弹窗或表单中填写解决措施;
- 系统记录处理完成时间,将事件状态置为“已解决”;
- 写入解决日志;
- **取消**(待处理/处理中状态显示):
- 输入取消原因后提交;
- 事件状态变为“已取消”;
- 系统自动将该事件下所有派工记录状态改为“已取消”;
- 写入取消日志。
> 注意:安灯事件用于统计分析和追溯,**不建议删除事件**,如需终止处理,请使用“取消”功能。
---
### 2.4 安灯派工记录页面使用说明
对应前端:`views/production/andonEventAssignment/index.vue`
#### 2.4.1 查看派工记录
- 在查询区域可按“派工状态”等条件进行筛选;
- 列表中展示:被分配用户/角色/班组、派工时间、接单时间、完成时间、派工状态、是否有效等信息;
- 通过列控制可隐藏技术性较强的字段(如主键 ID 等),方便业务人员使用。
#### 2.4.2 修改派工状态
系统设计上,派工记录通常由后端根据规则自动创建,业务人员主要通过“修改状态”来反映实际执行情况:
- 选择一条或多条记录,点击“修改状态”;
- 在弹出的表单中:
- 选择事件(只读或下拉);
- 选择被分配用户(如有需要可调整);
- 查看接单时间、完成时间(由后端自动维护);
- 修改派工状态为:已派工、已接单、已完成、已取消、已拒绝等;
- 提交后,后端将自动补充对应的时间戳,并联动更新事件状态与里程碑时间,同时写入相应日志。
**不建议**在日常使用中删除派工记录,以免影响事件完整性和统计结果。在特殊需要删除时,应遵循项目管理规范执行。
---
### 2.5 安灯事件日志页面使用说明
对应前端:`views/production/andonEventLog/index.vue`
#### 2.5.1 查看日志
- 在查询区域可按“操作类型”筛选(如只看创建、派工、取消等);
- 列表中展示:事件 ID、操作类型、操作内容、操作人、操作时间等
- 可按时间排序,便于从时间轴维度审查某一事件的完整处理过程。
#### 2.5.2 使用建议
- 日志主要由系统后台自动记录,**通常无需人工新增或修改**
- 管理人员可在以下场景使用:
- 复盘重大停线/质量事故的处理过程;
- 检查某一次安灯是否按规定时限响应和完成;
- 分析不同班组/人员对安灯的响应习惯和效率。
---
### 2.6 安灯看板配置页面使用说明
对应前端:`views/production/andonBoardConfig/index.vue`
#### 2.6.1 查看与维护看板配置
- 列表中展示:看板编码、看板名称、产线、工位/工序、展示字段配置、刷新间隔、是否有效等;
- 可按看板编码或名称搜索特定看板配置。
#### 2.6.2 新增/编辑看板配置
在新增或编辑对话框中:
- 填写“看板编码”“看板名称”;
- 选择关联的产线和工位/工序;
- 设置“刷新间隔”(秒):
- 决定大屏从后端拉取数据的频率;
- 建议根据现场网络与数据量情况合理设置;
- 根据需求配置“展示字段配置”(如展示哪些时间、状态、优先级等);
- 设置“是否有效”为启用状态;
- 提交后,大屏应用即可根据新的配置进行展示。
---
### 2.7 典型业务使用场景小结
#### 场景一:上线前配置规则
- 由工艺/设备/质量/IT 等角色共同在“安灯规则配置”页面定义:
- 规则名称与呼叫类型;
- 适用产线/工位/班组;
- 确认与解决时限;
- 通知用户列表;
- 是否自动取消其他派工等策略。
#### 场景二:现场发起安灯
- 一线操作工或班组长根据现场情况,在“安灯事件”页面点击“新增”;
- 选择合适的呼叫类型与触发源,填写产线/工位/班组与问题描述;
- 提交后系统自动匹配规则和派工,不需要人工额外操作。
#### 场景三:责任人接单并处理
- 维修、质量等责任人员在“安灯派工记录”或“安灯事件”页面:
- 将派工状态改为“已接单”,开始实际处理;
- 在完成后改为“已完成”,并填写解决措施;
- 系统自动维护相关时间节点并更新事件状态。
#### 场景四:管理层监控与复盘
- 通过“安灯事件”页面查看当前和历史事件分布;
- 通过“安灯派工记录”分析不同责任人/班组的响应与处理情况;
- 通过“安灯事件日志”还原重要事件的全过程;
- 通过“安灯看板配置”与现场大屏,实时监控车间安灯整体健康状况。
---
### 2.8 参考案例1号产线设备故障安灯全流程
以下以“1号产线设备 A 停机故障”为例,从操作顺序和后台逻辑两个角度,串起完整安灯闭环:
#### 2.8.1 前置配置(由规则到页面)
1. 管理人员在“安灯规则配置”页面新增规则:
- `ruleName`1号产线-设备故障;
- `callTypeCode`DEVICE_FAULT
- `productLineCode`PL0011号产线
- `stationCode`:对应工位;
- `ackTimeoutMin`5 分钟,`resolveTimeoutMin`30 分钟;
- `priorityDefault`1最高优先级
- `notifyUsers`:选择维修工程师账号;
- `remark` 中可配置 `{"mode":"single","cancelOthers":true,"resAnchor":"start"}`
2. 前端保存规则时调用 `addAndonRule``POST /production/andonRule`
3. 后端 `AndonRuleServiceImpl.insertAndonRule` 将规则写入 `andon_rule` 表,后续事件创建时会按 `callTypeCode` + 产线/工位/班组匹配到该规则。
#### 2.8.2 现场发起安灯事件
1. 一线操作工在 1 号产线操作台发现设备 A 停机:
- 打开“安灯事件”页面,点击“新增”;
- 选择“呼叫类型编码DEVICE_FAULT”
- 触发源类型选“设备”,触发源引用选择设备 A
- 产线选择 PL001工位选择当前工位班组选择当前班组
- 在“呼叫描述”中填写“设备 A 突然停机,无法启动”;
- 提交表单。
2. 前端调用 `addAndonEvent``POST /production/andonEvent`,将表单数据作为 `AndonEvent` 传入后端;
3. 后端 `AndonEventController.add`
- 补全 `createBy = 当前登录用户`、`createTime = 当前时间`
- 调用 `AndonEventServiceImpl.insertAndonEvent`
4. `insertAndonEvent` 内部:
- 调用 `applyRuleAndCompute(andonEvent, true)`
- 根据 `callTypeCode=DEVICE_FAULT`、产线/工位/班组在 `andon_rule` 中筛选出候选规则;
- 通过 `pickBestRule` 按匹配度选择前面配置的“1号产线-设备故障”规则;
- 计算 `ackDeadline = createTime + 5 分钟`
- 计算 `resolveDeadline = (后续 start 时间 或 createTime+ 30 分钟`
- 若未手动设置优先级,则赋值为 `priorityDefault=1`
- 通过 `AndonEventMapper.insertAndonEvent` 写入 `andon_event` 表;
- 调用 `autoCreateAssignments(andonEvent)`
- 读取规则中的 `notifyUsers`,为维修工程师创建一条派工记录(状态 ASSIGNED`assignedTime` 为当前时间);
- 通过 `AndonEventAssignmentMapper.insertAndonEventAssignment` 写入 `andon_event_assignment` 表;
- 调用 `logEvent``andon_event_log` 记录一条“事件创建并完成规则计算与派工初始化”的日志。
#### 2.8.3 责任人接单与处理
1. 维修工程师在系统中查看“安灯派工记录”页面:
- 筛选派工状态为“已派工”;
- 看到自己被分配到的“设备 A 故障”记录;
2. 维修工程师点击“修改”/“修改状态”,将派工状态改为“已接单”:
- 前端调用 `updateAndonEventAssignment``PUT /production/andonEventAssignment`
- 后端 `AndonEventAssignmentServiceImpl.updateAndonEventAssignment`
- 补全 `acceptTime = 当前时间`
- 根据 `eventId` 读取对应 `AndonEvent`,若 `responseStartTime` 为空则补为当前时间;
- 将事件状态置为 PROCESSING
- 更新 `andon_event``andon_event_assignment`,并写入一条“派工已接受,事件进入处理中”的日志;
3. 维修工程师处理完成后,再次修改派工状态为“已完成”:
- 前端仍然调用 `updateAndonEventAssignment`
- `updateAndonEventAssignment`
- 补全 `finishTime = 当前时间`
- 若事件 `responseEndTime` 为空则补为当前时间,将事件状态置为 RESOLVED
- 按规则中 `cancelOthers=true`,自动取消同一事件下其他未完成派工(如有);
- 写入“派工已完成,事件标记已解决”以及“策略要求取消该事件的其他并行派工”的日志。
> 也可以由班组长在“安灯事件”页面直接对该事件点击“完成”,前端调用 `completeEvent` 接口,后端 `AndonEventServiceImpl.completeEvent` 会记录 `responseEndTime`、`resolution` 并将事件状态置为 RESOLVED同样写入解决日志。
#### 2.8.4 管理层查看与复盘
1. 生产管理在“安灯事件”页面按时间、产线、呼叫类型筛选,可看到该次设备故障安灯的:
- 呼叫单号、产线/工位、设备、班组;
- 优先级、当前状态;
- 确认时间、开始处理时间、完成时间;
- 确认/解决截止时间是否被超时等;
2. 在“安灯事件日志”页面按事件 ID 查询,可看到完整的日志链:
- 事件创建;
- 自动派工;
- 派工被接受;
- 派工完成及自动取消其他派工(若有);
3. 在现场安灯看板上,对应 1 号产线的大屏会按配置展示:
- 当前正在处理或已超时的安灯事件;
- 该设备故障事件在处理期间会以高优先级标记,以便管理者快速关注。
通过上述案例,可以看到:
- 业务人员仅需按实际情况在前端页面完成“配置规则 → 发起安灯 → 接单处理 → 填写结果”等操作;
- 系统自动完成规则命中、时限计算、派工生成、状态联动和日志记录;
- 管理层可以通过事件列表、派工记录、日志和看板对一次安灯从呼叫到解决的全过程进行追踪与复盘。
---
### 2.9 安灯业务流程总览(流程图)
本节通过一张整体流程图,展示安灯从**规则配置 → 现场呼叫 → 系统匹配规则与派工 → 接单处理 → 完成/取消 → 日志与看板**的闭环过程。若使用支持 Mermaid 的 Markdown 查看器(如 VSCode 对应扩展、部分 Git 平台),下方代码块会直接渲染为流程图。
```mermaid
flowchart LR
subgraph PRE[规则与基础配置]
RCFG[安灯规则配置<br/>AndonRule] -->|保存规则| RDB[(andon_rule)]
BCFG[安灯看板配置<br/>AndonBoardConfig] --> BDB[(andon_board_config)]
end
subgraph CALL[现场呼叫]
OP[一线操作工/班组长] -->|点击“新增安灯”或外部系统触发| FEV[前端安灯事件页面<br/>andonEvent/index.vue]
FEV -->|addAndonEvent| API[/api/production/andonEvent.js/]
API --> CTRL[AndonEventController]
end
CTRL -->|insertAndonEvent| SVC[AndonEventServiceImpl]
subgraph RULE[规则匹配与时限计算]
SVC -->|selectAndonRuleList| RDB
RDB --> SVC
SVC -->|applyRuleAndCompute<br/>计算确认/解决时限、优先级| SVC
end
subgraph EVENTDB[事件与派工落库]
SVC -->|insertAndonEvent| EDB[(andon_event)]
SVC -->|autoCreateAssignments| ADB[(andon_event_assignment)]
SVC -->|logEvent(CREATE/ASSIGN)| LDB[(andon_event_log)]
end
subgraph EXEC[接单与处理]
RSP[维修/质量/设备人员] -->|在派工页面查看并“接单/完成”| FAS[前端派工页面<br/>andonEventAssignment/index.vue]
FAS -->|updateAndonEventAssignment| AAPI[/api/production/andonEventAssignment.js/]
AAPI --> ASVC[AndonEventAssignmentServiceImpl]
ASVC --> ADB
ASVC --> EDB
ASVC -->|logEvent(ACCEPT/RESOLVE/CANCEL_OTHERS)| LDB
end
subgraph LIFECYCLE[事件生命周期操作]
MGR[班组长/管理人员] -->|确认/开始处理/完成/取消| FEV2[安灯事件页面操作按钮]
FEV2 -->|acknowledgeEvent/startProcessEvent/completeEvent/cancelEvent| API2[/api/production/andonEvent.js/]
API2 --> CTRL2[AndonEventController]
CTRL2 --> SVC2[AndonEventServiceImpl]
SVC2 --> EDB
SVC2 -->|logEvent(ACK/RESOLVE/CANCEL)| LDB
end
subgraph VIEW[查看与复盘]
MGR2[管理层/分析人员] --> EVLIST[安灯事件列表页]
MGR2 --> ASSLIST[派工记录页]
MGR2 --> LOGPAGE[事件日志页]
MGR2 --> BOARD[现场安灯看板]
EVLIST -->|查询/统计| EDB
ASSLIST --> ADB
LOGPAGE --> LDB
BOARD -->|读看板配置| BDB
BOARD -->|拉取安灯事件数据| EDB
end
PRE --> CALL
EVENTDB --> EXEC
EVENTDB --> LIFECYCLE
EXEC --> VIEW
LIFECYCLE --> VIEW
```
---
> 本文档仅覆盖当前代码与前端页面实现范围。若后续扩展了安灯统计报表、自动升级策略、移动端推送等能力,可在本文件中增补相应章节。