diff --git a/src/main/java/com/dreamworks/boditech/MyApplication.java b/src/main/java/com/dreamworks/boditech/MyApplication.java index 76c96b8..c60e176 100644 --- a/src/main/java/com/dreamworks/boditech/MyApplication.java +++ b/src/main/java/com/dreamworks/boditech/MyApplication.java @@ -52,7 +52,7 @@ public class MyApplication implements ApplicationRunner, ApplicationContextAware // analysisScanMotor.reset(); - this.analysis(); +// this.analysis(); } private void analysis() { diff --git a/src/main/java/com/dreamworks/boditech/controller/TestController.java b/src/main/java/com/dreamworks/boditech/controller/TestController.java index 10b9687..a58d711 100644 --- a/src/main/java/com/dreamworks/boditech/controller/TestController.java +++ b/src/main/java/com/dreamworks/boditech/controller/TestController.java @@ -5,6 +5,7 @@ import com.dreamworks.boditech.entity.parameter.ParamBatchDeleteById; import com.dreamworks.boditech.entity.parameter.ParamEmergencyTaskSave; import com.dreamworks.boditech.entity.parameter.ParamTestSearch; import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSave; +import com.dreamworks.boditech.service.DeviceService; import com.dreamworks.boditech.service.ProjectService; import com.dreamworks.boditech.service.TestService; import com.dreamworks.boditech.utils.MyCommon; @@ -20,6 +21,9 @@ import java.util.Map; @Controller public class TestController extends BaseController { @Resource + private DeviceService deviceService; + + @Resource private TestService testService; @Resource private ProjectService projectService; @@ -122,6 +126,18 @@ public class TestController extends BaseController { @ResponseBody @PostMapping("/api/test/emergency-task-append") public ApiResponse testEmergencyAppend( @RequestBody List param) { + if ( !this.deviceService.isExecutorRunning() ) { + return this.error("设备未就绪,无法添加任务"); + } + + var hasEnabledSlot = false; + for ( ParamEmergencyTaskSave item : param ) { + hasEnabledSlot = hasEnabledSlot || item.enable; + } + if ( !hasEnabledSlot ) { + return this.error("未找到可用的急诊位信息,无法添加任务"); + } + for ( ParamEmergencyTaskSave item : param ) { this.testService.emergencyTaskSave(item); } diff --git a/src/main/java/com/dreamworks/boditech/driver/connection/ComWebsocketClient.java b/src/main/java/com/dreamworks/boditech/driver/connection/ComWebsocketClient.java index ae9ffae..92682fd 100644 --- a/src/main/java/com/dreamworks/boditech/driver/connection/ComWebsocketClient.java +++ b/src/main/java/com/dreamworks/boditech/driver/connection/ComWebsocketClient.java @@ -5,6 +5,8 @@ import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import java.net.ConnectException; import java.net.URI; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -154,13 +156,32 @@ public class ComWebsocketClient extends WebSocketClient { @Override public void onClose(int i, String s, boolean b) { - LOG.info("close"); - throw new RuntimeException("device connection closed"); + LOG.info("device connection closed : ({}) {}", i, s); + this.tryReconnect(); } @Override public void onError(Exception e) { + if ( e instanceof ConnectException ) { + LOG.warn("device connection error : {}", e.getMessage()); + this.tryReconnect(); + return ; + } + LOG.error("error", e); throw new RuntimeException(e); } + + // 尝试重连 + private void tryReconnect() { + var thread = new Thread(() -> { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + this.reconnect(); + }); + thread.start(); + } }