Added USER as originator for 'customer details' rule node
This commit is contained in:
parent
3255eb9027
commit
f9d1e34798
@ -83,11 +83,8 @@ public abstract class TbAbstractGetEntityDetailsNode<C extends TbAbstractGetEnti
|
|||||||
|
|
||||||
protected ListenableFuture<TbMsg> getTbMsgListenableFuture(TbContext ctx, TbMsg msg, MessageData messageData, String prefix) {
|
protected ListenableFuture<TbMsg> getTbMsgListenableFuture(TbContext ctx, TbMsg msg, MessageData messageData, String prefix) {
|
||||||
if (!this.config.getDetailsList().isEmpty()) {
|
if (!this.config.getDetailsList().isEmpty()) {
|
||||||
ListenableFuture<JsonElement> resultObject = null;
|
|
||||||
ListenableFuture<ContactBased> contactBasedListenableFuture = getContactBasedListenableFuture(ctx, msg);
|
ListenableFuture<ContactBased> contactBasedListenableFuture = getContactBasedListenableFuture(ctx, msg);
|
||||||
for (EntityDetails entityDetails : this.config.getDetailsList()) {
|
ListenableFuture<JsonElement> resultObject = addContactProperties(messageData.getData(), contactBasedListenableFuture, prefix);
|
||||||
resultObject = addContactProperties(messageData.getData(), contactBasedListenableFuture, entityDetails, prefix);
|
|
||||||
}
|
|
||||||
return transformMsg(ctx, msg, resultObject, messageData);
|
return transformMsg(ctx, msg, resultObject, messageData);
|
||||||
} else {
|
} else {
|
||||||
return Futures.immediateFuture(msg);
|
return Futures.immediateFuture(msg);
|
||||||
@ -109,10 +106,14 @@ public abstract class TbAbstractGetEntityDetailsNode<C extends TbAbstractGetEnti
|
|||||||
}, MoreExecutors.directExecutor());
|
}, MoreExecutors.directExecutor());
|
||||||
}
|
}
|
||||||
|
|
||||||
private ListenableFuture<JsonElement> addContactProperties(JsonElement data, ListenableFuture<ContactBased> entityFuture, EntityDetails entityDetails, String prefix) {
|
private ListenableFuture<JsonElement> addContactProperties(JsonElement data, ListenableFuture<ContactBased> entityFuture, String prefix) {
|
||||||
return Futures.transformAsync(entityFuture, contactBased -> {
|
return Futures.transformAsync(entityFuture, contactBased -> {
|
||||||
if (contactBased != null) {
|
if (contactBased != null) {
|
||||||
return Futures.immediateFuture(setProperties(contactBased, data, entityDetails, prefix));
|
JsonElement jsonElement = null;
|
||||||
|
for (EntityDetails entityDetails : this.config.getDetailsList()) {
|
||||||
|
jsonElement = setProperties(contactBased, data, entityDetails, prefix);
|
||||||
|
}
|
||||||
|
return Futures.immediateFuture(jsonElement);
|
||||||
} else {
|
} else {
|
||||||
return Futures.immediateFuture(null);
|
return Futures.immediateFuture(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,8 +27,10 @@ import org.thingsboard.rule.engine.api.util.TbNodeUtils;
|
|||||||
import org.thingsboard.server.common.data.ContactBased;
|
import org.thingsboard.server.common.data.ContactBased;
|
||||||
import org.thingsboard.server.common.data.Customer;
|
import org.thingsboard.server.common.data.Customer;
|
||||||
import org.thingsboard.server.common.data.id.AssetId;
|
import org.thingsboard.server.common.data.id.AssetId;
|
||||||
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
import org.thingsboard.server.common.data.id.DeviceId;
|
import org.thingsboard.server.common.data.id.DeviceId;
|
||||||
import org.thingsboard.server.common.data.id.EntityViewId;
|
import org.thingsboard.server.common.data.id.EntityViewId;
|
||||||
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.plugin.ComponentType;
|
import org.thingsboard.server.common.data.plugin.ComponentType;
|
||||||
import org.thingsboard.server.common.msg.TbMsg;
|
import org.thingsboard.server.common.msg.TbMsg;
|
||||||
|
|
||||||
@ -105,6 +107,18 @@ public class TbGetCustomerDetailsNode extends TbAbstractGetEntityDetailsNode<TbG
|
|||||||
return Futures.immediateFuture(null);
|
return Futures.immediateFuture(null);
|
||||||
}
|
}
|
||||||
}, MoreExecutors.directExecutor());
|
}, MoreExecutors.directExecutor());
|
||||||
|
case USER:
|
||||||
|
return Futures.transformAsync(ctx.getUserService().findUserByIdAsync(ctx.getTenantId(), new UserId(msg.getOriginator().getId())), user -> {
|
||||||
|
if (user != null) {
|
||||||
|
if (!user.getCustomerId().isNullUid()) {
|
||||||
|
return ctx.getCustomerService().findCustomerByIdAsync(ctx.getTenantId(), user.getCustomerId());
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("User with name '" + user.getName() + "' is not assigned to Customer.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return Futures.immediateFuture(null);
|
||||||
|
}
|
||||||
|
}, MoreExecutors.directExecutor());
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Entity with entityType '" + msg.getOriginator().getEntityType() + "' is not supported.");
|
throw new RuntimeException("Entity with entityType '" + msg.getOriginator().getEntityType() + "' is not supported.");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user