Commit 69614192eb3b539ec7b38a492a9e7d183378aedc

Authored by 芯火源
1 parent ca65e3fb

refactor: TCP协议设备传输接口调整

... ... @@ -93,7 +93,7 @@ public class TkDeviceScriptController extends BaseController {
93 93 }
94 94
95 95 /**脚本引擎启用/禁用时,刷新规则引擎中缓存的脚本ID对应的脚本内容,禁用时为默认脚本*/
96   - List<DeviceProfileDTO> usedProfiles = ytDeviceProfileService.findDeviceProfile(tenantId, id,null);
  96 +// List<DeviceProfileDTO> usedProfiles = ytDeviceProfileService.findDeviceProfile(tenantId, id,null);
97 97 // for (DeviceProfileDTO profile : usedProfiles) {
98 98 // DeviceProfile tbDeviceProfile =
99 99 // buildTbDeviceProfileFromDeviceProfileDTO(
... ...
... ... @@ -19,6 +19,7 @@ import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidatio
19 19 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
20 20 import org.thingsboard.server.common.data.yunteng.dto.*;
21 21 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;
  22 +import org.thingsboard.server.common.data.yunteng.enums.TransportTypeEnum;
22 23 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
23 24 import org.thingsboard.server.dao.yunteng.entities.*;
24 25 import org.thingsboard.server.dao.yunteng.jpa.dao.TkJpaDeviceProfileDao;
... ... @@ -244,22 +245,11 @@ public class TkDeviceProfileServiceImpl
244 245 }
245 246
246 247 @Override
247   - public List<DeviceProfileDTO> findDeviceProfileByIds(String tenantId, List<String> ids) {
  248 + public List<DeviceProfileDTO> findDeviceProfileByIds(String tenantId, List<String> ids, TransportTypeEnum transportType) {
248 249 if (StringUtils.isEmpty(tenantId) || null == ids) {
249 250 throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
250 251 }
251   - List<TkDeviceProfileEntity> entities =
252   - baseMapper.selectList(
253   - new LambdaQueryWrapper<TkDeviceProfileEntity>()
254   - .eq(TkDeviceProfileEntity::getTenantId, tenantId)
255   - .in(TkDeviceProfileEntity::getId, ids));
256   -
257   - if (null == entities || entities.isEmpty()) {
258   - return null;
259   - }
260   - return entities.stream()
261   - .map(obj -> obj.getDTO(DeviceProfileDTO.class))
262   - .collect(Collectors.toList());
  252 + return baseMapper.profileByTransportAndIds(tenantId,ids,transportType);
263 253 }
264 254
265 255 @Override
... ...
... ... @@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
8 8 import org.apache.commons.lang3.StringUtils;
9 9 import org.springframework.stereotype.Service;
10 10 import org.springframework.transaction.annotation.Transactional;
  11 +import org.thingsboard.server.common.data.device.profile.TkTcpDeviceProfileTransportConfiguration;
11 12 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
12 13 import org.thingsboard.server.common.data.yunteng.constant.ModelConstants;
13 14 import org.thingsboard.server.common.data.yunteng.constant.QueryConstant;
... ... @@ -17,6 +18,7 @@ import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;
17 18 import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO;
18 19 import org.thingsboard.server.common.data.yunteng.dto.TkCustomerDeviceDTO;
19 20 import org.thingsboard.server.common.data.yunteng.dto.TkDeviceScriptDTO;
  21 +import org.thingsboard.server.common.data.yunteng.enums.TransportTypeEnum;
20 22 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
21 23 import org.thingsboard.server.dao.yunteng.entities.TkDeviceProfileEntity;
22 24 import org.thingsboard.server.dao.yunteng.entities.TkDeviceScriptEntity;
... ... @@ -264,13 +266,19 @@ public class TkDeviceScriptServiceImpl
264 266 .map(DeviceDTO::getDeviceProfileId)
265 267 .collect(Collectors.toList());
266 268 List<DeviceProfileDTO> deviceProfileDTOList =
267   - tkDeviceProfileService.findDeviceProfileByIds(tenantId, deviceProfiles);
  269 + tkDeviceProfileService.findDeviceProfileByIds(tenantId, deviceProfiles, TransportTypeEnum.TCP);
268 270 return Optional.ofNullable(deviceProfileDTOList)
269 271 .map(
270   - deviceProfileDTOS ->
271   - deviceProfileDTOS.stream()
272   - .map(DeviceProfileDTO::getScriptId)
273   - .collect(Collectors.toSet()))
  272 + deviceProfileDTOS ->{
  273 + Set<String> tcpScriptes = new HashSet<>();
  274 + deviceProfileDTOS.forEach(p->{
  275 + TkTcpDeviceProfileTransportConfiguration config = (TkTcpDeviceProfileTransportConfiguration) p.getProfileData().getTransportConfiguration();
  276 + tcpScriptes.add(config.getUpScriptId());
  277 + tcpScriptes.add(config.getUpScriptId());
  278 + tcpScriptes.add(config.getUpScriptId());
  279 + });
  280 + return tcpScriptes;
  281 + })
274 282 .orElse(null);
275 283 }
276 284 return null;
... ...
... ... @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param;
7 7 import org.thingsboard.server.common.data.DeviceTransportType;
8 8 import org.thingsboard.server.common.data.yunteng.dto.*;
9 9 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;
  10 +import org.thingsboard.server.common.data.yunteng.enums.TransportTypeEnum;
10 11 import org.thingsboard.server.dao.yunteng.entities.TkDeviceProfileEntity;
11 12
12 13 import java.util.List;
... ... @@ -28,10 +29,17 @@ public interface TkDeviceProfileMapper extends BaseMapper<TkDeviceProfileEntity>
28 29 @Param("transportType") String transportType,
29 30 @Param("deviceProfileIds") List<String> deviceProfileIds);
30 31
  32 + @Deprecated
31 33 List<DeviceProfileDTO> profileByScriptId(
32   - @Param("tenantId") String tenantId,
33   - @Param("scriptId") String scriptId,
34   - @Param("deviceType") DeviceTypeEnum deviceType);
  34 + @Param("tenantId") String tenantId,
  35 + @Param("scriptId") String scriptId,
  36 + @Param("deviceType") DeviceTypeEnum deviceType);
  37 +
  38 + List<DeviceProfileDTO> profileByTransportAndIds(
  39 + @Param("tenantId") String tenantId,
  40 + @Param("projectIds") List<String> projectIds,
  41 + @Param("deviceType") TransportTypeEnum transportType);
  42 +
35 43
36 44 List<String> getDeviceProfileIds(
37 45 @Param("tenantId") String tenantId,
... ...
... ... @@ -3,6 +3,7 @@ package org.thingsboard.server.dao.yunteng.service;
3 3 import org.thingsboard.server.common.data.id.CustomerId;
4 4 import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO;
5 5 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;
  6 +import org.thingsboard.server.common.data.yunteng.enums.TransportTypeEnum;
6 7 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
7 8 import org.thingsboard.server.dao.yunteng.entities.TkDeviceProfileEntity;
8 9
... ... @@ -29,7 +30,7 @@ public interface TkDeviceProfileService extends BaseService<TkDeviceProfileEntit
29 30 List<DeviceProfileDTO> findCustomerDeviceProfiles(
30 31 String tenantId, CustomerId customerId, DeviceTypeEnum deviceType);
31 32
32   - List<DeviceProfileDTO> findDeviceProfileByIds(String tenantId, List<String> ids);
  33 + List<DeviceProfileDTO> findDeviceProfileByIds(String tenantId, List<String> ids, TransportTypeEnum transportType);
33 34
34 35 List<DeviceProfileDTO> findDeviceProfile(String tenantId);
35 36 /** 验证表单数据有效性 */
... ...
... ... @@ -12,7 +12,6 @@
12 12 <result property="image" column="image"/>
13 13 <result property="description" column="description"/>
14 14 <result property="tenantId" column="tenant_id"/>
15   - <result property="scriptId" column="script_id"/>
16 15 <result property="transportType" column="transport_type"/>
17 16 <result property="provisionType" column="provision_type"/>
18 17 <result property="deviceType" column="device_type" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
... ... @@ -86,6 +85,25 @@
86 85 </where>
87 86 </select>
88 87
  88 + <select id="profileByTransportAndIds" resultMap="detail">
  89 + SELECT
  90 + <include refid="basicColumns"/>
  91 + FROM device_profile base
  92 + LEFT JOIN tk_device_profile iot ON iot.tb_profile_id = base.id::TEXT
  93 + <where>
  94 + iot.tenant_id = #{tenantId}
  95 + <if test="projectIds != null">
  96 + AND iot.id IN
  97 + <foreach collection="projectIds" item="id" open="(" separator="," close=")">
  98 + #{id}
  99 + </foreach>
  100 + </if>
  101 + <if test="transportType !=null">
  102 + AND iot.transport_type = #{transportType}
  103 + </if>
  104 + </where>
  105 + </select>
  106 +
89 107 <select id="getDeviceProfileIds" resultType="java.lang.String">
90 108 SELECT iot.id
91 109 FROM device_profile base
... ...