diff --git a/src/main/java/com/qyft/gd/device/service/DeviceService.java b/src/main/java/com/qyft/gd/device/service/DeviceService.java index aa01b5f..ee1ad26 100644 --- a/src/main/java/com/qyft/gd/device/service/DeviceService.java +++ b/src/main/java/com/qyft/gd/device/service/DeviceService.java @@ -242,7 +242,7 @@ public class DeviceService { * @param pumpId 泵id * @param volume 液体体积 */ - public synchronized boolean addLiquid(String pumpId, int volume) { + public synchronized boolean addLiquid(long pumpId, int volume) { Map params = new HashMap<>(); params.put("pumpId", pumpId); params.put("volume", volume); diff --git a/src/main/java/com/qyft/gd/device/service/DeviceStepService.java b/src/main/java/com/qyft/gd/device/service/DeviceStepService.java new file mode 100644 index 0000000..a7901f5 --- /dev/null +++ b/src/main/java/com/qyft/gd/device/service/DeviceStepService.java @@ -0,0 +1,143 @@ +package com.qyft.gd.device.service; + +import com.qyft.gd.model.bo.AddLiquid; +import com.qyft.gd.service.BaseDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.BooleanSupplier; + +/** + * 设备步骤操作 + */ +@Service +@RequiredArgsConstructor +public class DeviceStepService { + + DeviceService deviceService; + BaseDataService baseDataService; + + /** + * 抬起托盘 + * + * @param heaterId 加热区id + */ + public void upTray(String heaterId) { + deviceService.raiseTray(heaterId); + } + + /** + * 降下托盘 + * + * @param heaterId 加热区id + */ + public void downTray(String heaterId) { + deviceService.lowerTray(heaterId); + } + + /** + * 添加溶液 + * + * @param tubeCoordinateList 需要添加溶液的试管坐标list: x,y,z 字符 + * @param addLiquidList 需要添加的溶液 + */ + public boolean addLiquid(List tubeCoordinateList, List addLiquidList) { + List results = new ArrayList<>(); + for (String tubeCoordinate : tubeCoordinateList) { + String[] tubeCoordinateArray = tubeCoordinate.split(","); + int x = Integer.parseInt(tubeCoordinateArray[0]); + int y = Integer.parseInt(tubeCoordinateArray[1]); + int z = Integer.parseInt(tubeCoordinateArray[2]); + results.add(deviceService.moveLiquidArmToPoint(x, y, z));//加液孔对准试管 + for (AddLiquid addLiquid : addLiquidList) {//依次添加溶液 + results.add(deviceService.addLiquid(addLiquid.getPumpId(), addLiquid.getVolume())); + } + } + return results.stream().allMatch(Boolean::booleanValue); + } + + /** + * 将指定加热区的托盘移至加液区 + * + * @param heaterId 加热区id + */ + public boolean moveToSol(String heaterId) { + //从内存中获取加热区拍子点位 + //机械臂移动到拍子上方 + //张开夹爪 + //向下移动机械臂,确保夹爪闭合可以夹住拍子 + //闭合夹爪 + //解除拍子密封 + //向上移动机械臂,确保不会发生碰撞的高度 + //拍子存放区高度 -1 + //从内存中获取拍子存放区点位 + //移动机械臂至拍子存放区点位 + //向下移动机械臂,使拍子落入拍子存放区 + //张开夹爪,放下拍子 + //向上移动机械臂,脱离拍子存放区 + //移动机械臂至加热区 + //张开夹爪 + //向下移动机械臂,确保夹爪闭合可以夹住托盘 + //闭合夹爪 + //向上移动机械臂,确保不会发生碰撞的高度 + //从内存中获取加液区点位 + //移动机械臂至加液区点位 + //向下移动机械臂,放下托盘 + //张开夹爪 + //向上移动机械臂,脱离托盘 + return true; + } + + //移至加热 + public boolean moveToHeater(int heaterId) { + return true; + } + + //摇匀 + public boolean shaking() { + return true; + } + + //开始加热 + public boolean startHeating(int heaterId) { + return true; + } + + //停止加热 + public boolean stopHeating(int heaterId) { + return true; + } + + //拍照 + public boolean takePhoto() { + return true; + } + + //移至异常 + public boolean moveToExc() { + return true; + } + + //移除异常 + public boolean moveOutToExc() { + return true; + } + + /** + * 等待 + * + * @param millis 毫秒 + */ + private boolean delay(int millis) { + try { + Thread.sleep(millis); + return true; + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + return false; + } + +} diff --git a/src/main/java/com/qyft/gd/model/bo/AddLiquid.java b/src/main/java/com/qyft/gd/model/bo/AddLiquid.java new file mode 100644 index 0000000..f8890ac --- /dev/null +++ b/src/main/java/com/qyft/gd/model/bo/AddLiquid.java @@ -0,0 +1,16 @@ +package com.qyft.gd.model.bo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 添加溶液 + */ +@Schema(description = "添加溶液") +@Data +public class AddLiquid { + @Schema(description = "泵id") + private Long pumpId; + @Schema(description = "加液量") + private Integer volume; +} diff --git a/src/main/java/com/qyft/gd/service/CMDService.java b/src/main/java/com/qyft/gd/service/CMDService.java index 895558e..ccd66d1 100644 --- a/src/main/java/com/qyft/gd/service/CMDService.java +++ b/src/main/java/com/qyft/gd/service/CMDService.java @@ -156,7 +156,7 @@ public class CMDService { // TODO 溶液id 容量 Map params = cmdForm.getParams(); cmdList.add(() -> deviceService.moveLiquidArmToPoint(1,2,3)); - cmdList.add(() -> deviceService.addLiquid((String) params.get("pumpId"), ((Integer)params.get("volume")))); + cmdList.add(() -> deviceService.addLiquid((Long) params.get("pumpId"), ((Integer)params.get("volume")))); initExecutorThread(cmdList, cmdForm); return true; } diff --git a/src/main/java/com/qyft/gd/service/CraftsStepService.java b/src/main/java/com/qyft/gd/service/CraftsStepService.java index 2b5b2f8..b56f2ce 100644 --- a/src/main/java/com/qyft/gd/service/CraftsStepService.java +++ b/src/main/java/com/qyft/gd/service/CraftsStepService.java @@ -1,6 +1,5 @@ package com.qyft.gd.service; -import com.qyft.gd.device.service.DeviceService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -10,14 +9,12 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; /** - * 设备步骤操作 + * 工艺操作 */ @Service @RequiredArgsConstructor public class CraftsStepService { - private final DeviceService deviceService; - private final ExecutorService executorService = Executors.newCachedThreadPool(); private final ConcurrentHashMap> taskMap = new ConcurrentHashMap<>(); @@ -71,74 +68,4 @@ public class CraftsStepService { } } - - //抬起托盘 - public void upTray(int heaterId) { - deviceService.raiseTray("11"); - } - - //降下托盘 - public void downTray(int heaterId) { - deviceService.lowerTray("11"); - } - - //添加溶液(先固定16个试管全进行加液) - public void addLiquid() { - - } - - //移至加液 - public void moveToSol() { - - } - - //移至加热 - public void moveToHeater(int heaterId) { - - } - - //摇匀 - public void shaking() { - - } - - //开始加热 - public void startHeating(int heaterId) { - - } - - //停止加热 - public void stopHeating(int heaterId) { - - } - - //拍照 - public void takePhoto() { - - } - - //移至异常 - public void moveToExc() { - - } - - //移除异常 - public void moveOutToExc() { - - } - - /** - * 等待 - * - * @param millis 毫秒 - */ - private boolean delay(int millis) { - try { - Thread.sleep(millis); - return true; - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - return false; - } }