9 changed files with 166 additions and 5 deletions
-
12src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStopCommand.java
-
1src/main/java/com/iflytop/sgs/app/cmd/control/DryStartCommand.java
-
1src/main/java/com/iflytop/sgs/app/cmd/control/DryStopCommand.java
-
1src/main/java/com/iflytop/sgs/app/cmd/control/HeatStartCommand.java
-
68src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java
-
64src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java
-
1src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java
-
19src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java
-
4src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java
@ -0,0 +1,68 @@ |
|||||
|
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<Void> 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);//移动至加液位置 |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
@ -0,0 +1,64 @@ |
|||||
|
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<Void> 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);//移动至加液位置 |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue