Commit 816d5215b8640fbe0acc2079ebdadb57019efabb

Authored by xp.Huang
2 parents 403ea2b8 01eea2e0

Merge branch 'fix/teambition/2024-10-28' into 'master_dev'

Fix/teambition/2024 10 28

See merge request yunteng/thingskit!457
@@ -393,25 +393,30 @@ public class TkDeviceController extends BaseController { @@ -393,25 +393,30 @@ public class TkDeviceController extends BaseController {
393 @ApiParam(value = "是否场景联动调用,是true") @RequestParam(value = "isSceneLinkage", required = false) Boolean isSceneLinkage, 393 @ApiParam(value = "是否场景联动调用,是true") @RequestParam(value = "isSceneLinkage", required = false) Boolean isSceneLinkage,
394 @ApiParam(value = "是否边缘分配设备调用,是true") @RequestParam(value = "isEdgeDistribution", required = false) Boolean isEdgeDistribution, 394 @ApiParam(value = "是否边缘分配设备调用,是true") @RequestParam(value = "isEdgeDistribution", required = false) Boolean isEdgeDistribution,
395 @ApiParam(value = "edgeId") @RequestParam(value = "edgeId", required = false) String edgeId, 395 @ApiParam(value = "edgeId") @RequestParam(value = "edgeId", required = false) String edgeId,
396 - @ApiParam(value = "排除边端设备是true") @RequestParam(value = "isExcludeEdge", required = false) Boolean isExcludeEdge 396 + @ApiParam(value = "排除边端设备是true") @RequestParam(value = "isExcludeEdge", required = false) Boolean isExcludeEdge,
  397 + @ApiParam(value = "排除云端设备是true") @RequestParam(value = "isExcludeCloud", required = false) Boolean isExcludeCloud
397 ) 398 )
398 throws ThingsboardException { 399 throws ThingsboardException {
399 - if(isExcludeEdge==null){  
400 - isExcludeEdge=false; 400 + if (isExcludeEdge == null) {
  401 + isExcludeEdge = false;
  402 + }
  403 + if (isExcludeCloud == null) {
  404 + isExcludeCloud = false;
401 } 405 }
402 return tkdeviceService.findDevicesByDeviceTypeAndOrganizationId( 406 return tkdeviceService.findDevicesByDeviceTypeAndOrganizationId(
403 - deviceType,  
404 - getCurrentUser().getTenantId().getId(),  
405 - organizationId,  
406 - deviceLabel,  
407 - StringUtils.isEmpty(deviceProfileId)?null:UUID.fromString(deviceProfileId),  
408 - transportType,  
409 - isSceneLinkage,  
410 - isEdgeDistribution,  
411 - StringUtils.isEmpty(edgeId)?null:UUID.fromString(edgeId),  
412 - isExcludeEdge 407 + deviceType,
  408 + getCurrentUser().getTenantId().getId(),
  409 + organizationId,
  410 + deviceLabel,
  411 + StringUtils.isEmpty(deviceProfileId) ? null : UUID.fromString(deviceProfileId),
  412 + transportType,
  413 + isSceneLinkage,
  414 + isEdgeDistribution,
  415 + StringUtils.isEmpty(edgeId) ? null : UUID.fromString(edgeId),
  416 + isExcludeEdge,
  417 + isExcludeCloud
413 ); 418 );
414 - } 419 + }
415 420
416 421
417 @PostMapping("/getListByDeviceProfileIds") 422 @PostMapping("/getListByDeviceProfileIds")
@@ -83,6 +83,21 @@ public class TkOpenApiRecordController extends BaseController { @@ -83,6 +83,21 @@ public class TkOpenApiRecordController extends BaseController {
83 return ResponseEntity.ok(openApiRecordService.getClassify(getCurrentUser().getTenantId().toString(), type)); 83 return ResponseEntity.ok(openApiRecordService.getClassify(getCurrentUser().getTenantId().toString(), type));
84 } 84 }
85 85
  86 + @GetMapping("/getCustomClassify")
  87 + @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{})")
  88 + @ApiImplicitParams(value = {
  89 + @ApiImplicitParam(name = "startTime", value = "开始时间" ,required = true),
  90 + @ApiImplicitParam(name = "endTime", value = "结束时间" ,required = true),
  91 + @ApiImplicitParam(name = "type", value = "统计类型 day以两小时为分组,month以一天为分组" ,required = true)
  92 + })
  93 + public ResponseEntity<List<OpenApiRecordClassifyAllDTO>> getCustomClassify(
  94 + @RequestParam(value = "startTime", required = true) Long startTime,
  95 + @RequestParam(value = "endTime", required = true) Long endTime,
  96 + @RequestParam(value = "type" ) String type
  97 + ) throws ThingsboardException {
  98 + return ResponseEntity.ok(openApiRecordService.getClassify(getCurrentUser().getTenantId().toString(), type,new java.util.Date(startTime),new java.util.Date(endTime)));
  99 + }
  100 +
86 101
87 @GetMapping("/getPage") 102 @GetMapping("/getPage")
88 public TkPageData<OpenApiRecordTopDTO> getPage( 103 public TkPageData<OpenApiRecordTopDTO> getPage(
@@ -19,6 +19,7 @@ import org.thingsboard.server.dao.yunteng.service.OpenApiRecordService; @@ -19,6 +19,7 @@ import org.thingsboard.server.dao.yunteng.service.OpenApiRecordService;
19 19
20 import java.sql.Time; 20 import java.sql.Time;
21 import java.util.ArrayList; 21 import java.util.ArrayList;
  22 +import java.util.Date;
22 import java.util.List; 23 import java.util.List;
23 import java.util.Map; 24 import java.util.Map;
24 import java.util.concurrent.atomic.AtomicInteger; 25 import java.util.concurrent.atomic.AtomicInteger;
@@ -126,7 +127,11 @@ public class OpenApiRecordImpl extends AbstractBaseService<OpenApiRecordMapper, @@ -126,7 +127,11 @@ public class OpenApiRecordImpl extends AbstractBaseService<OpenApiRecordMapper,
126 case "week":startTime=new java.util.Date(endTime.getTime()- HOUR_TIMESTAMP*24L*7L);break; 127 case "week":startTime=new java.util.Date(endTime.getTime()- HOUR_TIMESTAMP*24L*7L);break;
127 case "month":startTime=new java.util.Date(endTime.getTime()- HOUR_TIMESTAMP*24L*30L);break; 128 case "month":startTime=new java.util.Date(endTime.getTime()- HOUR_TIMESTAMP*24L*30L);break;
128 } 129 }
  130 + return getClassify(tenantId,type,startTime,endTime);
  131 + }
129 132
  133 + @Override
  134 + public List<OpenApiRecordClassifyAllDTO> getClassify(String tenantId, String type, Date startTime, Date endTime) {
130 List<OpenApiRecordClassifyDTO> tops = baseMapper.getClassify(tenantId,type,startTime,endTime); 135 List<OpenApiRecordClassifyDTO> tops = baseMapper.getClassify(tenantId,type,startTime,endTime);
131 List<OpenApiRecordClassifyAllDTO> allList =new ArrayList<>(); 136 List<OpenApiRecordClassifyAllDTO> allList =new ArrayList<>();
132 if(!tops.isEmpty()){ 137 if(!tops.isEmpty()){
@@ -328,7 +328,8 @@ public class TkDeviceServiceImpl extends AbstractTbBaseService<DeviceMapper, TkD @@ -328,7 +328,8 @@ public class TkDeviceServiceImpl extends AbstractTbBaseService<DeviceMapper, TkD
328 Boolean isSceneLinkage, 328 Boolean isSceneLinkage,
329 Boolean isEdgeDistribution, 329 Boolean isEdgeDistribution,
330 UUID edgeId, 330 UUID edgeId,
331 - Boolean isExcludeEdge) { 331 + Boolean isExcludeEdge,
  332 + Boolean isExcludeCloud) {
332 List<String> orgIds = organizationService.organizationAllIds(tenantId.toString(), organizationId); 333 List<String> orgIds = organizationService.organizationAllIds(tenantId.toString(), organizationId);
333 if (orgIds.isEmpty()) { 334 if (orgIds.isEmpty()) {
334 throw new TkDataValidationException(MessageUtils.message(ErrorMessage.ORGANIZATION_NOT_EXTIED.getI18nCode())); 335 throw new TkDataValidationException(MessageUtils.message(ErrorMessage.ORGANIZATION_NOT_EXTIED.getI18nCode()));
@@ -336,7 +337,7 @@ public class TkDeviceServiceImpl extends AbstractTbBaseService<DeviceMapper, TkD @@ -336,7 +337,7 @@ public class TkDeviceServiceImpl extends AbstractTbBaseService<DeviceMapper, TkD
336 337
337 List<TkDeviceEntity> listEntity = baseMapper.findDevicesByDeviceTypeAndOrganizationId(orgIds, 338 List<TkDeviceEntity> listEntity = baseMapper.findDevicesByDeviceTypeAndOrganizationId(orgIds,
338 deviceType == null ? null : deviceType.name(), 339 deviceType == null ? null : deviceType.name(),
339 - deviceLabel, deviceProfileId, transportTypeEnum,isSceneLinkage,isEdgeDistribution,edgeId,isExcludeEdge); 340 + deviceLabel, deviceProfileId, transportTypeEnum,isSceneLinkage,isEdgeDistribution,edgeId,isExcludeEdge,isExcludeCloud);
340 return listEntity.stream().map(entity -> { 341 return listEntity.stream().map(entity -> {
341 return CopyUtils.copyAndReturn(entity, new DeviceDTO()); 342 return CopyUtils.copyAndReturn(entity, new DeviceDTO());
342 } 343 }
@@ -62,7 +62,7 @@ public class TkDeviceStateLogServiceImpl @@ -62,7 +62,7 @@ public class TkDeviceStateLogServiceImpl
62 } 62 }
63 if(isPtCommonTenant){ 63 if(isPtCommonTenant){
64 List<TkDeviceEntity> devices = deviceMapper.findDevicesByDeviceTypeAndOrganizationId((List<String>) queryMap.get("orgIds"), 64 List<TkDeviceEntity> devices = deviceMapper.findDevicesByDeviceTypeAndOrganizationId((List<String>) queryMap.get("orgIds"),
65 - null,null,null,null,false,false,null,false); 65 + null,null,null,null,false,false,null,false,false);
66 List<String> finalTbDevices = new ArrayList<>(); 66 List<String> finalTbDevices = new ArrayList<>();
67 devices.forEach(item -> finalTbDevices.add(item.getTbDeviceId().toString())); 67 devices.forEach(item -> finalTbDevices.add(item.getTbDeviceId().toString()));
68 deviceIds = finalTbDevices; 68 deviceIds = finalTbDevices;
@@ -250,7 +250,7 @@ public class TkHomePageServiceImpl implements HomePageService { @@ -250,7 +250,7 @@ public class TkHomePageServiceImpl implements HomePageService {
250 totalFilter.put("organizationIds",organizationIds); 250 totalFilter.put("organizationIds",organizationIds);
251 //查询所有设备 251 //查询所有设备
252 List<TkDeviceEntity> devices = deviceMapper.findDevicesByDeviceTypeAndOrganizationId(organizationIds,null, 252 List<TkDeviceEntity> devices = deviceMapper.findDevicesByDeviceTypeAndOrganizationId(organizationIds,null,
253 - null,null,null,false,false,null,false); 253 + null,null,null,false,false,null,false,false);
254 List<String> finalTbDevices = new ArrayList<>(); 254 List<String> finalTbDevices = new ArrayList<>();
255 devices.forEach(item -> finalTbDevices.add(item.getTbDeviceId().toString())); 255 devices.forEach(item -> finalTbDevices.add(item.getTbDeviceId().toString()));
256 todayFilter.put("deviceIds",finalTbDevices); 256 todayFilter.put("deviceIds",finalTbDevices);
@@ -113,7 +113,7 @@ public class TkVideoServiceImpl extends AbstractBaseService<TkVideoMapper, TkVid @@ -113,7 +113,7 @@ public class TkVideoServiceImpl extends AbstractBaseService<TkVideoMapper, TkVid
113 List<TkVideoGbtDeviceDTO> deviceList = new ArrayList<>(); 113 List<TkVideoGbtDeviceDTO> deviceList = new ArrayList<>();
114 List<DeviceDTO> deviceDTOS = tkdeviceService.findDevicesByDeviceTypeAndOrganizationId( 114 List<DeviceDTO> deviceDTOS = tkdeviceService.findDevicesByDeviceTypeAndOrganizationId(
115 null, UUID.fromString(dto.getTenantId()),organizationId,null, 115 null, UUID.fromString(dto.getTenantId()),organizationId,null,
116 - null, TransportTypeEnum.GBT28181,false,false,null,true); 116 + null, TransportTypeEnum.GBT28181,false,false,null,true,false);
117 if(deviceDTOS.isEmpty()){ 117 if(deviceDTOS.isEmpty()){
118 return dto; 118 return dto;
119 } 119 }
@@ -165,7 +165,8 @@ public interface DeviceMapper extends BaseMapper<TkDeviceEntity> { @@ -165,7 +165,8 @@ public interface DeviceMapper extends BaseMapper<TkDeviceEntity> {
165 @Param("isSceneLinkage")Boolean isSceneLinkage, 165 @Param("isSceneLinkage")Boolean isSceneLinkage,
166 @Param("isEdgeDistribution")Boolean isEdgeDistribution, 166 @Param("isEdgeDistribution")Boolean isEdgeDistribution,
167 @Param("edgeId")UUID edgeId, 167 @Param("edgeId")UUID edgeId,
168 - @Param("isExcludeEdge")Boolean isExcludeEdge) ; 168 + @Param("isExcludeEdge")Boolean isExcludeEdge,
  169 + @Param("isExcludeCloud")Boolean isExcludeCloud) ;
169 170
170 171
171 List<DeviceDTO> findDevicesByProfileIdAndOrganizationId( 172 List<DeviceDTO> findDevicesByProfileIdAndOrganizationId(
@@ -21,4 +21,5 @@ public interface OpenApiRecordService extends BaseService<TkOpenApiRecordEntity> @@ -21,4 +21,5 @@ public interface OpenApiRecordService extends BaseService<TkOpenApiRecordEntity>
21 TkPageData<OpenApiRecordTopDTO> getPage(String tenantId,Integer page,Integer pageSize); 21 TkPageData<OpenApiRecordTopDTO> getPage(String tenantId,Integer page,Integer pageSize);
22 22
23 List<OpenApiRecordClassifyAllDTO> getClassify(String tenantId,String type); 23 List<OpenApiRecordClassifyAllDTO> getClassify(String tenantId,String type);
  24 + public List<OpenApiRecordClassifyAllDTO> getClassify(String tenantId,String type,java.util.Date startTime,java.util.Date endTime);
24 } 25 }
@@ -81,7 +81,7 @@ public interface TkDeviceService extends TbBaseService<TkDeviceEntity> { @@ -81,7 +81,7 @@ public interface TkDeviceService extends TbBaseService<TkDeviceEntity> {
81 TransportTypeEnum transportTypeEnum, 81 TransportTypeEnum transportTypeEnum,
82 Boolean isSceneLinkage, 82 Boolean isSceneLinkage,
83 Boolean isEdgeDistribution, 83 Boolean isEdgeDistribution,
84 - UUID edgeId,Boolean excludeEdge); 84 + UUID edgeId,Boolean excludeEdge,Boolean isExcludeCloud);
85 85
86 86
87 List<DeviceDTO> findDevicesByOrganizationIds( 87 List<DeviceDTO> findDevicesByOrganizationIds(
@@ -567,18 +567,16 @@ @@ -567,18 +567,16 @@
567 <include refid="basicColumns"/>,dev.transport_type 567 <include refid="basicColumns"/>,dev.transport_type
568 FROM device ifd 568 FROM device ifd
569 left join device_profile dev on ifd.device_profile_id = dev.id 569 left join device_profile dev on ifd.device_profile_id = dev.id
570 - <if test="isSceneLinkage == true">  
571 - <!--此设备是边端创建或者已经分配给边端--> 570 + <if test="isSceneLinkage == true or isExcludeEdge == true or isExcludeCloud == true">
572 LEFT JOIN relation re on re.to_id = ifd.id and re.from_type = 'EDGE' and( re.relation_type = 'ManagedByEdge' or re.relation_type = 'Contains') 571 LEFT JOIN relation re on re.to_id = ifd.id and re.from_type = 'EDGE' and( re.relation_type = 'ManagedByEdge' or re.relation_type = 'Contains')
573 </if> 572 </if>
574 -  
575 - <if test="edgeId != null">  
576 - LEFT JOIN relation re on re.to_id = ifd.id  
577 - and re.from_id =#{edgeId}  
578 - and re.from_type = 'EDGE'  
579 - and re.relation_type_group = 'EDGE'  
580 - and re.relation_type = 'Contains'  
581 - </if> 573 +<!-- <if test="edgeId != null">-->
  574 +<!-- LEFT JOIN relation re on re.to_id = ifd.id-->
  575 +<!-- and re.from_id =#{edgeId}-->
  576 +<!-- and re.from_type = 'EDGE'-->
  577 +<!-- and re.relation_type_group = 'EDGE'-->
  578 +<!-- and re.relation_type = 'Contains'-->
  579 +<!-- </if>-->
582 <if test="isEdgeDistribution == true"> 580 <if test="isEdgeDistribution == true">
583 <!--此设备是否已被场景联动使用--> 581 <!--此设备是否已被场景联动使用-->
584 LEFT JOIN tk_do_action action on action.device_id LIKE CONCAT('%',ifd.id ,'%') 582 LEFT JOIN tk_do_action action on action.device_id LIKE CONCAT('%',ifd.id ,'%')
@@ -588,14 +586,17 @@ @@ -588,14 +586,17 @@
588 where 586 where
589 1=1 587 1=1
590 <if test="isExcludeEdge == true"> 588 <if test="isExcludeEdge == true">
591 - and ifd.id not in (SELECT dev.id from device dev inner join relation re_edge on dev.id=re_edge.to_id and re_edge.from_type = 'EDGE' and re_edge.relation_type = 'ManagedByEdge') 589 + and (dev.transport_type!='GBT28181' or re.to_id is null)
  590 + </if>
  591 + <if test="isExcludeCloud == true">
  592 + and (dev.transport_type!='GBT28181' or re.to_id is not null)
592 </if> 593 </if>
593 <if test="isSceneLinkage == true"> 594 <if test="isSceneLinkage == true">
594 and re.to_id is null 595 and re.to_id is null
595 </if> 596 </if>
596 - <if test="edgeId != null">  
597 - and re.from_id is null  
598 - </if> 597 +<!-- <if test="edgeId != null">-->
  598 +<!-- and re.from_id is null-->
  599 +<!-- </if>-->
599 <if test="isEdgeDistribution == true"> 600 <if test="isEdgeDistribution == true">
600 and action.device_id is null 601 and action.device_id is null
601 and cond.entity_id is null 602 and cond.entity_id is null