This commit is contained in:
2026-06-05 14:45:00 +08:00
parent a3edf3275d
commit 665e3f3632
3 changed files with 29 additions and 55 deletions

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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<NettyDevice> list = sessionManager.getSlaveControl(slaveId);
// if (!CollectionUtils.isEmpty(list)) {
// dto.setOwner(list.get(0).getConnectorId());
// }
// }
// } else {
// dto.setRemoteControl(false);
// dto.setReason("no control");
// List<NettyDevice> list = sessionManager.getSlaveControl(slaveId);
// if (!CollectionUtils.isEmpty(list)) {
// dto.setOwner(list.get(0).getConnectorId());
// }
// }
// } else {
// dto.setRemoteControl(false);
// dto.setReason("not active");
// List<NettyDevice> list = sessionManager.getSlaveControl(slaveId);
// if (!CollectionUtils.isEmpty(list)) {
// dto.setOwner(list.get(0).getConnectorId());
// }
// }
// } else {
// dto.setRemoteControl(false);
// dto.setReason("not exist");
// List<NettyDevice> 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);