Commit 7a9825807fb36c20112653dfb2b1023fb179b90d

Authored by xp.Huang
2 parents 98270395 1e1c0dfe

Merge branch 'ljl1207' into 'master'

fix: 设备配置相关接口

See merge request huang/thingsboard3.3.2!10
... ... @@ -45,7 +45,7 @@ public class DeviceDTO extends TenantDTO {
45 45 @ApiModelProperty(value = "设备唯一编号", required = true)
46 46 private String deviceToken;
47 47 // 不用序列化给前端
48   - @JsonIgnore private String tbDeviceId;
  48 + private String tbDeviceId;
49 49 private String deviceTypeId;
50 50
51 51 @NotEmpty(
... ...
... ... @@ -5,8 +5,11 @@ import com.fasterxml.jackson.annotation.JsonFormat;
5 5 import com.fasterxml.jackson.annotation.JsonInclude;
6 6 import lombok.Data;
7 7 import lombok.EqualsAndHashCode;
  8 +import org.thingsboard.server.common.data.yunteng.common.AddGroup;
  9 +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
8 10 import org.thingsboard.server.common.data.yunteng.enums.TenantStatusEnum;
9 11
  12 +import javax.validation.constraints.NotEmpty;
10 13 import java.time.LocalDateTime;
11 14
12 15 @EqualsAndHashCode(callSuper = false)
... ... @@ -18,6 +21,9 @@ public class TenantDTO extends BaseDTO {
18 21 private String description;
19 22 private String defaultConfig;
20 23 /** TB的租户ID */
  24 + @NotEmpty(
  25 + message = "租户ID不能为空或者空字符串",
  26 + groups = {UpdateGroup.class})
21 27 private String tenantId;
22 28 /** 租户角色 */
23 29 private String[] roleIds;
... ...
... ... @@ -2,13 +2,12 @@ package org.thingsboard.server.common.data.yunteng.utils;
2 2
3 3 import lombok.extern.slf4j.Slf4j;
4 4 import org.springframework.beans.BeanUtils;
  5 +import org.thingsboard.server.common.data.DeviceProfile;
  6 +import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO;
5 7
6 8 import java.lang.reflect.Constructor;
7 9 import java.lang.reflect.Field;
8   -import java.util.ArrayList;
9   -import java.util.Arrays;
10   -import java.util.Collection;
11   -import java.util.List;
  10 +import java.util.*;
12 11
13 12 @Slf4j
14 13 public class ReflectUtils {
... ... @@ -48,6 +47,15 @@ public class ReflectUtils {
48 47 return targetList;
49 48 }
50 49
  50 + public static DeviceProfileDTO getDeviceProfileDTO(DeviceProfile entity) {
  51 + DeviceProfileDTO result = new DeviceProfileDTO();
  52 + BeanUtils.copyProperties(entity, result);
  53 + result.setId(entity.getId().getId().toString());
  54 + result.setTenantId(entity.getTenantId().getId().toString());
  55 + result.setDefaultRuleChainId(Optional.ofNullable(entity.getDefaultRuleChainId()).map(uuid ->uuid.getId().toString()).orElse(null));
  56 + return result;
  57 + }
  58 +
51 59
52 60 /**
53 61 * 获取类的所有属性,包含父类的【public private protected】
... ...
... ... @@ -28,6 +28,7 @@ import org.thingsboard.server.dao.DaoUtil;
28 28 import org.thingsboard.server.dao.sql.device.JpaDeviceProfileDao;
29 29 import org.thingsboard.server.dao.yunteng.repository.YtDeviceProfileRepository;
30 30
  31 +import java.util.List;
31 32 import java.util.Objects;
32 33
33 34 @Component
... ... @@ -55,5 +56,10 @@ public class YtJpaDeviceProfileDao extends JpaDeviceProfileDao {
55 56 }
56 57 }
57 58
  59 + public List<DeviceProfileDTO> findDeviceProfileByTenantId(TenantId tenantId) {
  60 + return ytDeviceProfileRepository.findDeviceProfileByTenantId(tenantId.getId());
  61 +
  62 + }
  63 +
58 64
59 65 }
... ...
... ... @@ -158,8 +158,7 @@ public class YtDeviceProfileServiceImpl
158 158 TenantId tenant = new TenantId(UUID.fromString(tenantId));
159 159 DeviceProfile profile = deviceProfileDao.findById(tenant, UUID.fromString(id));
160 160 return Optional.ofNullable(profile).map(entity -> {
161   - DeviceProfileDTO result = new DeviceProfileDTO();
162   - BeanUtils.copyProperties(entity, result);
  161 + DeviceProfileDTO result = ReflectUtils.getDeviceProfileDTO(entity);
163 162 return result;
164 163 });
165 164 }
... ... @@ -180,7 +179,7 @@ public class YtDeviceProfileServiceImpl
180 179 @Override
181 180 public List<DeviceProfileDTO> findDeviceProfile(String tenantId) {
182 181 UUID profileId = UUID.fromString(tenantId);
183   - List<DeviceProfile> profile = deviceProfileDao.find(new TenantId(profileId));
184   - return ReflectUtils.sourceToTarget(profile, DeviceProfileDTO.class);
  182 + List<DeviceProfileDTO> results = deviceProfileDao.findDeviceProfileByTenantId(new TenantId(profileId));
  183 + return results;
185 184 }
186 185 }
... ...
... ... @@ -162,6 +162,7 @@ public class YtDeviceServiceImpl extends AbstractBaseService<DeviceMapper, YtDev
162 162 deviceTenantId = currentTenantId;
163 163 deviceDTO.setTenantId(currentTenantId);
164 164 }else{
  165 + deviceTenantId = deviceDTO.getTenantId();
165 166 YtDevice device = baseMapper.selectById(deviceDTO.getId());
166 167 if(device == null){
167 168 throw new YtDataValidationException("设备不存在!");
... ...
... ... @@ -24,6 +24,7 @@ import org.thingsboard.server.common.data.DeviceTransportType;
24 24 import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO;
25 25 import org.thingsboard.server.dao.model.sql.DeviceProfileEntity;
26 26
  27 +import java.util.List;
27 28 import java.util.UUID;
28 29
29 30 public interface YtDeviceProfileRepository extends JpaRepository<DeviceProfileEntity, UUID> {
... ... @@ -45,4 +46,8 @@ public interface YtDeviceProfileRepository extends JpaRepository<DeviceProfileEn
45 46 Pageable pageable);
46 47
47 48
  49 + @Query("SELECT new org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO(d.id, d.name, d.createdTime,d.description, d.transportType, d.defaultRuleChainId) " +
  50 + "FROM DeviceProfileEntity d WHERE d.tenantId = :tenantId ")
  51 + List<DeviceProfileDTO> findDeviceProfileByTenantId(@Param("tenantId") UUID tenantId);
  52 +
48 53 }
... ...
... ... @@ -38,7 +38,7 @@
38 38 SELECT
39 39 <include refid="columns"/>,ifdp.name AS profile_name,io.name AS organization_name
40 40 FROM iotfs_device ifd
41   - LEFT JOIN iotfs_device_profile ifdp ON ifd.profile_id = ifdp.id
  41 + LEFT JOIN device_profile ifdp ON ifd.profile_id = CAST (ifdp.id AS VARCHAR)
42 42 LEFT JOIN iotfs_organization io ON io.id = ifd.organization_id
43 43 <where>
44 44 <if test="queryMap.tenantId !=null and queryMap.tenantId !=''">
... ...