diff --git a/src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidPreFillCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidPreFillCommand.java new file mode 100644 index 0000000..666792b --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidPreFillCommand.java @@ -0,0 +1,65 @@ +package com.iflytop.sgs.app.cmd.selftest; + +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.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.SolutionCode; +import com.iflytop.sgs.common.enums.SystemConfigCode; +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("liquid_pre_fill_when_launch ")//业务指令注解 +public class LiquidPreFillCommand extends BaseCommandHandler { + private final SolutionModuleService solutionModuleService; + private final TransferModuleService transferModuleService; + private final DevicePositionService devicePositionService; + private final DeviceStateService deviceStateService; + private final SystemConfigService systemConfigService; + + @Override + public CompletableFuture handle(CmdDTO cmdDTO) { + if (deviceStateService.getCommandMutexState().get().isMoveTest()) { + throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); + } + deviceStateService.getCommandMutexState().get().setMoveTest(true); + return runAsync(() -> { + try { + Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1坐标 + Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 + Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance_when_open_service);//预充距离 + transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 + solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 + solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 + solutionModuleService.liquidPumpMove(-preFillDistance);//排空 + solutionModuleService.liquidValveSwitch(SolutionCode.thin);//电磁阀对应通道打开 + solutionModuleService.liquidPumpMove(preFillDistance);//预充 + solutionModuleService.liquidValveSwitch(SolutionCode.thick);//电磁阀对应通道打开 + solutionModuleService.liquidPumpMove(preFillDistance);//预充 + solutionModuleService.liquidValveSwitch(SolutionCode.water);//电磁阀对应通道打开 + solutionModuleService.liquidPumpMove(preFillDistance);//预充 + solutionModuleService.solutionMotorMoveZero();//回原点 + } finally { + deviceStateService.getCommandMutexState().get().setMoveTest(false); + } + }); + } +} +