diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java index e553a3f39..3faddc697 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java @@ -312,24 +312,52 @@ public class EqDeviceController extends BaseController { DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentName);//无信息会抛异常 无需判断 if (deviceByNameDto==null) throw new RuntimeException("设备不存在"); String equipmentCode = deviceByNameDto.getId().getId(); - //设备查询 + //查询设备信息 EqEquipmentBo eqEquipmentBo = new EqEquipmentBo(); eqEquipmentBo.setEquipmentCode(equipmentCode); List eqEquipmentVos = eqEquipmentService.queryList(eqEquipmentBo); if (CollectionUtils.isEmpty(eqEquipmentVos)) return; EqEquipmentVo eqEquipmentVo = eqEquipmentVos.get(0); + + Long userId = eqEquipmentVo.getUserId(); + //设备详情查询 EqAppHomeBo bo = new EqAppHomeBo(); bo.setEquipmentId(eqEquipmentVo.getEquipmentId()); bo.setEquipmentCode(eqEquipmentVo.getEquipmentCode()); EqEquipmentDetailVo deviceMsg = eqEquipmentService.getDeviceMsg(bo); - Long userId = eqEquipmentVo.getUserId(); + //设备列表 + EqEquipmentBo eqEquipmentBo2 = new EqEquipmentBo(); + eqEquipmentBo2.setUserId(userId); + List list2 = eqEquipmentService.queryList(eqEquipmentBo2); + eqEquipmentService.initEqEquipmentVo(list2); + + + //查看设备被分享者 + EqShareBo shareBo = new EqShareBo(); + shareBo.setShareUserId(userId); + List eqShareVos = shareService.queryList(shareBo); + List userIds = new ArrayList<>(); + userIds.add(userId); + if (CollUtil.isNotEmpty(eqShareVos)){ + for (EqShareVo eqShareVo : eqShareVos) { + userIds.add(eqShareVo.getSharedUserId()); + } + } + //数据结构 + Map result = new HashMap<>(); + result.put("detail", deviceMsg); + result.put("list", list2); + + //推送消息 scheduledExecutorService.schedule(() -> { WebSocketMessageDto dto = new WebSocketMessageDto(); - dto.setMessage(JSONObject.toJSONString(deviceMsg)); - dto.setSessionKeys(List.of(userId)); + dto.setMessage(JSONObject.toJSONString(result)); +// dto.setSessionKeys(List.of(userId)); + dto.setSessionKeys(userIds); WebSocketUtils.publishMessage(dto); }, 3, TimeUnit.SECONDS); + } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java index 07c4c2371..dfbbd19d6 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java @@ -34,6 +34,9 @@ public interface IEqEquipmentService { */ TableDataInfo queryPageList(EqEquipmentBo bo, PageQuery pageQuery,boolean shared,List equipmentIdIds); + + void initEqEquipmentVo(List records); + /** * 查询符合条件的设备信息列表 * diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java index cf7971a72..0a5e5491b 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java @@ -75,7 +75,12 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { List records = result.getRecords(); if (CollUtil.isEmpty(records)) return TableDataInfo.build(result); //获取遥测数据 + initEqEquipmentVo(records); + return TableDataInfo.build(result); + } + @Override + public void initEqEquipmentVo(List records) { for (EqEquipmentVo record : records) { String equipmentCode = record.getEquipmentCode(); if (record.getLineStatus() == 1){//在线更新数据 @@ -107,7 +112,6 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { // 离线不需要调用接口 也不更新状态 在线离线状态要在事件触发的时候更新 否则性能很差 } } - return TableDataInfo.build(result); } /**