diff --git a/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java b/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java index 8a0bf9d..17ce78c 100644 --- a/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java +++ b/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java @@ -30,28 +30,15 @@ public class SelfTestController { @Operation(summary = "自检完毕") @PostMapping("/finish") - public Result selfTestFinish() throws Exception { + public Result selfTestFinish(){ deviceStateService.getDeviceState().setSelfTest(true); - new Thread(() -> { - try { - //deviceCommandUtilService.capMotorMove(21); - } catch (Exception e) { - log.error("拍子存放区初始化上升失败", e); - } - }).start(); return Result.success(); } - @Operation(summary = "改变自检状态") + + @Operation(summary = "手动改变自检状态") @PostMapping("/isFinish") - public Result selfTestFinish(boolean isFinish) throws Exception { + public Result selfTestFinish(boolean isFinish){ deviceStateService.getDeviceState().setSelfTest(isFinish); - new Thread(() -> { - try { - //deviceCommandUtilService.capMotorMove(21); - } catch (Exception e) { - log.error("拍子存放区初始化上升失败", e); - } - }).start(); return Result.success(); } } diff --git a/src/main/java/com/iflytop/sgs/app/core/aspect/DeviceStateChangeAspect.java b/src/main/java/com/iflytop/sgs/app/core/aspect/DeviceStateChangeAspect.java index aaab584..992d730 100644 --- a/src/main/java/com/iflytop/sgs/app/core/aspect/DeviceStateChangeAspect.java +++ b/src/main/java/com/iflytop/sgs/app/core/aspect/DeviceStateChangeAspect.java @@ -8,8 +8,12 @@ import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + @Slf4j @Aspect @Component @@ -18,6 +22,13 @@ public class DeviceStateChangeAspect { private final WebSocketSender webSocketService; private final DeviceStateService deviceStateService; + private final Lock lock = new ReentrantLock(); + + @Before("execution(* com.iflytop.sgs.app.model.bo.status..set*(..))") + public void beforeSetMethod(JoinPoint joinPoint) { + lock.lock(); + } + @After("execution(* com.iflytop.sgs.app.model.bo.status.device.*.set*(..))") public void afterSetMethod(JoinPoint joinPoint) { try { @@ -32,6 +43,8 @@ public class DeviceStateChangeAspect { } } catch (Exception e) { log.error("处理状态变更后的值失败", e); + } finally { + lock.unlock(); } } }