lishuangjiang@potevio.com hace 1 año
padre
commit
efc0ee3124

+ 2 - 1
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/ChannelConfigRepository.java

@@ -2,11 +2,12 @@ package cc.iotkit.data.dao;
 
 import cc.iotkit.data.model.TbChannelConfig;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 
 /**
  * @Author: 石恒
  * @Date: 2023/5/11 21:00
  * @Description:
  */
-public interface ChannelConfigRepository extends JpaRepository<TbChannelConfig, Long> {
+public interface ChannelConfigRepository extends JpaRepository<TbChannelConfig, Long>, QuerydslPredicateExecutor<TbChannelConfig> {
 }

+ 2 - 1
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/ChannelTemplateRepository.java

@@ -2,11 +2,12 @@ package cc.iotkit.data.dao;
 
 import cc.iotkit.data.model.TbChannelTemplate;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 
 /**
  * @Author: 石恒
  * @Date: 2023/5/11 21:00
  * @Description:
  */
-public interface ChannelTemplateRepository extends JpaRepository<TbChannelTemplate, String> {
+public interface ChannelTemplateRepository extends JpaRepository<TbChannelTemplate, String>, QuerydslPredicateExecutor<TbChannelTemplate> {
 }

+ 27 - 6
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbAlertConfig.java

@@ -1,21 +1,32 @@
 package cc.iotkit.data.model;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.alert.AlertConfig;
+import cc.iotkit.model.alert.AlertRecord;
+import cc.iotkit.model.system.SysUser;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
 @Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
 @Entity
 @Table(name = "alert_config")
-@AutoMapper(target = AlertConfig.class)
-public class TbAlertConfig {
+@AutoMapper(target= AlertConfig.class)
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbAlertConfig extends BaseEntity implements TenantAware {
 
     @Id
     @GeneratedValue(generator = "SnowflakeIdGenerator")
@@ -23,6 +34,12 @@ public class TbAlertConfig {
     @ApiModelProperty(value = "告警配置id")
     private Long id;
 
+    /**
+     * 租户编号
+     */
+    @ApiModelProperty(value = "租户编号")
+    private String tenantId;
+
     /**
      * 配置所属用户
      */
@@ -71,4 +88,8 @@ public class TbAlertConfig {
     @ApiModelProperty(value = "创建时间")
     private Long createAt;
 
+    public TbAlertConfig(Long id) {
+        this.id = id;
+    }
+
 }

+ 22 - 7
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbAlertRecord.java

@@ -1,22 +1,31 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.alert.AlertConfig;
+import cc.iotkit.model.alert.AlertRecord;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 @Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
 @Entity
-//@ApiModel(value = "告警记录")
 @Table(name = "alert_record")
-@AutoMapper(target= AlertConfig.class)
-public class TbAlertRecord {
+@AutoMapper(target= AlertRecord.class)
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbAlertRecord extends BaseEntity implements TenantAware {
 
     @Id
     @GeneratedValue(generator = "SnowflakeIdGenerator")
@@ -24,6 +33,12 @@ public class TbAlertRecord {
     @ApiModelProperty(value = "告警记录id")
     private Long id;
 
+    /**
+     * 租户编号
+     */
+    @ApiModelProperty(value = "租户编号")
+    private String tenantId;
+
     /**
      * 配置所属用户
      */

+ 27 - 1
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbChannelConfig.java

@@ -1,13 +1,21 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.notify.ChannelConfig;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
 import javax.persistence.*;
+import java.util.Date;
 
 /**
  * @Author: 石恒
@@ -16,16 +24,27 @@ import javax.persistence.*;
  */
 @Data
 @Entity
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
 @Table(name = "channel_config")
 @ApiModel(value = "通道配置")
 @AutoMapper(target = ChannelConfig.class)
-public class TbChannelConfig {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbChannelConfig extends BaseEntity implements TenantAware {
     @Id
     @GeneratedValue(generator = "SnowflakeIdGenerator")
     @GenericGenerator(name = "SnowflakeIdGenerator", strategy = "cc.iotkit.data.config.id.SnowflakeIdGenerator")
     @ApiModelProperty(value = "通道配置id")
     private Long id;
 
+    /**
+     * 租户编号
+     */
+    @ApiModelProperty(value = "租户编号")
+    private String tenantId;
+
     @ApiModelProperty(value = "通道id")
     private Long channelId;
 
@@ -38,4 +57,11 @@ public class TbChannelConfig {
 
     @ApiModelProperty(value = "创建时间")
     private Long createAt;
+
+    /**
+     * 所属平台用户ID
+     */
+    @ApiModelProperty(value = "用户ID")
+    private String uid;
+
 }

+ 26 - 5
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbChannelTemplate.java

@@ -1,16 +1,20 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.notify.ChannelTemplate;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * @Author: 石恒
@@ -18,17 +22,28 @@ import javax.persistence.Table;
  * @Description:
  */
 @Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
 @Entity
 @Table(name = "channel_template")
 @ApiModel(value = "通道模板")
 @AutoMapper(target= ChannelTemplate.class)
-public class TbChannelTemplate {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbChannelTemplate extends BaseEntity implements TenantAware {
     @Id
     @GeneratedValue(generator = "SnowflakeIdGenerator")
     @GenericGenerator(name = "SnowflakeIdGenerator", strategy = "cc.iotkit.data.config.id.SnowflakeIdGenerator")
     @ApiModelProperty(value = "通道模板id")
     private Long id;
 
+    /**
+     * 租户编号
+     */
+    @ApiModelProperty(value = "租户编号")
+    private String tenantId;
+
     @ApiModelProperty(value = "通道配置id")
     private Long channelConfigId;
 
@@ -40,4 +55,10 @@ public class TbChannelTemplate {
 
     @ApiModelProperty(value = "创建时间")
     private Long createAt;
+
+    /**
+     * 配置所属用户
+     */
+    @ApiModelProperty(value = "配置所属用户")
+    private String uid;
 }

+ 5 - 3
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/AlertConfigDataImpl.java

@@ -52,16 +52,18 @@ public class AlertConfigDataImpl implements IAlertConfigData, IJPACommData<Alert
         Predicate predicate = buildPredicate(data);
 //        Page<TbAlertConfig> alertConfigPage = alertConfigRepository.findAll(Pageable.ofSize(request.getPageSize()).withPage(request.getPageNum() - 1));
 //        return new Paging<>(alertConfigPage.getTotalElements(), MapstructUtils.convert(alertConfigPage.getContent(), AlertConfig.class));
-        QueryResults<TbAlertConfig> tbAlertConfigQueryResults = jpaQueryFactory.select(tbAlertConfig).from(tbAlertConfig).where(predicate).limit(request.getPageSize()).offset(request.getOffset()).fetchResults();
+        QueryResults<TbAlertConfig> tbAlertConfigQueryResults = jpaQueryFactory.select(tbAlertConfig)
+                .from(tbAlertConfig).where(predicate).limit(request.getPageSize())
+                .offset(request.getOffset()).orderBy(tbAlertConfig.createAt.desc()).fetchResults();
         return PageBuilder.queryResults2Page(tbAlertConfigQueryResults, AlertConfig.class);
     }
 
     private Predicate buildPredicate(AlertConfig data) {
         return PredicateBuilder.instance()
+                .and(StringUtils.isNotEmpty(data.getTenantId()),()->tbAlertConfig.tenantId.eq(data.getTenantId()))
+                .and(StringUtils.isNotEmpty(data.getUid()),()->tbAlertConfig.uid.eq(data.getUid()))
                 .and(StringUtils.isNotEmpty(data.getLevel()), () -> tbAlertConfig.level.eq(data.getLevel()))
                 .and(StringUtils.isNotEmpty(data.getName()), () -> tbAlertConfig.name.like("%"+data.getName()+"%"))
                 .build();
     }
-
-
 }

+ 33 - 0
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/AlertRecordDataImpl.java

@@ -3,11 +3,18 @@ package cc.iotkit.data.service;
 import cc.iotkit.common.api.PageRequest;
 import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.utils.MapstructUtils;
+import cc.iotkit.common.utils.StringUtils;
 import cc.iotkit.data.dao.AlertRecordRepository;
 import cc.iotkit.data.dao.IJPACommData;
 import cc.iotkit.data.manager.IAlertRecordData;
 import cc.iotkit.data.model.TbAlertRecord;
+import cc.iotkit.data.util.PageBuilder;
+import cc.iotkit.data.util.PredicateBuilder;
+import cc.iotkit.model.alert.AlertConfig;
 import cc.iotkit.model.alert.AlertRecord;
+import com.querydsl.core.QueryResults;
+import com.querydsl.core.types.Predicate;
+import com.querydsl.jpa.impl.JPAQueryFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.data.domain.Page;
@@ -15,12 +22,17 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
+import static cc.iotkit.data.model.QTbAlertConfig.tbAlertConfig;
+import static cc.iotkit.data.model.QTbAlertRecord.tbAlertRecord;
+
 @Primary
 @Service
 public class AlertRecordDataImpl implements IAlertRecordData, IJPACommData<AlertRecord, Long> {
 
     @Autowired
     private AlertRecordRepository alertRecordRepository;
+    @Autowired
+    private JPAQueryFactory jpaQueryFactory;
 
 
     @Override
@@ -46,4 +58,25 @@ public class AlertRecordDataImpl implements IAlertRecordData, IJPACommData<Alert
         return new Paging<>(alertRecordPage.getTotalElements(),
                 MapstructUtils.convert(alertRecordPage.getContent(), AlertRecord.class));
     }
+
+    @Override
+    public Paging<AlertRecord> selectAlertRecordPage(PageRequest<AlertRecord> request) {
+        AlertRecord data = request.getData();
+        Predicate predicate = buildPredicate(data);
+//        Page<TbAlertConfig> alertConfigPage = alertConfigRepository.findAll(Pageable.ofSize(request.getPageSize()).withPage(request.getPageNum() - 1));
+//        return new Paging<>(alertConfigPage.getTotalElements(), MapstructUtils.convert(alertConfigPage.getContent(), AlertConfig.class));
+        QueryResults<TbAlertRecord> tbAlertRecordQueryResults = jpaQueryFactory.select(tbAlertRecord)
+                .from(tbAlertRecord).where(predicate).limit(request.getPageSize())
+                .offset(request.getOffset()).orderBy(tbAlertRecord.alertTime.desc()).fetchResults();
+        return PageBuilder.queryResults2Page(tbAlertRecordQueryResults, AlertRecord.class);
+    }
+
+    private Predicate buildPredicate(AlertRecord data) {
+        return PredicateBuilder.instance()
+                .and(StringUtils.isNotEmpty(data.getTenantId()),()->tbAlertRecord.tenantId.eq(data.getTenantId()))
+                .and(StringUtils.isNotEmpty(data.getUid()),()->tbAlertRecord.uid.eq(data.getUid()))
+                .and(StringUtils.isNotEmpty(data.getLevel()), () -> tbAlertRecord.level.eq(data.getLevel()))
+                .and(StringUtils.isNotEmpty(data.getName()), () -> tbAlertRecord.name.like("%"+data.getName()+"%"))
+                .build();
+    }
 }

+ 42 - 13
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/ChannelConfigDataImpl.java

@@ -2,20 +2,24 @@ package cc.iotkit.data.service;
 
 import cc.iotkit.common.api.PageRequest;
 import cc.iotkit.common.api.Paging;
+import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.data.dao.ChannelConfigRepository;
 import cc.iotkit.data.dao.IJPACommData;
 import cc.iotkit.data.manager.IChannelConfigData;
-import cc.iotkit.data.model.ChannelConfigMapper;
 import cc.iotkit.data.model.TbChannelConfig;
+import cc.iotkit.data.util.PageBuilder;
+import cc.iotkit.data.util.PredicateBuilder;
 import cc.iotkit.model.notify.ChannelConfig;
+import com.querydsl.core.types.Predicate;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Primary;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.stream.Collectors;
+import java.util.Objects;
+
+import static cc.iotkit.data.model.QTbChannelConfig.tbChannelConfig;
 
 /**
  * author: 石恒
@@ -29,8 +33,7 @@ public class ChannelConfigDataImpl implements IChannelConfigData, IJPACommData<C
     @Resource
     private ChannelConfigRepository channelConfigRepository;
 
-    @Resource
-    private ChannelConfigMapper channelConfigMapper;
+
 
     @Override
     public JpaRepository getBaseRepository() {
@@ -49,12 +52,38 @@ public class ChannelConfigDataImpl implements IChannelConfigData, IJPACommData<C
 
     @Override
     public Paging<ChannelConfig> findAll(PageRequest<ChannelConfig> pageRequest) {
-        Page<TbChannelConfig> tbChannelConfigs = channelConfigRepository.findAll(Pageable.ofSize(pageRequest.getPageSize()).withPage(pageRequest.getPageNum() - 1));
-        return new Paging<>(
-                tbChannelConfigs.getTotalElements(),
-                tbChannelConfigs.getContent()
-                        .stream().map(channelConfigMapper::toDto)
-                        .collect(Collectors.toList())
-        );
+//        Page<TbChannelConfig> tbChannelConfigs = channelConfigRepository.findAll(Pageable.ofSize(pageRequest.getPageSize()).withPage(pageRequest.getPageNum() - 1));
+//        return new Paging<>(
+//                tbChannelConfigs.getTotalElements(),
+//                tbChannelConfigs.getContent()
+////                        .stream().map(channelConfigMapper::toDto)
+////                        .collect(Collectors.toList())
+//        ) .to(ChannelConfig.class);
+
+        return PageBuilder.toPaging(channelConfigRepository.findAll(buildQueryCondition(pageRequest.getData()), PageBuilder.toPageable(pageRequest))).to(ChannelConfig.class);
+
+    }
+
+    private Predicate buildQueryCondition(ChannelConfig data) {
+        PredicateBuilder predicateBuilder = PredicateBuilder.instance()
+                .and(StringUtils.isNotBlank(data.getTenantId()), () -> tbChannelConfig.tenantId.eq(data.getTenantId()))
+                .and(StringUtils.isNotBlank(data.getUid()),() -> tbChannelConfig.uid.eq(data.getUid()))
+                .and(StringUtils.isNotBlank(data.getTitle()),() -> tbChannelConfig.title.like("%"+data.getTitle()+"%"));
+        return predicateBuilder.build();
     }
+
+    @Override
+    public ChannelConfig saveChannelConfig(ChannelConfig data) {
+        if (Objects.isNull(data.getId())) {
+            data.setCreateAt(System.currentTimeMillis());
+        }
+        channelConfigRepository.save(from(data));
+        return data;
+    }
+
+    private static TbChannelConfig from(ChannelConfig channelConfig) {
+        TbChannelConfig convert = MapstructUtils.convert(channelConfig, TbChannelConfig.class);
+        return convert;
+    }
+
 }

+ 29 - 0
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/ChannelTemplateDataImpl.java

@@ -1,12 +1,21 @@
 package cc.iotkit.data.service;
 
+import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.data.dao.ChannelTemplateRepository;
 import cc.iotkit.data.dao.IJPACommData;
 import cc.iotkit.data.manager.IChannelTemplateData;
 import cc.iotkit.data.model.TbChannelTemplate;
+import cc.iotkit.data.util.PageBuilder;
+import cc.iotkit.data.util.PredicateBuilder;
+import cc.iotkit.model.notify.ChannelConfig;
 import cc.iotkit.model.notify.ChannelTemplate;
+import com.querydsl.core.types.Predicate;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Primary;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
@@ -15,6 +24,8 @@ import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import static cc.iotkit.data.model.QTbChannelTemplate.tbChannelTemplate;
+
 /**
  * author: 石恒
  * date: 2023-05-11 17:45
@@ -60,6 +71,8 @@ public class ChannelTemplateDataImpl implements IChannelTemplateData, IJPACommDa
                 .collect(Collectors.toList());
     }
 
+
+
     @Override
     public List<ChannelTemplate> findAllByCondition(ChannelTemplate data) {
         return Collections.emptyList();
@@ -70,5 +83,21 @@ public class ChannelTemplateDataImpl implements IChannelTemplateData, IJPACommDa
         return null;
     }
 
+    @Override
+    public Paging<ChannelTemplate> findAll(PageRequest<ChannelTemplate> pageRequest) {
+//        Page<TbChannelTemplate> tbChannelConfigs = channelTemplateRepository.findAll(Pageable.ofSize(pageRequest.getPageSize()).withPage(pageRequest.getPageNum() - 1));
+//        return new Paging<>(
+//                tbChannelConfigs.getTotalElements(),
+//                tbChannelConfigs.getContent()
+//        ) .to(ChannelTemplate.class);
+        return PageBuilder.toPaging(channelTemplateRepository.findAll(buildQueryCondition(pageRequest.getData()), PageBuilder.toPageable(pageRequest))).to(ChannelTemplate.class);
 
+    }
+
+    private Predicate buildQueryCondition(ChannelTemplate data) {
+        PredicateBuilder predicateBuilder = PredicateBuilder.instance()
+                .and(StringUtils.isNotBlank(data.getTenantId()), () -> tbChannelTemplate.tenantId.eq(data.getTenantId()))
+                .and(StringUtils.isNotBlank(data.getUid()),() -> tbChannelTemplate.uid.eq(data.getUid()));
+        return predicateBuilder.build();
+    }
 }

+ 6 - 6
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/RuleInfoDataImpl.java

@@ -116,12 +116,12 @@ public class RuleInfoDataImpl implements IRuleInfoData, IJPACommData<RuleInfo, S
 
     @Override
     public Paging<RuleInfo> findAll(PageRequest<RuleInfo> pageRequest) {
-//        Page<TbRuleInfo> ret = ruleInfoRepository.findAll(PageBuilder.toPageable(pageRequest));
-//        return new Paging<>(ret.getTotalElements(), fromTb(ret.getContent()));
-        return PageBuilder.toPaging(
-                ruleInfoRepository.findAll(
-                        buildQueryCondition(pageRequest.getData()),
-                        PageBuilder.toPageable(pageRequest)), RuleInfo.class);
+        Page<TbRuleInfo> ret = ruleInfoRepository.findAll( buildQueryCondition(pageRequest.getData()),PageBuilder.toPageable(pageRequest));
+        return new Paging<>(ret.getTotalElements(), fromTb(ret.getContent()));
+//        return PageBuilder.toPaging(
+//                ruleInfoRepository.findAll(
+//                        buildQueryCondition(pageRequest.getData()),
+//                        PageBuilder.toPageable(pageRequest)), RuleInfo.class);
     }
 
     private Predicate buildQueryCondition(RuleInfo data) {

+ 1 - 0
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysRoleDataImpl.java

@@ -109,6 +109,7 @@ public class SysRoleDataImpl implements ISysRoleData, IJPACommData<SysRole, Long
                 .where(PredicateBuilder.instance()
                         .and(tbSysRole.roleName.eq(role.getRoleName()))
                         .and(Objects.nonNull(role.getId()), () -> tbSysRole.id.ne(role.getId()))
+                        .and(StringUtils.isNotBlank(role.getTenantId()),()->tbSysRole.tenantId.eq(role.getTenantId()))
                         .build()).fetchOne();
         return Objects.isNull(tbSysRoleRes);
     }