添加设备列表socket推送

This commit is contained in:
zzc 2024-11-13 01:30:24 +08:00
parent 6b1e076f25
commit 7420a2040e
3 changed files with 40 additions and 5 deletions

View File

@ -312,24 +312,52 @@ public class EqDeviceController extends BaseController {
DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentName);//无信息会抛异常 无需判断 DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentName);//无信息会抛异常 无需判断
if (deviceByNameDto==null) throw new RuntimeException("设备不存在"); if (deviceByNameDto==null) throw new RuntimeException("设备不存在");
String equipmentCode = deviceByNameDto.getId().getId(); String equipmentCode = deviceByNameDto.getId().getId();
//设备查询 //查询设备信息
EqEquipmentBo eqEquipmentBo = new EqEquipmentBo(); EqEquipmentBo eqEquipmentBo = new EqEquipmentBo();
eqEquipmentBo.setEquipmentCode(equipmentCode); eqEquipmentBo.setEquipmentCode(equipmentCode);
List<EqEquipmentVo> eqEquipmentVos = eqEquipmentService.queryList(eqEquipmentBo); List<EqEquipmentVo> eqEquipmentVos = eqEquipmentService.queryList(eqEquipmentBo);
if (CollectionUtils.isEmpty(eqEquipmentVos)) return; if (CollectionUtils.isEmpty(eqEquipmentVos)) return;
EqEquipmentVo eqEquipmentVo = eqEquipmentVos.get(0); EqEquipmentVo eqEquipmentVo = eqEquipmentVos.get(0);
Long userId = eqEquipmentVo.getUserId();
//设备详情查询
EqAppHomeBo bo = new EqAppHomeBo(); EqAppHomeBo bo = new EqAppHomeBo();
bo.setEquipmentId(eqEquipmentVo.getEquipmentId()); bo.setEquipmentId(eqEquipmentVo.getEquipmentId());
bo.setEquipmentCode(eqEquipmentVo.getEquipmentCode()); bo.setEquipmentCode(eqEquipmentVo.getEquipmentCode());
EqEquipmentDetailVo deviceMsg = eqEquipmentService.getDeviceMsg(bo); EqEquipmentDetailVo deviceMsg = eqEquipmentService.getDeviceMsg(bo);
Long userId = eqEquipmentVo.getUserId(); //设备列表
EqEquipmentBo eqEquipmentBo2 = new EqEquipmentBo();
eqEquipmentBo2.setUserId(userId);
List<EqEquipmentVo> list2 = eqEquipmentService.queryList(eqEquipmentBo2);
eqEquipmentService.initEqEquipmentVo(list2);
//查看设备被分享者
EqShareBo shareBo = new EqShareBo();
shareBo.setShareUserId(userId);
List<EqShareVo> eqShareVos = shareService.queryList(shareBo);
List<Long> userIds = new ArrayList<>();
userIds.add(userId);
if (CollUtil.isNotEmpty(eqShareVos)){
for (EqShareVo eqShareVo : eqShareVos) {
userIds.add(eqShareVo.getSharedUserId());
}
}
//数据结构
Map<String, Object> result = new HashMap<>();
result.put("detail", deviceMsg);
result.put("list", list2);
//推送消息
scheduledExecutorService.schedule(() -> { scheduledExecutorService.schedule(() -> {
WebSocketMessageDto dto = new WebSocketMessageDto(); WebSocketMessageDto dto = new WebSocketMessageDto();
dto.setMessage(JSONObject.toJSONString(deviceMsg)); dto.setMessage(JSONObject.toJSONString(result));
dto.setSessionKeys(List.of(userId)); // dto.setSessionKeys(List.of(userId));
dto.setSessionKeys(userIds);
WebSocketUtils.publishMessage(dto); WebSocketUtils.publishMessage(dto);
}, 3, TimeUnit.SECONDS); }, 3, TimeUnit.SECONDS);
} }
} }

View File

@ -34,6 +34,9 @@ public interface IEqEquipmentService {
*/ */
TableDataInfo<EqEquipmentVo> queryPageList(EqEquipmentBo bo, PageQuery pageQuery,boolean shared,List<Long> equipmentIdIds); TableDataInfo<EqEquipmentVo> queryPageList(EqEquipmentBo bo, PageQuery pageQuery,boolean shared,List<Long> equipmentIdIds);
void initEqEquipmentVo(List<EqEquipmentVo> records);
/** /**
* 查询符合条件的设备信息列表 * 查询符合条件的设备信息列表
* *

View File

@ -75,7 +75,12 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService {
List<EqEquipmentVo> records = result.getRecords(); List<EqEquipmentVo> records = result.getRecords();
if (CollUtil.isEmpty(records)) return TableDataInfo.build(result); if (CollUtil.isEmpty(records)) return TableDataInfo.build(result);
//获取遥测数据 //获取遥测数据
initEqEquipmentVo(records);
return TableDataInfo.build(result);
}
@Override
public void initEqEquipmentVo(List<EqEquipmentVo> records) {
for (EqEquipmentVo record : records) { for (EqEquipmentVo record : records) {
String equipmentCode = record.getEquipmentCode(); String equipmentCode = record.getEquipmentCode();
if (record.getLineStatus() == 1){//在线更新数据 if (record.getLineStatus() == 1){//在线更新数据
@ -107,7 +112,6 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService {
// 离线不需要调用接口 也不更新状态 在线离线状态要在事件触发的时候更新 否则性能很差 // 离线不需要调用接口 也不更新状态 在线离线状态要在事件触发的时候更新 否则性能很差
} }
} }
return TableDataInfo.build(result);
} }
/** /**