|
|
@@ -49,7 +49,6 @@ import org.jetlinks.core.message.Message;
|
|
|
import org.jetlinks.core.message.MessageType;
|
|
|
import org.jetlinks.core.message.RepayableDeviceMessage;
|
|
|
import org.jetlinks.core.metadata.*;
|
|
|
-import org.jetlinks.core.metadata.types.GeoType;
|
|
|
import org.springframework.core.io.buffer.DataBufferFactory;
|
|
|
import org.springframework.core.io.buffer.DefaultDataBufferFactory;
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
@@ -812,24 +811,13 @@ public class DeviceInstanceController implements
|
|
|
public Mono<Void> updateMetadata(@PathVariable String id,
|
|
|
@RequestBody Mono<String> metadata) {
|
|
|
return metadata
|
|
|
- .doOnNext(metadata_ -> service
|
|
|
+ .flatMap(metadata_ -> service
|
|
|
.createUpdate()
|
|
|
.set(DeviceInstanceEntity::getDeriveMetadata, metadata_)
|
|
|
.where(DeviceInstanceEntity::getId, id)
|
|
|
.execute()
|
|
|
.then(registry.getDevice(id))
|
|
|
- .doOnNext(device -> device.updateMetadata(metadata_))
|
|
|
- .flatMap(DeviceOperator::getMetadata)
|
|
|
- .doOnNext(metadataMono -> {
|
|
|
- //查看是否存在地理位置
|
|
|
- List<PropertyMetadata> properties = metadataMono.getProperties();
|
|
|
- List<PropertyMetadata> tags = metadataMono.getTags();
|
|
|
- //属性中存在地理位置
|
|
|
- Set<PropertyMetadata> proCollection =
|
|
|
- properties.stream().filter(propertyMetadata -> propertyMetadata.getValueType().getType().equals(GeoType.ID)).collect(Collectors.toSet());
|
|
|
- //标签中存在地理位置
|
|
|
- Set<PropertyMetadata> tagCollection = tags.stream().filter(propertyMetadata -> propertyMetadata.getValueType().getType().equals(GeoType.ID)).collect(Collectors.toSet());
|
|
|
- }))
|
|
|
+ .flatMap(device -> device.updateMetadata(metadata_)))
|
|
|
.then();
|
|
|
}
|
|
|
|