Browse Source

合并代码

master
白凤吉 2 months ago
parent
commit
93c7401d97
  1. 39
      src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java
  2. 35
      src/main/java/com/iflytop/sgs/app/cmd/control/LiquidReduceCommand.java
  3. 68
      src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java
  4. 64
      src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java

39
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<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);//移动至加液位置
});
}
}

35
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<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);//移动至加液位置
});
}
}

68
src/main/java/com/iflytop/sgs/app/cmd/control/SolutionAddCommand.java

@ -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<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);//移动至加液位置
});
}
}

64
src/main/java/com/iflytop/sgs/app/cmd/control/SolutionReduceCommand.java

@ -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<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);//移动至加液位置
});
}
}
Loading…
Cancel
Save