修改遥控遥调操作的api接口

This commit is contained in:
houwei 2024-10-24 13:45:18 +08:00
parent a4e52d6742
commit 357a053b4d
6 changed files with 130 additions and 16 deletions

View File

@ -232,10 +232,22 @@ public class SysNodeController {
return R.success("导入失败"); return R.success("导入失败");
} }
/** 遥控遥调 */ /**
@PostMapping("/link/deviceControl") * 设备遥控操作
public void deviceControl(@RequestBody DeviceControlDto device) { * @param deviceInfo 遥控信息
sysNodeService.deviceControl(device); */
@PostMapping("/link/command")
public void deviceCommand(@RequestBody DeviceCommandDto deviceInfo) {
sysNodeService.deviceCommand(deviceInfo);
}
/**
* 设备遥调操作
* @param deviceInfo 遥控信息
*/
@PostMapping("/link/setPoint")
public void deviceSetPoint(@RequestBody DeviceSetPointDto deviceInfo) {
sysNodeService.deviceSetPoint(deviceInfo);
} }
} }

View File

@ -4,17 +4,23 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data; import lombok.Data;
/**
* 设备控制 输入参数
*/
@Data @Data
public class DeviceControlDto { public class DeviceCommandDto {
/**
* 设备ID
@JsonSerialize(using = ToStringSerializer.class) */
private Long nodeId;
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long deviceId; private Long deviceId;
/**
* 遥控命令
*/
private String serviceName; private String serviceName;
/**
*遥控值, 1或者0
*/
private Integer opValue; private Integer opValue;
} }

View File

@ -0,0 +1,23 @@
package com.das.modules.node.domain.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
@Data
public class DeviceSetPointDto {
/**
* 设备ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long deviceId;
/**
* 遥调命令
*/
private String serviceName;
/**
*遥调值,浮点数
*/
private Float opValue;
}

View File

@ -43,5 +43,15 @@ public interface SysNodeService {
boolean importMappingList(String linkId, MultipartFile file); boolean importMappingList(String linkId, MultipartFile file);
void deviceControl(DeviceControlDto device); /**
* 设备遥控操作
* @param deviceInfo 遥控具体的设备信息设备id遥控命令遥控值
*/
void deviceCommand(DeviceCommandDto deviceInfo);
/**
* 设备遥调操作
* @param deviceInfo 遥调具体的设备信息设备id遥调命令遥调值
*/
void deviceSetPoint(DeviceSetPointDto deviceInfo);
} }

View File

@ -334,7 +334,7 @@ public class SysNodeServiceImpl implements SysNodeService {
} }
@Override @Override
public void deviceControl(DeviceControlDto device) { public void deviceCommand(DeviceCommandDto device) {
try { try {
HashMap map = new HashMap<>(); HashMap map = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
@ -345,6 +345,12 @@ public class SysNodeServiceImpl implements SysNodeService {
map.put("serviceName", device.getServiceName()); map.put("serviceName", device.getServiceName());
map.put("opValue", device.getOpValue()); map.put("opValue", device.getOpValue());
//激活的node节点Id
long activeNodeId = getActiveNodeId();
if(activeNodeId==0){
throw new RuntimeException("找不到激活的节点信息");
}
// HashMap 转换为 JsonNode // HashMap 转换为 JsonNode
ObjectNode jsonNode = objectMapper.convertValue(map, ObjectNode.class); ObjectNode jsonNode = objectMapper.convertValue(map, ObjectNode.class);
TerminalMessage configUpdate = TerminalMessage.builder() TerminalMessage configUpdate = TerminalMessage.builder()
@ -353,13 +359,58 @@ public class SysNodeServiceImpl implements SysNodeService {
.time(time) .time(time)
.data(jsonNode) .data(jsonNode)
.build(); .build();
terminalMessageEventHandler.sendTerminalMessageWithResult(device.getNodeId(), configUpdate); terminalMessageEventHandler.sendTerminalMessageWithResult(activeNodeId, configUpdate);
} catch (Exception e) {
log.error("设备控制失败 ", e);
}
}
@Override
public void deviceSetPoint(DeviceSetPointDto device) {
try {
HashMap map = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
String cmd = NodeConstant.DEVICE_CONTROL;
Long time = System.currentTimeMillis();
map.put("deviceId", device.getDeviceId());
map.put("serviceName", device.getServiceName());
map.put("opValue", device.getOpValue());
//激活的node节点Id
long activeNodeId = getActiveNodeId();
if(activeNodeId==0){
throw new RuntimeException("找不到激活的节点信息");
}
// HashMap 转换为 JsonNode
ObjectNode jsonNode = objectMapper.convertValue(map, ObjectNode.class);
TerminalMessage configUpdate = TerminalMessage.builder()
.cmd(cmd)
.cmdId(String.valueOf(device.getDeviceId()))
.time(time)
.data(jsonNode)
.build();
terminalMessageEventHandler.sendTerminalMessageWithResult(activeNodeId, configUpdate);
} catch (Exception e) { } catch (Exception e) {
log.error("设备控制失败 ", e); log.error("设备控制失败 ", e);
} }
} }
/**
* 获得当前激活的节点id
* @return 节点id
*/
private long getActiveNodeId(){
List<SysNodeVo> list = sysNodeMapper.querySysNodeList();
if(list.isEmpty()){
return 0;
}else{
return list.get(0).getId();
}
}
// 绑定设备的测点信息不是绑定设备到映射表 // 绑定设备的测点信息不是绑定设备到映射表
private void addSysImptabmapping(List<BindEquipmentInfoDto> equipmentId, Long linkId, SysUserVo sysUserVo, List<SysImptabmapping> addList) { private void addSysImptabmapping(List<BindEquipmentInfoDto> equipmentId, Long linkId, SysUserVo sysUserVo, List<SysImptabmapping> addList) {

View File

@ -1,17 +1,29 @@
package com.das.modules.page.controller; package com.das.modules.page.controller;
import com.das.common.result.R;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* @author houwei * @author houwei
* @date 2024-10-24 * @date 2024-10-24
* @description: 风机列表页面 对应的 后端api * @description: 风机列表页面 对应的 后端api
*/ */
@Slf4j @Slf4j
@RequestMapping("/api/page") @RequestMapping("/api/page/turbines")
@RestController @RestController
public class WindTurbinesPageController { public class WindTurbinesPageController {
/**
* 获取风机机组所属线路列表
* @return 返回字符串数组
*/
@PostMapping("/lines")
public R<List<String>> queryBelongLines() {
//TODO: 查询sql: select distinct belong_line as name from sys_equipment t where t.object_type = 10002 and belong_line !='';
return R.success();
}
} }