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.

1655 lines
62 KiB
Markdown

# 安灯管理系统文档
> 本文档针对 aucma-mes 项目中的安灯系统Andon从**项目文档**与**操作手册**两个维度进行说明,既帮助理解整体业务设计,也指导一线用户具体使用。
---
## 一、项目文档(业务与设计说明)
### 1.1 系统整体概述
安灯系统用于对生产现场的异常、需求等进行**呼叫、响应、处理和追踪**,构建从"发现问题"到"解决问题"的完整闭环。核心目标:
- **快速呼叫**:现场在工位/设备/系统中发起安灯呼叫;
- **规则驱动**:依据预先配置的安灯规则自动匹配处理要求;
- **自动派工/通知**:将事件自动派发给责任人或责任角色;
- **全过程留痕**:记录确认、开始处理、完成、取消等里程碑时间;
- **可视化看板**:通过安灯看板统一展示当前安灯状态和历史数据;
- **生产监控**实时监控机器状态、任务完成情况、OEE数据、利用率、品质等关键指标。
从实现上,安灯系统围绕以下几个核心领域模型展开:
- **AndonRule安灯规则配置**:定义不同呼叫类型在不同产线/工位/班组上的处理策略、时限和通知对象;
- **AndonEvent安灯事件**:每一次安灯呼叫形成的一条事件记录,是业务闭环的中心实体;
- **AndonEventAssignment安灯派工记录**:围绕事件派发给具体人员或角色的待办/任务;
- **AndonEventLog安灯事件日志**:记录与事件相关的所有关键操作,形成审计追踪;
- **AndonBoardConfig安灯看板配置**:配置各类安灯看板的产线/工位范围、展示字段及刷新策略;
- **AndonDashboard安灯看板数据**汇总展示设备状态、任务完成、OEE、利用率、品质等生产监控数据。
上述模型在后端分别由对应的 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`:安灯看板配置;
- `views/production/andonDashboard/index.vue`:安灯生产监控看板。
---
### 1.2 模块职责概览
#### 1.2.1 安灯规则配置AndonRule
**职责**
- 定义安灯呼叫类型及其适用范围(产线、工位/工序、班组、触发源类型等);
- 设置确认时限ACK Timeout和解决时限Resolve Timeout
- 定义默认优先级Priority
- 定义通知对象(具体用户列表、角色列表);
- 通过字段 `isFlag` 控制规则是否生效;
- **一个工位可以配置多条规则**,每条规则对应不同的呼叫类型。
**典型字段(来自 AndonRule / AndonRuleMapper.xml**
- `ruleId`:规则主键;
- `ruleName`:规则名称;
- `callTypeCode`呼叫类型编码EQUIPMENT/QUALITY/MATERIAL等
- `productLineCode` / `stationCode` / `teamCode`:适用产线、工位、班组;
- `sourceType`:限定触发源类型(如工位、设备、报警、手动等);
- `ackTimeoutMin`:确认时限(分钟);
- `resolveTimeoutMin`:解决时限(分钟);
- `priorityDefault`默认优先级1最高5最低
- `notifyUsers`:通知用户 ID 列表(逗号分隔);
- `notifyRoles`:通知角色 Key 列表(逗号分隔,当前主要作为兜底);
- `remark`:扩展配置 JSON如派工模式、是否取消其他派工、解决时限锚点等
- `isFlag`:是否有效。
**呼叫类型字典andon_call_type**
| 字典值 | 字典标签 |
|---------|-----------|
| EQUIPMENT | 设备故障 |
| QUALITY | 质量问题 |
| MATERIAL | 物料短缺 |
#### 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`:备注。
**派工状态字典andon_status**
| 状态值 | 状态标签 | 说明 |
|--------|-----------|------|
| ASSIGNED | 已派工 | 初始状态,等待接单 |
| ACCEPTED | 已接单 | 责任人已接受任务 |
| DONE | 已完成 | 任务已完成 |
| CANCELLED | 已取消 | 派工已取消 |
| REJECTED | 已拒绝 | 责任人已拒绝 |
在 Service 层(`AndonEventAssignmentServiceImpl`)中,`updateAndonEventAssignment` 会根据派工状态自动:
- 补充自身接单/完成时间;
- 联动更新事件的开始处理时间、完成时间及状态;
- 写入对应的事件日志;
- 在配置允许时,自动取消同一事件下的其他并行派工。
#### 1.2.4 安灯事件日志AndonEventLog
**职责**
- 记录所有与安灯事件相关的关键操作,形成审计轨迹;
- 为事后追溯、责任划分和优化分析提供依据。
**典型字段:**
- `logId`:日志主键;
- `eventId`:关联事件;
- `operation`:操作类型(字典 `andon_operation`,如 CREATE、ASSIGN、ACK、RESOLVE、CANCEL 等);
- `content`:操作内容描述;
- `operatorUserId` / `operatorUserName`:操作人;
- `operationTime`:操作时间;
- `remark`:备注。
**操作类型字典andon_operation**
| 操作值 | 操作标签 | 说明 |
|--------|-----------|------|
| CREATE | 创建 | 事件创建 |
| ASSIGN | 派工 | 自动派工 |
| ACK | 确认 | 事件确认 |
| ACCEPT | 接单 | 派工被接受 |
| RESOLVE | 解决 | 事件/派工完成 |
| CANCEL | 取消 | 事件取消 |
| CANCEL_ASSIGNMENT | 取消派工 | 派工被取消 |
| CANCEL_OTHERS | 取消其他派工 | 策略取消其他派工 |
| REJECT | 拒绝 | 派工被拒绝 |
| EDIT | 编辑 | 事件编辑 |
事件日志通常由后端 Service 自动写入:
- 事件创建/编辑/取消;
- 自动派工创建;
- 派工接单/完成/取消/拒绝;
- 自动取消其他派工等。
#### 1.2.5 安灯看板配置AndonBoardConfig
**职责**
- 为车间现场的安灯看板(大屏)提供配置;
- 指定看板关联工位/工序、展示字段、刷新周期等。
**典型字段:**
- `boardId`:看板主键;
- `boardCode` / `boardName`:看板编码与名称;
- `stationCode`:关联工位/工序(主要绑定字段);
- `productLineCode`:关联产线(辅助字段,当前页面中未使用);
- `displayFields`看板展示字段配置JSON 或约定字符串);
- `refreshIntervalSec`:刷新间隔(秒);
- `isFlag`:是否有效;
- `remark`:备注。
**展示字段配置displayFields写法示例**
用于前端大屏动态决定列显示可用字符串、JSON 数组或对象:
```text
1) 逗号分隔字符串(两张表共用同列)
"callCode,stationCode,eventStatus,priority,createTime"
2) JSON 数组(两张表共用同列,可设置宽度/对齐)
[
"callCode",
"stationCode",
{ "field": "eventStatus", "label": "状态", "align": "center" }
]
3) JSON 对象区分"进行中"和"已关闭"列
{
"activeFields": [
"callCode",
"stationCode",
{ "field": "eventStatus", "label": "状态", "align": "center" },
"priority",
"createTime"
],
"closedFields": [
"callCode",
"stationCode",
"eventStatus",
{ "field": "responseEndTime", "label": "完成时间" },
{ "field": "resolution", "label": "解决措施" }
]
}
```
解析逻辑(前端 `views/board/andonBoard/index.vue`
- 为空或解析失败时回退默认列进行中callCode/callTypeCode/stationCode/deviceCode/eventStatus/priority/createTime/description已关闭callCode/callTypeCode/stationCode/deviceCode/eventStatus/responseEndTime/resolution/cancelReason
- 纯字符串或数组:进行中与已关闭共用同一列集合。
- 对象:优先读取 `activeFields` / `closedFields`(或 `active` / `closed`),否则回退到 `fields` 或整对象键值。
- 每列可附加 `label`、`width`、`align`;缺省时按字段名映射默认中文标题。
前端看板程序可根据 `boardCode` 读取配置,再按产线/工位范围实时拉取 AndonEvent 数据进行可视化展示。
#### 1.2.6 安灯生产监控看板AndonDashboard
**职责**
- 汇总展示生产现场的实时监控数据;
- 提供设备状态、任务完成、OEE、利用率、品质等关键指标
- 支持按产线筛选查看不同产线的生产状况。
**数据来源(来自 AndonDashboardServiceImpl**
1. **设备状态摘要getDeviceStatusSummary**
- 统计设备总数、运行中、停机、故障、维护等状态分布
- 数据来源:`base_device_ledger` 表
2. **任务完成摘要getTaskCompletionSummary**
- 统计计划任务数、已完成任务数、任务完成率
- 数据来源:`product_plan_info` 表
3. **OEE摘要getOeeSummary**
- 计算设备综合效率OEE = 可用率 × 表现率 × 质量指数)
- 数据来源:设备台账、设备参数、生产计划
4. **利用率摘要getUtilizationSummary**
- 统计设备利用率、产线利用率
- 数据来源:设备台账、生产计划
5. **品质摘要getQualitySummary**
- 统计今日产量、良品数、不良品数、良品率
- 数据来源:`report_quality_inspection` 表(质检记录)
- 良品率计算:良品率 = 良品数 / (良品数 + 不良品数) × 100%
6. **安灯事件摘要getAndonEventSummary**
- 统计今日安灯事件总数、待处理、处理中、已解决、已取消
- 数据来源:`andon_event` 表
**典型字段(来自 AndonDashboardDTO**
- 设备状态相关:
- `totalDevices`:设备总数
- `runningDevices`:运行中设备数
- `stoppedDevices`:停机设备数
- `faultDevices`:故障设备数
- `maintenanceDevices`:维护设备数
- `deviceDetails`:设备状态详情列表
- 任务完成相关:
- `todayPlanAmount`:今日计划数量
- `todayCompleteAmount`:今日完成数量
- `todayCompletionRate`:今日完成率(%
- `monthPlanAmount`:本月计划数量
- `monthCompleteAmount`:本月完成数量
- `monthCompletionRate`:本月完成率(%
- `lineCompletions`:产线任务完成情况列表
- OEE相关
- `overallOee`综合OEE%
- `availability`:可用率(%
- `performance`:表现率(%
- `quality`:质量指数(%
- `plannedTimeMinutes`:计划时间(分钟)
- `downtimeMinutes`:停机时间(分钟)
- `deviceOeeDetails`设备OEE详情列表
- 利用率相关:
- `overallUtilization`:整体利用率(%
- `lineUtilizations`:产线利用率列表
- 品质相关:
- `todayOutput`:今日总产量
- `todayGoodCount`:今日良品数
- `todayDefectCount`:今日不良品数
- `todayYieldRate`:今日良品率(%
- `monthYieldRate`:本月良品率(%
- `lineQualities`:产线品质数据列表
- 安灯事件相关:
- `todayTotal`:今日事件总数
- `pendingCount`:待处理事件数
- `processingCount`:处理中事件数
- `resolvedCount`:已解决事件数
- `cancelledCount`:已取消事件数
- `avgResponseMinutes`:平均响应时间(分钟)
- `avgResolveMinutes`:平均解决时间(分钟)
- `eventTypeStats`:安灯事件类型统计列表
#### 1.2.7 安灯看板展示AndonBoard
**职责**
- 为车间现场的安灯看板(大屏)提供实时数据展示;
- 根据看板配置自动过滤和展示安灯事件;
- 支持动态配置展示字段和刷新间隔;
- 提供免登录访问接口,方便大屏展示。
**核心功能:**
1. **看板配置管理**
- 通过 `AndonBoardConfig` 配置看板的展示范围(产线/工位)
- 支持配置展示字段和刷新间隔
- 同一编码可存在多条配置,取最新启用的配置
2. **事件数据过滤**
- 根据看板配置的产线/工位范围过滤安灯事件
- 自动拆分为进行中事件(待处理/处理中)和已关闭事件(已解决/已取消)
- 进行中事件按状态/优先级/创建时间排序
- 已关闭事件按完成时间/更新时间倒序排序限制最多显示20条
3. **统计数据汇总**
- 实时统计待处理、处理中、已解决、已取消、总数
- 提供服务器时间供前端同步
4. **免登录访问**
- 接口使用 `@Anonymous` 标记,支持免登录访问
- 适合大屏展示和外部系统集成
**后端实现AndonBoardController**
- **接口路径**`GET /production/andonBoard/view`
- **请求参数**`boardCode`(看板编码,必填)
- **返回数据**
```json
{
"config": {
"boardId": 1,
"boardCode": "BOARD001",
"boardName": "装配工位安灯看板",
"stationCode": "ST001",
"displayFields": "...",
"refreshIntervalSec": 10
},
"stats": {
"pending": 5,
"processing": 3,
"resolved": 20,
"cancelled": 2,
"active": 8,
"total": 30
},
"activeEvents": [...],
"closedEvents": [...],
"serverTime": "2025-12-31 10:30:00"
}
```
**核心逻辑:**
1. **参数校验**boardCode 必填
2. **查询配置**:查询启用的看板配置,同一编码取最新的一条
3. **过滤事件**:根据配置的产线/工位范围查询安灯事件
4. **统计分组**:统计各状态数量,拆分进行中/已关闭事件
5. **排序限制**进行中事件按优先级排序已关闭事件限制20条
6. **返回数据**:组装配置、统计、事件列表、服务器时间
**前端实现views/board/andonBoard/index.vue**
- **页面功能**
- 深色主题设计,适合大屏展示
- 顶部显示看板标题、boardCode、刷新间隔、最近更新时间
- 统计卡片展示待处理、处理中、已解决、已取消、总数
- 双面板布局:左侧展示进行中事件,右侧展示已关闭事件
- 支持自动刷新,刷新间隔从配置读取
- **数据获取**
- 通过 `viewAndonBoard(boardCode)` 接口获取数据
- 从 URL 参数中读取 boardCode支持 query 和 params
- 使用定时器自动刷新数据
- **字段配置解析**
- 支持字符串、JSON数组、JSON对象三种格式
- 可区分进行中和已关闭的展示字段
- 支持设置列宽和对齐方式
- 解析失败时使用默认字段
- **展示字段配置示例**
1. **逗号分隔字符串**(简单配置)
```
callCode,stationCode,eventStatus,priority,createTime
```
2. **JSON数组**(可设置列宽、对齐)
```json
[
"callCode",
"stationCode",
{ "field": "eventStatus", "label": "状态", "align": "center" }
]
```
3. **JSON对象**(区分进行中/已关闭)
```json
{
"activeFields": [
"callCode",
"stationCode",
{ "field": "eventStatus", "label": "状态", "align": "center" },
"priority",
"createTime"
],
"closedFields": [
"callCode",
"stationCode",
"eventStatus",
{ "field": "responseEndTime", "label": "完成时间" },
{ "field": "resolution", "label": "解决措施" }
]
}
```
- **可用字段列表**
| 字段名 | 说明 |
|--------|------|
| index | 序号(前端行号) |
| eventId | 事件ID |
| callCode | 呼叫单号 |
| callTypeCode | 呼叫类型 |
| sourceType | 触发源类型 |
| sourceRefId | 触发源编码 |
| productLineCode | 产线编码 |
| stationCode | 工位/工序编码 |
| teamCode | 班组编码 |
| orderCode | 工单号 |
| materialCode | 物料编码 |
| deviceCode | 设备编码 |
| priority | 优先级 |
| eventStatus | 状态 |
| description | 呼叫描述 |
| ackBy | 确认人 |
| ackTime | 确认时间 |
| responseStartTime | 开始处理时间 |
| responseEndTime | 完成时间 |
| resolution | 解决措施 |
| cancelReason | 取消原因 |
| escalateLevel | 升级级别 |
| escalateTime | 升级时间 |
| ackDeadline | 确认截止时间 |
| resolveDeadline | 解决截止时间 |
| createTime | 创建时间 |
| updateTime | 更新时间 |
- **状态显示**
- 待处理:红色(#ff5f5f
- 处理中:橙色(#ffb020
- 已解决:青色(#16ceb9
- 已取消:灰色(#9aa3ad
- **触发源类型**
- 0工位
- 1设备
- 2报警
- 3手动
---
### 1.3 业务流程说明(从呼叫到关闭的闭环)
#### 1.3.1 前置:配置安灯规则
1. 管理人员在"安灯规则配置"页面维护规则:
- 定义规则名称与呼叫类型编码;
- 选择适用的产线/工位/班组与触发源类型;
- 设置确认时限、解决时限与默认优先级;
- 选择通知用户(以及可选的通知角色);
- 启用(`isFlag = 1`)。
- **一个工位可以配置多条规则**,每条规则对应不同的呼叫类型。
2. 后端通过 `AndonRuleMapper.selectAndonRuleList` 根据条件查询有效规则,为后续事件创建与派工提供基础。
**配置示例(装配工位 ST001**
| 规则名称 | 绑定工位 | 呼叫类型 | 通知用户 | 确认时限 | 解决时限 |
|---------|----------|----------|----------|---------|---------|
| ST001-设备故障 | ST001 | EQUIPMENT | 设备维修员 | 5分钟 | 30分钟 |
| ST001-质量问题 | ST001 | QUALITY | 质检员 | 5分钟 | 20分钟 |
| ST001-物料短缺 | ST001 | MATERIAL | 物料配送员 | 3分钟 | 15分钟 |
#### 1.3.2 创建安灯事件AndonEvent
安灯事件可以由前端页面手工新增也可以由手持PDA通过接口推送后端统一通过 `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 数据,在大屏展示当前安灯分布和状态;
- 生产监控AndonDashboard前端定时调用 `getDashboardData` 接口获取设备状态、任务完成、OEE、利用率、品质等实时数据。
---
### 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` 写入相应操作日志。
**规则匹配算法pickBestRule**
规则选择在事件侧与派工侧保持同一算法,防止不同模块命中不同规则:
1. 先按呼叫类型(`callTypeCode`)与有效标记筛出候选规则。
2. 对每条候选规则计算"匹配分":产线/工位/班组/触发源类型,每命中一项 +1。
3. 得分最高的规则被选中;并列时按列表顺序先到先得。
4. 事件侧用于计算时限/优先级并创建派工;派工侧用于读取 `remark.cancelOthers` 等策略,确保一致性。
#### 1.5.2 安灯派工记录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}`
**后端 Controller** `AndonEventAssignmentController``/production/andonEventAssignment`
- `list(AndonEventAssignment andonEventAssignment)`:查询派工列表,调用 `IAndonEventAssignmentService.selectAndonEventAssignmentList`
- `add(AndonEventAssignment andonEventAssignment)`:新增派工,补全 `createBy`/`createTime` 后调用 `insertAndonEventAssignment`
- `edit(AndonEventAssignment andonEventAssignment)`:修改派工,补全 `updateBy`/`updateTime` 后调用 `updateAndonEventAssignment`,触发状态联动逻辑;
- `remove(assignmentId)`:删除派工,调用 `deleteAndonEventAssignment`
**Service 关键逻辑:** `AndonEventAssignmentServiceImpl`
- `updateAndonEventAssignment`:核心方法,处理派工状态变更
- 补充接单/完成时间;
- 联动更新事件状态与里程碑时间;
- 写入事件日志;
- 根据策略自动取消其他派工。
#### 1.5.3 安灯生产监控看板AndonDashboard调用链
**前端页面与 api**
- 页面:`views/production/andonDashboard/index.vue`
- api`api/production/andonDashboard.js`
- `getDashboardData(productLineCode)``GET /production/andonDashboard/all`
- `getDeviceStatusSummary(productLineCode)``GET /production/andonDashboard/device-status`
- `getTaskCompletionSummary(productLineCode)``GET /production/andonDashboard/task-completion`
- `getOeeSummary(productLineCode)``GET /production/andonDashboard/oee`
- `getUtilizationSummary(productLineCode)``GET /production/andonDashboard/utilization`
- `getQualitySummary(productLineCode)``GET /production/andonDashboard/quality`
- `getAndonEventSummary(productLineCode)``GET /production/andonDashboard/andon-events`
**后端 Controller** `AndonDashboardController``/production/andonDashboard`
- `getDashboardData(String productLineCode)`:获取完整看板数据,调用 `IAndonDashboardService.getDashboardData(productLineCode)`
- `getDeviceStatusSummary(String productLineCode)`:获取设备状态统计,调用 `IAndonDashboardService.getDeviceStatusSummary(productLineCode)`
- `getTaskCompletionSummary(String productLineCode)`:获取任务完成统计,调用 `IAndonDashboardService.getTaskCompletionSummary(productLineCode)`
- `getOeeSummary(String productLineCode)`获取OEE数据调用 `IAndonDashboardService.getOeeSummary(productLineCode)`
- `getUtilizationSummary(String productLineCode)`:获取利用率统计,调用 `IAndonDashboardService.getUtilizationSummary(productLineCode)`
- `getQualitySummary(String productLineCode)`:获取品质数据,调用 `IAndonDashboardService.getQualitySummary(productLineCode)`
- `getAndonEventSummary(String productLineCode)`:获取安灯事件统计,调用 `IAndonDashboardService.getAndonEventSummary(productLineCode)`
**Service 关键逻辑:** `AndonDashboardServiceImpl`
- `getDashboardData(productLineCode)`:汇总获取各类监控数据
- `getDeviceStatusSummary(productLineCode)`:设备状态统计
- `getTaskCompletionSummary(productLineCode)`:任务完成统计
- `getOeeSummary(productLineCode)`OEE数据计算
- `getUtilizationSummary(productLineCode)`:利用率统计
- `getQualitySummary(productLineCode)`:品质数据统计
- `getAndonEventSummary(productLineCode)`:安灯事件统计
**品质数据计算逻辑:**
-`report_quality_inspection` 表查询今日质检记录
-`treatmentMeasure` 字段判断良品/不良品:
- `treatmentMeasure = '3'`:合格(良品)
- `treatmentMeasure = '1'`:返修(不良品)
- 按产线分组统计良品数和不良品数
- 计算良品率:`yieldRate = goodProducts / (goodProducts + defectProducts) * 100`
#### 1.5.4 安灯看板展示AndonBoard调用链
**前端页面与 api**
- 页面:`views/board/andonBoard/index.vue`
- api`api/production/andonBoard.js`
- `viewAndonBoard(boardCode)``GET /production/andonBoard/view`
**后端 Controller** `AndonBoardController``/production/andonBoard`
- `view(String boardCode)`:根据看板编码获取看板数据
- 参数校验boardCode 必填
- 查询配置:调用 `IAndonBoardConfigService.selectAndonBoardConfigList` 查询启用的看板配置,同一编码取最新的一条
- 过滤事件:根据配置的产线/工位范围调用 `IAndonEventService.selectAndonEventList` 查询安灯事件
- 统计分组:统计各状态数量,拆分进行中/已关闭事件
- 排序限制进行中事件按优先级排序已关闭事件限制20条
- 返回数据:组装配置、统计、事件列表、服务器时间
**Service 关键逻辑:** `AndonBoardController`
- `selectActiveBoardConfig(String boardCode)`:查询指定看板编码下启用的配置记录
- 按更新时间优先、否则按创建时间,倒序排序,取第一条(最新配置)
- `selectEventsByConfig(AndonBoardConfig config)`:根据看板配置的作用域查询事件列表
- 仅当配置字段非空时才作为过滤条件;为空表示不按该维度过滤
- 产线范围过滤:`productLineCode`
- 工位/工序范围过滤:`stationCode`
- `buildStats(List<AndonEvent> events)`:构建看板统计数据
- 返回字段pending / processing / resolved / cancelled / active / total
- `filterByStatus(List<AndonEvent> events, boolean active)`:按状态将事件分为"进行中"和"已关闭"两组
- active=true待处理/处理中
- active=false已解决/已取消(以及其他未知状态)
- `sortActiveEvents(List<AndonEvent> events)`:进行中事件排序
- 1) 状态(待处理优先于处理中)
- 2) 优先级(数值越小越紧急;空值排最后)
- 3) 创建时间(越早越靠前;空值排最后)
- `sortClosedEvents(List<AndonEvent> events)`:已关闭事件排序
- 1) 解决/结束时间 responseEndTime 倒序(最近关闭的在前;空值排最后)
- 2) 更新时间 updateTime 倒序(空值排最后)
**前端关键逻辑:** `views/board/andonBoard/index.vue`
- **数据获取**
- 从 URL 参数中读取 boardCode支持 query 和 params
- 通过 `viewAndonBoard(boardCode)` 接口获取数据
- 使用定时器自动刷新数据,刷新间隔从配置读取
- **字段配置解析**
- `parseDisplayFields(raw)`:解析展示字段配置
- 支持字符串、JSON数组、JSON对象三种格式
- 可区分进行中和已关闭的展示字段
- 支持设置列宽和对齐方式
- 解析失败时使用默认字段
- **列配置归一化**
- `normalizeColumns(input)`:将不同格式的配置转换为统一的列配置
- 字符串:转换为 {field, label}
- 对象:保留 field, label, width, align
- 数组:递归处理每个元素
- **字段标签映射**
- `fieldLabel(field)`:将字段名映射为中文标签
- 支持常用字段的中文标签映射
- 未知字段返回原字段名
- **数据格式化**
- `formatValue(row, field, rowIndex)`:格式化单元格值
- 序号字段:返回行号
- 状态字段:返回状态文本
- 触发源类型字段:返回类型文本
- 时间字段:格式化为 yyyy-MM-dd HH:mm:ss
- 其他字段:转换为字符串
- **状态文本映射**
- `statusText(status)`:将状态码转换为中文文本
- '0':待处理
- '1':处理中
- '2':已解决
- '3':已取消
- **状态样式映射**
- `statusClass(status)`返回状态对应的CSS类名
- '0'pending红色
- '1'processing橙色
- '2'resolved青色
- '3'cancelled灰色
- **触发源类型映射**
- `sourceTypeText(v)`:将触发源类型码转换为中文文本
- '0':工位
- '1':设备
- '2':报警
- '3':手动
- **网格样式计算**
- `gridStyle(cols)`:计算网格布局的列模板
- 根据列配置的 width 属性生成 grid-template-columns
- 未设置 width 的列使用 1fr
- **单元格样式计算**
- `cellStyle(col)`:计算单元格样式
- 根据 align 属性设置文本对齐方式
- **自动刷新管理**
- `resetRefreshTimer()`:重置刷新定时器
- 根据配置的刷新间隔设置定时器
- 定时器到期后调用 `fetchBoardData()` 重新获取数据
- `clearRefreshTimer()`:清除刷新定时器
- 在组件销毁或重新加载时清除定时器
---
## 二、操作手册(用户使用指南)
### 2.1 安灯设置
#### 2.1.1 功能说明
根据需求自定义安灯呼叫异常类别,支持配置不同呼叫类型在不同产线、工位、班组上的处理策略、时限和通知对象。
#### 2.1.2 操作步骤
1. **进入安灯规则配置页面**
- 菜单路径:生产管理 → 安灯管理 → 安灯规则配置
- 页面位置:`views/production/andonRule/index.vue`
2. **新增安灯规则**
- 点击"新增"按钮
- 填写规则信息:
- **规则名称**:输入规则名称,如"装配工位-设备故障"
- **呼叫类型**:选择呼叫类型(设备故障/质量问题/物料短缺)
- **产线编码**:选择适用的产线(可选)
- **工位/工序编码**:选择适用的工位(可选)
- **班组编码**:选择适用的班组(可选)
- **触发源类型**:选择触发源类型(可选)
- **确认时限(分钟)**输入确认时限如5
- **解决时限(分钟)**输入解决时限如30
- **默认优先级**选择默认优先级1-51最高
- **通知用户**:选择通知的用户(支持多选)
- **通知角色**:选择通知的角色(可选,作为兜底)
- **是否有效**:选择是否启用该规则
- **备注**:输入备注信息
- 点击"确定"保存
3. **修改安灯规则**
- 在列表中选中要修改的规则
- 点击"修改"按钮
- 修改规则信息
- 点击"确定"保存
4. **删除安灯规则**
- 在列表中选中要删除的规则(支持多选)
- 点击"删除"按钮
- 确认删除
5. **查询安灯规则**
- 在搜索框中输入查询条件(规则名称、呼叫类型、产线、工位等)
- 点击"搜索"按钮
- 点击"重置"按钮清空查询条件
#### 2.1.3 注意事项
- 一个工位可以配置多条规则,每条规则对应不同的呼叫类型
- 呼叫类型必须选择,其他条件(产线、工位、班组、触发源)为可选
- 确认时限和解决时限建议根据实际情况合理设置
- 通知用户和通知角色至少配置一个
- 规则必须设置为"有效"状态才会生效
---
### 2.2 汇报设置
#### 2.2.1 功能说明
根据不同的安灯异常类别,设置不同的汇报层级。通过配置安灯规则的优先级、通知对象和时限,实现分级汇报机制。
#### 2.2.2 配置说明
**优先级设置:**
- 优先级范围1-51最高5最低
- 高优先级事件会优先处理和展示
- 不同呼叫类型可以设置不同的默认优先级
**汇报层级实现:**
1. **按优先级汇报**
- 高优先级事件1-2立即通知短时限
- 中优先级事件3正常通知标准时限
- 低优先级事件4-5延迟通知长时限
2. **按通知对象汇报**
- 通知用户:直接通知具体责任人
- 通知角色:通知角色下的所有用户
- 支持同时配置用户和角色
3. **按时限汇报**
- 确认时限:事件需要在多长时间内被确认
- 解决时限:事件需要在多长时间内被解决
- 超时事件会在看板中高亮显示
**配置示例(不同汇报层级):**
| 呼叫类型 | 优先级 | 确认时限 | 解决时限 | 通知对象 | 汇报层级 |
|---------|-------|---------|---------|---------|---------|
| 设备故障(关键设备) | 1 | 3分钟 | 15分钟 | 设备主管、维修组长 | 一级汇报 |
| 设备故障(普通设备) | 3 | 5分钟 | 30分钟 | 设备维修员 | 二级汇报 |
| 质量问题(严重) | 1 | 5分钟 | 20分钟 | 质量主管、质检组长 | 一级汇报 |
| 质量问题(一般) | 3 | 5分钟 | 30分钟 | 质检员 | 二级汇报 |
| 物料短缺 | 2 | 3分钟 | 15分钟 | 物料主管、配送组长 | 一级汇报 |
#### 2.2.3 操作步骤
汇报设置通过"安灯规则配置"页面实现操作步骤同2.1.2节。
---
### 2.3 生产进度
#### 2.3.1 功能说明
机器状态监控、机台任务完成情况、OEE 数据、利用率、品质等基本信息汇总与展示,帮助管理人员实时掌握生产进度和效率。
#### 2.3.2 数据展示
**1. 设备状态监控**
- 设备总数
- 运行中设备数
- 停机设备数
- 故障设备数
- 维护设备数
- 设备状态分布图
**2. 机台任务完成情况**
- 计划任务总数
- 已完成任务数
- 任务完成率
- 任务进度条
**3. OEE 数据**
- 可用率Availability设备实际运行时间 / 计划运行时间
- 表现率Performance实际产量 / 理论产量
- 质量指数Quality Index良品数 / 总产量
- 综合效率OEE可用率 × 表现率 × 质量指数
**4. 利用率**
- 设备利用率:设备运行时间 / 可用时间
- 产线利用率:产线运行时间 / 可用时间
**5. 品质数据**
- 今日总产量
- 良品数
- 不良品数
- 良品率(%
**6. 安灯事件统计**
- 今日事件总数
- 待处理事件数
- 处理中事件数
- 已解决事件数
- 已取消事件数
#### 2.3.3 操作步骤
1. **进入安灯生产监控看板**
- 菜单路径:生产管理 → 安灯管理 → 安灯生产监控
- 页面位置:`views/production/andonDashboard/index.vue`
2. **查看生产进度数据**
- 页面自动刷新(默认刷新间隔)
- 查看设备状态、任务完成、OEE、利用率、品质等数据
- 数据按产线分组展示
3. **按产线筛选**
- 在产线下拉框中选择要查看的产线
- 页面自动刷新该产线的生产数据
4. **查看详细数据**
- 点击各模块的"查看详情"按钮
- 查看该模块的详细数据列表
#### 2.3.4 注意事项
- 看板数据实时更新,建议保持页面打开以获取最新数据
- OEE数据需要设备台账、设备参数、生产计划等基础数据支持
- 品质数据来源于质检记录,需要及时录入质检信息
- 可以通过"安灯看板配置"页面调整看板的刷新间隔和展示字段
---
### 2.4 效率监控
#### 2.4.1 功能说明
机器状态监控、OEE 数据、利用率、品质等基本信息汇总与展示,帮助管理人员分析生产效率,发现瓶颈和改进机会。
#### 2.4.2 关键指标说明
**1. 设备状态监控**
- **运行中**:设备正在生产
- **停机**:设备正常停机(如换班、休息)
- **故障**:设备发生故障
- **维护**:设备进行计划维护
**2. OEE设备综合效率**
OEE是衡量生产效率的核心指标由三个部分组成
- **可用率Availability**
- 公式:可用率 = 实际运行时间 / 计划运行时间 × 100%
- 说明:衡量设备是否按计划运行
- 目标值:≥ 90%
- **表现率Performance**
- 公式:表现率 = 实际产量 / 理论产量 × 100%
- 说明:衡量设备运行速度是否达标
- 目标值:≥ 95%
- **质量指数Quality Index**
- 公式:质量指数 = 良品数 / 总产量 × 100%
- 说明:衡量产品质量水平
- 目标值:≥ 98%
- **综合效率OEE**
- 公式OEE = 可用率 × 表现率 × 质量指数
- 说明:综合衡量设备整体效率
- 世界级标准:≥ 85%
**3. 利用率**
- **设备利用率**
- 公式:设备利用率 = 设备运行时间 / 可用时间 × 100%
- 说明:衡量设备时间利用程度
- **产线利用率**
- 公式:产线利用率 = 产线运行时间 / 可用时间 × 100%
- 说明:衡量产线时间利用程度
**4. 品质指标**
- **良品率**
- 公式:良品率 = 良品数 / (良品数 + 不良品数) × 100%
- 说明:衡量产品合格率
- 目标值:≥ 98%
#### 2.4.3 操作步骤
效率监控通过"安灯生产监控看板"页面实现操作步骤同2.3.3节。
#### 2.4.4 效率分析建议
**1. OEE分析**
- OEE < 60%:效率低下,需要全面改进
- OEE 60-75%:效率一般,有较大提升空间
- OEE 75-85%:效率良好,持续优化
- OEE ≥ 85%:世界级水平,保持优势
**2. 可用率低**
- 检查设备故障率,加强预防性维护
- 优化换班、休息等计划停机时间
- 减少非计划停机
**3. 表现率低**
- 检查设备运行速度是否达标
- 优化工艺参数,提高生产节拍
- 减少设备空转、等待时间
**4. 质量指数低**
- 分析不良品原因,改进工艺
- 加强过程质量控制
- 提高员工操作技能
**5. 利用率低**
- 优化生产计划,减少设备闲置
- 提高设备开机率
- 合理安排生产任务
---
### 2.5 安灯事件管理
#### 2.5.1 功能说明
管理安灯事件的全生命周期,包括事件创建、确认、开始处理、完成、取消等操作。
#### 2.5.2 操作步骤
1. **进入安灯事件管理页面**
- 菜单路径:生产管理 → 安灯管理 → 安灯事件管理
- 页面位置:`views/production/andonEvent/index.vue`
2. **新增安灯事件**
- 点击"新增"按钮
- 填写事件信息:
- **呼叫单号**:系统自动生成
- **呼叫类型**:选择呼叫类型
- **触发源类型**:选择触发源类型
- **产线编码**:选择产线
- **工位/工序编码**:选择工位
- **班组编码**:选择班组
- **工单号**:输入工单号
- **物料编码**:选择物料
- **设备编码**:选择设备
- **优先级**:选择优先级
- **呼叫描述**:输入描述
- 点击"确定"保存
3. **确认事件**
- 在列表中选中要确认的事件
- 点击"确认"按钮
- 系统自动记录确认人和确认时间
4. **开始处理**
- 在列表中选中要处理的事件
- 点击"开始处理"按钮
- 系统自动记录开始处理时间
5. **完成事件**
- 在列表中选中要完成的事件
- 点击"完成"按钮
- 输入解决措施
- 点击"确定"
- 系统自动记录完成时间和解决措施
6. **取消事件**
- 在列表中选中要取消的事件
- 点击"取消"按钮
- 输入取消原因
- 点击"确定"
- 系统自动取消事件及相关派工
7. **查询事件**
- 在搜索框中输入查询条件
- 点击"搜索"按钮
- 点击"重置"按钮清空查询条件
#### 2.5.3 注意事项
- 事件创建后系统会自动匹配规则并创建派工
- 事件状态会随操作自动更新
- 取消事件会级联取消相关派工
- 所有操作都会记录在事件日志中
---
### 2.6 安灯派工管理
#### 2.6.1 功能说明
管理安灯派工记录,查看派工状态,接单、完成派工任务。
#### 2.6.2 操作步骤
1. **进入安灯派工管理页面**
- 菜单路径:生产管理 → 安灯管理 → 安灯派工管理
- 页面位置:`views/production/andonEventAssignment/index.vue`
2. **查看派工列表**
- 默认显示当前用户的派工记录("只看我的"开关默认开启)
- 可以关闭"只看我的"查看所有派工
- 待接单的记录会高亮显示(红色背景)
- 处理中的记录会显示蓝色背景
3. **接单**
- 在列表中选中要接单的派工
- 点击"修改状态"按钮
- 将状态改为"已接单"
- 点击"确定"
- 系统自动记录接单时间
4. **完成派工**
- 在列表中选中要完成的派工
- 点击"修改状态"按钮
- 将状态改为"已完成"
- 点击"确定"
- 系统自动记录完成时间
5. **查询派工**
- 在搜索框中输入查询条件
- 点击"搜索"按钮
- 点击"重置"按钮清空查询条件
#### 2.6.3 注意事项
- 派工记录由系统自动创建,不允许手动新增
- 派工状态变更会联动更新事件状态
- 完成派工后,根据规则配置可能自动取消同一事件的其他派工
- 所有操作都会记录在事件日志中
---
### 2.7 安灯事件日志
#### 2.7.1 功能说明
查询安灯事件的操作日志,追溯事件处理过程,用于审计和问题分析。
#### 2.7.2 操作步骤
1. **进入安灯事件日志页面**
- 菜单路径:生产管理 → 安灯管理 → 安灯事件日志
- 页面位置:`views/production/andonEventLog/index.vue`
2. **查询日志**
- 在搜索框中输入查询条件:
- **操作类型**:选择操作类型(创建、派工、确认、接单、解决、取消等)
- 点击"搜索"按钮
- 点击"重置"按钮清空查询条件
3. **查看日志详情**
- 日志列表显示所有操作记录
- 每条记录包含事件ID、操作类型、操作内容、操作人、操作时间
#### 2.7.3 注意事项
- 事件日志由系统自动记录,不允许手动修改
- 日志按时间倒序排列,最新操作显示在最前面
- 可以通过事件ID关联查看完整的事件处理过程
---
### 2.8 安灯看板配置
#### 2.8.1 功能说明
配置安灯看板的展示内容,包括绑定工位、展示字段、刷新间隔等。
#### 2.8.2 操作步骤
1. **进入安灯看板配置页面**
- 菜单路径:生产管理 → 安灯管理 → 安灯看板配置
- 页面位置:`views/production/andonBoardConfig/index.vue`
2. **新增看板配置**
- 点击"新增"按钮
- 填写配置信息:
- **看板编码**:输入看板编码,如"BOARD001"
- **看板名称**:输入看板名称,如"装配工位安灯看板"
- **绑定工位**:选择绑定的工位(必填)
- **展示字段配置**输入展示字段配置JSON格式
- **刷新间隔**:输入刷新间隔(秒)
- **是否有效**:选择是否启用该看板
- **备注**:输入备注信息
- 点击"确定"保存
3. **修改看板配置**
- 在列表中选中要修改的配置
- 点击"修改"按钮
- 修改配置信息
- 点击"确定"保存
4. **删除看板配置**
- 在列表中选中要删除的配置(支持多选)
- 点击"删除"按钮
- 确认删除
5. **查看配置说明**
- 在新增/修改对话框中,点击"操作说明"按钮
- 查看展示字段配置的详细说明和示例
#### 2.8.3 展示字段配置说明
**配置格式:**
1. **逗号分隔字符串**(简单配置)
```
callCode,stationCode,eventStatus,priority,createTime
```
2. **JSON数组**(可设置列宽、对齐)
```json
[
"callCode",
"stationCode",
{ "field": "eventStatus", "label": "状态", "align": "center" }
]
```
3. **JSON对象**(区分进行中/已关闭)
```json
{
"activeFields": [
"callCode",
"stationCode",
{ "field": "eventStatus", "label": "状态", "align": "center" },
"priority",
"createTime"
],
"closedFields": [
"callCode",
"stationCode",
"eventStatus",
{ "field": "responseEndTime", "label": "完成时间" },
{ "field": "resolution", "label": "解决措施" }
]
}
```
**可用字段列表:**
| 字段名 | 说明 |
|--------|------|
| index | 序号(前端行号) |
| eventId | 事件ID |
| callCode | 呼叫单号 |
| callTypeCode | 呼叫类型 |
| sourceType | 触发源类型 |
| sourceRefId | 触发源编码 |
| productLineCode | 产线编码 |
| stationCode | 工位/工序编码 |
| teamCode | 班组编码 |
| orderCode | 工单号 |
| materialCode | 物料编码 |
| deviceCode | 设备编码 |
| priority | 优先级 |
| eventStatus | 状态 |
| description | 呼叫描述 |
| ackBy | 确认人 |
| ackTime | 确认时间 |
| responseStartTime | 开始处理时间 |
| responseEndTime | 完成时间 |
| resolution | 解决措施 |
| cancelReason | 取消原因 |
| escalateLevel | 升级级别 |
| escalateTime | 升级时间 |
| ackDeadline | 确认截止时间 |
| resolveDeadline | 解决截止时间 |
| createTime | 创建时间 |
| updateTime | 更新时间 |
#### 2.8.4 注意事项
- 看板必须绑定工位才能正常显示数据
- 展示字段配置为空或格式错误时会使用默认列
- 刷新间隔建议设置为30-60秒避免频繁刷新
- 看板配置必须设置为"有效"状态才会生效
---
### 2.9 安灯看板展示
#### 2.9.1 功能说明
安灯看板展示是用于车间现场大屏展示的安灯事件实时监控页面,通过看板配置自动过滤和展示安灯事件,支持动态配置展示字段和刷新间隔。
#### 2.9.2 页面特点
- **深色主题设计**:适合大屏展示,减少视觉疲劳
- **自动刷新**:根据配置的刷新间隔自动更新数据
- **双面板布局**:左侧展示进行中事件,右侧展示已关闭事件
- **实时统计**:顶部统计卡片展示待处理、处理中、已解决、已取消、总数
- **免登录访问**:支持免登录访问,方便大屏展示和外部系统集成
#### 2.9.3 操作步骤
1. **进入安灯看板展示页面**
- 访问路径:`/andonBoard?boardCode=BOARD001`
- 页面位置:`views/board/andonBoard/index.vue`
- 必须在URL中传入 `boardCode` 参数
2. **查看看板数据**
- 页面顶部显示看板标题、boardCode、刷新间隔、最近更新时间
- 统计卡片展示各状态事件数量
- 左侧面板展示待处理/处理中事件
- 右侧面板展示已解决/已取消事件
3. **理解事件状态颜色**
- 待处理:红色(#ff5f5f
- 处理中:橙色(#ffb020
- 已解决:青色(#16ceb9
- 已取消:灰色(#9aa3ad
4. **查看事件详情**
- 查看各列展示的事件信息
- 时间字段格式化为yyyy-MM-dd HH:mm:ss
- 状态字段显示中文文本和颜色标识
5. **切换看板**
- 修改URL中的 `boardCode` 参数
- 页面自动加载新看板的配置和数据
#### 2.9.4 数据刷新
- **自动刷新**:页面根据配置的刷新间隔自动刷新数据
- **刷新间隔**从看板配置中读取默认10秒
- **最近更新时间**:页面顶部显示最近一次数据更新时间
- **手动刷新**:刷新浏览器页面可手动刷新数据
#### 2.9.5 事件排序规则
**进行中事件排序:**
1. 状态优先:待处理优先于处理中
2. 优先级数值越小越紧急1最高5最低
3. 创建时间:越早越靠前
**已关闭事件排序:**
1. 完成时间:最近关闭的在前
2. 更新时间:最近更新的在前
3. 最多显示20条历史记录
#### 2.9.6 注意事项
- 必须在URL中传入有效的 `boardCode` 参数
- 看板配置必须存在且设置为"有效"状态
- 看板配置必须绑定工位才能显示数据
- 展示字段配置为空或格式错误时会使用默认列
- 刷新间隔建议设置为30-60秒避免频繁刷新
- 页面支持免登录访问,适合大屏展示
#### 2.9.7 常见问题
**Q: 看板显示"缺少 boardCode"**
A: 请在URL中传入 `boardCode` 参数,例如:`/andonBoard?boardCode=BOARD001`
**Q: 看板显示"看板配置不存在或未启用"**
A: 请检查看板配置是否存在且设置为"有效"状态
**Q: 看板显示"暂无数据"**
A: 请检查看板配置是否绑定了工位,以及该工位是否有安灯事件
**Q: 看板显示的列不是我想要的?**
A: 请在"安灯看板配置"页面修改展示字段配置
**Q: 看板刷新太慢或太快?**
A: 请在"安灯看板配置"页面调整刷新间隔
---
## 三、附录
### 3.1 字典表
#### 3.1.1 呼叫类型字典andon_call_type
| 字典值 | 字典标签 |
|---------|-----------|
| EQUIPMENT | 设备故障 |
| QUALITY | 质量问题 |
| MATERIAL | 物料短缺 |
#### 3.1.2 事件状态字典andon_event_status
| 字典值 | 字典标签 |
|---------|-----------|
| PENDING | 待处理 |
| PROCESSING | 处理中 |
| RESOLVED | 已解决 |
| CANCELLED | 已取消 |
#### 3.1.3 派工状态字典andon_status
| 字典值 | 字典标签 |
|---------|-----------|
| ASSIGNED | 已派工 |
| ACCEPTED | 已接单 |
| DONE | 已完成 |
| CANCELLED | 已取消 |
| REJECTED | 已拒绝 |
#### 3.1.4 操作类型字典andon_operation
| 操作值 | 操作标签 | 说明 |
|--------|-----------|------|
| CREATE | 创建 | 事件创建 |
| ASSIGN | 派工 | 自动派工 |
| ACK | 确认 | 事件确认 |
| ACCEPT | 接单 | 派工被接受 |
| RESOLVE | 解决 | 事件/派工完成 |
| CANCEL | 取消 | 事件取消 |
| CANCEL_ASSIGNMENT | 取消派工 | 派工被取消 |
| CANCEL_OTHERS | 取消其他派工 | 策略取消其他派工 |
| REJECT | 拒绝 | 派工被拒绝 |
| EDIT | 编辑 | 事件编辑 |
### 3.2 数据库表结构
#### 3.2.1 安灯规则表andon_rule
| 字段名 | 类型 | 说明 |
|--------|------|------|
| rule_id | NUMBER | 规则主键 |
| rule_name | VARCHAR2 | 规则名称 |
| call_type_code | VARCHAR2 | 呼叫类型编码 |
| product_line_code | VARCHAR2 | 产线编码 |
| station_code | VARCHAR2 | 工位/工序编码 |
| team_code | VARCHAR2 | 班组编码 |
| source_type | VARCHAR2 | 触发源类型 |
| ack_timeout_min | NUMBER | 确认时限(分钟) |
| resolve_timeout_min | NUMBER | 解决时限(分钟) |
| priority_default | NUMBER | 默认优先级 |
| notify_roles | VARCHAR2 | 通知角色 |
| notify_users | VARCHAR2 | 通知用户 |
| escalate_levels | VARCHAR2 | 升级级别 |
| effective_begin_time | DATE | 生效开始时间 |
| effective_end_time | DATE | 生效结束时间 |
| is_flag | VARCHAR2 | 是否有效 |
| remark | VARCHAR2 | 备注 |
| create_by | VARCHAR2 | 创建人 |
| create_time | DATE | 创建时间 |
| update_by | VARCHAR2 | 更新人 |
| update_time | DATE | 更新时间 |
#### 3.2.2 安灯事件表andon_event
| 字段名 | 类型 | 说明 |
|--------|------|------|
| event_id | NUMBER | 事件主键 |
| call_code | VARCHAR2 | 呼叫单号 |
| call_type_code | VARCHAR2 | 呼叫类型编码 |
| source_type | VARCHAR2 | 触发源类型 |
| source_ref_id | VARCHAR2 | 触发源引用ID |
| product_line_code | VARCHAR2 | 产线编码 |
| station_code | VARCHAR2 | 工位/工序编码 |
| team_code | VARCHAR2 | 班组编码 |
| order_code | VARCHAR2 | 工单号 |
| material_code | VARCHAR2 | 物料编码 |
| device_id | NUMBER | 设备ID |
| device_code | VARCHAR2 | 设备编码 |
| priority | NUMBER | 优先级 |
| event_status | VARCHAR2 | 事件状态 |
| description | VARCHAR2 | 呼叫描述 |
| ack_by | VARCHAR2 | 确认人 |
| ack_time | DATE | 确认时间 |
| response_start_time | DATE | 开始处理时间 |
| response_end_time | DATE | 处理完成时间 |
| resolution | VARCHAR2 | 解决措施 |
| cancel_reason | VARCHAR2 | 取消原因 |
| escalate_level | NUMBER | 升级级别 |
| escalate_time | DATE | 升级时间 |
| ack_deadline | DATE | 确认截止时间 |
| resolve_deadline | DATE | 解决截止时间 |
| is_flag | VARCHAR2 | 是否有效 |
| remark | VARCHAR2 | 备注 |
| create_by | VARCHAR2 | 创建人 |
| create_time | DATE | 创建时间 |
| update_by | VARCHAR2 | 更新人 |
| update_time | DATE | 更新时间 |
#### 3.2.3 安灯派工记录表andon_event_assignment
| 字段名 | 类型 | 说明 |
|--------|------|------|
| assignment_id | NUMBER | 派工记录主键 |
| event_id | NUMBER | 所属安灯事件 |
| assignee_user_id | NUMBER | 被分配用户ID |
| assignee_user_name | VARCHAR2 | 被分配用户姓名 |
| assignee_role_key | VARCHAR2 | 被分配角色编码 |
| assignee_team_code | VARCHAR2 | 被分配班组编码 |
| assigned_time | DATE | 派工时间 |
| accept_time | DATE | 接单时间 |
| finish_time | DATE | 完成时间 |
| status | VARCHAR2 | 派工状态 |
| is_flag | VARCHAR2 | 是否有效 |
| remark | VARCHAR2 | 备注 |
| create_by | VARCHAR2 | 创建人 |
| create_time | DATE | 创建时间 |
| update_by | VARCHAR2 | 更新人 |
| update_time | DATE | 更新时间 |
#### 3.2.4 安灯事件日志表andon_event_log
| 字段名 | 类型 | 说明 |
|--------|------|------|
| log_id | NUMBER | 日志主键 |
| event_id | NUMBER | 关联事件 |
| operation | VARCHAR2 | 操作类型 |
| content | VARCHAR2 | 操作内容 |
| operator_user_id | NUMBER | 操作人ID |
| operator_user_name | VARCHAR2 | 操作人姓名 |
| operation_time | DATE | 操作时间 |
| remark | VARCHAR2 | 备注 |
| create_by | VARCHAR2 | 创建人 |
| create_time | DATE | 创建时间 |
| update_by | VARCHAR2 | 更新人 |
| update_time | DATE | 更新时间 |
#### 3.2.5 安灯看板配置表andon_board_config
| 字段名 | 类型 | 说明 |
|--------|------|------|
| board_id | NUMBER | 看板主键 |
| board_code | VARCHAR2 | 看板编码 |
| board_name | VARCHAR2 | 看板名称 |
| product_line_code | VARCHAR2 | 产线编码 |
| station_code | VARCHAR2 | 工位/工序编码 |
| display_fields | VARCHAR2 | 展示字段配置 |
| refresh_interval_sec | NUMBER | 刷新间隔(秒) |
| is_flag | VARCHAR2 | 是否有效 |
| remark | VARCHAR2 | 备注 |
| create_by | VARCHAR2 | 创建人 |
| create_time | DATE | 创建时间 |
| update_by | VARCHAR2 | 更新人 |
| update_time | DATE | 更新时间 |
### 3.3 版本历史
| 版本号 | 日期 | 说明 |
|--------|------|------|
| v1.0 | 2025-12-29 | 初始版本支持手持PDA安灯呼叫 |
| v2.0 | 2025-12-31 | 重构文档,增加生产进度和效率监控模块 |