From d551bc807107679b48c2fce2a048289f2378b8b4 Mon Sep 17 00:00:00 2001 From: tangzh Date: Tue, 22 Jul 2025 13:40:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/enums/CurrentStatusEnum.java | 5 ++++- .../impl/WebSocketSdcpServiceImpl.java | 13 ++++++++---- .../service/impl/WebSocketVueServiceImpl.java | 21 +++++++++++-------- .../webstocket/req/WebSocketReqDTO.java | 11 ++++++++++ 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/CurrentStatusEnum.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/CurrentStatusEnum.java index bdbada3..5d387c3 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/CurrentStatusEnum.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/CurrentStatusEnum.java @@ -22,9 +22,12 @@ public enum CurrentStatusEnum { SDCP_MACHINE_STATUS_DEFAULT(-1, "默认/断开"), SDCP_MACHINE_STATUS_IDLE(0, "空闲"), - SDCP_MACHINE_STATUS_PRINTING(1, "执行打印任务中"), + SDCP_MACHINE_STATUS_PRINTING(1, "打印任务执行中"), SDCP_MACHINE_STATUS_PREPARE(2, "打印准备过程中"), // SDCP_MACHINE_STATUS_SPADE(3, "铲件过程中"), + SDCP_MACHINE_STATUS_PAUSED(4, "暂停"), + SDCP_MACHINE_STATUS_COMPLETE(5, "打印完成"), + SDCP_MACHINE_STATUS_ALARM(6, "报警"), ; private Integer code; diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java index a88524d..4998ce0 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java @@ -149,9 +149,11 @@ public class WebSocketSdcpServiceImpl extends WebSocketService { log.info("<<< 用户【{}】已退出连接,忽略", userId); return; } - ImageDataVo imageDataVo = imageUser.get(uSocket.session.getId()); + String category = dataMap.get("Category").toString(); + String mapKey = uSocket.session.getId() + "_" + category; + ImageDataVo imageDataVo = imageUser.get(mapKey); imageDataVo.imgWrite(Base64.getDecoder().decode(img64)); - imageUser.put(uSocket.session.getId(), imageDataVo); + imageUser.put(mapKey, imageDataVo); Map commandResult = new HashMap<>(); commandResult.put("deviceSn", deviceSn); commandResult.put("chunkIndex", (Integer.parseInt(dataMap.get("ChunkIndex")) + 1) + ""); // 图片当前分片数 @@ -308,15 +310,18 @@ public class WebSocketSdcpServiceImpl extends WebSocketService { return; } // 图片接收结束,生成图片,给前端推送图片链接 - ImageDataVo imageDataVo = imageUser.get(uSession.getId()); + String category = cData.get("Category").toString(); + String mapKey = uSession.getId() + "_" + category; + ImageDataVo imageDataVo = imageUser.get(mapKey); byte[] imageAllData = imageDataVo.getFullImageData(); String folder = "image/"; String imgDir = myFileProperties.getPath().getPath() + folder; String imgUrl = imageDataVo.saveImage(imageAllData, imgDir); + commandResult.put("category", category); commandResult.put("imageUrl", "/file/" + folder + imgUrl); remark = "图片完成传输"; msgEnum = MsgEnum.INFO; - imageUser.remove(uSession.getId()); + imageUser.remove(mapKey); } } // 打开/关闭视频 diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java index 1540c35..a27cc9f 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java @@ -162,11 +162,11 @@ public class WebSocketVueServiceImpl extends WebSocketService { data.setData(dataParam); data.setType(0); } - // 打印 status = 0 + // 打印 status = (0 || 5) // {"Topic":"sdcp/request/12345678","command":"PRINT"} else if (command.equals(CapabilitieEnum.PRINT.name())) { BusDevice device = myDeviceService.getByDeviceCode(deviceSn); - if (!device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_IDLE.getCode())) { + if (!(device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_IDLE.getCode()) || device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_COMPLETE.getCode()))) { Map commandResult = new HashMap<>(); commandResult.put("deviceSn", deviceSn); sendVueMessage(session, JSON.toJSONString(new SocketMsg(commandResult, "当前状态无法操作打印", MsgEnum.ERROR))); @@ -195,11 +195,13 @@ public class WebSocketVueServiceImpl extends WebSocketService { data.setData(dataParam); data.setFrom(0); } - // 退出 status = !(-1 || 0) + // 退出 status = !(-1 || 0 || 6) // {"Topic":"sdcp/request/12345678","command":"EXIT"} else if (command.equals(CapabilitieEnum.EXIT.name())) { BusDevice device = myDeviceService.getByDeviceCode(deviceSn); - if (device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_DEFAULT.getCode()) || device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_IDLE.getCode())) { + if (device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_DEFAULT.getCode()) + || device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_IDLE.getCode()) + || device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_ALARM.getCode())) { Map commandResult = new HashMap<>(); commandResult.put("deviceSn", deviceSn); sendVueMessage(session, JSON.toJSONString(new SocketMsg(commandResult, "当前状态无法操作退出", MsgEnum.ERROR))); @@ -211,11 +213,11 @@ public class WebSocketVueServiceImpl extends WebSocketService { data.setData(dataParam); data.setFrom(0); } - // 继续 status = 1 && PrintStatus = 6 + // 继续 status = 4 && PrintStatus = 6 // {"Topic":"sdcp/request/12345678","command":"CONTINUE"} else if (command.equals(CapabilitieEnum.CONTINUE.name())) { BusDevice device = myDeviceService.getByDeviceCode(deviceSn); - if (!(device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_PRINTING.getCode()) && device.getPrintStatus().equals(PrintInfoStatusEnum.SDCP_PRINT_STATUS_PAUSED.getCode()))) { + if (!(device.getStatus().equals(CurrentStatusEnum.SDCP_MACHINE_STATUS_PAUSED.getCode()) && device.getPrintStatus().equals(PrintInfoStatusEnum.SDCP_PRINT_STATUS_PAUSED.getCode()))) { Map commandResult = new HashMap<>(); commandResult.put("deviceSn", deviceSn); sendVueMessage(session, JSON.toJSONString(new SocketMsg(commandResult, "当前状态无法操作继续", MsgEnum.ERROR))); @@ -258,15 +260,16 @@ public class WebSocketVueServiceImpl extends WebSocketService { data.setFrom(0); } // 图片 - // {"Topic":"sdcp/request/12345678","command":"IMAGE"} + // {"Topic":"sdcp/request/12345678","command":"IMAGE","category":"0"} else if (command.equals(CapabilitieEnum.IMAGE.name())) { data.setCmd(385); Map dataParam = new HashMap<>(); - dataParam.put("Type", 0); + dataParam.put("Category", param.getCategory()); dataParam.put("UserId", session.getId()); data.setData(dataParam); // 记录用户获取图片 - imageUser.put(session.getId(), new ImageDataVo()); + String mapKey = session.getId() + "_" + param.getCategory(); + imageUser.put(mapKey, new ImageDataVo()); } // 视频 // {"Topic":"sdcp/request/12345678","command":"OPEN_VIDEO"} diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/webstocket/req/WebSocketReqDTO.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/webstocket/req/WebSocketReqDTO.java index d58c5f1..bebff63 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/webstocket/req/WebSocketReqDTO.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/webstocket/req/WebSocketReqDTO.java @@ -19,6 +19,9 @@ public class WebSocketReqDTO extends WebSocketParam implements Serializable { // 打印的文件路径 private String filename; + // 获取图片时用到:0视觉图片;1设备图片 + private Integer category = 0; + @JSONField(name = "Data") public WebSocketReqData getData() { return Data; @@ -51,4 +54,12 @@ public class WebSocketReqDTO extends WebSocketParam implements Serializable { public void setFilename(String filename) { this.filename = filename; } + + public Integer getCategory() { + return category; + } + + public void setCategory(Integer category) { + this.category = category; + } }