diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java index 36c9223..9a218e7 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java @@ -13,16 +13,20 @@ 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.CraftsTransferTypeCode; import com.iflytop.sgs.common.enums.DeviceSensorCode; import com.iflytop.sgs.common.enums.HeatModuleCode; import com.iflytop.sgs.common.enums.cmd.CmdBeepMode; import com.iflytop.sgs.common.enums.data.DevicePositionCode; import com.iflytop.sgs.common.exception.AppException; import com.iflytop.sgs.common.result.ResultCode; +import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -42,28 +46,29 @@ public class OutTrayCommand extends BaseCommandHandler { private final DeviceSensorService deviceSensorService; private final SolutionModuleService solutionModuleService; + + + @Override public CompletableFuture handle(CmdDTO cmdDTO) throws Exception { - if (deviceStateService.getCommandMutexState().get().isTransferCommandExecuting()) { - throw new AppException(ResultCode.CMD_BUSY); - } - boolean liquidTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区托盘状态 - Assert.isTrue(!liquidTrayExist, () -> new AppException(ResultCode.OPERATION_NOT_ALLOWED));//上料区不能存在托盘 String targetHeatModuleCodeStr = cmdDTO.getStringParam("heatModuleCode"); HeatModuleCode targetHeatModuleCode = HeatModuleCode.valueOf(targetHeatModuleCodeStr);//目标加热模块 if (targetHeatModuleCode == HeatModuleCode.heat_module_04) { - throw new AppException(ResultCode.NOT_ALLOWED_HEAT_MODULE); + throw new AppException(ResultCode.NOT_ALLOWED_HEAT_MODULE);//不允许的加热模块 } + boolean liquidTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区托盘状态 + Assert.isTrue(!liquidTrayExist, () -> new AppException(ResultCode.OPERATION_NOT_ALLOWED));//上料区不能存在托盘 Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点 - deviceStateService.getCommandMutexState().get().setTransferCommandExecuting(true); return runAsync(() -> { try { + transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_feed);//申请使用转运模块 + boolean liquidTrayExistAgain = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区托盘状态 + Assert.isTrue(!liquidTrayExistAgain, () -> new AppException(ResultCode.OPERATION_NOT_ALLOWED));//上料区不能存在托盘 solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂上升 boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(targetHeatModuleCode);//获取传感器状态 Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加热区无托盘 - //deviceStateService.getDeviceState().getTrayByHeatModuleCode(targetHeatModuleCode).setUseArm(true);//使用机械臂标志 transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -transferModuleXPickTrayMoveDistance);//X轴进入卡槽 @@ -75,12 +80,13 @@ public class OutTrayCommand extends BaseCommandHandler { transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 deviceStateService.getDeviceState().getTransferModule().setTrayStatus(false);//设定托盘夹爪为FALSE deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(false);//设定目标加热模块托盘状态 - //deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态 List trayList = deviceStateService.getDeviceState().getTrays(); + for (TrayState trayState : trayList) { + log.info("点击移出托盘按钮{}", trayState.getHeatModuleCode().name()); + }//todo 测试是否移除成功 trayList.removeIf((tray) -> tray.getHeatModuleCode() != null && tray.getHeatModuleCode().equals(targetHeatModuleCode)); } finally { - deviceStateService.getCommandMutexState().get().setTransferCommandExecuting(false); - // deviceStateService.getDeviceState().getTrayByHeatModuleCode(targetHeatModuleCode).setUseArm(false);//使用机械臂标志 + transferModuleService.releaseTransferModule();//释放转运模组 } }); }