Commit 9b55bbe132472970f133304bafb0dab4200347fb

Authored by 云中非
1 parent e0443b6c

fix: 主从设备接口

@@ -30,10 +30,7 @@ import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; @@ -30,10 +30,7 @@ import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
30 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; 30 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
31 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException; 31 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
32 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; 32 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
33 -import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;  
34 -import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;  
35 -import org.thingsboard.server.common.data.yunteng.dto.RelationDeviceDTO;  
36 -import org.thingsboard.server.common.data.yunteng.dto.YtCredentialsDto; 33 +import org.thingsboard.server.common.data.yunteng.dto.*;
37 import org.thingsboard.server.common.data.yunteng.enums.DeviceState; 34 import org.thingsboard.server.common.data.yunteng.enums.DeviceState;
38 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum; 35 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;
39 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; 36 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
@@ -357,6 +354,26 @@ public class YtDeviceController extends BaseController { @@ -357,6 +354,26 @@ public class YtDeviceController extends BaseController {
357 return deviceService.findDevicesByDeviceTypeAndOrganizationId(deviceType,getCurrentUser().getCurrentTenantId(), organizationId); 354 return deviceService.findDevicesByDeviceTypeAndOrganizationId(deviceType,getCurrentUser().getCurrentTenantId(), organizationId);
358 } 355 }
359 356
  357 + @GetMapping("/list/master/{organizationId}")
  358 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  359 + @ApiOperation("主设备列表")
  360 + public List<SelectItemDTO> getMasterDevices(
  361 + @ApiParam(value = "组织ID") @PathVariable("organizationId") String organizationId) throws ThingsboardException {
  362 + return deviceService.findMasterDevices(getCurrentUser().getCurrentTenantId()
  363 + ,getCurrentUser().isCustomerUser()?getCurrentUser().getCurrentUserId():null
  364 + , organizationId);
  365 + }
  366 + @GetMapping("/list/slave/{organizationId}")
  367 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  368 + @ApiOperation("从设备列表")
  369 + public List<SelectItemDTO> getSlaveDevices(
  370 + @ApiParam(value = "组织ID") @PathVariable("organizationId") String organizationId,
  371 + @ApiParam(value = "主设备ID") @RequestParam(value = "masterId",required = false) String masterId) throws ThingsboardException {
  372 + return deviceService.findSlaveDevices(masterId,getCurrentUser().getCurrentTenantId()
  373 + ,getCurrentUser().isCustomerUser()?getCurrentUser().getCurrentUserId():null
  374 + , organizationId);
  375 + }
  376 +
360 @GetMapping("/gateway/{tbDeviceId}") 377 @GetMapping("/gateway/{tbDeviceId}")
361 @ApiOperation("获取网关设备") 378 @ApiOperation("获取网关设备")
362 public DeviceDTO findGateWayDeviceByTbDeviceId( 379 public DeviceDTO findGateWayDeviceByTbDeviceId(
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
  6 +import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;
  7 +
  8 +import javax.validation.constraints.NotNull;
  9 +import javax.validation.constraints.Size;
  10 +import java.util.Set;
  11 +
  12 +@Data
  13 +public class SelectItemDTO {
  14 + @ApiModelProperty("下拉选项值")
  15 + private String id;
  16 +
  17 + @ApiModelProperty("下拉选项名")
  18 + private String name;
  19 +
  20 + @ApiModelProperty("设备类型")
  21 + private DeviceTypeEnum deviceType;
  22 +}
@@ -20,6 +20,7 @@ import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; @@ -20,6 +20,7 @@ import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
20 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO; 20 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;
21 import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; 21 import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO;
22 import org.thingsboard.server.common.data.yunteng.dto.RelationDeviceDTO; 22 import org.thingsboard.server.common.data.yunteng.dto.RelationDeviceDTO;
  23 +import org.thingsboard.server.common.data.yunteng.dto.SelectItemDTO;
23 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum; 24 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;
24 import org.thingsboard.server.common.data.yunteng.enums.ScopeEnum; 25 import org.thingsboard.server.common.data.yunteng.enums.ScopeEnum;
25 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; 26 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
@@ -429,4 +430,19 @@ public class YtDeviceServiceImpl extends AbstractBaseService<DeviceMapper, YtDev @@ -429,4 +430,19 @@ public class YtDeviceServiceImpl extends AbstractBaseService<DeviceMapper, YtDev
429 } 430 }
430 return false; 431 return false;
431 } 432 }
  433 +
  434 +
  435 + @Override
  436 + public List<SelectItemDTO> findMasterDevices(String tenantId, String customerId, String organizationId) {
  437 + List<String> orgIds = organizationAllIds(tenantId,organizationId);
  438 + List<SelectItemDTO> result = baseMapper.masterDevices(customerId,tenantId,orgIds);
  439 + return result;
  440 + }
  441 +
  442 + @Override
  443 + public List<SelectItemDTO> findSlaveDevices(String masterId,String tenantId,String customerId, String organizationId){
  444 + List<String> orgIds = organizationAllIds(tenantId,organizationId);
  445 + List<SelectItemDTO> result = baseMapper.slaveDevices(customerId,tenantId,orgIds,masterId);
  446 + return result;
  447 + }
432 } 448 }
@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param; @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param;
7 import org.thingsboard.server.common.data.yunteng.dto.BaseHomePageTop; 7 import org.thingsboard.server.common.data.yunteng.dto.BaseHomePageTop;
8 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO; 8 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;
9 import org.thingsboard.server.common.data.yunteng.dto.RelationDeviceDTO; 9 import org.thingsboard.server.common.data.yunteng.dto.RelationDeviceDTO;
  10 +import org.thingsboard.server.common.data.yunteng.dto.SelectItemDTO;
10 import org.thingsboard.server.common.data.yunteng.dto.statistics.AggregationDTO; 11 import org.thingsboard.server.common.data.yunteng.dto.statistics.AggregationDTO;
11 import org.thingsboard.server.dao.yunteng.entities.YtDevice; 12 import org.thingsboard.server.dao.yunteng.entities.YtDevice;
12 13
@@ -84,4 +85,24 @@ public interface DeviceMapper extends BaseMapper<YtDevice> { @@ -84,4 +85,24 @@ public interface DeviceMapper extends BaseMapper<YtDevice> {
84 Integer countMsgs(@Param("queryMap") Map<String, Object> queryMap); 85 Integer countMsgs(@Param("queryMap") Map<String, Object> queryMap);
85 86
86 Integer countDataPoints(@Param("queryMap") Map<String, Object> queryMap); 87 Integer countDataPoints(@Param("queryMap") Map<String, Object> queryMap);
  88 +
  89 + /**
  90 + * 主设备列表
  91 + * @param customerId 客户ID
  92 + * @param tenantId 租户ID
  93 + * @param organizationIds 组织ID
  94 + * @return
  95 + */
  96 + List<SelectItemDTO> masterDevices(@Param("customerId") String customerId,@Param("tenantId") String tenantId,@Param("organizationIds") List<String> organizationIds);
  97 +
  98 + /**
  99 + * 从设备列表
  100 + * @param customerId 客户ID
  101 + * @param tenantId 租户ID
  102 + * @param organizationIds 组织ID
  103 + * @param masterId 主设备ID
  104 + * @return
  105 + */
  106 + List<SelectItemDTO> slaveDevices(@Param("customerId") String customerId,@Param("tenantId") String tenantId
  107 + ,@Param("organizationIds") List<String> organizationIds,@Param("masterId") String masterId);
87 } 108 }
@@ -3,6 +3,7 @@ package org.thingsboard.server.dao.yunteng.service; @@ -3,6 +3,7 @@ package org.thingsboard.server.dao.yunteng.service;
3 import org.thingsboard.server.common.data.id.EntityId; 3 import org.thingsboard.server.common.data.id.EntityId;
4 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO; 4 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;
5 import org.thingsboard.server.common.data.yunteng.dto.RelationDeviceDTO; 5 import org.thingsboard.server.common.data.yunteng.dto.RelationDeviceDTO;
  6 +import org.thingsboard.server.common.data.yunteng.dto.SelectItemDTO;
6 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum; 7 import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;
7 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; 8 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
8 import org.thingsboard.server.dao.yunteng.entities.YtDevice; 9 import org.thingsboard.server.dao.yunteng.entities.YtDevice;
@@ -103,4 +104,21 @@ public interface YtDeviceService extends BaseService<YtDevice> { @@ -103,4 +104,21 @@ public interface YtDeviceService extends BaseService<YtDevice> {
103 * @return 104 * @return
104 */ 105 */
105 Boolean otherUsing(String deviceId,String tenantId); 106 Boolean otherUsing(String deviceId,String tenantId);
  107 +
  108 + /**
  109 + * 主设备信息
  110 + * @param tenantId 租户ID
  111 + * @param organizationId 组织ID
  112 + * @return 设备列表
  113 + */
  114 + List<SelectItemDTO> findMasterDevices(String tenantId, String customerId, String organizationId);
  115 +
  116 + /**
  117 + * 从设备信息
  118 + * @param masterId 主设备ID
  119 + * @param tenantId 租户ID
  120 + * @param organizationId 组织ID
  121 + * @return 设备列表
  122 + */
  123 + List<SelectItemDTO> findSlaveDevices(String masterId,String tenantId,String customerId, String organizationId);
106 } 124 }
@@ -2,6 +2,11 @@ @@ -2,6 +2,11 @@
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
4 <mapper namespace="org.thingsboard.server.dao.yunteng.mapper.DeviceMapper"> 4 <mapper namespace="org.thingsboard.server.dao.yunteng.mapper.DeviceMapper">
  5 + <resultMap type="org.thingsboard.server.common.data.yunteng.dto.SelectItemDTO" id="listInform">
  6 + <result property="id" column="id"/>
  7 + <result property="name" column="name"/>
  8 + <result property="deviceType" column="device_type" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
  9 + </resultMap>
5 <resultMap type="org.thingsboard.server.common.data.yunteng.dto.DeviceDTO" id="deviceMap"> 10 <resultMap type="org.thingsboard.server.common.data.yunteng.dto.DeviceDTO" id="deviceMap">
6 <result property="id" column="id"/> 11 <result property="id" column="id"/>
7 <result property="name" column="name"/> 12 <result property="name" column="name"/>
@@ -325,4 +330,53 @@ @@ -325,4 +330,53 @@
325 </if> 330 </if>
326 </where> 331 </where>
327 </select> 332 </select>
  333 +
  334 + <select id="masterDevices" resultMap="listInform">
  335 + SELECT
  336 + base.tb_device_id as id,base.name,base.device_type
  337 + FROM iotfs_device base
  338 + LEFT JOIN device tde ON tde.ID :: TEXT = base.tb_device_id
  339 + <where>
  340 + base.device_type != 'SENSOR'
  341 + <if test="tenantId !=null and tenantId !=''">
  342 + AND base.tenant_id = #{tenantId}
  343 + </if>
  344 + <if test="customerId !=null and customerId !=''">
  345 + AND tde.customer_id :: TEXT = #{customerId}
  346 + </if>
  347 + <if test="organizationIds !=null">
  348 + AND base.organization_id IN
  349 + <foreach collection="organizationIds" item="orgId" open="(" separator="," close=")">
  350 + #{orgId}
  351 + </foreach>
  352 + </if>
  353 + </where>
  354 + </select>
  355 +
  356 + <select id="slaveDevices" resultMap="listInform">
  357 + SELECT
  358 + ide.tb_device_id as id,ide.name,ide.device_type
  359 + FROM (select * from relation where relation_type_group = 'COMMON' AND relation_type = 'Created' AND from_type = 'DEVICE' AND to_type = 'DEVICE'
  360 + <if test="masterId !=null and masterId !=''">
  361 + AND from_id = #{masterId}
  362 + </if>
  363 + ) base
  364 + LEFT JOIN device tde ON base.to_id = tde.id
  365 + LEFT JOIN iotfs_device ide ON tde.ID :: TEXT = ide.tb_device_id
  366 + <where>
  367 + ide.device_type = 'SENSOR'
  368 + <if test="tenantId !=null and tenantId !=''">
  369 + AND ide.tenant_id = #{tenantId}
  370 + </if>
  371 + <if test="organizationIds !=null">
  372 + AND ide.organization_id IN
  373 + <foreach collection="organizationIds" item="orgId" open="(" separator="," close=")">
  374 + #{orgId}
  375 + </foreach>
  376 + </if>
  377 + <if test="customerId !=null and customerId !=''">
  378 + AND tde.customer_id :: TEXT = #{customerId}
  379 + </if>
  380 + </where>
  381 + </select>
328 </mapper> 382 </mapper>