added previousCalculatedFields property to delete requests

This commit is contained in:
IrynaMatveieva 2025-02-27 16:55:33 +02:00
parent 729d8c0a78
commit b2c58a519c
9 changed files with 61 additions and 9 deletions

View File

@ -156,6 +156,8 @@ public class SystemInfoController extends BaseController {
if (debugModeRateLimitsConfig.isCalculatedFieldDebugPerTenantLimitsEnabled()) { if (debugModeRateLimitsConfig.isCalculatedFieldDebugPerTenantLimitsEnabled()) {
systemParams.setCalculatedFieldDebugPerTenantLimitsConfiguration(debugModeRateLimitsConfig.getCalculatedFieldDebugPerTenantLimitsConfiguration()); systemParams.setCalculatedFieldDebugPerTenantLimitsConfiguration(debugModeRateLimitsConfig.getCalculatedFieldDebugPerTenantLimitsConfiguration());
} }
systemParams.setMaxArgumentsPerCF(tenantProfileConfiguration.getMaxArgumentsPerCF());
systemParams.setMaxDataPointsPerRollingArg(tenantProfileConfiguration.getMaxDataPointsPerRollingArg());
} }
systemParams.setMobileQrEnabled(Optional.ofNullable(qrCodeSettingService.findQrCodeSettings(TenantId.SYS_TENANT_ID)) systemParams.setMobileQrEnabled(Optional.ofNullable(qrCodeSettingService.findQrCodeSettings(TenantId.SYS_TENANT_ID))
.map(QrCodeSettings::getQrCodeConfig).map(QRCodeConfig::isShowOnHomePage) .map(QrCodeSettings::getQrCodeConfig).map(QRCodeConfig::isShowOnHomePage)

View File

@ -50,7 +50,6 @@ import org.thingsboard.server.service.cf.ctx.state.CalculatedFieldCtx;
import org.thingsboard.server.service.profile.TbAssetProfileCache; import org.thingsboard.server.service.profile.TbAssetProfileCache;
import org.thingsboard.server.service.profile.TbDeviceProfileCache; import org.thingsboard.server.service.profile.TbDeviceProfileCache;
import java.util.ArrayList;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -195,7 +194,7 @@ public class DefaultCalculatedFieldQueueService implements CalculatedFieldQueueS
} }
private ToCalculatedFieldMsg toCalculatedFieldTelemetryMsgProto(AttributesDeleteRequest request, List<String> removedKeys) { private ToCalculatedFieldMsg toCalculatedFieldTelemetryMsgProto(AttributesDeleteRequest request, List<String> removedKeys) {
CalculatedFieldTelemetryMsgProto telemetryMsg = buildTelemetryMsgProto(request.getTenantId(), request.getEntityId(), new ArrayList<>(), request.getTbMsgId(), request.getTbMsgType()) CalculatedFieldTelemetryMsgProto telemetryMsg = buildTelemetryMsgProto(request.getTenantId(), request.getEntityId(), request.getPreviousCalculatedFieldIds(), request.getTbMsgId(), request.getTbMsgType())
.setScope(AttributeScopeProto.valueOf(request.getScope().name())) .setScope(AttributeScopeProto.valueOf(request.getScope().name()))
.addAllRemovedAttrKeys(removedKeys).build(); .addAllRemovedAttrKeys(removedKeys).build();
return ToCalculatedFieldMsg.newBuilder() return ToCalculatedFieldMsg.newBuilder()
@ -204,7 +203,7 @@ public class DefaultCalculatedFieldQueueService implements CalculatedFieldQueueS
} }
private ToCalculatedFieldMsg toCalculatedFieldTelemetryMsgProto(TimeseriesDeleteRequest request, List<String> removedKeys) { private ToCalculatedFieldMsg toCalculatedFieldTelemetryMsgProto(TimeseriesDeleteRequest request, List<String> removedKeys) {
CalculatedFieldTelemetryMsgProto telemetryMsg = buildTelemetryMsgProto(request.getTenantId(), request.getEntityId(), new ArrayList<>(), request.getTbMsgId(), request.getTbMsgType()) CalculatedFieldTelemetryMsgProto telemetryMsg = buildTelemetryMsgProto(request.getTenantId(), request.getEntityId(), request.getPreviousCalculatedFieldIds(), request.getTbMsgId(), request.getTbMsgType())
.addAllRemovedTsKeys(removedKeys).build(); .addAllRemovedTsKeys(removedKeys).build();
return ToCalculatedFieldMsg.newBuilder() return ToCalculatedFieldMsg.newBuilder()
.setTelemetryMsg(telemetryMsg) .setTelemetryMsg(telemetryMsg)

View File

@ -35,4 +35,6 @@ public class SystemParams {
int maxDebugModeDurationMinutes; int maxDebugModeDurationMinutes;
String ruleChainDebugPerTenantLimitsConfiguration; String ruleChainDebugPerTenantLimitsConfiguration;
String calculatedFieldDebugPerTenantLimitsConfiguration; String calculatedFieldDebugPerTenantLimitsConfiguration;
long maxArgumentsPerCF;
long maxDataPointsPerRollingArg;
} }

View File

@ -22,6 +22,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; import lombok.ToString;
import org.thingsboard.server.common.data.AttributeScope; import org.thingsboard.server.common.data.AttributeScope;
import org.thingsboard.server.common.data.id.CalculatedFieldId;
import org.thingsboard.server.common.data.id.EntityId; 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.msg.TbMsgType; import org.thingsboard.server.common.data.msg.TbMsgType;
@ -32,13 +33,14 @@ import java.util.UUID;
@Getter @Getter
@ToString @ToString
@AllArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor(access = AccessLevel.PRIVATE)
public class AttributesDeleteRequest { public class AttributesDeleteRequest implements CalculatedFieldSystemAwareRequest {
private final TenantId tenantId; private final TenantId tenantId;
private final EntityId entityId; private final EntityId entityId;
private final AttributeScope scope; private final AttributeScope scope;
private final List<String> keys; private final List<String> keys;
private final boolean notifyDevice; private final boolean notifyDevice;
private final List<CalculatedFieldId> previousCalculatedFieldIds;
private final UUID tbMsgId; private final UUID tbMsgId;
private final TbMsgType tbMsgType; private final TbMsgType tbMsgType;
private final FutureCallback<Void> callback; private final FutureCallback<Void> callback;
@ -54,6 +56,7 @@ public class AttributesDeleteRequest {
private AttributeScope scope; private AttributeScope scope;
private List<String> keys; private List<String> keys;
private boolean notifyDevice; private boolean notifyDevice;
private List<CalculatedFieldId> previousCalculatedFieldIds;
private UUID tbMsgId; private UUID tbMsgId;
private TbMsgType tbMsgType; private TbMsgType tbMsgType;
private FutureCallback<Void> callback; private FutureCallback<Void> callback;
@ -96,6 +99,11 @@ public class AttributesDeleteRequest {
return this; return this;
} }
public Builder previousCalculatedFieldIds(List<CalculatedFieldId> previousCalculatedFieldIds) {
this.previousCalculatedFieldIds = previousCalculatedFieldIds;
return this;
}
public Builder tbMsgId(UUID tbMsgId) { public Builder tbMsgId(UUID tbMsgId) {
this.tbMsgId = tbMsgId; this.tbMsgId = tbMsgId;
return this; return this;
@ -126,7 +134,7 @@ public class AttributesDeleteRequest {
} }
public AttributesDeleteRequest build() { public AttributesDeleteRequest build() {
return new AttributesDeleteRequest(tenantId, entityId, scope, keys, notifyDevice, tbMsgId, tbMsgType, callback); return new AttributesDeleteRequest(tenantId, entityId, scope, keys, notifyDevice, previousCalculatedFieldIds, tbMsgId, tbMsgType, callback);
} }
} }

View File

@ -36,7 +36,7 @@ import java.util.UUID;
@Getter @Getter
@ToString @ToString
@AllArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor(access = AccessLevel.PRIVATE)
public class AttributesSaveRequest { public class AttributesSaveRequest implements CalculatedFieldSystemAwareRequest {
private final TenantId tenantId; private final TenantId tenantId;
private final EntityId entityId; private final EntityId entityId;

View File

@ -0,0 +1,32 @@
/**
* Copyright © 2016-2025 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.rule.engine.api;
import org.thingsboard.server.common.data.id.CalculatedFieldId;
import org.thingsboard.server.common.data.msg.TbMsgType;
import java.util.List;
import java.util.UUID;
public interface CalculatedFieldSystemAwareRequest {
List<CalculatedFieldId> getPreviousCalculatedFieldIds();
UUID getTbMsgId();
TbMsgType getTbMsgType();
}

View File

@ -20,6 +20,7 @@ import lombok.AccessLevel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; import lombok.ToString;
import org.thingsboard.server.common.data.id.CalculatedFieldId;
import org.thingsboard.server.common.data.id.EntityId; 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.kv.DeleteTsKvQuery; import org.thingsboard.server.common.data.kv.DeleteTsKvQuery;
@ -31,12 +32,13 @@ import java.util.UUID;
@Getter @Getter
@ToString @ToString
@AllArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor(access = AccessLevel.PRIVATE)
public class TimeseriesDeleteRequest { public class TimeseriesDeleteRequest implements CalculatedFieldSystemAwareRequest {
private final TenantId tenantId; private final TenantId tenantId;
private final EntityId entityId; private final EntityId entityId;
private final List<String> keys; private final List<String> keys;
private final List<DeleteTsKvQuery> deleteHistoryQueries; private final List<DeleteTsKvQuery> deleteHistoryQueries;
private final List<CalculatedFieldId> previousCalculatedFieldIds;
private final UUID tbMsgId; private final UUID tbMsgId;
private final TbMsgType tbMsgType; private final TbMsgType tbMsgType;
private final FutureCallback<List<String>> callback; private final FutureCallback<List<String>> callback;
@ -51,6 +53,7 @@ public class TimeseriesDeleteRequest {
private EntityId entityId; private EntityId entityId;
private List<String> keys; private List<String> keys;
private List<DeleteTsKvQuery> deleteHistoryQueries; private List<DeleteTsKvQuery> deleteHistoryQueries;
private List<CalculatedFieldId> previousCalculatedFieldIds;
private UUID tbMsgId; private UUID tbMsgId;
private TbMsgType tbMsgType; private TbMsgType tbMsgType;
private FutureCallback<List<String>> callback; private FutureCallback<List<String>> callback;
@ -78,6 +81,11 @@ public class TimeseriesDeleteRequest {
return this; return this;
} }
public Builder previousCalculatedFieldIds(List<CalculatedFieldId> previousCalculatedFieldIds) {
this.previousCalculatedFieldIds = previousCalculatedFieldIds;
return this;
}
public Builder tbMsgId(UUID tbMsgId) { public Builder tbMsgId(UUID tbMsgId) {
this.tbMsgId = tbMsgId; this.tbMsgId = tbMsgId;
return this; return this;
@ -94,7 +102,7 @@ public class TimeseriesDeleteRequest {
} }
public TimeseriesDeleteRequest build() { public TimeseriesDeleteRequest build() {
return new TimeseriesDeleteRequest(tenantId, entityId, keys, deleteHistoryQueries, tbMsgId, tbMsgType, callback); return new TimeseriesDeleteRequest(tenantId, entityId, keys, deleteHistoryQueries, previousCalculatedFieldIds, tbMsgId, tbMsgType, callback);
} }
} }

View File

@ -37,7 +37,7 @@ import static java.util.Objects.requireNonNullElse;
@Getter @Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor(access = AccessLevel.PRIVATE)
public class TimeseriesSaveRequest { public class TimeseriesSaveRequest implements CalculatedFieldSystemAwareRequest {
private final TenantId tenantId; private final TenantId tenantId;
private final CustomerId customerId; private final CustomerId customerId;

View File

@ -76,6 +76,7 @@ public class TbMsgDeleteAttributesNode implements TbNode {
.scope(scope) .scope(scope)
.keys(keysToDelete) .keys(keysToDelete)
.notifyDevice(checkNotifyDevice(msg.getMetaData().getValue(NOTIFY_DEVICE_METADATA_KEY), scope)) .notifyDevice(checkNotifyDevice(msg.getMetaData().getValue(NOTIFY_DEVICE_METADATA_KEY), scope))
.previousCalculatedFieldIds(msg.getPreviousCalculatedFieldIds())
.tbMsgId(msg.getId()) .tbMsgId(msg.getId())
.tbMsgType(msg.getInternalType()) .tbMsgType(msg.getInternalType())
.callback(config.isSendAttributesDeletedNotification() ? .callback(config.isSendAttributesDeletedNotification() ?