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

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.

# 安灯管理系统文档
> 本文档针对 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 | 重构文档,增加生产进度和效率监控模块 |