From d7bfb66bb5b385b4f126045b00c09165d592d517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Fri, 1 Aug 2025 21:22:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iflytop/handacid/app/controller/TestController.java | 4 ++-- .../handacid/app/core/listener/BleGamepadEventListener.java | 8 ++++++-- .../com/iflytop/handacid/app/service/ChannelCtrlService.java | 11 +++++++++++ .../handacid/app/websocket/server/WebSocketSender.java | 12 +++++------- .../java/com/iflytop/handacid/common/result/ResultCode.java | 6 ++++++ 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/iflytop/handacid/app/controller/TestController.java b/src/main/java/com/iflytop/handacid/app/controller/TestController.java index bc259c9..f76563c 100644 --- a/src/main/java/com/iflytop/handacid/app/controller/TestController.java +++ b/src/main/java/com/iflytop/handacid/app/controller/TestController.java @@ -66,14 +66,14 @@ public class TestController { @Operation(summary = "推送弹窗") @PostMapping("/push-popup") public Result pushPopup(AlertLevel lv, String resultCode) { - webSocketSender.pushPopup(AlertGenerator.generateJson(lv,ResultCode.getByCode(resultCode))); + webSocketSender.pushPopup(lv,ResultCode.getByCode(resultCode)); return Result.success(); } @Operation(summary = "推送小提示") @PostMapping("/push-toast") public Result pushToast(AlertLevel lv, String resultCode) { - webSocketSender.pushToast(AlertGenerator.generateJson(lv,ResultCode.getByCode(resultCode))); + webSocketSender.pushToast(lv,ResultCode.getByCode(resultCode)); return Result.success(); } diff --git a/src/main/java/com/iflytop/handacid/app/core/listener/BleGamepadEventListener.java b/src/main/java/com/iflytop/handacid/app/core/listener/BleGamepadEventListener.java index 9b28282..eecad86 100644 --- a/src/main/java/com/iflytop/handacid/app/core/listener/BleGamepadEventListener.java +++ b/src/main/java/com/iflytop/handacid/app/core/listener/BleGamepadEventListener.java @@ -3,6 +3,9 @@ package com.iflytop.handacid.app.core.listener; import com.iflytop.handacid.app.core.state.DeviceState; import com.iflytop.handacid.app.scheduled.BleGamepadStateScheduledTask; import com.iflytop.handacid.app.service.ChannelCtrlService; +import com.iflytop.handacid.app.websocket.server.AlertLevel; +import com.iflytop.handacid.app.websocket.server.WebSocketSender; +import com.iflytop.handacid.common.result.ResultCode; import com.iflytop.handacid.hardware.service.AppEventBusService; import com.iflytop.handacid.hardware.type.A8kPacket; import com.iflytop.handacid.hardware.type.CmdId; @@ -25,6 +28,7 @@ public class BleGamepadEventListener { private final ChannelCtrlService channelCtrlService; private final DeviceState deviceState; private final BleGamepadStateScheduledTask bleGamepadStateScheduledTask; + private final WebSocketSender webSocketSender; @PostConstruct synchronized public void init() { @@ -44,7 +48,7 @@ public class BleGamepadEventListener { //判断当前的设备状态 log.info("蓝牙手柄 加酸按钮 按下"); if (deviceState.isSolutionPreFillStart()) {//正在预充 忽略加液按钮事件 - log.info("正在与预充中..."); + webSocketSender.pushToast(AlertLevel.error, ResultCode.PRE_CHARGING);//正在预充中 return; } if (deviceState.isSolutionAdding()) { @@ -55,7 +59,7 @@ public class BleGamepadEventListener { } else if (CmdId.event_ble_gamepad_liquid_acid_prefilling.equals(cmdId)) { log.info("蓝牙手柄 预充按钮 按下"); if (deviceState.isSolutionAdding()) {//正在加液 忽略预充按钮事件 - log.info("正在加液中..."); + webSocketSender.pushToast(AlertLevel.error, ResultCode.SOLUTION_ADDING);//正在加液中 return; } if (deviceState.isSolutionPreFillStart()) { diff --git a/src/main/java/com/iflytop/handacid/app/service/ChannelCtrlService.java b/src/main/java/com/iflytop/handacid/app/service/ChannelCtrlService.java index 8429ebd..4f6a3bd 100644 --- a/src/main/java/com/iflytop/handacid/app/service/ChannelCtrlService.java +++ b/src/main/java/com/iflytop/handacid/app/service/ChannelCtrlService.java @@ -11,10 +11,13 @@ import com.iflytop.handacid.app.core.command.DeviceCommand; import com.iflytop.handacid.app.core.command.DeviceCommandGenerator; import com.iflytop.handacid.app.core.state.ChannelState; import com.iflytop.handacid.app.core.state.DeviceState; +import com.iflytop.handacid.app.websocket.server.AlertLevel; +import com.iflytop.handacid.app.websocket.server.WebSocketSender; import com.iflytop.handacid.common.model.entity.AuditRecord; import com.iflytop.handacid.common.model.entity.Channel; import com.iflytop.handacid.common.model.entity.Formulation; import com.iflytop.handacid.common.model.entity.PreFill; +import com.iflytop.handacid.common.result.ResultCode; import com.iflytop.handacid.common.service.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -40,6 +43,7 @@ public class ChannelCtrlService { private final SystemConfigService systemConfigService; private final ChannelService channelService; private final PreFillService preFillService; + private final WebSocketSender webSocketSender; /** * 开始加液 @@ -54,6 +58,13 @@ public class ChannelCtrlService { log.warn("没有选中的通道"); return; } + for (ChannelState channelState : channelStateList) { + if(channelState.getTargetVolume() == null){ + webSocketSender.pushPopup(AlertLevel.error, ResultCode.PLEASE_SELECT_VOLUME); + return; + } + } + channelStateList = deviceState.filterChannelStatesIsSelected(); try { List valveOpenDeviceCommandFutureList = new ArrayList<>(); diff --git a/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java b/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java index 8b93939..ce1b35b 100644 --- a/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java +++ b/src/main/java/com/iflytop/handacid/app/websocket/server/WebSocketSender.java @@ -1,14 +1,12 @@ package com.iflytop.handacid.app.websocket.server; import cn.hutool.json.JSONUtil; +import com.iflytop.handacid.common.result.ResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.time.Instant; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; @Slf4j @Component @@ -29,15 +27,15 @@ public class WebSocketSender { /** * 弹窗 */ - public void pushPopup(Object data){ - push(WebSocketMessageType.POPUP, data); + public void pushPopup(AlertLevel lv, ResultCode resultCode) { + push(WebSocketMessageType.POPUP, AlertGenerator.generateJson(lv, resultCode)); } /** * 小提醒 */ - public void pushToast(Object data){ - push(WebSocketMessageType.TOAST, data); + public void pushToast(AlertLevel lv, ResultCode resultCode) { + push(WebSocketMessageType.TOAST, AlertGenerator.generateJson(lv, resultCode)); } public void pushDebug(Object data) { diff --git a/src/main/java/com/iflytop/handacid/common/result/ResultCode.java b/src/main/java/com/iflytop/handacid/common/result/ResultCode.java index cd93c79..7879800 100644 --- a/src/main/java/com/iflytop/handacid/common/result/ResultCode.java +++ b/src/main/java/com/iflytop/handacid/common/result/ResultCode.java @@ -61,6 +61,12 @@ public enum ResultCode implements IResultCode, Serializable { TARGET_MODULE_NO_TUBE("6022", "目标模块无试管"), CMD_BUSY("6025", "设备忙,请稍后"), FORMULATION_USED("6026", "存在正在使用的配方,禁止删除"), + + //============================ 8xxx:主动推送 ============================ + PLEASE_SELECT_VOLUME("8001", "请选择加液体积"), + PRE_CHARGING("8002", "正在预充中"), + SOLUTION_ADDING("8003", "正在加液中"), + ; /** * 状态码