diff --git a/sql/demo.sql b/sql/demo.sql index 4c0b971..25e0ee8 100644 --- a/sql/demo.sql +++ b/sql/demo.sql @@ -222,11 +222,12 @@ CREATE TABLE ctrl_func_step id INTEGER PRIMARY KEY AUTOINCREMENT, func_cmd TEXT NOT NULL, device_cmd TEXT NOT NULL, + remarks TEXT, params TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -INSERT INTO ctrl_func_step (func_cmd, device_cmd, params) -VALUES ('openDoor', 'openDoor', null), - ('openDoor', 'openDoor', null), - ('openDoor', 'openDoor', null); +INSERT INTO ctrl_func_step (func_cmd, device_cmd, remarks, params) +VALUES ('openDoor', 'openDoor', null, null), + ('openDoor', 'openDoor', null, null), + ('openDoor', 'openDoor', null, null); diff --git a/src/main/java/com/qyft/gd/device/model/entity/CtrlFuncStep.java b/src/main/java/com/qyft/gd/device/model/entity/CtrlFuncStep.java index b83f858..dd4a120 100644 --- a/src/main/java/com/qyft/gd/device/model/entity/CtrlFuncStep.java +++ b/src/main/java/com/qyft/gd/device/model/entity/CtrlFuncStep.java @@ -18,6 +18,9 @@ public class CtrlFuncStep extends BaseEntity { @Schema(description = "设备指令") private String deviceCmd; + @Schema(description = "备注说明") + private String remarks; + @Schema(description = "设备指令的参数,为null则动态传入") private String params; diff --git a/src/main/java/com/qyft/gd/device/model/form/CtrlFuncForm.java b/src/main/java/com/qyft/gd/device/model/form/CtrlFuncForm.java index 88e7ff6..78da948 100644 --- a/src/main/java/com/qyft/gd/device/model/form/CtrlFuncForm.java +++ b/src/main/java/com/qyft/gd/device/model/form/CtrlFuncForm.java @@ -27,6 +27,9 @@ public class CtrlFuncForm { @Schema(description = "设备指令") private String deviceCmd; + @Schema(description = "备注说明") + private String remarks; + @Schema(description = "设备指令的参数,为null则动态传入") private Map params; diff --git a/src/main/java/com/qyft/gd/device/service/DeviceCtrlService.java b/src/main/java/com/qyft/gd/device/service/DeviceCtrlService.java index a97c095..ea8c7eb 100644 --- a/src/main/java/com/qyft/gd/device/service/DeviceCtrlService.java +++ b/src/main/java/com/qyft/gd/device/service/DeviceCtrlService.java @@ -136,6 +136,83 @@ public class DeviceCtrlService { } /** + * 指定加热区密封拍子 + */ + public boolean sealLidOn(Map params) { + try { + Integer heatId = (Integer) params.get("heatId"); + String hardwareId = baseDataService.getHeatAreaHardwareIdById(heatId); + if (hardwareId == null) { + log.info("指定加热区密封拍子,传入参数错误:{}", JSONUtil.toJsonStr(params)); + return false; + } + return deviceTcpCMDService.setSealLid(hardwareId, true); + } catch (Exception e) { + log.info("指定加热区密封拍子,执行异常", e); + return false; + } + } + + /** + * 指定加热区解除密封拍子 + */ + public boolean sealLidOff(Map params) { + try { + Integer heatId = (Integer) params.get("heatId"); + String hardwareId = baseDataService.getHeatAreaHardwareIdById(heatId); + if (hardwareId == null) { + log.info("指定加热区解除密封拍子,传入参数错误:{}", JSONUtil.toJsonStr(params)); + return false; + } + return deviceTcpCMDService.setSealLid(hardwareId, false); + } catch (Exception e) { + log.info("指定加热区解除密封拍子,执行异常", e); + return false; + } + } + + /** + * 拍子存放区高度向上一个级别 + */ + public boolean capHeightUp(Map params) { + try { + return deviceTcpCMDService.capHeightUp(); + } catch (Exception e) { + log.info("拍子存放区高度向上一个级别,执行异常", e); + return false; + } + } + + /** + * 拍子存放区高度向下移动一个级别 + */ + public boolean capHeightDown(Map params) { + try { + return deviceTcpCMDService.capHeightDown(); + } catch (Exception e) { + log.info("拍子存放区高度向下移动一个级别,执行异常", e); + return false; + } + } + + /** + * 导轨机械臂移至拍子存放区上方 + */ + public boolean moveToCapArea(Map params) { + try { + String capAreaPosition = baseDataService.getLidPosition(); + String[] capAreaPositionArr = capAreaPosition.split(","); + int x = Integer.parseInt(capAreaPositionArr[0]); + int y = Integer.parseInt(capAreaPositionArr[1]); + int z = Integer.parseInt(capAreaPositionArr[2]); + return deviceTcpCMDService.moveRailArmToPoint(x, y, z); + } catch (Exception e) { + log.info("导轨机械臂移至拍子存放区上方,执行异常,传入参数:{}", JSONUtil.toJsonStr(params), e); + return false; + } + } + + /** * 指定加热区开始加热 * * @param params heatId加热区id,temperature目标温度 diff --git a/src/main/java/com/qyft/gd/device/service/DeviceTcpCMDService.java b/src/main/java/com/qyft/gd/device/service/DeviceTcpCMDService.java index da96798..5330c46 100644 --- a/src/main/java/com/qyft/gd/device/service/DeviceTcpCMDService.java +++ b/src/main/java/com/qyft/gd/device/service/DeviceTcpCMDService.java @@ -272,16 +272,11 @@ public class DeviceTcpCMDService { * @param hardwareId 加热器id * @param on true 密封, false 解除密封 */ - public synchronized boolean setSealLid(int hardwareId, boolean on) { + public synchronized boolean setSealLid(String hardwareId, boolean on) { Map params = new HashMap<>(); params.put("hardwareId", hardwareId); params.put("on", on); - DeviceFeedback deviceFeedback = tcpClient.sendCommand(DeviceCommands.SET_SEAL_LID, params); - if (deviceFeedback == null || deviceFeedback.getError() != null) { - log.error("TCP setSealLid 指令执行错误 {}", JSONUtil.toJsonStr(deviceFeedback)); - return false; - } - return true; + return this.putTask(DeviceCommands.SET_SEAL_LID, params); } @@ -428,6 +423,30 @@ public class DeviceTcpCMDService { } /** + * 拍子存放区高度向上一个级别 + */ + public synchronized boolean capHeightUp() { + DeviceFeedback deviceFeedback = tcpClient.sendCommand(DeviceCommands.SET_CAP_HEIGHT); + if (deviceFeedback == null || deviceFeedback.getError() != null) { + log.error("TCP capHeightUp 指令执行错误 {}", JSONUtil.toJsonStr(deviceFeedback)); + return false; + } + return true; + } + + /** + * 拍子存放区高度向下移动一个级别 + */ + public synchronized boolean capHeightDown() { + DeviceFeedback deviceFeedback = tcpClient.sendCommand(DeviceCommands.SET_CAP_HEIGHT); + if (deviceFeedback == null || deviceFeedback.getError() != null) { + log.error("TCP capHeightDown 指令执行错误 {}", JSONUtil.toJsonStr(deviceFeedback)); + return false; + } + return true; + } + + /** * 调整拍子存放区高度 * * @param level 高度等级 0-6 diff --git a/src/main/java/com/qyft/gd/device/service/impl/CtrlFuncServiceImpl.java b/src/main/java/com/qyft/gd/device/service/impl/CtrlFuncServiceImpl.java index 893714c..69e3a33 100644 --- a/src/main/java/com/qyft/gd/device/service/impl/CtrlFuncServiceImpl.java +++ b/src/main/java/com/qyft/gd/device/service/impl/CtrlFuncServiceImpl.java @@ -34,8 +34,13 @@ public class CtrlFuncServiceImpl extends ServiceImpl i ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("导轨机械臂相对运动", "moveRailArmRelative", "{\"x\":0,\"y\":0,\"z\":0}")); ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("导轨机械臂移至指定加热区上方", "moveToHeatArea", "{\"heatId\":2}")); ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("导轨机械臂移至加液区上方", "moveToActionArea", "{}")); + ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("导轨机械臂移至拍子存放区上方", "moveToCapArea", "{}")); ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("打开导轨机械臂夹爪", "openClaw", "{}")); ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("收合导轨机械臂夹爪", "closeClaw", "{}")); + ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("指定加热区密封拍子", "sealLidOn", "{\"heatId\":2}")); + ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("指定加热区解除密封拍子", "sealLidOff", "{\"heatId\":2}")); + ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("拍子存放区高度向上一个级别", "capHeightUp", "{}")); + ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("拍子存放区高度向下移动一个级别", "capHeightDown", "{}")); ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("指定加热区开始加热", "startHeating", "{\"heatId\":2}")); ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("指定加热区停止加热", "stopHeating", "{\"heatId\":2}")); ctrlFuncDeviceCMDList.add(new DeviceCtrlFuncCMD("指定加热区抬起托盘", "raiseTray", "{\"heatId\":2}")); @@ -64,6 +69,7 @@ public class CtrlFuncServiceImpl extends ServiceImpl i ctrlFuncVO.setId(ctrlFunc.getId()); ctrlFuncVO.setName(ctrlFunc.getName()); ctrlFuncVO.setFuncCmd(ctrlFunc.getFuncCmd()); + ctrlFuncVO.setFuncCmd(ctrlFunc.getFuncCmd()); ctrlFuncVO.setCtrlFuncStepList(ctrlFuncStepList); return ctrlFuncVO; } @@ -117,6 +123,7 @@ public class CtrlFuncServiceImpl extends ServiceImpl i CtrlFuncStep ctrlFuncStep = new CtrlFuncStep(); ctrlFuncStep.setFuncCmd(ctrlFunc.getFuncCmd()); ctrlFuncStep.setDeviceCmd(ctrlFuncStepForm.getDeviceCmd()); + ctrlFuncStep.setRemarks(ctrlFuncStepForm.getRemarks()); ctrlFuncStep.setParams(JSONUtil.toJsonStr(ctrlFuncStepForm.getParams())); return ctrlFuncStep; }).toList();