优化自状态管理

This commit is contained in:
zhou-hao 2021-05-24 15:53:27 +08:00
parent f6cbc93baa
commit 4c53c2cd80
1 changed files with 16 additions and 2 deletions

View File

@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository;
import org.jetlinks.community.device.enums.DeviceFeature;
import org.jetlinks.core.device.DeviceConfigKey;
import org.jetlinks.core.device.DeviceOperator;
import org.jetlinks.core.device.DeviceRegistry;
@ -16,6 +17,7 @@ import org.jetlinks.community.device.entity.DeviceInstanceEntity;
import org.jetlinks.community.device.entity.DeviceTagEntity;
import org.jetlinks.community.device.enums.DeviceState;
import org.jetlinks.community.gateway.annotation.Subscribe;
import org.jetlinks.reactor.ql.utils.CastUtils;
import org.jetlinks.supports.official.JetLinksDeviceMetadataCodec;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
@ -73,12 +75,24 @@ public class DeviceMessageBusinessHandler {
instance.setCreateTimeNow();
instance.setCreatorId(tps.getT4().getCreatorId());
instance.setOrgId(tps.getT4().getOrgId());
instance.setState(DeviceState.online);
@SuppressWarnings("all")
boolean selfManageState = CastUtils
.castBoolean(tps.getT5().getOrDefault(DeviceConfigKey.selfManageState.getKey(), false));
if (selfManageState) {
instance.addFeature(DeviceFeature.selfManageState);
}
instance.setState(selfManageState ? DeviceState.offline : DeviceState.online);
return deviceService
.save(Mono.just(instance))
.thenReturn(instance)
.flatMap(device -> registry
.register(device.toDeviceInfo().addConfig("state", DeviceState.online)));
.register(device.toDeviceInfo()
.addConfig("state", selfManageState
? org.jetlinks.core.device.DeviceState.offline
: org.jetlinks.core.device.DeviceState.online)));
});
}