Browse Source

fix:补全设备操作方法

master
白凤吉 5 months ago
parent
commit
eebdfab6ea
  1. 9
      sql/demo.sql
  2. 3
      src/main/java/com/qyft/gd/device/model/entity/CtrlFuncStep.java
  3. 3
      src/main/java/com/qyft/gd/device/model/form/CtrlFuncForm.java
  4. 77
      src/main/java/com/qyft/gd/device/service/DeviceCtrlService.java
  5. 33
      src/main/java/com/qyft/gd/device/service/DeviceTcpCMDService.java
  6. 7
      src/main/java/com/qyft/gd/device/service/impl/CtrlFuncServiceImpl.java

9
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);

3
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;

3
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<String, Object> params;

77
src/main/java/com/qyft/gd/device/service/DeviceCtrlService.java

@ -136,6 +136,83 @@ public class DeviceCtrlService {
}
/**
* 指定加热区密封拍子
*/
public boolean sealLidOn(Map<String, Object> 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<String, Object> 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<String, Object> params) {
try {
return deviceTcpCMDService.capHeightUp();
} catch (Exception e) {
log.info("拍子存放区高度向上一个级别,执行异常", e);
return false;
}
}
/**
* 拍子存放区高度向下移动一个级别
*/
public boolean capHeightDown(Map<String, Object> params) {
try {
return deviceTcpCMDService.capHeightDown();
} catch (Exception e) {
log.info("拍子存放区高度向下移动一个级别,执行异常", e);
return false;
}
}
/**
* 导轨机械臂移至拍子存放区上方
*/
public boolean moveToCapArea(Map<String, Object> 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目标温度

33
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<String, Object> 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

7
src/main/java/com/qyft/gd/device/service/impl/CtrlFuncServiceImpl.java

@ -34,8 +34,13 @@ public class CtrlFuncServiceImpl extends ServiceImpl<CtrlFuncMapper, CtrlFunc> 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<CtrlFuncMapper, CtrlFunc> 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<CtrlFuncMapper, CtrlFunc> 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();

Loading…
Cancel
Save