# 安灯管理系统文档 > 本文档针对 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 events)`:构建看板统计数据 - 返回字段:pending / processing / resolved / cancelled / active / total - `filterByStatus(List events, boolean active)`:按状态将事件分为"进行中"和"已关闭"两组 - active=true:待处理/处理中 - active=false:已解决/已取消(以及其他未知状态) - `sortActiveEvents(List events)`:进行中事件排序 - 1) 状态(待处理优先于处理中) - 2) 优先级(数值越小越紧急;空值排最后) - 3) 创建时间(越早越靠前;空值排最后) - `sortClosedEvents(List 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-5,1最高) - **通知用户**:选择通知的用户(支持多选) - **通知角色**:选择通知的角色(可选,作为兜底) - **是否有效**:选择是否启用该规则 - **备注**:输入备注信息 - 点击"确定"保存 3. **修改安灯规则** - 在列表中选中要修改的规则 - 点击"修改"按钮 - 修改规则信息 - 点击"确定"保存 4. **删除安灯规则** - 在列表中选中要删除的规则(支持多选) - 点击"删除"按钮 - 确认删除 5. **查询安灯规则** - 在搜索框中输入查询条件(规则名称、呼叫类型、产线、工位等) - 点击"搜索"按钮 - 点击"重置"按钮清空查询条件 #### 2.1.3 注意事项 - 一个工位可以配置多条规则,每条规则对应不同的呼叫类型 - 呼叫类型必须选择,其他条件(产线、工位、班组、触发源)为可选 - 确认时限和解决时限建议根据实际情况合理设置 - 通知用户和通知角色至少配置一个 - 规则必须设置为"有效"状态才会生效 --- ### 2.2 汇报设置 #### 2.2.1 功能说明 根据不同的安灯异常类别,设置不同的汇报层级。通过配置安灯规则的优先级、通知对象和时限,实现分级汇报机制。 #### 2.2.2 配置说明 **优先级设置:** - 优先级范围:1-5(1最高,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 | 重构文档,增加生产进度和效率监控模块 |