|
|
|
|
@ -0,0 +1,813 @@
|
|
|
|
|
# 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 新增/编辑规则
|
|
|
|
|
|
|
|
|
|
在弹出的规则表单中:
|
|
|
|
|
|
|
|
|
|
- 填写“规则名称”“呼叫类型编码”;
|
|
|
|
|
- 选择适用产线、工位/工序、班组(可选);
|
|
|
|
|
- 设置确认时限与解决时限(分钟);
|
|
|
|
|
- 设置默认优先级(1–5);
|
|
|
|
|
- 在“通知用户”中多选需要被通知的人员;
|
|
|
|
|
- 必要时在“备注”中约定高级策略(如取消其它派工、解决时限锚点等);
|
|
|
|
|
- 提交后,系统在新增时会自动设置默认值(优先级 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`:PL001(1号产线);
|
|
|
|
|
- `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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
> 本文档仅覆盖当前代码与前端页面实现范围。若后续扩展了安灯统计报表、自动升级策略、移动端推送等能力,可在本文件中增补相应章节。
|
|
|
|
|
|