4 changed files with 119 additions and 37 deletions
-
82src/main/java/com/iflytop/sgs/app/cmd/control/DrainLiquidCommand.java
-
33src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java
-
8src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java
-
33src/main/resources/sql/init.sql
@ -0,0 +1,82 @@ |
|||
package com.iflytop.sgs.app.cmd.control; |
|||
|
|||
import cn.hutool.core.lang.Assert; |
|||
import com.iflytop.sgs.app.core.BaseCommandHandler; |
|||
import com.iflytop.sgs.app.model.bo.Point3D; |
|||
import com.iflytop.sgs.app.model.bo.status.device.TrayState; |
|||
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.DeviceSensorService; |
|||
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.DeviceSensorCode; |
|||
import com.iflytop.sgs.common.enums.HeatModuleCode; |
|||
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.List; |
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 管道排空 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandMapping("drain_liquid")//业务指令注解 |
|||
public class DrainLiquidCommand extends BaseCommandHandler { |
|||
private final HeatModuleService heatModuleService; |
|||
private final TransferModuleService transferModuleService; |
|||
|
|||
private final DevicePositionService devicePositionService; |
|||
private final DeviceStateService deviceStateService; |
|||
private final DeviceSensorService deviceSensorService; |
|||
private final SolutionModuleService solutionModuleService; |
|||
private final SystemConfigService systemConfigService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> 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));//上料区不能存在托盘 |
|||
deviceStateService.getCommandMutexState().get().setTransferCommandExecuting(true); |
|||
return runAsync(() -> { |
|||
try { |
|||
boolean preFillFlag = systemConfigService.getSystemConfigBooleanByCode(SystemConfigCode.pre_fill_when_open_service); |
|||
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);//预充距离 |
|||
if (preFillFlag) { |
|||
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|||
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|||
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().setTransferCommandExecuting(false); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue