|
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.dji.sample.common.error.CommonErrorEnum;
|
|
import com.dji.sample.common.error.CommonErrorEnum;
|
|
|
|
|
+import com.dji.sample.common.model.CustomClaim;
|
|
|
import com.dji.sample.component.mqtt.model.EventsReceiver;
|
|
import com.dji.sample.component.mqtt.model.EventsReceiver;
|
|
|
import com.dji.sample.component.websocket.model.BizCodeEnum;
|
|
import com.dji.sample.component.websocket.model.BizCodeEnum;
|
|
|
import com.dji.sample.component.websocket.service.IWebSocketMessageService;
|
|
import com.dji.sample.component.websocket.service.IWebSocketMessageService;
|
|
@@ -12,6 +13,7 @@ import com.dji.sample.manage.dao.IDeviceMapper;
|
|
|
import com.dji.sample.manage.model.dto.*;
|
|
import com.dji.sample.manage.model.dto.*;
|
|
|
import com.dji.sample.manage.model.entity.DeviceEntity;
|
|
import com.dji.sample.manage.model.entity.DeviceEntity;
|
|
|
import com.dji.sample.manage.model.enums.DeviceFirmwareStatusEnum;
|
|
import com.dji.sample.manage.model.enums.DeviceFirmwareStatusEnum;
|
|
|
|
|
+import com.dji.sample.manage.model.enums.LogOprTypeEnum;
|
|
|
import com.dji.sample.manage.model.enums.PropertySetFieldEnum;
|
|
import com.dji.sample.manage.model.enums.PropertySetFieldEnum;
|
|
|
import com.dji.sample.manage.model.enums.UserTypeEnum;
|
|
import com.dji.sample.manage.model.enums.UserTypeEnum;
|
|
|
import com.dji.sample.manage.model.param.DeviceQueryParam;
|
|
import com.dji.sample.manage.model.param.DeviceQueryParam;
|
|
@@ -127,7 +129,10 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
private AbstractFirmwareService abstractFirmwareService;
|
|
private AbstractFirmwareService abstractFirmwareService;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
- private IUserService userService;
|
|
|
|
|
|
|
+ private IDeviceOprLogsService deviceOprLogsService;
|
|
|
|
|
+
|
|
|
|
|
+// @Autowired
|
|
|
|
|
+// private IUserService userService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void subDeviceOffline(String deviceSn) {
|
|
public void subDeviceOffline(String deviceSn) {
|
|
@@ -452,9 +457,9 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//更新登录用户绑定项目工作空间
|
|
//更新登录用户绑定项目工作空间
|
|
|
- if(StringUtils.hasText(device.getUserId())) {
|
|
|
|
|
- userService.updateUserWorkspace(device.getWorkspaceId(), device.getUserId());
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// if(StringUtils.hasText(device.getUserId())) {
|
|
|
|
|
+// userService.updateUserWorkspace(device.getWorkspaceId(), device.getUserId());
|
|
|
|
|
+// }
|
|
|
|
|
|
|
|
DeviceDTO redisDevice = deviceOpt.get();
|
|
DeviceDTO redisDevice = deviceOpt.get();
|
|
|
redisDevice.setWorkspaceId(device.getWorkspaceId());
|
|
redisDevice.setWorkspaceId(device.getWorkspaceId());
|
|
@@ -471,9 +476,14 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
|
|
|
|
|
pushDeviceOnlineTopo(device.getWorkspaceId(), gatewaySn, deviceSn);
|
|
pushDeviceOnlineTopo(device.getWorkspaceId(), gatewaySn, deviceSn);
|
|
|
subDeviceOnlineSubscribeTopic(SDKManager.getDeviceSDK(gatewaySn));
|
|
subDeviceOnlineSubscribeTopic(SDKManager.getDeviceSDK(gatewaySn));
|
|
|
|
|
+
|
|
|
|
|
+ //添加绑定日志
|
|
|
|
|
+ deviceOprLogsService.addDeviceOprLogsDTO(redisDevice,LogOprTypeEnum.BIND);
|
|
|
|
|
+
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public PaginationData<DeviceDTO> getBoundDevicesWithDomain(String workspaceId, Long page,
|
|
public PaginationData<DeviceDTO> getBoundDevicesWithDomain(String workspaceId, Long page,
|
|
|
Long pageSize, Integer domain) {
|
|
Long pageSize, Integer domain) {
|
|
@@ -486,30 +496,46 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
List<DeviceDTO> devicesList = pagination.getRecords().stream().map(this::deviceEntityConvertToDTO)
|
|
List<DeviceDTO> devicesList = pagination.getRecords().stream().map(this::deviceEntityConvertToDTO)
|
|
|
.peek(device -> {
|
|
.peek(device -> {
|
|
|
device.setStatus(deviceRedisService.checkDeviceOnline(device.getDeviceSn()));
|
|
device.setStatus(deviceRedisService.checkDeviceOnline(device.getDeviceSn()));
|
|
|
- if (StringUtils.hasText(device.getChildDeviceSn())) {
|
|
|
|
|
- Optional<DeviceDTO> childOpt = this.getDeviceBySn(device.getChildDeviceSn());
|
|
|
|
|
- childOpt.ifPresent(child -> {
|
|
|
|
|
- child.setStatus(deviceRedisService.checkDeviceOnline(child.getDeviceSn()));
|
|
|
|
|
- child.setWorkspaceName(device.getWorkspaceName());
|
|
|
|
|
- device.setChildren(child);
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- //遥控器作为child
|
|
|
|
|
- if(DeviceDomainEnum.DRONE == device.getDomain()) {
|
|
|
|
|
- Optional<DeviceDTO> childOpt = getDevice(device.getWorkspaceId(), DeviceDomainEnum.REMOTER_CONTROL.getDomain(), device.getDeviceSn());
|
|
|
|
|
- childOpt.ifPresent(child -> {
|
|
|
|
|
- child.setWorkspaceName(device.getWorkspaceName());
|
|
|
|
|
- device.setChildren(child);
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ setChild(device);
|
|
|
})
|
|
})
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
return new PaginationData<DeviceDTO>(devicesList, new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));
|
|
return new PaginationData<DeviceDTO>(devicesList, new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public DeviceDTO setChild(DeviceDTO device) {
|
|
|
|
|
+ if (StringUtils.hasText(device.getChildDeviceSn())) {
|
|
|
|
|
+ Optional<DeviceDTO> childOpt = getDeviceBySn(device.getChildDeviceSn());
|
|
|
|
|
+ childOpt.ifPresent(child -> {
|
|
|
|
|
+ child.setStatus(deviceRedisService.checkDeviceOnline(child.getDeviceSn()));
|
|
|
|
|
+ child.setWorkspaceName(device.getWorkspaceName());
|
|
|
|
|
+ device.setChildren(child);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ //遥控器作为child
|
|
|
|
|
+ if(DeviceDomainEnum.DRONE == device.getDomain()) {
|
|
|
|
|
+ Optional<DeviceDTO> childOpt = getDevice(device.getWorkspaceId(), DeviceDomainEnum.REMOTER_CONTROL.getDomain(), device.getDeviceSn());
|
|
|
|
|
+ childOpt.ifPresent(child -> {
|
|
|
|
|
+ child.setWorkspaceName(device.getWorkspaceName());
|
|
|
|
|
+ device.setChildren(child);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return device;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void unbindDevice(String deviceSn) {
|
|
public void unbindDevice(String deviceSn) {
|
|
|
|
|
+ unbind(deviceSn,null);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void unbindDevice(String deviceSn, CustomClaim customClaim) {
|
|
|
|
|
+ unbind(deviceSn,customClaim);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void unbind(String deviceSn, CustomClaim customClaim) {
|
|
|
Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(deviceSn);
|
|
Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(deviceSn);
|
|
|
if (deviceOpt.isPresent()) {
|
|
if (deviceOpt.isPresent()) {
|
|
|
subDeviceOffline(deviceSn);
|
|
subDeviceOffline(deviceSn);
|
|
@@ -526,6 +552,10 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
.boundStatus(false)
|
|
.boundStatus(false)
|
|
|
.build();
|
|
.build();
|
|
|
this.updateDevice(device);
|
|
this.updateDevice(device);
|
|
|
|
|
+ //添加解绑日志
|
|
|
|
|
+ if(StringUtils.hasText(deviceOpt.get().getWorkspaceId()) ) {
|
|
|
|
|
+ deviceOprLogsService.addDeviceOprLogsDTO(deviceOpt.get(), LogOprTypeEnum.UNBIND, customClaim);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -539,7 +569,8 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
return Optional.of(device);
|
|
return Optional.of(device);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private Optional<DeviceDTO> getDevice(String workspaceId, Integer domain, String childSn) {
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Optional<DeviceDTO> getDevice(String workspaceId, Integer domain, String childSn) {
|
|
|
List<Integer> domainList = new ArrayList<>();
|
|
List<Integer> domainList = new ArrayList<>();
|
|
|
domainList.add(domain);
|
|
domainList.add(domain);
|
|
|
List<DeviceDTO> devicesList = this.getDevicesByParams(DeviceQueryParam.builder().workspaceId(workspaceId).childSn(childSn).domains(domainList).build());
|
|
List<DeviceDTO> devicesList = this.getDevicesByParams(DeviceQueryParam.builder().workspaceId(workspaceId).childSn(childSn).domains(domainList).build());
|