|
@ -11,9 +11,10 @@ import com.qyft.gd.model.vo.WebsocketResult; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
import java.sql.Array; |
|
|
|
|
|
import java.util.*; |
|
|
import java.util.function.Function; |
|
|
import java.util.function.Function; |
|
|
|
|
|
import java.util.function.Supplier; |
|
|
|
|
|
|
|
|
@Service |
|
|
@Service |
|
|
public class CMDService { |
|
|
public class CMDService { |
|
@ -44,89 +45,125 @@ public class CMDService { |
|
|
commandMap.put(Commands.GET_LIQUID_AMOUNT, this::getLiquidAmount); |
|
|
commandMap.put(Commands.GET_LIQUID_AMOUNT, this::getLiquidAmount); |
|
|
commandMap.put(Commands.MOVE_TUBE, this::moveTube); |
|
|
commandMap.put(Commands.MOVE_TUBE, this::moveTube); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 移动单个试管 |
|
|
private Boolean moveTube(CMDForm cmdForm) { |
|
|
private Boolean moveTube(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
//TODO 执行指令 |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 当前溶液数量 |
|
|
private Boolean getLiquidAmount(CMDForm cmdForm) { |
|
|
private Boolean getLiquidAmount(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
//TODO 执行指令 |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 机械臂 |
|
|
private Boolean moveMachineArm(CMDForm cmdForm) { |
|
|
private Boolean moveMachineArm(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
//TODO 执行指令 |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 装回盖子 |
|
|
private Boolean putBackCap(CMDForm cmdForm) { |
|
|
private Boolean putBackCap(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
//TODO 执行指令 |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 取试管架盖 |
|
|
private Boolean takeOffCap(CMDForm cmdForm) { |
|
|
private Boolean takeOffCap(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
//TODO 执行指令 |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 移出异常 |
|
|
private Boolean moveToHeatArea(CMDForm cmdForm) { |
|
|
private Boolean moveToHeatArea(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
//TODO 执行指令 |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 移至异常 |
|
|
private Boolean moveToUnusual(CMDForm cmdForm) { |
|
|
private Boolean moveToUnusual(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
|
|
|
//TODO 获取异常区位置 |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 拍照 |
|
|
private Boolean takePhoto(CMDForm cmdForm) { |
|
|
private Boolean takePhoto(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
cmdList.add(() -> deviceService.takePhoto()); |
|
|
|
|
|
return run(cmdList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 停止加热 |
|
|
private Boolean stopHeat(CMDForm cmdForm) { |
|
|
private Boolean stopHeat(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
cmdList.add(() -> deviceService.stopHeating()); |
|
|
|
|
|
return run(cmdList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 开始加热 |
|
|
private Boolean startHeat(CMDForm cmdForm) { |
|
|
private Boolean startHeat(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
cmdList.add(() -> deviceService.startHeating((Integer) cmdForm.getParams().get("time"))); |
|
|
|
|
|
return run(cmdList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 摇匀 |
|
|
private Boolean shakeUp(CMDForm cmdForm) { |
|
|
private Boolean shakeUp(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
deviceService.startShaking(); |
|
|
|
|
|
Timer timer = new Timer(); |
|
|
|
|
|
TimerTask task = new TimerTask() { |
|
|
|
|
|
@Override |
|
|
|
|
|
public void run() { |
|
|
|
|
|
deviceService.stopShaking(); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
timer.schedule(task, 1000); |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
// 检查加液位状态(是否被占用) |
|
|
private Boolean checkActionArea(CMDForm cmdForm) { |
|
|
private Boolean checkActionArea(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
return run(cmdList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 移至加液 |
|
|
private Boolean moveToActionArea(CMDForm cmdForm) { |
|
|
private Boolean moveToActionArea(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
// TODO 加液位是否被占用 |
|
|
|
|
|
cmdList.add(() -> deviceService.moveRailArmToPoint(1, 2, 3)); |
|
|
|
|
|
cmdList.add(() -> deviceService.openClaw()); |
|
|
|
|
|
// TODO 检查加液位是否被占用 |
|
|
|
|
|
cmdList.add(() -> deviceService.moveRailArmToPoint(4,5,6)); |
|
|
|
|
|
return run(cmdList); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
// 恒温 |
|
|
private Boolean keepHeat(CMDForm cmdForm) { |
|
|
private Boolean keepHeat(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
// TODO 加热到指定温度,通过传感器使其恒温 |
|
|
|
|
|
return run(cmdList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 加液 |
|
|
private Boolean injectFluid(CMDForm cmdForm) { |
|
|
private Boolean injectFluid(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
// TODO 计算出试管的坐标 |
|
|
|
|
|
// TODO 获取加液位是否有试管(传感器?) |
|
|
|
|
|
// TODO 溶液id 容量 |
|
|
|
|
|
Map<String, Object> params = cmdForm.getParams(); |
|
|
|
|
|
cmdList.add(() -> deviceService.addLiquid((Integer) params.get("pumpId"), ((Integer)params.get("volume")))); |
|
|
|
|
|
return run(cmdList); |
|
|
|
|
|
} |
|
|
|
|
|
// 放下托盘 |
|
|
private boolean downTray(CMDForm cmdForm) { |
|
|
private boolean downTray(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
cmdList.add(() -> deviceService.moveTrayToHeight(0)); |
|
|
|
|
|
return run(cmdList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 抬起托盘 |
|
|
private boolean upTray(CMDForm cmdForm) { |
|
|
private boolean upTray(CMDForm cmdForm) { |
|
|
//TODO 执行指令 |
|
|
|
|
|
|
|
|
List<Supplier<Boolean>> cmdList = new ArrayList<>(); |
|
|
|
|
|
cmdList.add(() -> deviceService.moveTrayToHeight(20)); |
|
|
|
|
|
return run(cmdList); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private boolean run(List<Supplier<Boolean>> cmdList) { |
|
|
|
|
|
// 执行所有命令 |
|
|
|
|
|
for (Supplier<Boolean> command : cmdList) { |
|
|
|
|
|
boolean result = command.get(); |
|
|
|
|
|
if (!result) { |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|