Merge pull request #5926 from thingsboard/feature/propagate-to-owner
Alarm start ts from message ts
This commit is contained in:
		
						commit
						af0198a925
					
				@ -22,6 +22,7 @@ import lombok.AccessLevel;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.Getter;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.util.StringUtils;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.id.CustomerId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
@ -296,4 +297,15 @@ public final class TbMsg implements Serializable {
 | 
			
		||||
    public boolean isValid() {
 | 
			
		||||
        return getCallback().isMsgValid();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getMetaDataTs() {
 | 
			
		||||
        String tsStr = metaData.getValue("ts");
 | 
			
		||||
        if (!StringUtils.isEmpty(tsStr)) {
 | 
			
		||||
            try {
 | 
			
		||||
                return Long.parseLong(tsStr);
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return ts;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -290,27 +290,6 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository {
 | 
			
		||||
        StringBuilder permissionsQuery = new StringBuilder();
 | 
			
		||||
        ctx.addUuidParameter("permissions_tenant_id", tenantId.getId());
 | 
			
		||||
        permissionsQuery.append(" a.tenant_id = :permissions_tenant_id and ea.tenant_id = :permissions_tenant_id ");
 | 
			
		||||
/*
 | 
			
		||||
      No need to check the customer id, because we already use entity id list that passed security check when we were evaluating the data query.
 | 
			
		||||
 */
 | 
			
		||||
//        if (customerId != null && !customerId.isNullUid()) {
 | 
			
		||||
//            ctx.addUuidParameter("permissions_customer_id", customerId.getId());
 | 
			
		||||
//            ctx.addUuidParameter("permissions_device_customer_id", customerId.getId());
 | 
			
		||||
//            ctx.addUuidParameter("permissions_asset_customer_id", customerId.getId());
 | 
			
		||||
//            ctx.addUuidParameter("permissions_user_customer_id", customerId.getId());
 | 
			
		||||
//            ctx.addUuidParameter("permissions_entity_view_customer_id", customerId.getId());
 | 
			
		||||
//            permissionsQuery.append(" and (");
 | 
			
		||||
//            permissionsQuery.append("(a.originator_type = '").append(EntityType.DEVICE.ordinal()).append("' and exists (select 1 from device cd where cd.id = a.originator_id and cd.customer_id = :permissions_device_customer_id))");
 | 
			
		||||
//            permissionsQuery.append(" or ");
 | 
			
		||||
//            permissionsQuery.append("(a.originator_type = '").append(EntityType.ASSET.ordinal()).append("' and exists (select 1 from asset ca where ca.id = a.originator_id and ca.customer_id = :permissions_device_customer_id))");
 | 
			
		||||
//            permissionsQuery.append(" or ");
 | 
			
		||||
//            permissionsQuery.append("(a.originator_type = '").append(EntityType.CUSTOMER.ordinal()).append("' and exists (select 1 from customer cc where cc.id = a.originator_id and cc.id = :permissions_customer_id))");
 | 
			
		||||
//            permissionsQuery.append(" or ");
 | 
			
		||||
//            permissionsQuery.append("(a.originator_type = '").append(EntityType.USER.ordinal()).append("' and exists (select 1 from tb_user cu where cu.id = a.originator_id and cu.customer_id = :permissions_user_customer_id))");
 | 
			
		||||
//            permissionsQuery.append(" or ");
 | 
			
		||||
//            permissionsQuery.append("(a.originator_type = '").append(EntityType.ENTITY_VIEW.ordinal()).append("' and exists (select 1 from entity_view cv where cv.id = a.originator_id and cv.customer_id = :permissions_entity_view_customer_id))");
 | 
			
		||||
//            permissionsQuery.append(")");
 | 
			
		||||
//        }
 | 
			
		||||
        return permissionsQuery.toString();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -164,6 +164,7 @@ public class TbCreateAlarmNode extends TbAbstractAlarmNode<TbCreateAlarmNodeConf
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Alarm buildAlarm(TbMsg msg, JsonNode details, TenantId tenantId) {
 | 
			
		||||
        long ts = msg.getMetaDataTs();
 | 
			
		||||
        return Alarm.builder()
 | 
			
		||||
                .tenantId(tenantId)
 | 
			
		||||
                .originator(msg.getOriginator())
 | 
			
		||||
@ -172,9 +173,8 @@ public class TbCreateAlarmNode extends TbAbstractAlarmNode<TbCreateAlarmNodeConf
 | 
			
		||||
                .propagate(config.isPropagate())
 | 
			
		||||
                .type(TbNodeUtils.processPattern(this.config.getAlarmType(), msg))
 | 
			
		||||
                .propagateRelationTypes(relationTypes)
 | 
			
		||||
                //todo-vp: alarm date should be taken from Message or current Time should be used?
 | 
			
		||||
//                .startTs(System.currentTimeMillis())
 | 
			
		||||
//                .endTs(System.currentTimeMillis())
 | 
			
		||||
                .startTs(ts)
 | 
			
		||||
                .endTs(ts)
 | 
			
		||||
                .details(details)
 | 
			
		||||
                .build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -111,21 +111,7 @@ public class TbMsgTimeseriesNode implements TbNode {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static long computeTs(TbMsg msg, boolean ignoreMetadataTs) {
 | 
			
		||||
        return ignoreMetadataTs ? System.currentTimeMillis() : getTs(msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static long getTs(TbMsg msg) {
 | 
			
		||||
        long ts = -1;
 | 
			
		||||
        String tsStr = msg.getMetaData().getValue("ts");
 | 
			
		||||
        if (!StringUtils.isEmpty(tsStr)) {
 | 
			
		||||
            try {
 | 
			
		||||
                ts = Long.parseLong(tsStr);
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            ts = msg.getTs();
 | 
			
		||||
        }
 | 
			
		||||
        return ts;
 | 
			
		||||
        return ignoreMetadataTs ? System.currentTimeMillis() : msg.getMetaDataTs();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user