Commit 25e8a5d092996fe278e21a640e695bd339acd9dc

Authored by 芯火源
1 parent dd1d86a3

refactor: 调整组织结构下所有组织的接口实现

1、缓存组织信息
... ... @@ -32,10 +32,7 @@ import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
32 32 import org.thingsboard.server.dao.device.DeviceProfileDao;
33 33 import org.thingsboard.server.dao.yunteng.entities.*;
34 34 import org.thingsboard.server.dao.yunteng.mapper.*;
35   -import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
36   -import org.thingsboard.server.dao.yunteng.service.ConvertConfigService;
37   -import org.thingsboard.server.dao.yunteng.service.ThingsModelService;
38   -import org.thingsboard.server.dao.yunteng.service.TkDeviceService;
  35 +import org.thingsboard.server.dao.yunteng.service.*;
39 36
40 37 import java.time.LocalDateTime;
41 38 import java.util.*;
... ... @@ -50,7 +47,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
50 47 private final DeviceProfileDao deviceProfileDao;
51 48 private final TkDeviceProfileMapper tkProfileMapper;
52 49
53   - private final OrganizationMapper tkOrganizationMapper;
  50 + private final TkOrganizationService organizationService;
54 51 private final SceneLinkageMapper sceneLinkageMapper;
55 52 private final TriggerMapper triggerMapper;
56 53 private final DoConditionMapper conditionMapper;
... ... @@ -133,8 +130,8 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
133 130 TenantId id = TenantId.fromUUID(UUID.fromString(deviceTenantId));
134 131 DeviceProfile deviceProfile =
135 132 deviceProfileDao.findById(id, UUID.fromString(deviceDTO.getProfileId()));
136   - TkOrganizationEntity organization =
137   - tkOrganizationMapper.selectById(deviceDTO.getOrganizationId());
  133 + OrganizationDTO organization =
  134 + organizationService.findOrganizationById(deviceTenantId,deviceDTO.getOrganizationId());
138 135 if (null == deviceProfile || null == organization) {
139 136 throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
140 137 } else if (!organization.getTenantId().equals(deviceTenantId)) {
... ... @@ -274,7 +271,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
274 271 String organizationId,
275 272 String deviceLabel,
276 273 String deviceProfileId) {
277   - List<String> orgIds = organizationAllIds(tenantId, organizationId);
  274 + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId);
278 275 if (orgIds.isEmpty()) {
279 276 throw new TkDataValidationException(ErrorMessage.ORGANIZATION_NOT_EXTIED.getMessage());
280 277 }
... ... @@ -294,7 +291,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
294 291 @Override
295 292 public List<DeviceDTO> findDevicesByTransportTypeAndOrganizationId(
296 293 String tenantId, String organizationId, DeviceTransportType transportType) {
297   - List<String> orgIds = organizationAllIds(tenantId, organizationId);
  294 + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId);
298 295 if (orgIds.isEmpty()) {
299 296 throw new TkDataValidationException(ErrorMessage.ORGANIZATION_NOT_EXTIED.getMessage());
300 297 }
... ... @@ -380,7 +377,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
380 377 String convertConfigId =
381 378 Optional.ofNullable(queryMap.get("convertConfigId")).map(Object::toString).orElse(null);
382 379 if (!StringUtils.isEmpty(organizationId)) {
383   - List<String> queryOrganizationIds = organizationAllIds(tenantId, organizationId);
  380 + List<String> queryOrganizationIds = organizationService.organizationAllIds(tenantId, organizationId);
384 381 queryMap.put("organizationIds", queryOrganizationIds);
385 382 }
386 383 // 用于数据流转已选,待选过滤============开始
... ... @@ -415,28 +412,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
415 412 return new TkPageData<>(records, deviceIPage.getTotal());
416 413 }
417 414
418   - /**
419   - * 组织结构下的所有组织ID
420   - *
421   - * @param tenantId 租户ID
422   - * @param organizationId 组织ID
423   - */
424   - @NotNull
425   - private List<String> organizationAllIds(String tenantId, String organizationId) {
426   - List<String> organizationIds = new ArrayList<>();
427   - if (StringUtils.isEmpty(organizationId)) {
428   - return organizationIds;
429   - }
430   - if (!StringUtils.isEmpty(organizationId)) {
431   - organizationIds.add(organizationId);
432   - }
433   - // 查询该组织的所有子类
434   - List<OrganizationDTO> organizationDTOS =
435   - tkOrganizationMapper.findOrganizationTreeList(tenantId, organizationIds);
436   - List<String> queryOrganizationIds = new ArrayList<>();
437   - organizationDTOS.forEach(item -> queryOrganizationIds.add(item.getId()));
438   - return queryOrganizationIds;
439   - }
  415 +
440 416
441 417 @Override
442 418 public TkPageData<RelationDeviceDTO> pageRelation(Map<String, Object> queryMap) {
... ... @@ -555,14 +531,14 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
555 531 @Override
556 532 public List<SelectItemDTO> findMasterDevices(
557 533 String tenantId, String customerId, String organizationId, String deviceProfileId) {
558   - List<String> orgIds = organizationAllIds(tenantId, organizationId);
  534 + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId);
559 535 return baseMapper.masterDevices(customerId, tenantId, orgIds, deviceProfileId);
560 536 }
561 537
562 538 @Override
563 539 public List<SelectItemDTO> findSlaveDevices(
564 540 String masterId, String tenantId, String customerId, String organizationId) {
565   - List<String> orgIds = organizationAllIds(tenantId, organizationId);
  541 + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId);
566 542 return baseMapper.slaveDevices(customerId, tenantId, orgIds, masterId);
567 543 }
568 544
... ... @@ -574,7 +550,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
574 550 @Override
575 551 public List<String> findDeviceKeys(
576 552 String tenantId, String customerId, String organizationId, List<String> deviceIds) {
577   - List<String> orgIds = organizationAllIds(tenantId, organizationId);
  553 + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId);
578 554 return baseMapper.findDeviceKeys(tenantId, customerId, orgIds, deviceIds);
579 555 }
580 556
... ... @@ -688,7 +664,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev
688 664
689 665 @Override
690 666 public List<String> rpcDevices(String tenantId, String organizationId, String projectId) {
691   - List<String> orgIds = organizationAllIds(tenantId, organizationId);
  667 + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId);
692 668
693 669 List<TkDeviceEntity> organizationDevices =
694 670 baseMapper.selectList(
... ...
... ... @@ -6,15 +6,22 @@ import com.google.common.collect.Lists;
6 6 import com.google.common.collect.Sets;
7 7 import lombok.RequiredArgsConstructor;
8 8 import org.apache.commons.lang3.StringUtils;
  9 +import org.jetbrains.annotations.NotNull;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.cache.annotation.CacheEvict;
  12 +import org.springframework.cache.annotation.Cacheable;
  13 +import org.springframework.cache.annotation.Caching;
9 14 import org.springframework.stereotype.Service;
10 15 import org.springframework.transaction.annotation.Transactional;
11 16 import org.springframework.util.Assert;
  17 +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
12 18 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
13 19 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
14 20 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
15 21 import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO;
16 22 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
17 23 import org.thingsboard.server.common.data.yunteng.utils.tree.TreeUtils;
  24 +import org.thingsboard.server.dao.cache.EntitiesCacheManager;
18 25 import org.thingsboard.server.dao.yunteng.entities.*;
19 26 import org.thingsboard.server.dao.yunteng.mapper.*;
20 27 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
... ... @@ -23,6 +30,8 @@ import org.thingsboard.server.dao.yunteng.service.TkOrganizationService;
23 30 import java.util.*;
24 31 import java.util.stream.Collectors;
25 32
  33 +import static org.thingsboard.server.common.data.CacheConstants.DEVICE_CACHE;
  34 +
26 35 @Service
27 36 @RequiredArgsConstructor
28 37 public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationMapper, TkOrganizationEntity>
... ... @@ -34,6 +43,9 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM
34 43 private final SceneLinkageMapper sceneMapper;
35 44 private final AlarmContactMapper contactMapper;
36 45
  46 + @Caching(evict= {
  47 + @CacheEvict(cacheNames = FastIotConstants.CacheConfigKey.ORGANIZATION, key = "{#tenantId, #organizationDTO.id}")
  48 + })
37 49 @Override
38 50 @Transactional
39 51 public OrganizationDTO saveOrganization(
... ... @@ -148,7 +160,9 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM
148 160 .lambda()
149 161 .in(TkUserOrganizationMappingEntity::getOrganizationId, organizationIds));
150 162 }
151   -
  163 + @Caching(evict= {
  164 + @CacheEvict(cacheNames = FastIotConstants.CacheConfigKey.ORGANIZATION, key = "{#tenantId, #organizationDTO.id}")
  165 + })
152 166 @Override
153 167 @Transactional
154 168 public OrganizationDTO updateOrganization(
... ... @@ -339,4 +353,30 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM
339 353 }
340 354 return organization.getDTO(OrganizationDTO.class);
341 355 }
  356 +
  357 +
  358 + /**
  359 + * 组织结构下的所有组织ID
  360 + *
  361 + * @param tenantId 租户ID
  362 + * @param organizationId 组织ID
  363 + */
  364 + @Cacheable(cacheNames = FastIotConstants.CacheConfigKey.ORGANIZATION, key = "{#tenantId, #organizationId}")
  365 + @Override
  366 + public List<String> organizationAllIds(String tenantId, String organizationId) {
  367 + List<String> organizationIds = new ArrayList<>();
  368 + if (StringUtils.isEmpty(organizationId)) {
  369 + return organizationIds;
  370 + }
  371 + if (!StringUtils.isEmpty(organizationId)) {
  372 + organizationIds.add(organizationId);
  373 + }
  374 + // 查询该组织的所有子类
  375 + List<OrganizationDTO> organizationDTOS =
  376 + baseMapper.findOrganizationTreeList(tenantId, organizationIds);
  377 + List<String> queryOrganizationIds = new ArrayList<>();
  378 + organizationDTOS.forEach(item -> queryOrganizationIds.add(item.getId()));
  379 + return queryOrganizationIds;
  380 + }
  381 +
342 382 }
... ...
... ... @@ -21,4 +21,12 @@ public interface TkOrganizationService extends BaseService<TkOrganizationEntity>
21 21 void unBindUserToOrganization(Set<String> userIds);
22 22
23 23 OrganizationDTO findOrganizationById(String id,String tenantId);
  24 +
  25 + /**
  26 + * 组织结构下的所有组织ID
  27 + *
  28 + * @param tenantId 租户ID
  29 + * @param organizationId 组织ID
  30 + */
  31 + List<String> organizationAllIds(String tenantId, String organizationId);
24 32 }
... ...