Commit 816d5215b8640fbe0acc2079ebdadb57019efabb
Merge branch 'fix/teambition/2024-10-28' into 'master_dev'
Fix/teambition/2024 10 28 See merge request yunteng/thingskit!457
Showing
11 changed files
with
64 additions
and
35 deletions
@@ -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 |