diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java index 3d06747..89ae9d6 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java @@ -1,10 +1,21 @@ package com.iflytop.sgs.app.cmd.control; +import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; +import com.iflytop.sgs.app.model.bo.Point3D; +import com.iflytop.sgs.app.model.bo.status.device.TransferModuleState; import com.iflytop.sgs.app.model.dto.CmdDTO; +import com.iflytop.sgs.app.service.api.DevicePositionService; +import com.iflytop.sgs.app.service.api.SystemConfigService; import com.iflytop.sgs.app.service.device.DeviceStateService; 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.ValveStateCode; +import com.iflytop.sgs.common.enums.data.DevicePositionCode; +import com.iflytop.sgs.common.exception.AppException; +import com.iflytop.sgs.common.result.ResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -12,7 +23,7 @@ import org.springframework.stereotype.Component; import java.util.concurrent.CompletableFuture; /** - * 添加溶液 todo wmy 需要记录托盘每一行的坐标 机械臂移动成功后 调动泵机加液 + * 添加溶液 */ @Slf4j @Component @@ -21,11 +32,35 @@ import java.util.concurrent.CompletableFuture; public class LiquidAddCommand extends BaseCommandHandler { private final SolutionModuleService solutionModuleService; private final DeviceStateService deviceStateService; + private final DevicePositionService devicePositionService; + private final TransferModuleService transferModuleService; + private final SystemConfigService systemConfigService; @Override public CompletableFuture handle(CmdDTO cmdDTO) { + String solution = cmdDTO.getStringParam("solution"); + ValveStateCode valveStateCode = ValveStateCode.valueOf(solution);//解析加液通道 + double volume = cmdDTO.getDoubleParam("volume");//解析加液量 + JSONArray jsonArray = cmdDTO.getJSONArrayParam("index");//解析加液列 + Double scale = Double.valueOf(systemConfigService.getSystemConfigValueByCode(valveStateCode.getSystemConfigCode()));//获取转换系数 + Double position = volume * scale; + Point3D liquidAreaTrayPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D(); //获取加液区上方点位 + Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置 + Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //加液模块电机下降进入试管加液位置 return runAsync(() -> { - + solutionModuleService.liquidValveSwitch(cmdDTO.getCommandId(), cmdDTO.getCommand(), valveStateCode);//电磁阀对应通道打开 + TransferModuleState transferModuleState = deviceStateService.getDeviceState().getTransferModule();//获取机械臂状态 + Assert.isTrue(transferModuleState.isTrayStatus(), () -> new AppException(ResultCode.OPERATION_NOT_ALLOWED));//判断机械臂是否有托盘 + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 + transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降 + //开始加液 + for (int i = 0; i < jsonArray.size(); i++) { + solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), position);//加液 + transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -trayTubeHorizontalSpacingDistance);//机械臂左移试管间距 + } + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 + transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 }); } } diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidReduceCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidReduceCommand.java index 54c346a..609d8ee 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidReduceCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidReduceCommand.java @@ -1,10 +1,21 @@ package com.iflytop.sgs.app.cmd.control; +import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONArray; import com.iflytop.sgs.app.core.BaseCommandHandler; +import com.iflytop.sgs.app.model.bo.Point3D; +import com.iflytop.sgs.app.model.bo.status.device.TransferModuleState; import com.iflytop.sgs.app.model.dto.CmdDTO; +import com.iflytop.sgs.app.service.api.DevicePositionService; +import com.iflytop.sgs.app.service.api.SystemConfigService; import com.iflytop.sgs.app.service.device.DeviceStateService; 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.ValveStateCode; +import com.iflytop.sgs.common.enums.data.DevicePositionCode; +import com.iflytop.sgs.common.exception.AppException; +import com.iflytop.sgs.common.result.ResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -12,7 +23,7 @@ import org.springframework.stereotype.Component; import java.util.concurrent.CompletableFuture; /** - * 抽取溶液 todo wmy 需要记录托盘每一行的坐标 机械臂移动成功后 调动泵机抽液体 + * 抽取溶液 */ @Slf4j @Component @@ -21,10 +32,32 @@ import java.util.concurrent.CompletableFuture; public class LiquidReduceCommand extends BaseCommandHandler { private final SolutionModuleService solutionModuleService; private final DeviceStateService deviceStateService; + private final DevicePositionService devicePositionService; + private final TransferModuleService transferModuleService; + private final SystemConfigService systemConfigService; @Override public CompletableFuture handle(CmdDTO cmdDTO) { + double volume=cmdDTO.getDoubleParam("volume");//解析加液量 + JSONArray jsonArray =cmdDTO.getJSONArrayParam("index");//解析加液列 + Double position = volume;//蠕动泵移动距离 + Point3D liquidAreaTrayPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D(); //获取加液区上方点位 + Double solutionModuleMotorDownInTubeExtPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeExtPositon).getPositon(); //加液模块电机下降进入试管抽液位置 + Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //加液模块电机下降进入试管加液位置 + return runAsync(() -> { + solutionModuleService.liquidValveSwitch(cmdDTO.getCommandId(),cmdDTO.getCommand(), ValveStateCode.waste);//电磁阀废液通道打开 + TransferModuleState transferModuleState=deviceStateService.getDeviceState().getTransferModule();//获取机械臂状态 + Assert.isTrue(transferModuleState.isTrayStatus(),()->new AppException(ResultCode.OPERATION_NOT_ALLOWED));//判断机械臂是否有托盘 + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 + transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液机械臂下降 + for (int i = 0; i < jsonArray.size(); i++) { + solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(),cmdDTO.getCommand(),-position);//加液 + transferModuleService.transferXMoveBy(cmdDTO.getCommandId(),cmdDTO.getCommand(),-trayTubeHorizontalSpacingDistance);//机械臂左移试管间距 + } + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 + transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 }); } } 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 deleted file mode 100644 index b18c33a..0000000 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.iflytop.sgs.app.cmd.control; - -import cn.hutool.core.lang.Assert; -import cn.hutool.json.JSONArray; -import com.iflytop.sgs.app.core.BaseCommandHandler; -import com.iflytop.sgs.app.model.bo.Point3D; -import com.iflytop.sgs.app.model.bo.status.device.TransferModuleState; -import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.api.DevicePositionService; -import com.iflytop.sgs.app.service.api.SystemConfigService; -import com.iflytop.sgs.app.service.device.DeviceStateService; -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.SystemConfigCode; -import com.iflytop.sgs.common.enums.ValveStateCode; -import com.iflytop.sgs.common.enums.data.DevicePositionCode; -import com.iflytop.sgs.common.exception.AppException; -import com.iflytop.sgs.common.result.ResultCode; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.concurrent.CompletableFuture; - -/** - * 添加溶液 - */ -@Slf4j -@Component -@RequiredArgsConstructor -@CommandMapping("solution_add")//业务指令注解 -public class SolutionAddCommand extends BaseCommandHandler { - private final SolutionModuleService solutionModuleService; - private final DeviceStateService deviceStateService; - private final DevicePositionService devicePositionService; - private final TransferModuleService transferModuleService; - private final SystemConfigService systemConfigService; - - @Override - public CompletableFuture handle(CmdDTO cmdDTO) { - String solution=cmdDTO.getStringParam("solution"); - ValveStateCode valveStateCode=ValveStateCode.valueOf(solution);//解析加液通道 - double volume=cmdDTO.getDoubleParam("volume");//解析加液量 - JSONArray jsonArray =cmdDTO.getJSONArrayParam("index");//解析加液列 - Double scale = Double.valueOf(systemConfigService.getSystemConfigValueByCode(valveStateCode.getSystemConfigCode()));//获取转换系数 - Double position = volume * scale; - Point3D liquidAreaTrayPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D(); //获取加液区上方点位 - Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置 - Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //加液模块电机下降进入试管加液位置 - return runAsync(() -> { - solutionModuleService.liquidValveSwitch(cmdDTO.getCommandId(),cmdDTO.getCommand(),valveStateCode);//电磁阀对应通道打开 - TransferModuleState transferModuleState=deviceStateService.getDeviceState().getTransferModule();//获取机械臂状态 - Assert.isTrue(transferModuleState.isTrayStatus(),()->new AppException(ResultCode.OPERATION_NOT_ALLOWED));//判断机械臂是否有托盘 - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 - transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降 - //开始加液 - for (int i = 0; i < jsonArray.size(); i++) { - solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(),cmdDTO.getCommand(),position);//加液 - transferModuleService.transferXMoveBy(cmdDTO.getCommandId(),cmdDTO.getCommand(),-trayTubeHorizontalSpacingDistance);//机械臂左移试管间距 - } - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 - transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 - }); - } -} - 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 deleted file mode 100644 index 238c09c..0000000 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.iflytop.sgs.app.cmd.control; - -import cn.hutool.core.lang.Assert; -import cn.hutool.json.JSONArray; -import com.iflytop.sgs.app.core.BaseCommandHandler; -import com.iflytop.sgs.app.model.bo.Point3D; -import com.iflytop.sgs.app.model.bo.status.device.TransferModuleState; -import com.iflytop.sgs.app.model.dto.CmdDTO; -import com.iflytop.sgs.app.service.api.DevicePositionService; -import com.iflytop.sgs.app.service.api.SystemConfigService; -import com.iflytop.sgs.app.service.device.DeviceStateService; -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.ValveStateCode; -import com.iflytop.sgs.common.enums.data.DevicePositionCode; -import com.iflytop.sgs.common.exception.AppException; -import com.iflytop.sgs.common.result.ResultCode; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.concurrent.CompletableFuture; - -/** - * 抽取溶液 - */ -@Slf4j -@Component -@RequiredArgsConstructor -@CommandMapping("solution_reduce")//业务指令注解 -public class SolutionReduceCommand extends BaseCommandHandler { - private final SolutionModuleService solutionModuleService; - private final DeviceStateService deviceStateService; - private final DevicePositionService devicePositionService; - private final TransferModuleService transferModuleService; - private final SystemConfigService systemConfigService; - - @Override - public CompletableFuture handle(CmdDTO cmdDTO) { - double volume=cmdDTO.getDoubleParam("volume");//解析加液量 - JSONArray jsonArray =cmdDTO.getJSONArrayParam("index");//解析加液列 - Double position = volume;//蠕动泵移动距离 - Point3D liquidAreaTrayPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D(); //获取加液区上方点位 - Double solutionModuleMotorDownInTubeExtPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeExtPositon).getPositon(); //加液模块电机下降进入试管抽液位置 - Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //加液模块电机下降进入试管加液位置 - - return runAsync(() -> { - solutionModuleService.liquidValveSwitch(cmdDTO.getCommandId(),cmdDTO.getCommand(),ValveStateCode.waste);//电磁阀废液通道打开 - TransferModuleState transferModuleState=deviceStateService.getDeviceState().getTransferModule();//获取机械臂状态 - Assert.isTrue(transferModuleState.isTrayStatus(),()->new AppException(ResultCode.OPERATION_NOT_ALLOWED));//判断机械臂是否有托盘 - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 - transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液机械臂下降 - for (int i = 0; i < jsonArray.size(); i++) { - solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(),cmdDTO.getCommand(),-position);//加液 - transferModuleService.transferXMoveBy(cmdDTO.getCommandId(),cmdDTO.getCommand(),-trayTubeHorizontalSpacingDistance);//机械臂左移试管间距 - } - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//加液机械臂上升 - transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 - }); - } -} -