Commit 25e8a5d092996fe278e21a640e695bd339acd9dc
1 parent
dd1d86a3
refactor: 调整组织结构下所有组织的接口实现
1、缓存组织信息
Showing
3 changed files
with
61 additions
and
37 deletions
... | ... | @@ -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 | } | ... | ... |