diff --git a/maibu-common/src/main/java/com/maibu/core/business/device/NettyDevice.java b/maibu-common/src/main/java/com/maibu/core/business/device/NettyDevice.java index b8384b5..21c1625 100644 --- a/maibu-common/src/main/java/com/maibu/core/business/device/NettyDevice.java +++ b/maibu-common/src/main/java/com/maibu/core/business/device/NettyDevice.java @@ -2,6 +2,7 @@ package com.maibu.core.business.device; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.maibu.core.business.DevicePlanTask; import com.maibu.core.business.DeviceRunStatistics; import com.maibu.core.business.PlanPath; @@ -48,8 +49,10 @@ public class NettyDevice extends Connector { private boolean executingTask = false; + @JsonIgnore private DevicePlanTaskMapper devicePlanTaskMapper = SpringUtils.getBean(DevicePlanTaskMapper.class); + @JsonIgnore private WorkRecordMapper workRecordMapper = SpringUtils.getBean(WorkRecordMapper.class); public NettyDevice(String connectorId) { diff --git a/maibu-netty-server/src/main/java/com/maibu/manager/DeviceSessionManager.java b/maibu-netty-server/src/main/java/com/maibu/manager/DeviceSessionManager.java index f127045..8ad22cb 100644 --- a/maibu-netty-server/src/main/java/com/maibu/manager/DeviceSessionManager.java +++ b/maibu-netty-server/src/main/java/com/maibu/manager/DeviceSessionManager.java @@ -129,6 +129,14 @@ public class DeviceSessionManager { .collect(Collectors.toList()); } + public NettyDevice getCurrentControl(String slaveId) { + // 获取所有连接的主机 不区分状态 + return deviceMap.values().stream() + .filter(device -> ObjectUtil.equals(device.getCurrentSlaveId(), slaveId) + && ConnectorStatus.ACTIVE.equals(device.getConnectorStatus())) + .findFirst().orElse(null); + } + /// 模糊匹配 public NettyDevice getUserControl(String userName) { diff --git a/maibu-netty-server/src/main/java/com/maibu/service/TransferDeviceService.java b/maibu-netty-server/src/main/java/com/maibu/service/TransferDeviceService.java index 07cd185..2967922 100644 --- a/maibu-netty-server/src/main/java/com/maibu/service/TransferDeviceService.java +++ b/maibu-netty-server/src/main/java/com/maibu/service/TransferDeviceService.java @@ -217,70 +217,33 @@ public class TransferDeviceService { return false; } -// public DeviceControlDTO remoteControl(DeviceBindDTO bindDTO, LoginUser user) { -// try { -// String slaveId = bindDTO.getDeviceId(); -// String platform = bindDTO.getPlatform(); -// String userName = user.getUsername(); -// String masterId = userName + ":" + platform; -// DeviceControlDTO dto = new DeviceControlDTO(); -// NettyDevice deviceMaster = sessionManager.getDevice(masterId); -// log.info("remoteControl deviceMaster:{}", masterId); -// if (deviceMaster != null) { -// if (ConnectorStatus.ACTIVE.equals(deviceMaster.getConnectorStatus())) { -// if (!StringUtils.isEmpty(deviceMaster.getCurrentSlaveId())) { -// if (deviceMaster.getCurrentSlaveId().equalsIgnoreCase(slaveId)) { -// dto.setRemoteControl(true); -// dto.setOwner(platform); -// } else { -// dto.setRemoteControl(false); -// dto.setReason("occupied"); -// List list = sessionManager.getSlaveControl(slaveId); -// if (!CollectionUtils.isEmpty(list)) { -// dto.setOwner(list.get(0).getConnectorId()); -// } -// } -// } else { -// dto.setRemoteControl(false); -// dto.setReason("no control"); -// List list = sessionManager.getSlaveControl(slaveId); -// if (!CollectionUtils.isEmpty(list)) { -// dto.setOwner(list.get(0).getConnectorId()); -// } -// } -// } else { -// dto.setRemoteControl(false); -// dto.setReason("not active"); -// List list = sessionManager.getSlaveControl(slaveId); -// if (!CollectionUtils.isEmpty(list)) { -// dto.setOwner(list.get(0).getConnectorId()); -// } -// } -// } else { -// dto.setRemoteControl(false); -// dto.setReason("not exist"); -// List list = sessionManager.getSlaveControl(slaveId); -// if (!CollectionUtils.isEmpty(list)) { -// dto.setOwner(list.get(0).getConnectorId()); -// } -// } -// return dto; -// } catch (Exception e) { -// log.error(e.getMessage()); -// } -// return null; -// } - public DeviceControlDTO remoteControl(DeviceBindDTO bindDTO, LoginUser user) { try { -// String slaveId = bindDTO.getDeviceId(); + String slaveId = bindDTO.getDeviceId(); String platform = bindDTO.getPlatform(); String userName = user.getUsername(); String masterId = userName + ":" + platform; DeviceControlDTO dto = new DeviceControlDTO(); NettyDevice deviceMaster = sessionManager.getDevice(masterId); log.info("remoteControl deviceMaster:{}", masterId); + +// //TODO 拓展当前控制不是同一个账号 +// NettyDevice currentDevice = sessionManager.getCurrentControl(slaveId); +// if(currentDevice != null){ +// if(currentDevice.getConnectorId().equals(masterId)){ +// dto.setRemoteControl(true); +// dto.setOwner(platform); +// }else{ +// dto.setRemoteControl(false); +// dto.setOwner(currentDevice.getConnectorId()); +// } +// }else{ +// dto.setRemoteControl(false); +// dto.setOwner(null); +// dto.setReason("occupied"); +// } + if (deviceMaster != null) { if (ConnectorStatus.ACTIVE.equals(deviceMaster.getConnectorStatus())) { dto.setRemoteControl(true);