From e5ab98141a0eae1478c2655377fd4712f7716613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Mon, 26 May 2025 10:32:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86DeviceCommandUtilService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sgs/app/cmd/control/AnnealStartCommand.java | 8 +- .../sgs/app/cmd/control/AnnealStopCommand.java | 6 +- .../sgs/app/cmd/control/CleanStartCommand.java | 6 +- .../sgs/app/cmd/control/CleanStopCommand.java | 6 +- .../sgs/app/cmd/control/DoorCloseCommand.java | 6 +- .../sgs/app/cmd/control/DoorOpenCommand.java | 6 +- .../sgs/app/cmd/control/DoorOriginCommand.java | 6 +- .../sgs/app/cmd/control/DryStartCommand.java | 10 +- .../sgs/app/cmd/control/DryStopCommand.java | 8 +- .../sgs/app/cmd/control/FanStartCommand.java | 6 +- .../sgs/app/cmd/control/FanStopCommand.java | 6 +- .../sgs/app/cmd/control/GantryXOriginCommand.java | 33 -- .../sgs/app/cmd/control/GantryZOriginCommand.java | 33 -- .../sgs/app/cmd/control/HeatStartCommand.java | 2 +- .../sgs/app/cmd/control/HeatStopCommand.java | 6 +- .../sgs/app/cmd/control/MoveToHeatAreaCommand.java | 23 +- .../app/cmd/control/MoveToSolutionAreaCommand.java | 23 +- .../sgs/app/cmd/control/SolutionAddCommand.java | 4 +- .../sgs/app/cmd/control/SolutionReduceCommand.java | 5 +- .../app/cmd/control/TransferXOriginCommand.java | 33 ++ .../app/cmd/control/TransferZOriginCommand.java | 33 ++ .../iflytop/sgs/app/controller/HeatController.java | 33 ++ .../sgs/app/controller/HeatModuleController.java | 33 -- .../sgs/app/controller/SelfTestController.java | 2 +- .../sgs/app/controller/SystemController.java | 2 +- .../iflytop/sgs/app/core/device/CommandState.java | 35 -- .../iflytop/sgs/app/core/device/CraftsState.java | 23 -- .../iflytop/sgs/app/core/device/DeviceState.java | 36 -- .../com/iflytop/sgs/app/core/device/DoorState.java | 11 - .../sgs/app/core/device/GantryArmState.java | 11 - .../sgs/app/core/device/HeatModuleState.java | 47 --- .../iflytop/sgs/app/core/device/SelfTestState.java | 49 --- .../app/core/device/SolutionContainerState.java | 34 -- .../sgs/app/core/device/SolutionModuleState.java | 23 -- .../com/iflytop/sgs/app/core/device/TrayState.java | 37 -- .../com/iflytop/sgs/app/core/device/TubeState.java | 17 - .../sgs/app/model/bo/status/CommandMutexState.java | 35 ++ .../sgs/app/model/bo/status/SelfTestState.java | 49 +++ .../app/model/bo/status/crafts/CraftsState.java | 23 ++ .../app/model/bo/status/device/DeviceState.java | 36 ++ .../sgs/app/model/bo/status/device/DoorState.java | 11 + .../app/model/bo/status/device/GantryArmState.java | 11 + .../model/bo/status/device/HeatModuleState.java | 47 +++ .../bo/status/device/SolutionContainerState.java | 34 ++ .../bo/status/device/SolutionModuleState.java | 23 ++ .../sgs/app/model/bo/status/device/TrayState.java | 38 ++ .../sgs/app/model/bo/status/device/TubeState.java | 17 + .../iflytop/sgs/app/model/vo/SetTrayTubeVO.java | 2 +- .../sgs/app/service/api/HeatModuleService.java | 19 - .../iflytop/sgs/app/service/api/HeatService.java | 19 + .../iflytop/sgs/app/service/api/TrayService.java | 2 +- .../service/device/DeviceCommandUtilService.java | 424 --------------------- .../sgs/app/service/device/DeviceInitService.java | 4 +- .../sgs/app/service/device/DeviceStateService.java | 5 +- .../sgs/app/service/device/SelfTestService.java | 2 +- .../service/device/module/DoorModuleService.java | 39 ++ .../service/device/module/HeatModuleService.java | 96 +++++ .../device/module/SolutionModuleService.java | 24 ++ .../device/module/TransferModuleService.java | 248 ++++++++++++ .../sgs/common/cmd/DeviceCommandGenerator.java | 20 +- 60 files changed, 941 insertions(+), 949 deletions(-) delete mode 100644 src/main/java/com/iflytop/sgs/app/cmd/control/GantryXOriginCommand.java delete mode 100644 src/main/java/com/iflytop/sgs/app/cmd/control/GantryZOriginCommand.java create mode 100644 src/main/java/com/iflytop/sgs/app/cmd/control/TransferXOriginCommand.java create mode 100644 src/main/java/com/iflytop/sgs/app/cmd/control/TransferZOriginCommand.java create mode 100644 src/main/java/com/iflytop/sgs/app/controller/HeatController.java delete mode 100644 src/main/java/com/iflytop/sgs/app/controller/HeatModuleController.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/CommandState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/CraftsState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/DeviceState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/DoorState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/GantryArmState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/HeatModuleState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/SelfTestState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/SolutionContainerState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/SolutionModuleState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/TrayState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/core/device/TubeState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/crafts/CraftsState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/DeviceState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/DoorState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/GantryArmState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionContainerState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionModuleState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/TrayState.java create mode 100644 src/main/java/com/iflytop/sgs/app/model/bo/status/device/TubeState.java delete mode 100644 src/main/java/com/iflytop/sgs/app/service/api/HeatModuleService.java create mode 100644 src/main/java/com/iflytop/sgs/app/service/api/HeatService.java delete mode 100644 src/main/java/com/iflytop/sgs/app/service/device/DeviceCommandUtilService.java diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStartCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStartCommand.java index 942cab5..9f7080a 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStartCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStartCommand.java @@ -2,10 +2,10 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; -import com.iflytop.sgs.app.core.device.HeatModuleState; +import com.iflytop.sgs.app.model.bo.status.device.HeatModuleState; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("heat_start")//业务指令注解 public class AnnealStartCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -39,7 +39,7 @@ public class AnnealStartCommand extends BaseCommandHandler { //从系统状态中获取指定加热区设定的退火温度数值 double temperature = deviceStateService.getHeatModuleState(heatModuleId).getAnnealTemperature(); //开启退火 - deviceCommandUtilService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId, temperature); + heatModuleService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId, temperature); //设置加热区状态 正在退火 deviceStateService.setHeatModuleStateAnnealing(heatModuleId,true); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStopCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStopCommand.java index b676d2d..38b22ad 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStopCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStopCommand.java @@ -3,8 +3,8 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("heat_start")//业务指令注解 public class AnnealStopCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -32,7 +32,7 @@ public class AnnealStopCommand extends BaseCommandHandler { String heatId = heatIdJsonArray.getStr(i); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); //关闭加热 - deviceCommandUtilService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); + heatModuleService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); //设置加热区状态 退火结束 deviceStateService.setHeatModuleStateAnnealing(heatModuleId,false); } diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java index 23409e6..d7272bb 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java @@ -3,8 +3,8 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("heat_start")//业务指令注解 public class CleanStartCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -34,7 +34,7 @@ public class CleanStartCommand extends BaseCommandHandler { //从系统状态中获取指定加热区设定的温度数值 double temperature = deviceStateService.getHeatModuleState(heatModuleId).getTemperature(); //开启加热 - deviceCommandUtilService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId, temperature); + heatModuleService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId, temperature); deviceStateService.setHeatModuleStateHeating(heatModuleId, true);//设置状态加热中 } diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStopCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStopCommand.java index a6eb2cb..249b91b 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStopCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStopCommand.java @@ -3,8 +3,8 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("heat_start")//业务指令注解 public class CleanStopCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -34,7 +34,7 @@ public class CleanStopCommand extends BaseCommandHandler { //从系统状态中获取指定加热区设定的温度数值 double temperature = deviceStateService.getHeatModuleState(heatModuleId).getTemperature(); //开启加热 - deviceCommandUtilService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId, temperature); + heatModuleService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId, temperature); deviceStateService.setHeatModuleStateHeating(heatModuleId, true);//设置状态加热中 } diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/DoorCloseCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/DoorCloseCommand.java index b52688f..f554b15 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/DoorCloseCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/DoorCloseCommand.java @@ -2,8 +2,8 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.DoorModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,14 +19,14 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("door_close")//业务指令注解 public class DoorCloseCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final DoorModuleService doorModuleService; private final DeviceStateService deviceStateService; @Override public CompletableFuture handle(CmdDTO cmdDTO) { return runAsync(() -> { //门电机回原点 - deviceCommandUtilService.doorOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); + doorModuleService.doorOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); //将门状态设置为false deviceStateService.setDoorStatus(false); }); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOpenCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOpenCommand.java index 6ca5fce..a915d21 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOpenCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOpenCommand.java @@ -2,9 +2,9 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.api.DevicePositionService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.DoorModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.data.DevicePositionCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("door_open")//业务指令注解 public class DoorOpenCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final DoorModuleService doorModuleService; private final DevicePositionService devicePositionService; private final DeviceStateService deviceStateService; @@ -31,7 +31,7 @@ public class DoorOpenCommand extends BaseCommandHandler { //从数据库获取开门距离 Double doorOpenDistance = devicePositionService.getPosition(DevicePositionCode.doorOpen).getDistance(); //门电机移动开门距离 - deviceCommandUtilService.doorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), doorOpenDistance); + doorModuleService.doorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), doorOpenDistance); //将门状态设置为true deviceStateService.setDoorStatus(true); }); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOriginCommand.java index c25f78c..20e333c 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOriginCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/DoorOriginCommand.java @@ -2,9 +2,9 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; import com.iflytop.sgs.app.service.device.SelfTestService; +import com.iflytop.sgs.app.service.device.module.DoorModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -20,7 +20,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("door_origin")//业务指令注解 public class DoorOriginCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final DoorModuleService doorModuleService; private final DeviceStateService deviceStateService; private final SelfTestService selfTestService; @@ -28,7 +28,7 @@ public class DoorOriginCommand extends BaseCommandHandler { public CompletableFuture handle(CmdDTO cmdDTO) { return runAsync(() -> { //门电机回原点 - deviceCommandUtilService.doorOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); + doorModuleService.doorOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); selfTestService.getSelfTestState().setDoorOrigin(true);//设置是否在原点状态 //将门状态设置为false deviceStateService.setDoorStatus(false); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/DryStartCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/DryStartCommand.java index dc347de..d665634 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/DryStartCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/DryStartCommand.java @@ -2,10 +2,10 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; -import com.iflytop.sgs.app.core.device.HeatModuleState; +import com.iflytop.sgs.app.model.bo.status.device.HeatModuleState; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("heat_start")//业务指令注解 public class DryStartCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService deviceCommandUtilService; private final DeviceStateService deviceStateService; @Override @@ -35,13 +35,13 @@ public class DryStartCommand extends BaseCommandHandler { HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); HeatModuleState heatModuleState = deviceStateService.getHeatModuleState(heatModuleId); //设置加热区目标温度 - deviceStateService.setHeatModuleStateTargetTemperature(heatModuleId,heatModuleState.getDryTemperature()); + deviceStateService.setHeatModuleStateTargetTemperature(heatModuleId, heatModuleState.getDryTemperature()); //从系统状态中获取指定加热区设定的烘干温度数值 double temperature = deviceStateService.getHeatModuleState(heatModuleId).getDryTemperature(); //开启退火 deviceCommandUtilService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId, temperature); //设置加热区状态 正在烘干 - deviceStateService.setHeatModuleStateAnnealing(heatModuleId,true); + deviceStateService.setHeatModuleStateAnnealing(heatModuleId, true); } }); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/DryStopCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/DryStopCommand.java index ca70079..e030449 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/DryStopCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/DryStopCommand.java @@ -3,8 +3,8 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("heat_start")//业务指令注解 public class DryStopCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -32,9 +32,9 @@ public class DryStopCommand extends BaseCommandHandler { String heatId = heatIdJsonArray.getStr(i); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); //关闭加热 - deviceCommandUtilService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); + heatModuleService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); //设置加热区状态 退火结束 - deviceStateService.setHeatModuleStateDrying(heatModuleId,false); + deviceStateService.setHeatModuleStateDrying(heatModuleId, false); } }); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/FanStartCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/FanStartCommand.java index 4582f64..73f26bf 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/FanStartCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/FanStartCommand.java @@ -3,8 +3,8 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("fan_start") public class FanStartCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -31,7 +31,7 @@ public class FanStartCommand extends BaseCommandHandler { for (int i = 0; i < heatIdJsonArray.size(); i++) { String heatId = heatIdJsonArray.getStr(i); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); - deviceCommandUtilService.fanStart(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); + heatModuleService.fanStart(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); deviceStateService.setHeatModuleStateFanOpen(heatModuleId, true); } }); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/FanStopCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/FanStopCommand.java index 8913710..5fc930d 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/FanStopCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/FanStopCommand.java @@ -3,8 +3,8 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("fan_stop") public class FanStopCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -31,7 +31,7 @@ public class FanStopCommand extends BaseCommandHandler { for (int i = 0; i < heatIdJsonArray.size(); i++) { String heatId = heatIdJsonArray.getStr(i); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); - deviceCommandUtilService.fanClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); + heatModuleService.fanClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); deviceStateService.setHeatModuleStateFanOpen(heatModuleId, false); } }); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/GantryXOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/GantryXOriginCommand.java deleted file mode 100644 index bcbdd4b..0000000 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/GantryXOriginCommand.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.iflytop.sgs.app.cmd.control; - -import com.iflytop.sgs.app.core.BaseCommandHandler; -import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; -import com.iflytop.sgs.app.service.device.SelfTestService; -import com.iflytop.sgs.common.annotation.CommandMapping; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.concurrent.CompletableFuture; - -/** - * 龙门架机械臂x轴回原点 - */ -@Slf4j -@Component -@RequiredArgsConstructor -@CommandMapping("gantry_x_origin")//业务指令注解 -public class GantryXOriginCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; - private final SelfTestService selfTestService; - - @Override - public CompletableFuture handle(CmdDTO cmdDTO) { - return runAsync(() -> { - deviceCommandUtilService.gantryXMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); - selfTestService.getSelfTestState().setGantryXOrigin(true);//设置是否在原点状态 - }); - } -} - diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/GantryZOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/GantryZOriginCommand.java deleted file mode 100644 index fb343db..0000000 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/GantryZOriginCommand.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.iflytop.sgs.app.cmd.control; - -import com.iflytop.sgs.app.core.BaseCommandHandler; -import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; -import com.iflytop.sgs.app.service.device.SelfTestService; -import com.iflytop.sgs.common.annotation.CommandMapping; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.concurrent.CompletableFuture; - -/** - * 龙门架机械臂z轴回原点 - */ -@Slf4j -@Component -@RequiredArgsConstructor -@CommandMapping("gantry_z_origin")//业务指令注解 -public class GantryZOriginCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; - private final SelfTestService selfTestService; - - @Override - public CompletableFuture handle(CmdDTO cmdDTO) { - return runAsync(() -> { - deviceCommandUtilService.gantryZMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); - selfTestService.getSelfTestState().setGantryZOrigin(true);//设置是否在原点状态 - }); - } -} - diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStartCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStartCommand.java index dc077a7..3a0f2ef 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStartCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStartCommand.java @@ -2,7 +2,7 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; -import com.iflytop.sgs.app.core.device.HeatModuleState; +import com.iflytop.sgs.app.model.bo.status.device.HeatModuleState; import com.iflytop.sgs.app.model.dto.CmdDTO; import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStopCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStopCommand.java index c337b7e..d02b2f1 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStopCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/HeatStopCommand.java @@ -3,8 +3,8 @@ package com.iflytop.sgs.app.cmd.control; import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("heat_stop")//业务指令注解 public class HeatStopCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; private final DeviceStateService deviceStateService; @Override @@ -32,7 +32,7 @@ public class HeatStopCommand extends BaseCommandHandler { String heatId = heatIdJsonArray.getStr(i); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); //关闭加热 - deviceCommandUtilService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); + heatModuleService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleId); deviceStateService.setHeatModuleStateHeating(heatModuleId, false);//设置状态停止加热 } }); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java index e470065..1ac6d03 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java @@ -3,10 +3,11 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.bo.Point3D; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.api.DevicePositionService; import com.iflytop.sgs.app.service.device.DeviceStateService; -import com.iflytop.sgs.app.service.device.GantryArmService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; +import com.iflytop.sgs.app.service.device.module.SolutionModuleService; +import com.iflytop.sgs.app.service.device.module.TransferModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import com.iflytop.sgs.common.enums.data.DevicePositionCode; @@ -26,9 +27,11 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("move_to_heat_area")//业务指令注解 public class MoveToHeatAreaCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; + private final SolutionModuleService solutionModuleService; + private final TransferModuleService transferModuleService; + private final DevicePositionService devicePositionService; - private final GantryArmService gantryArmService; private final DeviceStateService deviceStateService; @Override @@ -54,19 +57,19 @@ public class MoveToHeatAreaCommand extends BaseCommandHandler { //获取机械臂夹取托盘的纵向高度 double clawTrayHeight = devicePositionService.getPosition(DevicePositionCode.clawTrayHeight).getDistance(); //获取指定加热模块上方点位 - Point3D heatAreaTrayClawPoint3D = deviceCommandUtilService.getHeatAreaTrayClawPoint3D(heatModuleId); + Point3D heatAreaTrayClawPoint3D = heatModuleService.getHeatAreaTrayClawPoint3D(heatModuleId); return runAsync(() -> { try { //升高加液电机高度 - deviceCommandUtilService.motorLiquidMove(cmdDTO.getCommandId(),cmdDTO.getCommand(),liquidMotorSafeDistance); + solutionModuleService.motorLiquidMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidMotorSafeDistance); //移动机械臂到加热区上方 此时机械臂夹着托盘 - deviceCommandUtilService.gantryMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatAreaTrayClawPoint3D); //将机械臂移动至加热模块上方 + transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatAreaTrayClawPoint3D); //将机械臂移动至加热模块上方 //下降z轴,夹爪脱离机械臂 - deviceCommandUtilService.gantryZMove(clawTrayHeight); + transferModuleService.transferZMove(clawTrayHeight); //移动x轴向右脱离托盘 - deviceCommandUtilService.gantryXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -clawTrayGrip); + transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -clawTrayGrip); //z轴返回原点 - deviceCommandUtilService.motorLiquidMove(0); + solutionModuleService.motorLiquidMove(0); } finally { deviceStateService.setGantryArmStateIdle(true); deviceStateService.getCommandState().get().setMoveToHeatAreaCommandExecuting(false); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToSolutionAreaCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToSolutionAreaCommand.java index c9b4fca..cd411d4 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToSolutionAreaCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToSolutionAreaCommand.java @@ -3,9 +3,11 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.bo.Point3D; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.api.DevicePositionService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.HeatModuleService; +import com.iflytop.sgs.app.service.device.module.SolutionModuleService; +import com.iflytop.sgs.app.service.device.module.TransferModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import com.iflytop.sgs.common.enums.data.DevicePositionCode; @@ -25,7 +27,10 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("move_to_solution_area")//业务指令注解 public class MoveToSolutionAreaCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final HeatModuleService heatModuleService; + private final SolutionModuleService solutionModuleService; + private final TransferModuleService transferModuleService; + private final DevicePositionService devicePositionService; private final DeviceStateService deviceStateService; @@ -48,7 +53,7 @@ public class MoveToSolutionAreaCommand extends BaseCommandHandler { //获取加液模块上方点位 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D(); //获取指定加热模块上方点位 - Point3D heatAreaTrayPoint3D = deviceCommandUtilService.getHeatAreaTrayClawPoint3D(heatModuleId); + Point3D heatAreaTrayPoint3D = heatModuleService.getHeatAreaTrayClawPoint3D(heatModuleId); //校验目标加热位是否有托盘 try { @@ -60,17 +65,17 @@ public class MoveToSolutionAreaCommand extends BaseCommandHandler { return runAsync(() -> { try { //升高加液电机高度 - deviceCommandUtilService.motorLiquidMove(cmdDTO.getCommandId(),cmdDTO.getCommand(),liquidMotorSafeDistance); + solutionModuleService.motorLiquidMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidMotorSafeDistance); //机械臂移动到加热位上方或者上料位上方 - deviceCommandUtilService.gantryMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatAreaTrayPoint3D); + transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatAreaTrayPoint3D); //下降z轴 - deviceCommandUtilService.gantryZMove(clawTrayHeight); + transferModuleService.transferZMove(clawTrayHeight); //移动x轴向左夹紧托盘 - deviceCommandUtilService.gantryXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), clawTrayGrip); + transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), clawTrayGrip); //z轴上升到0点 - deviceCommandUtilService.gantryZMove(0); + transferModuleService.transferZMove(0); //机械臂移动到加液区 - deviceCommandUtilService.gantryMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D); + transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D); } finally { deviceStateService.setGantryArmStateIdle(true); deviceStateService.getCommandState().get().setMoveToSolutionAreaCommandExecuting(false); diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java index 04d2e9a..638e544 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java @@ -2,8 +2,8 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.SolutionModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,7 +19,7 @@ import java.util.concurrent.CompletableFuture; @RequiredArgsConstructor @CommandMapping("solution_add")//业务指令注解 public class SolutionAddCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final SolutionModuleService solutionModuleService; private final DeviceStateService deviceStateService; @Override diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java index 05a8131..72c26dd 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java @@ -2,8 +2,8 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; +import com.iflytop.sgs.app.service.device.module.SolutionModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,14 +13,13 @@ import java.util.concurrent.CompletableFuture; /** * 抽取溶液 todo wmy 需要记录托盘每一行的坐标 机械臂移动成功后 调动泵机抽液体 - * */ @Slf4j @Component @RequiredArgsConstructor @CommandMapping("solution_add")//业务指令注解 public class SolutionReduceCommand extends BaseCommandHandler { - private final DeviceCommandUtilService deviceCommandUtilService; + private final SolutionModuleService solutionModuleService; private final DeviceStateService deviceStateService; @Override diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/TransferXOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/TransferXOriginCommand.java new file mode 100644 index 0000000..abb0954 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/TransferXOriginCommand.java @@ -0,0 +1,33 @@ +package com.iflytop.sgs.app.cmd.control; + +import com.iflytop.sgs.app.core.BaseCommandHandler; +import com.iflytop.sgs.app.model.dto.CmdDTO; +import com.iflytop.sgs.app.service.device.SelfTestService; +import com.iflytop.sgs.app.service.device.module.TransferModuleService; +import com.iflytop.sgs.common.annotation.CommandMapping; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.concurrent.CompletableFuture; + +/** + * 转运机械臂x轴回原点 + */ +@Slf4j +@Component +@RequiredArgsConstructor +@CommandMapping("transfer_x_origin")//业务指令注解 +public class TransferXOriginCommand extends BaseCommandHandler { + private final TransferModuleService transferModuleService; + private final SelfTestService selfTestService; + + @Override + public CompletableFuture handle(CmdDTO cmdDTO) { + return runAsync(() -> { + transferModuleService.transferXMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); + selfTestService.getSelfTestState().setGantryXOrigin(true);//设置是否在原点状态 + }); + } +} + diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/TransferZOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/TransferZOriginCommand.java new file mode 100644 index 0000000..d4b0e3e --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/TransferZOriginCommand.java @@ -0,0 +1,33 @@ +package com.iflytop.sgs.app.cmd.control; + +import com.iflytop.sgs.app.core.BaseCommandHandler; +import com.iflytop.sgs.app.model.dto.CmdDTO; +import com.iflytop.sgs.app.service.device.SelfTestService; +import com.iflytop.sgs.app.service.device.module.TransferModuleService; +import com.iflytop.sgs.common.annotation.CommandMapping; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.concurrent.CompletableFuture; + +/** + * 转运机械臂z轴回原点 + */ +@Slf4j +@Component +@RequiredArgsConstructor +@CommandMapping("transfer_z_origin")//业务指令注解 +public class TransferZOriginCommand extends BaseCommandHandler { + private final TransferModuleService transferModuleService; + private final SelfTestService selfTestService; + + @Override + public CompletableFuture handle(CmdDTO cmdDTO) { + return runAsync(() -> { + transferModuleService.transferZMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); + selfTestService.getSelfTestState().setGantryZOrigin(true);//设置是否在原点状态 + }); + } +} + diff --git a/src/main/java/com/iflytop/sgs/app/controller/HeatController.java b/src/main/java/com/iflytop/sgs/app/controller/HeatController.java new file mode 100644 index 0000000..fc1ab8a --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/controller/HeatController.java @@ -0,0 +1,33 @@ +package com.iflytop.sgs.app.controller; + +import com.iflytop.sgs.app.model.vo.SetTargetTemperatureVO; +import com.iflytop.sgs.app.service.api.HeatService; +import com.iflytop.sgs.common.result.Result; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 加热模块控制 todo wmy 需要和前端同步参数 加热 烘干 退火 + */ +@Tag(name = "加热模块控制") +@RestController +@RequestMapping("/api/heat") +@RequiredArgsConstructor +@Slf4j +public class HeatController { + private final HeatService heatModuleService; + + @Operation(summary = "加热模块设定目标温度") + @PostMapping("/target-temperature") + public Result setTargetTemperature(@Valid @RequestBody SetTargetTemperatureVO setTargetTemperatureVO) { + heatModuleService.setTargetTemperature(setTargetTemperatureVO); + return Result.success(); + } +} diff --git a/src/main/java/com/iflytop/sgs/app/controller/HeatModuleController.java b/src/main/java/com/iflytop/sgs/app/controller/HeatModuleController.java deleted file mode 100644 index 9a4fa34..0000000 --- a/src/main/java/com/iflytop/sgs/app/controller/HeatModuleController.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.iflytop.sgs.app.controller; - -import com.iflytop.sgs.app.model.vo.SetTargetTemperatureVO; -import com.iflytop.sgs.app.service.api.HeatModuleService; -import com.iflytop.sgs.common.result.Result; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 加热模块控制 todo wmy 需要和前端同步参数 加热 烘干 退火 - */ -@Tag(name = "加热模块控制") -@RestController -@RequestMapping("/api/heat") -@RequiredArgsConstructor -@Slf4j -public class HeatModuleController { - private final HeatModuleService heatModuleService; - - @Operation(summary = "加热模块设定目标温度") - @PostMapping("/target-temperature") - public Result setTargetTemperature(@Valid @RequestBody SetTargetTemperatureVO setTargetTemperatureVO) { - heatModuleService.setTargetTemperature(setTargetTemperatureVO); - return Result.success(); - } -} 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 bef0db9..d5d23a6 100644 --- a/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java +++ b/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java @@ -1,6 +1,6 @@ package com.iflytop.sgs.app.controller; -import com.iflytop.sgs.app.core.device.SelfTestState; +import com.iflytop.sgs.app.model.bo.status.SelfTestState; import com.iflytop.sgs.app.service.device.DeviceCommandUtilService; import com.iflytop.sgs.app.service.device.DeviceStateService; import com.iflytop.sgs.app.service.device.SelfTestService; diff --git a/src/main/java/com/iflytop/sgs/app/controller/SystemController.java b/src/main/java/com/iflytop/sgs/app/controller/SystemController.java index 2e9ef2a..99525a2 100644 --- a/src/main/java/com/iflytop/sgs/app/controller/SystemController.java +++ b/src/main/java/com/iflytop/sgs/app/controller/SystemController.java @@ -1,6 +1,6 @@ package com.iflytop.sgs.app.controller; -import com.iflytop.sgs.app.core.device.DeviceState; +import com.iflytop.sgs.app.model.bo.status.device.DeviceState; import com.iflytop.sgs.app.model.dto.SetSystemDatetimeDTO; import com.iflytop.sgs.app.service.device.DeviceStateService; import com.iflytop.sgs.app.service.api.SystemConfigService; diff --git a/src/main/java/com/iflytop/sgs/app/core/device/CommandState.java b/src/main/java/com/iflytop/sgs/app/core/device/CommandState.java deleted file mode 100644 index 6454561..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/CommandState.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import lombok.Data; - -/** - * 指令互斥关系状态 - */ -@Data -public class CommandState { - private boolean capFreeCommandExecuting = false; - private boolean capLiftingOriginCommandExecuting = false; - private boolean capUsedCommandExecuting = false; - private boolean doorCloseCommandExecuting = false; - private boolean doorOpenCommandExecuting = false; - private boolean doorOriginCommandExecuting = false; - private boolean dualRobotJointOriginCommandExecuting = false; - private boolean fanStartCommandExecuting = false; - private boolean fanStopCommandExecuting = false; - private boolean filledSolutionStartCommandExecuting = false; - private boolean filledSolutionStopCommandExecuting = false; - private boolean gantryXOriginCommandExecuting = false; - private boolean gantryYOriginCommandExecuting = false; - private boolean gantryZOriginCommandExecuting = false; - private boolean heatStartCommandExecuting = false; - private boolean heatStopCommandExecuting = false; - private boolean moveToHeatAreaCommandExecuting = false; - private boolean moveToSolutionAreaCommandExecuting = false; - private boolean shakeStartCommandExecuting = false; - private boolean shakeStopCommandExecuting = false; - private boolean solutionAddCommandExecuting = false; - private boolean takePhotoCommandExecuting = false; - private boolean trayDownCommandExecuting = false; - private boolean trayLiftingOriginCommandExecuting = false; - private boolean trayUpCommandExecuting = false; -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/CraftsState.java b/src/main/java/com/iflytop/sgs/app/core/device/CraftsState.java deleted file mode 100644 index a007e79..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/CraftsState.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import com.iflytop.sgs.app.model.entity.Crafts; -import com.iflytop.sgs.app.model.entity.Ores; -import com.iflytop.sgs.common.enums.automaton.CraftStates; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "工艺") -@Data -public class CraftsState { - @Schema(description = "工艺状态") - private CraftStates state; - - @Schema(description = "工艺所属矿石") - private Ores ores; - - @Schema(description = "工艺") - private Crafts craft; - - @Schema(description = "工艺当前步骤下标") - private int currentIndex = 0; -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/DeviceState.java b/src/main/java/com/iflytop/sgs/app/core/device/DeviceState.java deleted file mode 100644 index 58eb13d..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/DeviceState.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import com.iflytop.sgs.app.model.entity.Tasks; -import com.iflytop.sgs.app.model.entity.User; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.ArrayList; -import java.util.List; - -@Schema(description = "当前设备") -@Data -public class DeviceState { - @Schema(description = "门状态") - private final DoorState door = new DoorState(); - @Schema(description = "龙门架机械臂状态") - private final GantryArmState gantryArm = new GantryArmState(); - @Schema(description = "加液模块属性") - private final SolutionModuleState solutionModule = new SolutionModuleState(); - @Schema(description = "加热模块属性") - private final List heatModule = new ArrayList<>(); - @Schema(description = "托盘") - private final List tray = new ArrayList<>(); - @Schema(description = "虚拟模式,true为虚拟") - private boolean virtual = false; - @Schema(description = "初始化状态,true初始化完毕") - private boolean initComplete = false; - @Schema(description = "自检状态,true自检完毕") - private boolean selfTest = false; - @Schema(description = "是否是急停状态,true为急停") - private boolean emergencyStop = false; - @Schema(description = "当前登录用户") - private User currentUser; - @Schema(description = "当前实验") - private Tasks currentTasks; -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/DoorState.java b/src/main/java/com/iflytop/sgs/app/core/device/DoorState.java deleted file mode 100644 index 3299f73..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/DoorState.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "门") -@Data -public class DoorState { - @Schema(description = "是否开门,true为开启状态,false为关闭状态") - private boolean open = false; -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/GantryArmState.java b/src/main/java/com/iflytop/sgs/app/core/device/GantryArmState.java deleted file mode 100644 index a26450e..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/GantryArmState.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "龙门架机械臂") -@Data -public class GantryArmState { - @Schema(description = "是否空闲,true为空闲,false为占用") - private boolean idle = true; -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/HeatModuleState.java b/src/main/java/com/iflytop/sgs/app/core/device/HeatModuleState.java deleted file mode 100644 index 8056e12..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/HeatModuleState.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import com.iflytop.sgs.common.enums.HeatModuleCode; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "加热模块") -@Data -public class HeatModuleState { - @Schema(description = "加热模块code") - private HeatModuleCode moduleCode; - - @Schema(description = "托盘升降状态,0为降下,1为抬起") - private int trayUp = 0; - - @Schema(description = "托盘状态,0为无托盘,1为有托盘") - private int trayStatus = 0; - - @Schema(description = "是否正在加热,true为正在加热,false为未加热") - private boolean heating = false; - - @Schema(description = "是否正在烘干,true为正在烘干,false为未烘干") - private boolean drying = false; - - @Schema(description = "是否正在退火,true为正在退火,false为未退火") - private boolean annealing = false; - - @Schema(description = "是否启动散热,true为正在散热,false为未在散热") - private boolean fanOpen = false; - - @Schema(description = "加热器目标温度") - private Double targetTemperature = null; - - @Schema(description = "加热器烘干温度") - private Double dryTemperature; - @Schema(description = "加热器退火温度") - private Double annealTemperature; - @Schema(description = "加热器加热温度") - private Double heatTemperature; - - @Schema(description = "加热器当前温度") - private Double temperature = null; - - public HeatModuleState(HeatModuleCode moduleCode) { - this.moduleCode = moduleCode; - } -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/SelfTestState.java b/src/main/java/com/iflytop/sgs/app/core/device/SelfTestState.java deleted file mode 100644 index bba2021..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/SelfTestState.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "自检状态") -@Data -public class SelfTestState { - @Schema(description = "门是否在原点") - private boolean doorOrigin = false; - - @Schema(description = "摇匀是否在原点") - private boolean shakeOrigin = false; - - @Schema(description = "龙门架机械臂x轴是否在原点") - private boolean gantryXOrigin = false; - - @Schema(description = "龙门架机械臂y轴是否在原点") - private boolean gantryYOrigin = false; - - @Schema(description = "龙门架机械臂z轴是否在原点") - private boolean gantryZOrigin = false; - - @Schema(description = "加液机械臂是否在原点") - private boolean dualRobotOrigin = false; - - @Schema(description = "拍子升降是否在原点") - private boolean capLiftingOrigin = false; - - @Schema(description = "加热模块01托盘升降是否在原点") - private boolean trayLifting01Origin = false; - - @Schema(description = "加热模块02托盘升降是否在原点") - private boolean trayLifting02Origin = false; - - @Schema(description = "加热模块03托盘升降是否在原点") - private boolean trayLifting03Origin = false; - - @Schema(description = "加热模块04托盘升降是否在原点") - private boolean trayLifting04Origin = false; - - @Schema(description = "加热模块05托盘升降是否在原点") - private boolean trayLifting05Origin = false; - - @Schema(description = "加热模块06托盘升降是否在原点") - private boolean trayLifting06Origin = false; - - -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/SolutionContainerState.java b/src/main/java/com/iflytop/sgs/app/core/device/SolutionContainerState.java deleted file mode 100644 index 77c1eac..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/SolutionContainerState.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import com.iflytop.sgs.common.enums.ContainerCode; -import com.iflytop.sgs.common.enums.ContainerType; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "溶液容器") -@Data -public class SolutionContainerState { - @Schema(description = "容器数据id") - private Long id; - - @Schema(description = "容器code") - private ContainerCode containerCode; - - @Schema(description = "容器类型 solution溶液容器 neutralization中和容器") - private ContainerType type; - - @Schema(description = "容器是否为空,true为空,false不为空") - private boolean empty = false; - - @Schema(description = "容器是否为满,true为满,false不满") - private boolean full = false; - - @Schema(description = "是否完成预充,true为预充,false为排空") - private boolean filledSolution = false; - - public SolutionContainerState(Long id, ContainerCode containerCode, ContainerType type) { - this.id = id; - this.containerCode = containerCode; - this.type = type; - } -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/SolutionModuleState.java b/src/main/java/com/iflytop/sgs/app/core/device/SolutionModuleState.java deleted file mode 100644 index 9938bf3..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/SolutionModuleState.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.ArrayList; -import java.util.List; - -@Schema(description = "加液模块") -@Data -public class SolutionModuleState { - @Schema(description = "是否空闲,true为空闲,false为占用") - private boolean idle = true; - - @Schema(description = "托盘状态,0为无托盘,1为有托盘") - private int trayStatus = 0; - - @Schema(description = "溶液容器状态") - private List solutionContainer = new ArrayList<>(); - - @Schema(description = "是否正在加液,true正在加液,false未运行") - private boolean pumping = false; -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/TrayState.java b/src/main/java/com/iflytop/sgs/app/core/device/TrayState.java deleted file mode 100644 index b879a8f..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/TrayState.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import com.iflytop.sgs.common.enums.HeatModuleCode; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.UUID; - -@Schema(description = "托盘") -@Data -public class TrayState { - @Schema(description = "托盘唯一id") - private String uuid = UUID.randomUUID().toString(); - - @Schema(description = "所属加热模块id") - private HeatModuleCode heatModuleId; - - @Schema(description = "是否在加液模块中") - private boolean inSolutionModule = false; - - @Schema(description = "是否在加热模块中") - private boolean inHeatModule = false; - - @Schema(description = "试管") - private TubeState[] tubes = new TubeState[40]; - - @Schema(description = "当前托盘的工艺") - private CraftsState crafts = null; - - public TrayState() { - for (int i = 0; i < tubes.length; i++) { - TubeState tubeState = new TubeState(); - tubeState.setTubeNum(i + 1); - tubes[i] = tubeState; - } - } -} diff --git a/src/main/java/com/iflytop/sgs/app/core/device/TubeState.java b/src/main/java/com/iflytop/sgs/app/core/device/TubeState.java deleted file mode 100644 index d540570..0000000 --- a/src/main/java/com/iflytop/sgs/app/core/device/TubeState.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iflytop.sgs.app.core.device; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "试管位") -@Data -public class TubeState { - @Schema(description = "试管编号") - private int tubeNum; - - @Schema(description = "是否添加过溶液 true添加过") - private boolean addSolution = false; - - @Schema(description = "是否存在试管 true存在") - private boolean exists = true; -} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java new file mode 100644 index 0000000..050222c --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java @@ -0,0 +1,35 @@ +package com.iflytop.sgs.app.model.bo.status; + +import lombok.Data; + +/** + * 指令互斥关系状态 + */ +@Data +public class CommandMutexState { + private boolean capFreeCommandExecuting = false; + private boolean capLiftingOriginCommandExecuting = false; + private boolean capUsedCommandExecuting = false; + private boolean doorCloseCommandExecuting = false; + private boolean doorOpenCommandExecuting = false; + private boolean doorOriginCommandExecuting = false; + private boolean dualRobotJointOriginCommandExecuting = false; + private boolean fanStartCommandExecuting = false; + private boolean fanStopCommandExecuting = false; + private boolean filledSolutionStartCommandExecuting = false; + private boolean filledSolutionStopCommandExecuting = false; + private boolean gantryXOriginCommandExecuting = false; + private boolean gantryYOriginCommandExecuting = false; + private boolean gantryZOriginCommandExecuting = false; + private boolean heatStartCommandExecuting = false; + private boolean heatStopCommandExecuting = false; + private boolean moveToHeatAreaCommandExecuting = false; + private boolean moveToSolutionAreaCommandExecuting = false; + private boolean shakeStartCommandExecuting = false; + private boolean shakeStopCommandExecuting = false; + private boolean solutionAddCommandExecuting = false; + private boolean takePhotoCommandExecuting = false; + private boolean trayDownCommandExecuting = false; + private boolean trayLiftingOriginCommandExecuting = false; + private boolean trayUpCommandExecuting = false; +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java new file mode 100644 index 0000000..c428bf3 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java @@ -0,0 +1,49 @@ +package com.iflytop.sgs.app.model.bo.status; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "自检状态") +@Data +public class SelfTestState { + @Schema(description = "门是否在原点") + private boolean doorOrigin = false; + + @Schema(description = "摇匀是否在原点") + private boolean shakeOrigin = false; + + @Schema(description = "龙门架机械臂x轴是否在原点") + private boolean gantryXOrigin = false; + + @Schema(description = "龙门架机械臂y轴是否在原点") + private boolean gantryYOrigin = false; + + @Schema(description = "龙门架机械臂z轴是否在原点") + private boolean gantryZOrigin = false; + + @Schema(description = "加液机械臂是否在原点") + private boolean dualRobotOrigin = false; + + @Schema(description = "拍子升降是否在原点") + private boolean capLiftingOrigin = false; + + @Schema(description = "加热模块01托盘升降是否在原点") + private boolean trayLifting01Origin = false; + + @Schema(description = "加热模块02托盘升降是否在原点") + private boolean trayLifting02Origin = false; + + @Schema(description = "加热模块03托盘升降是否在原点") + private boolean trayLifting03Origin = false; + + @Schema(description = "加热模块04托盘升降是否在原点") + private boolean trayLifting04Origin = false; + + @Schema(description = "加热模块05托盘升降是否在原点") + private boolean trayLifting05Origin = false; + + @Schema(description = "加热模块06托盘升降是否在原点") + private boolean trayLifting06Origin = false; + + +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/crafts/CraftsState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/crafts/CraftsState.java new file mode 100644 index 0000000..8d4dfaf --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/crafts/CraftsState.java @@ -0,0 +1,23 @@ +package com.iflytop.sgs.app.model.bo.status.crafts; + +import com.iflytop.sgs.app.model.entity.Crafts; +import com.iflytop.sgs.app.model.entity.Ores; +import com.iflytop.sgs.common.enums.automaton.CraftStates; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "工艺") +@Data +public class CraftsState { + @Schema(description = "工艺状态") + private CraftStates state; + + @Schema(description = "工艺所属矿石") + private Ores ores; + + @Schema(description = "工艺") + private Crafts craft; + + @Schema(description = "工艺当前步骤下标") + private int currentIndex = 0; +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/DeviceState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/DeviceState.java new file mode 100644 index 0000000..4202eee --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/DeviceState.java @@ -0,0 +1,36 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import com.iflytop.sgs.app.model.entity.Tasks; +import com.iflytop.sgs.app.model.entity.User; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Schema(description = "当前设备") +@Data +public class DeviceState { + @Schema(description = "门状态") + private final DoorState door = new DoorState(); + @Schema(description = "龙门架机械臂状态") + private final GantryArmState gantryArm = new GantryArmState(); + @Schema(description = "加液模块属性") + private final SolutionModuleState solutionModule = new SolutionModuleState(); + @Schema(description = "加热模块属性") + private final List heatModule = new ArrayList<>(); + @Schema(description = "托盘") + private final List tray = new ArrayList<>(); + @Schema(description = "虚拟模式,true为虚拟") + private boolean virtual = false; + @Schema(description = "初始化状态,true初始化完毕") + private boolean initComplete = false; + @Schema(description = "自检状态,true自检完毕") + private boolean selfTest = false; + @Schema(description = "是否是急停状态,true为急停") + private boolean emergencyStop = false; + @Schema(description = "当前登录用户") + private User currentUser; + @Schema(description = "当前实验") + private Tasks currentTasks; +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/DoorState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/DoorState.java new file mode 100644 index 0000000..557a4c6 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/DoorState.java @@ -0,0 +1,11 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "门") +@Data +public class DoorState { + @Schema(description = "是否开门,true为开启状态,false为关闭状态") + private boolean open = false; +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/GantryArmState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/GantryArmState.java new file mode 100644 index 0000000..b503cbd --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/GantryArmState.java @@ -0,0 +1,11 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "龙门架机械臂") +@Data +public class GantryArmState { + @Schema(description = "是否空闲,true为空闲,false为占用") + private boolean idle = true; +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java new file mode 100644 index 0000000..ec6e880 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java @@ -0,0 +1,47 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import com.iflytop.sgs.common.enums.HeatModuleCode; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "加热模块") +@Data +public class HeatModuleState { + @Schema(description = "加热模块code") + private HeatModuleCode moduleCode; + + @Schema(description = "托盘升降状态,0为降下,1为抬起") + private int trayUp = 0; + + @Schema(description = "托盘状态,0为无托盘,1为有托盘") + private int trayStatus = 0; + + @Schema(description = "是否正在加热,true为正在加热,false为未加热") + private boolean heating = false; + + @Schema(description = "是否正在烘干,true为正在烘干,false为未烘干") + private boolean drying = false; + + @Schema(description = "是否正在退火,true为正在退火,false为未退火") + private boolean annealing = false; + + @Schema(description = "是否启动散热,true为正在散热,false为未在散热") + private boolean fanOpen = false; + + @Schema(description = "加热器目标温度") + private Double targetTemperature = null; + + @Schema(description = "加热器烘干温度") + private Double dryTemperature; + @Schema(description = "加热器退火温度") + private Double annealTemperature; + @Schema(description = "加热器加热温度") + private Double heatTemperature; + + @Schema(description = "加热器当前温度") + private Double temperature = null; + + public HeatModuleState(HeatModuleCode moduleCode) { + this.moduleCode = moduleCode; + } +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionContainerState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionContainerState.java new file mode 100644 index 0000000..f68ae53 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionContainerState.java @@ -0,0 +1,34 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import com.iflytop.sgs.common.enums.ContainerCode; +import com.iflytop.sgs.common.enums.ContainerType; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "溶液容器") +@Data +public class SolutionContainerState { + @Schema(description = "容器数据id") + private Long id; + + @Schema(description = "容器code") + private ContainerCode containerCode; + + @Schema(description = "容器类型 solution溶液容器 neutralization中和容器") + private ContainerType type; + + @Schema(description = "容器是否为空,true为空,false不为空") + private boolean empty = false; + + @Schema(description = "容器是否为满,true为满,false不满") + private boolean full = false; + + @Schema(description = "是否完成预充,true为预充,false为排空") + private boolean filledSolution = false; + + public SolutionContainerState(Long id, ContainerCode containerCode, ContainerType type) { + this.id = id; + this.containerCode = containerCode; + this.type = type; + } +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionModuleState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionModuleState.java new file mode 100644 index 0000000..9fae34f --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionModuleState.java @@ -0,0 +1,23 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Schema(description = "加液模块") +@Data +public class SolutionModuleState { + @Schema(description = "是否空闲,true为空闲,false为占用") + private boolean idle = true; + + @Schema(description = "托盘状态,0为无托盘,1为有托盘") + private int trayStatus = 0; + + @Schema(description = "溶液容器状态") + private List solutionContainer = new ArrayList<>(); + + @Schema(description = "是否正在加液,true正在加液,false未运行") + private boolean pumping = false; +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/TrayState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/TrayState.java new file mode 100644 index 0000000..bb49f76 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/TrayState.java @@ -0,0 +1,38 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import com.iflytop.sgs.app.model.bo.status.crafts.CraftsState; +import com.iflytop.sgs.common.enums.HeatModuleCode; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.UUID; + +@Schema(description = "托盘") +@Data +public class TrayState { + @Schema(description = "托盘唯一id") + private String uuid = UUID.randomUUID().toString(); + + @Schema(description = "所属加热模块id") + private HeatModuleCode heatModuleId; + + @Schema(description = "是否在加液模块中") + private boolean inSolutionModule = false; + + @Schema(description = "是否在加热模块中") + private boolean inHeatModule = false; + + @Schema(description = "试管") + private TubeState[] tubes = new TubeState[40]; + + @Schema(description = "当前托盘的工艺") + private CraftsState crafts = null; + + public TrayState() { + for (int i = 0; i < tubes.length; i++) { + TubeState tubeState = new TubeState(); + tubeState.setTubeNum(i + 1); + tubes[i] = tubeState; + } + } +} diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/device/TubeState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/TubeState.java new file mode 100644 index 0000000..1066534 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/device/TubeState.java @@ -0,0 +1,17 @@ +package com.iflytop.sgs.app.model.bo.status.device; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "试管位") +@Data +public class TubeState { + @Schema(description = "试管编号") + private int tubeNum; + + @Schema(description = "是否添加过溶液 true添加过") + private boolean addSolution = false; + + @Schema(description = "是否存在试管 true存在") + private boolean exists = true; +} diff --git a/src/main/java/com/iflytop/sgs/app/model/vo/SetTrayTubeVO.java b/src/main/java/com/iflytop/sgs/app/model/vo/SetTrayTubeVO.java index eb4b144..df2f948 100644 --- a/src/main/java/com/iflytop/sgs/app/model/vo/SetTrayTubeVO.java +++ b/src/main/java/com/iflytop/sgs/app/model/vo/SetTrayTubeVO.java @@ -1,6 +1,6 @@ package com.iflytop.sgs.app.model.vo; -import com.iflytop.sgs.app.core.device.TubeState; +import com.iflytop.sgs.app.model.bo.status.device.TubeState; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/src/main/java/com/iflytop/sgs/app/service/api/HeatModuleService.java b/src/main/java/com/iflytop/sgs/app/service/api/HeatModuleService.java deleted file mode 100644 index a943cf1..0000000 --- a/src/main/java/com/iflytop/sgs/app/service/api/HeatModuleService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.iflytop.sgs.app.service.api; - -import com.iflytop.sgs.app.model.vo.SetTargetTemperatureVO; -import com.iflytop.sgs.app.service.device.DeviceStateService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -/** - * 加热模块服务 - */ -@Service -@RequiredArgsConstructor -public class HeatModuleService { - private final DeviceStateService deviceStateService; - - public void setTargetTemperature(SetTargetTemperatureVO setTargetTemperatureVO) { - deviceStateService.setHeatModuleStatePreSetTemperature(setTargetTemperatureVO.getModuleCode(), setTargetTemperatureVO); - } -} diff --git a/src/main/java/com/iflytop/sgs/app/service/api/HeatService.java b/src/main/java/com/iflytop/sgs/app/service/api/HeatService.java new file mode 100644 index 0000000..12b4610 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/service/api/HeatService.java @@ -0,0 +1,19 @@ +package com.iflytop.sgs.app.service.api; + +import com.iflytop.sgs.app.model.vo.SetTargetTemperatureVO; +import com.iflytop.sgs.app.service.device.DeviceStateService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * 加热模块服务 + */ +@Service +@RequiredArgsConstructor +public class HeatService { + private final DeviceStateService deviceStateService; + + public void setTargetTemperature(SetTargetTemperatureVO setTargetTemperatureVO) { + deviceStateService.setHeatModuleStatePreSetTemperature(setTargetTemperatureVO.getModuleCode(), setTargetTemperatureVO); + } +} diff --git a/src/main/java/com/iflytop/sgs/app/service/api/TrayService.java b/src/main/java/com/iflytop/sgs/app/service/api/TrayService.java index 954a7e1..fbf45fe 100644 --- a/src/main/java/com/iflytop/sgs/app/service/api/TrayService.java +++ b/src/main/java/com/iflytop/sgs/app/service/api/TrayService.java @@ -1,6 +1,6 @@ package com.iflytop.sgs.app.service.api; -import com.iflytop.sgs.app.core.device.TrayState; +import com.iflytop.sgs.app.model.bo.status.device.TrayState; import com.iflytop.sgs.app.model.vo.SetTrayTubeVO; import com.iflytop.sgs.app.service.device.DeviceStateService; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/iflytop/sgs/app/service/device/DeviceCommandUtilService.java b/src/main/java/com/iflytop/sgs/app/service/device/DeviceCommandUtilService.java deleted file mode 100644 index 16ca75d..0000000 --- a/src/main/java/com/iflytop/sgs/app/service/device/DeviceCommandUtilService.java +++ /dev/null @@ -1,424 +0,0 @@ -package com.iflytop.sgs.app.service.device; - -import com.iflytop.sgs.app.model.bo.Point2D; -import com.iflytop.sgs.app.model.bo.Point3D; -import com.iflytop.sgs.app.model.entity.DevicePosition; -import com.iflytop.sgs.app.service.api.DevicePositionService; -import com.iflytop.sgs.common.cmd.CommandFuture; -import com.iflytop.sgs.common.cmd.DeviceCommandBundle; -import com.iflytop.sgs.common.cmd.DeviceCommandGenerator; -import com.iflytop.sgs.common.enums.HeatModuleCode; -import com.iflytop.sgs.common.enums.data.DevicePositionCode; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Arrays; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.TimeUnit; - -@Slf4j -@Component -@RequiredArgsConstructor -public class DeviceCommandUtilService { - private final DeviceCommandService deviceCommandService; - private final DevicePositionService devicePositionService; - - /** - * 门电机回原点 - */ - public void doorOrigin() throws Exception { - doorOrigin(null, null); - } - - /** - * 门电机回原点 - */ - public void doorOrigin(String cmdId, String cmdCode) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.doorOrigin(); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 门电机移动 - */ - public void doorMove(double position) throws Exception { - doorMove(null, null, position); - } - - /** - * 门电机移动 - */ - public void doorMove(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.doorMove(position); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 龙门架机械臂移动到0点 - */ - public void gantryMoveZero() throws Exception { - gantryMove(null, null, new Point3D(0.0, 0.0, 0.0)); - } - - /** - * 龙门架机械臂移动到指定点 - */ - public void gantryMove(Point3D point) throws Exception { - gantryMove(null, null, point); - } - - /** - * 龙门架机械臂移动到指定点 - */ - public void gantryMove(String cmdId, String cmdCode, Point3D point) throws Exception { - DeviceCommandBundle gantryXMoveDeviceCommand = DeviceCommandGenerator.gantryXMove(point.getX()); - CommandFuture gantryXMoveDeviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, gantryXMoveDeviceCommand); - DeviceCommandBundle gantryZMoveDeviceCommand = DeviceCommandGenerator.gantryZMove(point.getZ()); - CommandFuture gantryZMoveDeviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, gantryZMoveDeviceCommand); - commandWait(gantryXMoveDeviceCommandFuture,gantryZMoveDeviceCommandFuture); - } - - /** - * 龙门架机械臂移动到指定点 - */ - public void gantryMoveQueue(Point3D point) throws Exception { - gantryMoveQueue(null, null, point); - } - - /** - * 龙门架机械臂移动到指定点 - */ - public void gantryMoveQueue(String cmdId, String cmdCode, Point3D point) throws Exception { - DeviceCommandBundle gantryXMoveDeviceCommand = DeviceCommandGenerator.gantryXMove(point.getX()); - DeviceCommandBundle gantryZMoveDeviceCommand = DeviceCommandGenerator.gantryZMove(point.getZ()); - CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, gantryXMoveDeviceCommand, gantryZMoveDeviceCommand); - commandWait(deviceCommandFutureArr); - } - - - /** - * 龙门架机械臂X轴回原点 - */ - public void gantryXMoveOrigin() throws Exception { - gantryXMoveOrigin(null, null); - } - - /** - * 龙门架机械臂X轴回原点 - */ - public void gantryXMoveOrigin(String cmdId, String cmdCode) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXOrigin(); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 龙门架机械臂X轴回原点 - */ - public void gantryXMoveOriginQueue() throws Exception { - gantryXMoveOriginQueue(null, null); - } - - /** - * 龙门架机械臂X轴回原点 - */ - public void gantryXMoveOriginQueue(String cmdId, String cmdCode) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXOrigin(); - CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFutureArr); - } - - - /** - * 龙门架机械臂Z轴回原点 - */ - public void gantryZMoveOrigin() throws Exception { - gantryZMoveOrigin(null, null); - } - - /** - * 龙门架机械臂Z轴回原点 - */ - public void gantryZMoveOrigin(String cmdId, String cmdCode) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZOrigin(); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - - /** - * 龙门架机械臂Z轴回原点 - */ - public void gantryZMoveOriginQueue() throws Exception { - gantryZMoveOriginQueue(null, null); - } - - /** - * 龙门架机械臂Z轴回原点 - */ - public void gantryZMoveOriginQueue(String cmdId, String cmdCode) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZOrigin(); - CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFutureArr); - } - - /** - * 龙门架机械臂X轴移动到指定点 - */ - public void gantryXMove(double position) throws Exception { - gantryXMove(null, null, position); - } - - /** - * 龙门架机械臂X轴移动到指定点 - */ - public void gantryXMove(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMove(position); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 龙门架机械臂X轴移动到指定点 - */ - public void gantryXMoveQueue(double position) throws Exception { - gantryXMoveQueue(null, null, position); - } - - /** - * 龙门架机械臂X轴移动到指定点 - */ - public void gantryXMoveQueue(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMove(position); - CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFutureArr); - } - - /** - * 龙门架机械臂Z轴移动到指定点 - */ - public void gantryZMove(double position) throws Exception { - gantryZMove(null, null, position); - } - - /** - * 加液机械臂移动到指定点 - */ - public void motorLiquidMove(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.motorLiquidMove(position); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - /** - * 加液机械臂移动到指定点 - */ - public void motorLiquidMove(double position) throws Exception { - motorLiquidMove(null, null, position); - } - - /** - * 龙门架机械臂Z轴移动到指定点 - */ - public void gantryZMove(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMove(position); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 龙门架机械臂Z轴移动到指定点 - */ - public void gantryZMoveQueue(double position) throws Exception { - gantryZMoveQueue(null, null, position); - } - - /** - * 龙门架机械臂Z轴移动到指定点 - */ - public void gantryZMoveQueue(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMove(position); - CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFutureArr); - } - - /** - * 龙门架机械臂X轴相对移动到指定点 - */ - public void gantryXMoveBy(double position) throws Exception { - gantryXMoveBy(null, null, position); - } - - /** - * 龙门架机械臂X轴相对移动到指定点 - */ - public void gantryXMoveBy(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMoveBy(position); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 龙门架机械臂X轴相对移动到指定点 - */ - public void gantryXMoveByQueue(double position) throws Exception { - gantryXMoveByQueue(null, null, position); - } - - /** - * 龙门架机械臂X轴相对移动到指定点 - */ - public void gantryXMoveByQueue(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMoveBy(position); - CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFutureArr); - } - - /** - * 龙门架机械臂Z轴相对移动到指定点 - */ - public void gantryZMoveBy(double position) throws Exception { - gantryZMoveBy(null, null, position); - } - - /** - * 龙门架机械臂Z轴相对移动到指定点 - */ - public void gantryZMoveBy(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMoveBy(position); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 龙门架机械臂Z轴相对移动到指定点 - */ - public void gantryZMoveByQueue(double position) throws Exception { - gantryZMoveByQueue(null, null, position); - } - - /** - * 龙门架机械臂Z轴相对移动到指定点 - */ - public void gantryZMoveByQueue(String cmdId, String cmdCode, double position) throws Exception { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMoveBy(position); - CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFutureArr); - } - - /** - * 指定加热模块开始加热 - */ - public void heatRodOpen(HeatModuleCode heatModuleId, double temperature) throws Exception { - heatRodOpen(null, null, heatModuleId, temperature); - } - - /** - * 指定加热模块开始加热 - */ - public void heatRodOpen(String cmdId, String cmdCode, HeatModuleCode heatModuleId, double temperature) throws Exception { - DeviceCommandBundle deviceCommand = switch (heatModuleId) { - case heat_module_01 -> DeviceCommandGenerator.heatRod1Open(temperature); - case heat_module_02 -> DeviceCommandGenerator.heatRod2Open(temperature); - case heat_module_03 -> DeviceCommandGenerator.heatRod3Open(temperature); - case heat_module_04 -> DeviceCommandGenerator.heatRod4Open(temperature); - }; - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - /** - * 指定加热模块停止加热 - */ - public void heatRodClose(HeatModuleCode heatModuleId) throws Exception { - heatRodClose(null, null, heatModuleId); - } - - /** - * 指定加热模块停止加热 - */ - public void heatRodClose(String cmdId, String cmdCode, HeatModuleCode heatModuleId) throws Exception { - DeviceCommandBundle deviceCommand = switch (heatModuleId) { - case heat_module_01 -> DeviceCommandGenerator.heatRod1Close(); - case heat_module_02 -> DeviceCommandGenerator.heatRod2Close(); - case heat_module_03 -> DeviceCommandGenerator.heatRod3Close(); - case heat_module_04 -> DeviceCommandGenerator.heatRod4Close(); - }; - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } - - public void commandWait(CommandFuture... futures) throws Exception { - CompletableFuture[] responseFutures = Arrays.stream(futures) - .map(CommandFuture::getResponseFuture) - .toArray(CompletableFuture[]::new); - CompletableFuture.allOf(responseFutures) - .get(120, TimeUnit.SECONDS); - } - - /////////////////////////////////////////////////获取位置 - - /** - * 获取指定加热区托盘夹爪点位 - */ - public Point3D getHeatAreaTrayClawPoint3D(HeatModuleCode heatModuleId) { - DevicePosition devicePosition = switch (heatModuleId) { - case heat_module_01 -> devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint); - case heat_module_02 -> devicePositionService.getPosition(DevicePositionCode.heatArea2TrayClawPoint); - case heat_module_03 -> devicePositionService.getPosition(DevicePositionCode.heatArea3TrayClawPoint); - case heat_module_04 -> devicePositionService.getPosition(DevicePositionCode.heatArea4TrayClawPoint); - }; - return devicePosition.getPoint3D(); - } - - - /** - * 获取指定加热区拍子夹爪点位 - */ - public Point3D getHeatAreaCapClawPointPoint3D(HeatModuleCode heatModuleId) { - DevicePosition devicePosition = switch (heatModuleId) { - case heat_module_01 -> devicePositionService.getPosition(DevicePositionCode.heatArea1CapClawPoint); - case heat_module_02 -> devicePositionService.getPosition(DevicePositionCode.heatArea2CapClawPoint); - case heat_module_03 -> devicePositionService.getPosition(DevicePositionCode.heatArea3CapClawPoint); - case heat_module_04 -> devicePositionService.getPosition(DevicePositionCode.heatArea4CapClawPoint); - }; - return devicePosition.getPoint3D(); - } - - /** - * 根据试管需要获取点位 - */ - public Point2D getPointByTubeNum(int tubeNum) { - return new Point2D(tubeNum * 60.0, tubeNum * 60.0);// - } - - - public void fanStart(String cmdId, String cmdCode, HeatModuleCode heatModuleId) throws Exception { - DeviceCommandBundle deviceCommand; - switch (heatModuleId) { - case heat_module_01 -> deviceCommand = DeviceCommandGenerator.fan1Open(); - case heat_module_02 -> deviceCommand = DeviceCommandGenerator.fan2Open(); - case heat_module_03 -> deviceCommand = DeviceCommandGenerator.fan3Open(); - case heat_module_04 -> deviceCommand = DeviceCommandGenerator.fan4Open(); - default -> throw new RuntimeException("heatId 未找到"); - } - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - - } - - public void fanClose(String cmdId, String cmdCode, HeatModuleCode heatModuleId) throws Exception { - DeviceCommandBundle deviceCommand; - switch (heatModuleId) { - case heat_module_01 -> deviceCommand = DeviceCommandGenerator.fan1Close(); - case heat_module_02 -> deviceCommand = DeviceCommandGenerator.fan2Close(); - case heat_module_03 -> deviceCommand = DeviceCommandGenerator.fan3Close(); - case heat_module_04 -> deviceCommand = DeviceCommandGenerator.fan4Close(); - default -> throw new RuntimeException("heatId 未找到"); - } - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); - commandWait(deviceCommandFuture); - } -} diff --git a/src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java b/src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java index 9fe9100..fc91587 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java @@ -1,7 +1,7 @@ package com.iflytop.sgs.app.service.device; -import com.iflytop.sgs.app.core.device.DeviceState; -import com.iflytop.sgs.app.core.device.HeatModuleState; +import com.iflytop.sgs.app.model.bo.status.device.DeviceState; +import com.iflytop.sgs.app.model.bo.status.device.HeatModuleState; import com.iflytop.sgs.common.enums.HeatModuleCode; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/iflytop/sgs/app/service/device/DeviceStateService.java b/src/main/java/com/iflytop/sgs/app/service/device/DeviceStateService.java index ca8101d..45ea3f8 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/DeviceStateService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/DeviceStateService.java @@ -1,7 +1,8 @@ package com.iflytop.sgs.app.service.device; -import com.iflytop.sgs.app.core.device.*; import com.iflytop.sgs.app.core.listener.DeviceStateListener; +import com.iflytop.sgs.app.model.bo.status.CommandMutexState; +import com.iflytop.sgs.app.model.bo.status.device.*; import com.iflytop.sgs.app.model.entity.Tasks; import com.iflytop.sgs.app.model.entity.User; import com.iflytop.sgs.app.model.vo.SetTargetTemperatureVO; @@ -26,7 +27,7 @@ public class DeviceStateService { private final DeviceState deviceState = new DeviceState(); @Getter - private final AtomicReference commandState = new AtomicReference<>(new CommandState()); + private final AtomicReference commandState = new AtomicReference<>(new CommandMutexState()); diff --git a/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java b/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java index 6b03143..1f6b031 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java @@ -1,6 +1,6 @@ package com.iflytop.sgs.app.service.device; -import com.iflytop.sgs.app.core.device.SelfTestState; +import com.iflytop.sgs.app.model.bo.status.SelfTestState; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/iflytop/sgs/app/service/device/module/DoorModuleService.java b/src/main/java/com/iflytop/sgs/app/service/device/module/DoorModuleService.java index dfc8d06..16458fc 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/module/DoorModuleService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/module/DoorModuleService.java @@ -1,5 +1,11 @@ package com.iflytop.sgs.app.service.device.module; +import com.iflytop.sgs.app.service.api.DevicePositionService; +import com.iflytop.sgs.app.service.device.DeviceCommandService; +import com.iflytop.sgs.common.cmd.CommandFuture; +import com.iflytop.sgs.common.cmd.DeviceCommandBundle; +import com.iflytop.sgs.common.cmd.DeviceCommandGenerator; +import com.iflytop.sgs.common.utils.CommandUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -11,4 +17,37 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class DoorModuleService { + private final DeviceCommandService deviceCommandService; + + /** + * 门电机回原点 + */ + public void doorOrigin() throws Exception { + doorOrigin(null, null); + } + + /** + * 门电机回原点 + */ + public void doorOrigin(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.doorOrigin(); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 门电机移动 + */ + public void doorMove(double position) throws Exception { + doorMove(null, null, position); + } + + /** + * 门电机移动 + */ + public void doorMove(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.doorMove(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } } diff --git a/src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java b/src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java index f9bb907..6528db8 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java @@ -1,5 +1,15 @@ package com.iflytop.sgs.app.service.device.module; +import com.iflytop.sgs.app.model.bo.Point3D; +import com.iflytop.sgs.app.model.entity.DevicePosition; +import com.iflytop.sgs.app.service.api.DevicePositionService; +import com.iflytop.sgs.app.service.device.DeviceCommandService; +import com.iflytop.sgs.common.cmd.CommandFuture; +import com.iflytop.sgs.common.cmd.DeviceCommandBundle; +import com.iflytop.sgs.common.cmd.DeviceCommandGenerator; +import com.iflytop.sgs.common.enums.HeatModuleCode; +import com.iflytop.sgs.common.enums.data.DevicePositionCode; +import com.iflytop.sgs.common.utils.CommandUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -11,4 +21,90 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class HeatModuleService { + private final DeviceCommandService deviceCommandService; + private final DevicePositionService devicePositionService; + + /** + * 指定加热模块开始加热 + */ + public void heatRodOpen(HeatModuleCode heatModuleId, double temperature) throws Exception { + heatRodOpen(null, null, heatModuleId, temperature); + } + + /** + * 指定加热模块开始加热 + */ + public void heatRodOpen(String cmdId, String cmdCode, HeatModuleCode heatModuleId, double temperature) throws Exception { + DeviceCommandBundle deviceCommand = switch (heatModuleId) { + case heat_module_01 -> DeviceCommandGenerator.heatRod1Open(temperature); + case heat_module_02 -> DeviceCommandGenerator.heatRod2Open(temperature); + case heat_module_03 -> DeviceCommandGenerator.heatRod3Open(temperature); + case heat_module_04 -> DeviceCommandGenerator.heatRod4Open(temperature); + }; + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 指定加热模块停止加热 + */ + public void heatRodClose(HeatModuleCode heatModuleId) throws Exception { + heatRodClose(null, null, heatModuleId); + } + + /** + * 指定加热模块停止加热 + */ + public void heatRodClose(String cmdId, String cmdCode, HeatModuleCode heatModuleId) throws Exception { + DeviceCommandBundle deviceCommand = switch (heatModuleId) { + case heat_module_01 -> DeviceCommandGenerator.heatRod1Close(); + case heat_module_02 -> DeviceCommandGenerator.heatRod2Close(); + case heat_module_03 -> DeviceCommandGenerator.heatRod3Close(); + case heat_module_04 -> DeviceCommandGenerator.heatRod4Close(); + }; + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 获取指定加热区托盘夹爪点位 + */ + public Point3D getHeatAreaTrayClawPoint3D(HeatModuleCode heatModuleId) { + DevicePosition devicePosition = switch (heatModuleId) { + case heat_module_01 -> devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint); + case heat_module_02 -> devicePositionService.getPosition(DevicePositionCode.heatArea2TrayClawPoint); + case heat_module_03 -> devicePositionService.getPosition(DevicePositionCode.heatArea3TrayClawPoint); + case heat_module_04 -> devicePositionService.getPosition(DevicePositionCode.heatArea4TrayClawPoint); + }; + return devicePosition.getPoint3D(); + } + + + public void fanStart(String cmdId, String cmdCode, HeatModuleCode heatModuleId) throws Exception { + DeviceCommandBundle deviceCommand; + switch (heatModuleId) { + case heat_module_01 -> deviceCommand = DeviceCommandGenerator.fan1Open(); + case heat_module_02 -> deviceCommand = DeviceCommandGenerator.fan2Open(); + case heat_module_03 -> deviceCommand = DeviceCommandGenerator.fan3Open(); + case heat_module_04 -> deviceCommand = DeviceCommandGenerator.fan4Open(); + default -> throw new RuntimeException("heatId 未找到"); + } + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + + } + + + public void fanClose(String cmdId, String cmdCode, HeatModuleCode heatModuleId) throws Exception { + DeviceCommandBundle deviceCommand; + switch (heatModuleId) { + case heat_module_01 -> deviceCommand = DeviceCommandGenerator.fan1Close(); + case heat_module_02 -> deviceCommand = DeviceCommandGenerator.fan2Close(); + case heat_module_03 -> deviceCommand = DeviceCommandGenerator.fan3Close(); + case heat_module_04 -> deviceCommand = DeviceCommandGenerator.fan4Close(); + default -> throw new RuntimeException("heatId 未找到"); + } + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } } diff --git a/src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java b/src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java index f4f6ec8..ffffdf1 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java @@ -1,9 +1,14 @@ package com.iflytop.sgs.app.service.device.module; import com.iflytop.sgs.app.core.DebugGenerator; +import com.iflytop.sgs.app.service.device.DeviceCommandService; import com.iflytop.sgs.app.service.device.DeviceStateService; import com.iflytop.sgs.app.ws.server.WebSocketSender; +import com.iflytop.sgs.common.cmd.CommandFuture; +import com.iflytop.sgs.common.cmd.DeviceCommandBundle; +import com.iflytop.sgs.common.cmd.DeviceCommandGenerator; import com.iflytop.sgs.common.constant.CommandStatus; +import com.iflytop.sgs.common.utils.CommandUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -22,6 +27,7 @@ import java.util.concurrent.locks.ReentrantLock; public class SolutionModuleService { private final DeviceStateService deviceStateService; private final WebSocketSender webSocketService; + private final DeviceCommandService deviceCommandService; private final Lock moduleLock = new ReentrantLock(); private final BlockingQueue waitingQueue = new ArrayBlockingQueue<>(1); @@ -79,4 +85,22 @@ public class SolutionModuleService { moduleLock.unlock(); } } + + /** + * 加液机械臂移动到指定点 + */ + public void motorLiquidMove(double position) throws Exception { + motorLiquidMove(null, null, position); + } + + /** + * 加液机械臂移动到指定点 + */ + public void motorLiquidMove(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.motorLiquidMove(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + } diff --git a/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java b/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java index 55d9a50..1e5c840 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java @@ -1,5 +1,12 @@ package com.iflytop.sgs.app.service.device.module; +import com.iflytop.sgs.app.model.bo.Point3D; +import com.iflytop.sgs.app.service.api.DevicePositionService; +import com.iflytop.sgs.app.service.device.DeviceCommandService; +import com.iflytop.sgs.common.cmd.CommandFuture; +import com.iflytop.sgs.common.cmd.DeviceCommandBundle; +import com.iflytop.sgs.common.cmd.DeviceCommandGenerator; +import com.iflytop.sgs.common.utils.CommandUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -11,4 +18,245 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class TransferModuleService { + private final DeviceCommandService deviceCommandService; + private final DevicePositionService devicePositionService; + + + /** + * 转运机械臂移动到0点 + */ + public void transferMoveZero() throws Exception { + transferMove(null, null, new Point3D(0.0, 0.0, 0.0)); + } + + /** + * 转运机械臂移动到指定点 + */ + public void transferMove(Point3D point) throws Exception { + transferMove(null, null, point); + } + + /** + * 转运机械臂移动到指定点 + */ + public void transferMove(String cmdId, String cmdCode, Point3D point) throws Exception { + DeviceCommandBundle transferXMoveDeviceCommand = DeviceCommandGenerator.transferXMove(point.getX()); + CommandFuture transferXMoveDeviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, transferXMoveDeviceCommand); + DeviceCommandBundle transferZMoveDeviceCommand = DeviceCommandGenerator.transferZMove(point.getZ()); + CommandFuture transferZMoveDeviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, transferZMoveDeviceCommand); + CommandUtil.wait(transferXMoveDeviceCommandFuture,transferZMoveDeviceCommandFuture); + } + + /** + * 转运机械臂移动到指定点 + */ + public void transferMoveQueue(Point3D point) throws Exception { + transferMoveQueue(null, null, point); + } + + /** + * 转运机械臂移动到指定点 + */ + public void transferMoveQueue(String cmdId, String cmdCode, Point3D point) throws Exception { + DeviceCommandBundle transferXMoveDeviceCommand = DeviceCommandGenerator.transferXMove(point.getX()); + DeviceCommandBundle transferZMoveDeviceCommand = DeviceCommandGenerator.transferZMove(point.getZ()); + CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, transferXMoveDeviceCommand, transferZMoveDeviceCommand); + CommandUtil.wait(deviceCommandFutureArr); + } + + + /** + * 转运机械臂X轴回原点 + */ + public void transferXMoveOrigin() throws Exception { + transferXMoveOrigin(null, null); + } + + /** + * 转运机械臂X轴回原点 + */ + public void transferXMoveOrigin(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXOrigin(); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 转运机械臂X轴回原点 + */ + public void transferXMoveOriginQueue() throws Exception { + transferXMoveOriginQueue(null, null); + } + + /** + * 转运机械臂X轴回原点 + */ + public void transferXMoveOriginQueue(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXOrigin(); + CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFutureArr); + } + + + /** + * 转运机械臂Z轴回原点 + */ + public void transferZMoveOrigin() throws Exception { + transferZMoveOrigin(null, null); + } + + /** + * 转运机械臂Z轴回原点 + */ + public void transferZMoveOrigin(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferZOrigin(); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + + /** + * 转运机械臂Z轴回原点 + */ + public void transferZMoveOriginQueue() throws Exception { + transferZMoveOriginQueue(null, null); + } + + /** + * 转运机械臂Z轴回原点 + */ + public void transferZMoveOriginQueue(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferZOrigin(); + CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFutureArr); + } + + /** + * 转运机械臂X轴移动到指定点 + */ + public void transferXMove(double position) throws Exception { + transferXMove(null, null, position); + } + + /** + * 转运机械臂X轴移动到指定点 + */ + public void transferXMove(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXMove(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 转运机械臂X轴移动到指定点 + */ + public void transferXMoveQueue(double position) throws Exception { + transferXMoveQueue(null, null, position); + } + + /** + * 转运机械臂X轴移动到指定点 + */ + public void transferXMoveQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXMove(position); + CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFutureArr); + } + + /** + * 转运机械臂Z轴移动到指定点 + */ + public void transferZMove(double position) throws Exception { + transferZMove(null, null, position); + } + + + /** + * 转运机械臂Z轴移动到指定点 + */ + public void transferZMove(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferZMove(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 转运机械臂Z轴移动到指定点 + */ + public void transferZMoveQueue(double position) throws Exception { + transferZMoveQueue(null, null, position); + } + + /** + * 转运机械臂Z轴移动到指定点 + */ + public void transferZMoveQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferZMove(position); + CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFutureArr); + } + + /** + * 转运机械臂X轴相对移动到指定点 + */ + public void transferXMoveBy(double position) throws Exception { + transferXMoveBy(null, null, position); + } + + /** + * 转运机械臂X轴相对移动到指定点 + */ + public void transferXMoveBy(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXMoveBy(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 转运机械臂X轴相对移动到指定点 + */ + public void transferXMoveByQueue(double position) throws Exception { + transferXMoveByQueue(null, null, position); + } + + /** + * 转运机械臂X轴相对移动到指定点 + */ + public void transferXMoveByQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXMoveBy(position); + CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFutureArr); + } + + /** + * 转运机械臂Z轴相对移动到指定点 + */ + public void transferZMoveBy(double position) throws Exception { + transferZMoveBy(null, null, position); + } + + /** + * 转运机械臂Z轴相对移动到指定点 + */ + public void transferZMoveBy(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferZMoveBy(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFuture); + } + + /** + * 转运机械臂Z轴相对移动到指定点 + */ + public void transferZMoveByQueue(double position) throws Exception { + transferZMoveByQueue(null, null, position); + } + + /** + * 转运机械臂Z轴相对移动到指定点 + */ + public void transferZMoveByQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferZMoveBy(position); + CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); + CommandUtil.wait(deviceCommandFutureArr); + } } diff --git a/src/main/java/com/iflytop/sgs/common/cmd/DeviceCommandGenerator.java b/src/main/java/com/iflytop/sgs/common/cmd/DeviceCommandGenerator.java index ef53a4e..20e0964 100644 --- a/src/main/java/com/iflytop/sgs/common/cmd/DeviceCommandGenerator.java +++ b/src/main/java/com/iflytop/sgs/common/cmd/DeviceCommandGenerator.java @@ -63,7 +63,7 @@ public class DeviceCommandGenerator { * * @param speed 速度 单位 mm/s */ - public static DeviceCommandBundle gantryXSet(Double speed) { + public static DeviceCommandBundle transferXSet(Double speed) { DeviceCommandParams params = new DeviceCommandParams(); params.setSpeed(speed); return setInfoCmd(CmdDevice.x_motor, CmdAction.set, params, "x轴设置参数"); @@ -75,7 +75,7 @@ public class DeviceCommandGenerator { * * @param speed 速度 单位 mm/s */ - public static DeviceCommandBundle gantryZSet(Double speed) { + public static DeviceCommandBundle transferZSet(Double speed) { DeviceCommandParams params = new DeviceCommandParams(); params.setSpeed(speed); return setInfoCmd(CmdDevice.z_motor, CmdAction.set, params, "z轴设置参数"); @@ -96,7 +96,7 @@ public class DeviceCommandGenerator { /** * 龙门架 x轴回原点 */ - public static DeviceCommandBundle gantryXOrigin() { + public static DeviceCommandBundle transferXOrigin() { return controlMotorCmd(CmdDevice.x_motor, CmdAction.origin, null, "x轴回原点"); } @@ -104,7 +104,7 @@ public class DeviceCommandGenerator { /** * z轴回原点 */ - public static DeviceCommandBundle gantryZOrigin() { + public static DeviceCommandBundle transferZOrigin() { return controlMotorCmd(CmdDevice.z_motor, CmdAction.origin, null, "z轴回原点"); } /** @@ -119,7 +119,7 @@ public class DeviceCommandGenerator { * * @param position 位置 单位 mm */ - public static DeviceCommandBundle gantryXMove(Double position) { + public static DeviceCommandBundle transferXMove(Double position) { DeviceCommandParams params = new DeviceCommandParams(); params.setPosition(position); return controlMotorCmd(CmdDevice.x_motor, CmdAction.move, params, "x轴绝对移动"); @@ -131,7 +131,7 @@ public class DeviceCommandGenerator { * * @param position 位置 单位 mm */ - public static DeviceCommandBundle gantryZMove(Double position) { + public static DeviceCommandBundle transferZMove(Double position) { DeviceCommandParams params = new DeviceCommandParams(); params.setPosition(position); return controlMotorCmd(CmdDevice.z_motor, CmdAction.move, params, "z轴移动"); @@ -142,7 +142,7 @@ public class DeviceCommandGenerator { * * @param position 位置 单位 mm */ - public static DeviceCommandBundle gantryXMoveBy(Double position) { + public static DeviceCommandBundle transferXMoveBy(Double position) { DeviceCommandParams params = new DeviceCommandParams(); params.setPosition(position); return controlMotorCmd(CmdDevice.x_motor, CmdAction.move_by, params, "x轴相对移动"); @@ -154,7 +154,7 @@ public class DeviceCommandGenerator { * * @param position 位置 单位 mm */ - public static DeviceCommandBundle gantryZMoveBy(Double position) { + public static DeviceCommandBundle transferZMoveBy(Double position) { DeviceCommandParams params = new DeviceCommandParams(); params.setPosition(position); return controlMotorCmd(CmdDevice.z_motor, CmdAction.move_by, params, "z轴相对移动"); @@ -163,7 +163,7 @@ public class DeviceCommandGenerator { /** * x轴停止 */ - public static DeviceCommandBundle gantryXStop() { + public static DeviceCommandBundle transferXStop() { return controlMotorCmd(CmdDevice.x_motor, CmdAction.stop, null, "x轴停止"); } @@ -171,7 +171,7 @@ public class DeviceCommandGenerator { /** * z轴停止 */ - public static DeviceCommandBundle gantryZStop() { + public static DeviceCommandBundle transferZStop() { return controlMotorCmd(CmdDevice.z_motor, CmdAction.stop, null, "z轴停止"); }