Browse Source

拆分DeviceCommandUtilService

master
白凤吉 2 months ago
parent
commit
e5ab98141a
  1. 8
      src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStartCommand.java
  2. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStopCommand.java
  3. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java
  4. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/CleanStopCommand.java
  5. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/DoorCloseCommand.java
  6. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/DoorOpenCommand.java
  7. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/DoorOriginCommand.java
  8. 10
      src/main/java/com/iflytop/sgs/app/cmd/control/DryStartCommand.java
  9. 8
      src/main/java/com/iflytop/sgs/app/cmd/control/DryStopCommand.java
  10. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/FanStartCommand.java
  11. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/FanStopCommand.java
  12. 2
      src/main/java/com/iflytop/sgs/app/cmd/control/HeatStartCommand.java
  13. 6
      src/main/java/com/iflytop/sgs/app/cmd/control/HeatStopCommand.java
  14. 23
      src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java
  15. 23
      src/main/java/com/iflytop/sgs/app/cmd/control/MoveToSolutionAreaCommand.java
  16. 4
      src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java
  17. 5
      src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java
  18. 12
      src/main/java/com/iflytop/sgs/app/cmd/control/TransferXOriginCommand.java
  19. 12
      src/main/java/com/iflytop/sgs/app/cmd/control/TransferZOriginCommand.java
  20. 6
      src/main/java/com/iflytop/sgs/app/controller/HeatController.java
  21. 2
      src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java
  22. 2
      src/main/java/com/iflytop/sgs/app/controller/SystemController.java
  23. 4
      src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java
  24. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java
  25. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/crafts/CraftsState.java
  26. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/DeviceState.java
  27. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/DoorState.java
  28. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/GantryArmState.java
  29. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java
  30. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionContainerState.java
  31. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionModuleState.java
  32. 3
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/TrayState.java
  33. 2
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/TubeState.java
  34. 2
      src/main/java/com/iflytop/sgs/app/model/vo/SetTrayTubeVO.java
  35. 2
      src/main/java/com/iflytop/sgs/app/service/api/HeatService.java
  36. 2
      src/main/java/com/iflytop/sgs/app/service/api/TrayService.java
  37. 424
      src/main/java/com/iflytop/sgs/app/service/device/DeviceCommandUtilService.java
  38. 4
      src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java
  39. 5
      src/main/java/com/iflytop/sgs/app/service/device/DeviceStateService.java
  40. 2
      src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java
  41. 39
      src/main/java/com/iflytop/sgs/app/service/device/module/DoorModuleService.java
  42. 96
      src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java
  43. 24
      src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java
  44. 248
      src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java
  45. 20
      src/main/java/com/iflytop/sgs/common/cmd/DeviceCommandGenerator.java

8
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);

6
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);
}

6
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);//设置状态加热中
}

6
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);//设置状态加热中
}

6
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<Void> handle(CmdDTO cmdDTO) {
return runAsync(() -> {
//门电机回原点
deviceCommandUtilService.doorOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand());
doorModuleService.doorOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand());
//将门状态设置为false
deviceStateService.setDoorStatus(false);
});

6
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);
});

6
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<Void> 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);

10
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);
}
});

8
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);
}
});

6
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);
}
});

6
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);
}
});

2
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;

6
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);//设置状态停止加热
}
});

23
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);

23
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);

4
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

5
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

12
src/main/java/com/iflytop/sgs/app/cmd/control/GantryXOriginCommand.java → src/main/java/com/iflytop/sgs/app/cmd/control/TransferXOriginCommand.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.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;
@ -12,20 +12,20 @@ import org.springframework.stereotype.Component;
import java.util.concurrent.CompletableFuture;
/**
* 龙门架机械臂x轴回原点
* 转运机械臂x轴回原点
*/
@Slf4j
@Component
@RequiredArgsConstructor
@CommandMapping("gantry_x_origin")//业务指令注解
public class GantryXOriginCommand extends BaseCommandHandler {
private final DeviceCommandUtilService deviceCommandUtilService;
@CommandMapping("transfer_x_origin")//业务指令注解
public class TransferXOriginCommand extends BaseCommandHandler {
private final TransferModuleService transferModuleService;
private final SelfTestService selfTestService;
@Override
public CompletableFuture<Void> handle(CmdDTO cmdDTO) {
return runAsync(() -> {
deviceCommandUtilService.gantryXMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand());
transferModuleService.transferXMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand());
selfTestService.getSelfTestState().setGantryXOrigin(true);//设置是否在原点状态
});
}

12
src/main/java/com/iflytop/sgs/app/cmd/control/GantryZOriginCommand.java → src/main/java/com/iflytop/sgs/app/cmd/control/TransferZOriginCommand.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.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;
@ -12,20 +12,20 @@ import org.springframework.stereotype.Component;
import java.util.concurrent.CompletableFuture;
/**
* 龙门架机械臂z轴回原点
* 转运机械臂z轴回原点
*/
@Slf4j
@Component
@RequiredArgsConstructor
@CommandMapping("gantry_z_origin")//业务指令注解
public class GantryZOriginCommand extends BaseCommandHandler {
private final DeviceCommandUtilService deviceCommandUtilService;
@CommandMapping("transfer_z_origin")//业务指令注解
public class TransferZOriginCommand extends BaseCommandHandler {
private final TransferModuleService transferModuleService;
private final SelfTestService selfTestService;
@Override
public CompletableFuture<Void> handle(CmdDTO cmdDTO) {
return runAsync(() -> {
deviceCommandUtilService.gantryZMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand());
transferModuleService.transferZMoveOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand());
selfTestService.getSelfTestState().setGantryZOrigin(true);//设置是否在原点状态
});
}

6
src/main/java/com/iflytop/sgs/app/controller/HeatModuleController.java → src/main/java/com/iflytop/sgs/app/controller/HeatController.java

@ -1,7 +1,7 @@
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.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;
@ -21,8 +21,8 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/heat")
@RequiredArgsConstructor
@Slf4j
public class HeatModuleController {
private final HeatModuleService heatModuleService;
public class HeatController {
private final HeatService heatModuleService;
@Operation(summary = "加热模块设定目标温度")
@PostMapping("/target-temperature")

2
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;

2
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;

4
src/main/java/com/iflytop/sgs/app/core/device/CommandState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status;
import lombok.Data;
@ -6,7 +6,7 @@ import lombok.Data;
* 指令互斥关系状态
*/
@Data
public class CommandState {
public class CommandMutexState {
private boolean capFreeCommandExecuting = false;
private boolean capLiftingOriginCommandExecuting = false;
private boolean capUsedCommandExecuting = false;

2
src/main/java/com/iflytop/sgs/app/core/device/SelfTestState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

2
src/main/java/com/iflytop/sgs/app/core/device/CraftsState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/crafts/CraftsState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
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;

2
src/main/java/com/iflytop/sgs/app/core/device/DeviceState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/DeviceState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
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;

2
src/main/java/com/iflytop/sgs/app/core/device/DoorState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/DoorState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status.device;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

2
src/main/java/com/iflytop/sgs/app/core/device/GantryArmState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/GantryArmState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status.device;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

2
src/main/java/com/iflytop/sgs/app/core/device/HeatModuleState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status.device;
import com.iflytop.sgs.common.enums.HeatModuleCode;
import io.swagger.v3.oas.annotations.media.Schema;

2
src/main/java/com/iflytop/sgs/app/core/device/SolutionContainerState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionContainerState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status.device;
import com.iflytop.sgs.common.enums.ContainerCode;
import com.iflytop.sgs.common.enums.ContainerType;

2
src/main/java/com/iflytop/sgs/app/core/device/SolutionModuleState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/SolutionModuleState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status.device;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

3
src/main/java/com/iflytop/sgs/app/core/device/TrayState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/TrayState.java

@ -1,5 +1,6 @@
package com.iflytop.sgs.app.core.device;
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;

2
src/main/java/com/iflytop/sgs/app/core/device/TubeState.java → src/main/java/com/iflytop/sgs/app/model/bo/status/device/TubeState.java

@ -1,4 +1,4 @@
package com.iflytop.sgs.app.core.device;
package com.iflytop.sgs.app.model.bo.status.device;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

2
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;

2
src/main/java/com/iflytop/sgs/app/service/api/HeatModuleService.java → src/main/java/com/iflytop/sgs/app/service/api/HeatService.java

@ -10,7 +10,7 @@ import org.springframework.stereotype.Service;
*/
@Service
@RequiredArgsConstructor
public class HeatModuleService {
public class HeatService {
private final DeviceStateService deviceStateService;
public void setTargetTemperature(SetTargetTemperatureVO setTargetTemperatureVO) {

2
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;

424
src/main/java/com/iflytop/sgs/app/service/device/DeviceCommandUtilService.java

@ -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);
}
}

4
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;

5
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> commandState = new AtomicReference<>(new CommandState());
private final AtomicReference<CommandMutexState> commandState = new AtomicReference<>(new CommandMutexState());

2
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;

39
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);
}
}

96
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);
}
}

24
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<Thread> 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);
}
}

248
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);
}
}

20
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轴停止");
}

Loading…
Cancel
Save