Fix refEntity import-export
This commit is contained in:
parent
44a7bf82c4
commit
4daf4ba988
@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.cf.CalculatedField;
|
import org.thingsboard.server.common.data.cf.CalculatedField;
|
||||||
import org.thingsboard.server.common.data.id.CalculatedFieldId;
|
import org.thingsboard.server.common.data.id.CalculatedFieldId;
|
||||||
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
|
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
|
||||||
import org.thingsboard.server.queue.util.TbCoreComponent;
|
import org.thingsboard.server.queue.util.TbCoreComponent;
|
||||||
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
|
import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx;
|
||||||
@ -32,6 +33,12 @@ public class CalculatedFieldExportService extends BaseEntityExportService<Calcul
|
|||||||
@Override
|
@Override
|
||||||
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, CalculatedField calculatedField, EntityExportData<CalculatedField> exportData) {
|
protected void setRelatedEntities(EntitiesExportCtx<?> ctx, CalculatedField calculatedField, EntityExportData<CalculatedField> exportData) {
|
||||||
calculatedField.setEntityId(getExternalIdOrElseInternal(ctx, calculatedField.getEntityId()));
|
calculatedField.setEntityId(getExternalIdOrElseInternal(ctx, calculatedField.getEntityId()));
|
||||||
|
calculatedField.getConfiguration().getArguments().values().forEach(argument -> {
|
||||||
|
if (argument.getRefEntityId() != null) {
|
||||||
|
EntityId internalEntityId = getExternalIdOrElseInternal(ctx, argument.getRefEntityId());
|
||||||
|
argument.setRefEntityId(internalEntityId);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import org.thingsboard.server.common.data.audit.ActionType;
|
|||||||
import org.thingsboard.server.common.data.cf.CalculatedField;
|
import org.thingsboard.server.common.data.cf.CalculatedField;
|
||||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
||||||
import org.thingsboard.server.common.data.id.CalculatedFieldId;
|
import org.thingsboard.server.common.data.id.CalculatedFieldId;
|
||||||
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
|
import org.thingsboard.server.common.data.sync.ie.EntityExportData;
|
||||||
import org.thingsboard.server.dao.cf.CalculatedFieldService;
|
import org.thingsboard.server.dao.cf.CalculatedFieldService;
|
||||||
@ -45,6 +46,12 @@ public class CalculatedFieldImportService extends BaseEntityImportService<Calcul
|
|||||||
@Override
|
@Override
|
||||||
protected CalculatedField prepare(EntitiesImportCtx ctx, CalculatedField calculatedField, CalculatedField oldEntity, EntityExportData<CalculatedField> exportData, IdProvider idProvider) {
|
protected CalculatedField prepare(EntitiesImportCtx ctx, CalculatedField calculatedField, CalculatedField oldEntity, EntityExportData<CalculatedField> exportData, IdProvider idProvider) {
|
||||||
calculatedField.setEntityId(idProvider.getInternalId(calculatedField.getEntityId()));
|
calculatedField.setEntityId(idProvider.getInternalId(calculatedField.getEntityId()));
|
||||||
|
calculatedField.getConfiguration().getArguments().values().forEach(argument -> {
|
||||||
|
if (argument.getRefEntityId() != null) {
|
||||||
|
EntityId internalEntityId = idProvider.getInternalId(argument.getRefEntityId());
|
||||||
|
argument.setRefEntityId(internalEntityId);
|
||||||
|
}
|
||||||
|
});
|
||||||
return calculatedField;
|
return calculatedField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -204,7 +204,7 @@ public class ExportImportServiceSqlTest extends AbstractControllerTest {
|
|||||||
Asset asset = createAsset(tenantId1, null, assetProfile.getId(), "Asset 1");
|
Asset asset = createAsset(tenantId1, null, assetProfile.getId(), "Asset 1");
|
||||||
DeviceProfile deviceProfile = createDeviceProfile(tenantId1, ruleChain.getId(), dashboard.getId(), "Device profile 1");
|
DeviceProfile deviceProfile = createDeviceProfile(tenantId1, ruleChain.getId(), dashboard.getId(), "Device profile 1");
|
||||||
Device device = createDevice(tenantId1, null, deviceProfile.getId(), "Device 1");
|
Device device = createDevice(tenantId1, null, deviceProfile.getId(), "Device 1");
|
||||||
CalculatedField calculatedField = createCalculatedField(tenantId1, device.getId(), device.getId());
|
CalculatedField calculatedField = createCalculatedField(tenantId1, device.getId(), asset.getId());
|
||||||
|
|
||||||
Map<EntityType, EntityExportData> entitiesExportData = Stream.of(customer.getId(), asset.getId(), device.getId(),
|
Map<EntityType, EntityExportData> entitiesExportData = Stream.of(customer.getId(), asset.getId(), device.getId(),
|
||||||
ruleChain.getId(), dashboard.getId(), assetProfile.getId(), deviceProfile.getId(), calculatedField.getId())
|
ruleChain.getId(), dashboard.getId(), assetProfile.getId(), deviceProfile.getId(), calculatedField.getId())
|
||||||
@ -364,6 +364,7 @@ public class ExportImportServiceSqlTest extends AbstractControllerTest {
|
|||||||
CalculatedField exportedCalculatedField = (CalculatedField) exportEntity(tenantAdmin2, (CalculatedFieldId) ids.get(calculatedField.getId())).getEntity();
|
CalculatedField exportedCalculatedField = (CalculatedField) exportEntity(tenantAdmin2, (CalculatedFieldId) ids.get(calculatedField.getId())).getEntity();
|
||||||
assertThat(exportedCalculatedField.getName()).isEqualTo(calculatedField.getName());
|
assertThat(exportedCalculatedField.getName()).isEqualTo(calculatedField.getName());
|
||||||
assertThat(exportedCalculatedField.getEntityId()).isEqualTo(device.getId());
|
assertThat(exportedCalculatedField.getEntityId()).isEqualTo(device.getId());
|
||||||
|
assertThat(exportedCalculatedField.getConfiguration().getReferencedEntities()).isEqualTo(calculatedField.getConfiguration().getReferencedEntities());
|
||||||
|
|
||||||
deviceProfile.setDefaultDashboardId(null);
|
deviceProfile.setDefaultDashboardId(null);
|
||||||
deviceProfileService.saveDeviceProfile(deviceProfile);
|
deviceProfileService.saveDeviceProfile(deviceProfile);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user