|
|
@@ -1,7 +1,6 @@
|
|
|
package org.jetlinks.community.device.service;
|
|
|
|
|
|
-import cn.hutool.core.collection.CollectionUtil;
|
|
|
-import cn.hutool.json.JSONUtil;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
@@ -17,35 +16,27 @@ import org.jetlinks.community.device.enums.DeviceFeature;
|
|
|
import org.jetlinks.community.device.enums.DeviceState;
|
|
|
import org.jetlinks.community.device.response.DeviceDeployResult;
|
|
|
import org.jetlinks.community.device.response.DeviceDetail;
|
|
|
-import org.jetlinks.community.device.service.data.DeviceDataService;
|
|
|
-import org.jetlinks.community.gateway.annotation.Subscribe;
|
|
|
+import org.jetlinks.community.device.session.MockSession;
|
|
|
import org.jetlinks.community.utils.ErrorUtils;
|
|
|
import org.jetlinks.core.device.DeviceConfigKey;
|
|
|
import org.jetlinks.core.device.DeviceOperator;
|
|
|
import org.jetlinks.core.device.DeviceRegistry;
|
|
|
import org.jetlinks.core.enums.ErrorCode;
|
|
|
import org.jetlinks.core.event.EventBus;
|
|
|
-import org.jetlinks.core.event.Subscription;
|
|
|
import org.jetlinks.core.exception.DeviceOperationException;
|
|
|
-import org.jetlinks.core.message.DeviceMessage;
|
|
|
import org.jetlinks.core.message.DeviceMessageReply;
|
|
|
import org.jetlinks.core.message.FunctionInvokeMessageSender;
|
|
|
import org.jetlinks.core.message.WritePropertyMessageSender;
|
|
|
-import org.jetlinks.core.message.event.EventMessage;
|
|
|
+import org.jetlinks.core.message.codec.DefaultTransport;
|
|
|
import org.jetlinks.core.message.function.FunctionInvokeMessageReply;
|
|
|
import org.jetlinks.core.message.property.ReadPropertyMessageReply;
|
|
|
-import org.jetlinks.core.message.property.ReportPropertyMessage;
|
|
|
import org.jetlinks.core.message.property.WritePropertyMessageReply;
|
|
|
import org.jetlinks.core.metadata.*;
|
|
|
-import org.jetlinks.core.metadata.types.GeoType;
|
|
|
import org.jetlinks.core.metadata.types.StringType;
|
|
|
+import org.jetlinks.core.server.session.DeviceSessionManager;
|
|
|
import org.jetlinks.supports.official.JetLinksDeviceMetadataCodec;
|
|
|
import org.reactivestreams.Publisher;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Propagation;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
import reactor.core.publisher.Flux;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
import reactor.core.scheduler.Schedulers;
|
|
|
@@ -59,6 +50,7 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
+@AllArgsConstructor
|
|
|
public class LocalDeviceInstanceService extends GenericReactiveCrudService<DeviceInstanceEntity, String> {
|
|
|
|
|
|
private final DeviceRegistry registry;
|
|
|
@@ -71,18 +63,9 @@ public class LocalDeviceInstanceService extends GenericReactiveCrudService<Devic
|
|
|
private final ReactiveRepository<DeviceTagEntity, String> tagRepository;
|
|
|
|
|
|
private final DeviceMetadataCodec metadataCodec=new JetLinksDeviceMetadataCodec();
|
|
|
- @Autowired
|
|
|
- private LocalDeviceInstanceService instanceService;
|
|
|
-
|
|
|
- public LocalDeviceInstanceService(DeviceRegistry registry,
|
|
|
- LocalDeviceProductService deviceProductService,
|
|
|
- DeviceConfigMetadataManager metadataManager,
|
|
|
- ReactiveRepository<DeviceTagEntity, String> tagRepository) {
|
|
|
- this.registry = registry;
|
|
|
- this.deviceProductService = deviceProductService;
|
|
|
- this.metadataManager = metadataManager;
|
|
|
- this.tagRepository = tagRepository;
|
|
|
- }
|
|
|
+
|
|
|
+ private final DeviceSessionManager deviceSessionManager;
|
|
|
+
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -477,4 +460,14 @@ public class LocalDeviceInstanceService extends GenericReactiveCrudService<Devic
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public Mono<Void> startMock(String deviceId){
|
|
|
+ return registry.getDevice(deviceId)
|
|
|
+ .switchIfEmpty(ErrorUtils.notFound("设备不存在"))
|
|
|
+ .doOnNext(operator -> {
|
|
|
+ MockSession mockSession = new MockSession(deviceId,operator, DefaultTransport.INNER,eventBus);
|
|
|
+ deviceSessionManager.register(mockSession);
|
|
|
+ })
|
|
|
+ .then();
|
|
|
+ }
|
|
|
+
|
|
|
}
|