# 注塑机数采监控 - 前端联调方案 ## 涉及页面 - 设备管理 - 设备台账(新增数采字段、导入模板) - 设备管理 - 数采监控(新增) - 设备管理 - 数采监控 - 设备详情/历史(新增) - 设备管理 - 数采报警(新增,或作为数采监控页签) ## 业务流程与数据带入 1. 设备台账维护 `collectDeviceCode`(如 `C01`)并启用 `collectEnabled` 后,数采报文才能自动关联到该设备。 2. 数采监控列表以设备台账为基准展示,`collectDeviceCode` 是列表与各明细接口之间的唯一关联键,选中设备后需把该值作为 `deviceCode` 带入实时状态、工艺参数、周期数据、参数变更、报警查询。 3. 列表中的 `taskId / workOrderId` 由后端按设备所在工作站自动解析当前运行任务,前端只读展示,不需要传参。 4. 从列表进入报警时,建议默认带入当前 `deviceCode` 与 `status=0`(未消除),保证用户先看到当前设备的待处理报警。 ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/mes/collect/device/list` | 数采设备状态列表 | | GET | `/mes/collect/realtime/get` | 设备最新实时状态 | | GET | `/mes/collect/realtime/history-page` | 实时状态历史分页 | | GET | `/mes/collect/cycle/page` | 周期过程数据分页 | | GET | `/mes/collect/cycle/get` | 周期过程数据明细 | | GET | `/mes/collect/tech/get` | 设备最新工艺参数快照 | | GET | `/mes/collect/operate-log/page` | 参数变更日志分页 | | GET | `/mes/collect/alarm/page` | 报警记录分页 | | PUT | `/mes/collect/alarm/ack` | 人工确认消除报警 | ### 设备台账字段新增 新增/更新、分页查询、Excel 导入导出均需支持以下字段: | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | collectDeviceCode | String | 否 | 数采设备编号(MQTT devId),全局唯一,如 `C01` | | collectEnabled | Boolean | 否 | 是否启用数采,默认否 | - 设备台账分页查询支持按 `collectDeviceCode`、`collectEnabled` 过滤。 - Excel 导入模板新增“数采设备编号”列;同一次导入内重复的编号会整行失败并返回具体行号与编号。 ### 设备状态列表 `GET /mes/collect/device/list` 无请求参数,返回已配置 `collectDeviceCode` 的全部设备。 响应字段: | 字段 | 类型 | 说明 | |------|------|------| | machineryId | Long | 设备台账编号 | | machineryCode | String | 设备编码 | | machineryName | String | 设备名称 | | workstationId | Long | 工作站编号 | | workstationName | String | 工作站名称 | | collectDeviceCode | String | 数采设备编号 | | collectEnabled | Boolean | 是否启用数采 | | lastCollectTime | DateTime | 最近采集时间 | | online | Boolean | 是否在线(5 分钟内有数据) | | sts / stsName | Integer / String | 运行状态:1 待机、2 生产 | | opm / opmName | Integer / String | 运行模式:0 手动、1 半自动、2 电眼自动、3 时间自动、4 调模使用 | | ot | Decimal | 油温 | | temps | String | 各段温度 JSON 字符串 | | taskId / taskCode / taskName | Long / String / String | 当前生产任务 | | workOrderId / workOrderCode | Long / String | 当前生产工单 | | activeAlarmCount | Long | 未消除报警数量 | ### 实时状态 `GET /mes/collect/realtime/get`,参数 `deviceCode`(必填)。 响应字段:`id`、`machineryId`、`deviceCode`、`taskId`、`workOrderId`、`collectTime`、`sts/stsName`、`opm/opmName`、`asts`、`ot`、`temps`、`dataJson`。设备暂无数据时 `data` 为 `null`。 `GET /mes/collect/realtime/history-page` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo / pageSize | Integer | 是 | 分页参数 | | deviceCode | String | 否 | 数采设备编号 | | machineryId | Long | 否 | 设备台账编号 | | taskId | Long | 否 | 生产任务编号 | | workOrderId | Long | 否 | 生产工单编号 | | collectTime | DateTime[] | 否 | 采集时间范围,传开始、结束两个值 | 响应结构同实时状态,按采集时间倒序。 ### 周期过程数据 `GET /mes/collect/cycle/page` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo / pageSize | Integer | 是 | 分页参数 | | deviceCode | String | 否 | 数采设备编号 | | machineryId | Long | 否 | 设备台账编号 | | taskId | Long | 否 | 生产任务编号 | | workOrderId | Long | 否 | 生产工单编号 | | collectTime | DateTime[] | 否 | 采集时间范围 | 响应字段:`id`、`machineryId`、`deviceCode`、`taskId`、`workOrderId`、`cycleNo`、`collectTime`、`ecyct`、`eiss`、`eivm`、`eipm`、`esipt`、`esipp`、`esips`、`eipt`、`eipse`、`eplst`、`eplsse`、`eplspm`、`etTemps`(JSON 字符串,键为 ET1..ETn)、`dataJson`。 `GET /mes/collect/cycle/get`,参数 `id`(必填),返回单条明细,字段同上。 ### 工艺参数快照 `GET /mes/collect/tech/get`,参数 `deviceCode`(必填)。 响应字段:`id`、`machineryId`、`deviceCode`、`taskId`、`workOrderId`、`collectTime`、`dataJson`。`dataJson` 为设备上报的完整工艺参数键值对,约 150 个变量;无数据时 `data` 为 `null`。 ### 参数变更日志 `GET /mes/collect/operate-log/page` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo / pageSize | Integer | 是 | 分页参数 | | deviceCode | String | 否 | 数采设备编号 | | machineryId | Long | 否 | 设备台账编号 | | workOrderId | Long | 否 | 生产工单编号 | | varId | String | 否 | 变量编码,如 `SIPS` | | modifyTime | DateTime[] | 否 | 参数修改时间范围 | 响应字段:`id`、`machineryId`、`deviceCode`、`taskId`、`workOrderId`、`varId`、`oldValue`、`newValue`、`modifyTime`、`collectTime`、`dataJson`。 ### 报警记录 `GET /mes/collect/alarm/page` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo / pageSize | Integer | 是 | 分页参数 | | deviceCode | String | 否 | 数采设备编号 | | machineryId | Long | 否 | 设备台账编号 | | workOrderId | Long | 否 | 生产工单编号 | | status | Integer | 否 | 0 未消除、1 已消除 | | wmTime | DateTime[] | 否 | 报警时间范围 | 响应字段:`id`、`machineryId`、`deviceCode`、`taskId`、`workOrderId`、`wmId`(2 产生、0 消失)、`wmMsg`、`wmTime`、`status/statusName`、`clearTime`、`collectTime`、`dataJson`。 `PUT /mes/collect/alarm/ack`,参数 `id`(必填),无请求体,成功返回 `true`。 ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | collectDeviceCode | 台账列表、台账详情、数采监控列表 | 台账列表可直接展示,便于现场核对 | | collectEnabled | 台账列表、台账表单 | 未启用的设备仍展示在监控列表,便于发现配置错误 | | online | 监控列表 | 在线为绿色标识,离线为灰色;依据 5 分钟采集窗口 | | sts/stsName | 监控列表、设备详情 | 生产/待机两态 | | opm/opmName | 监控列表、设备详情 | 五态枚举,直接展示中文名称 | | ot、temps | 监控列表、设备详情 | `temps` 为 JSON 字符串,前端解析后按 T1..Tn 展示 | | taskCode/taskName、workOrderCode | 监控列表、设备详情 | 只读;无运行任务时显示为空 | | activeAlarmCount | 监控列表 | 大于 0 时高亮,可点击跳转报警页签并带入设备 | | status/statusName | 报警列表 | 未消除/已消除 | | dataJson | 各详情抽屉 | 作为“原始数据”折叠展示,便于排障 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 设备未配置数采编号 | 不出现在 `/device/list`,但后端仍会接收并保存其报文,补绑台账后新数据自动关联 | | 设备离线判定 | 最近采集时间早于当前时间 5 分钟即离线,与设备启停无关 | | 工单带入 | 后端按设备工作站自动匹配生产中/部分完成/已停工任务,任务切换最长 30 秒生效 | | 报警产生 | 设备上报 `wmId=2` 新增一条未消除记录,同一报警重复上报不重复生成 | | 报警消失 | 设备上报 `wmId=0` 自动把该设备全部未消除记录置为已消除并写消除时间 | | 人工确认 | 仅未消除记录可确认;已消除记录再次确认会提示“该报警已消除,无需重复确认” | | 周期数据去重 | 同一设备、同一周期序号、同一采集时间只保留一条 | | 数据保留 | 原始报文 7 天、实时历史 30 天,周期/工艺/参数变更/报警长期保留 | ## 注意事项 - 所有数采查询接口需权限 `mes:collect:query`,人工确认报警需 `mes:collect-alarm:ack`。 - `deviceCode` 统一使用台账 `collectDeviceCode`,不要使用设备编码 `machineryCode`。 - `collectTime`、`modifyTime`、`wmTime` 时间范围为两个值:第一个为开始时间,第二个为结束时间。 - `temps`、`etTemps`、`dataJson` 均为 JSON 字符串,需要前端二次解析;解析失败时按原文本展示,避免页面报错。 - 设备列表接口一次返回全部已配置数采的设备(当前 8 台),不需要分页。 - 台账保存时数采编号重复会返回“数采设备编号已被其他设备占用”,需提示用户更换编号。