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,10 +32,7 @@ import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; | ||
32 | import org.thingsboard.server.dao.device.DeviceProfileDao; | 32 | import org.thingsboard.server.dao.device.DeviceProfileDao; |
33 | import org.thingsboard.server.dao.yunteng.entities.*; | 33 | import org.thingsboard.server.dao.yunteng.entities.*; |
34 | import org.thingsboard.server.dao.yunteng.mapper.*; | 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 | import java.time.LocalDateTime; | 37 | import java.time.LocalDateTime; |
41 | import java.util.*; | 38 | import java.util.*; |
@@ -50,7 +47,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -50,7 +47,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
50 | private final DeviceProfileDao deviceProfileDao; | 47 | private final DeviceProfileDao deviceProfileDao; |
51 | private final TkDeviceProfileMapper tkProfileMapper; | 48 | private final TkDeviceProfileMapper tkProfileMapper; |
52 | 49 | ||
53 | - private final OrganizationMapper tkOrganizationMapper; | 50 | + private final TkOrganizationService organizationService; |
54 | private final SceneLinkageMapper sceneLinkageMapper; | 51 | private final SceneLinkageMapper sceneLinkageMapper; |
55 | private final TriggerMapper triggerMapper; | 52 | private final TriggerMapper triggerMapper; |
56 | private final DoConditionMapper conditionMapper; | 53 | private final DoConditionMapper conditionMapper; |
@@ -133,8 +130,8 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -133,8 +130,8 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
133 | TenantId id = TenantId.fromUUID(UUID.fromString(deviceTenantId)); | 130 | TenantId id = TenantId.fromUUID(UUID.fromString(deviceTenantId)); |
134 | DeviceProfile deviceProfile = | 131 | DeviceProfile deviceProfile = |
135 | deviceProfileDao.findById(id, UUID.fromString(deviceDTO.getProfileId())); | 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 | if (null == deviceProfile || null == organization) { | 135 | if (null == deviceProfile || null == organization) { |
139 | throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | 136 | throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); |
140 | } else if (!organization.getTenantId().equals(deviceTenantId)) { | 137 | } else if (!organization.getTenantId().equals(deviceTenantId)) { |
@@ -274,7 +271,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -274,7 +271,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
274 | String organizationId, | 271 | String organizationId, |
275 | String deviceLabel, | 272 | String deviceLabel, |
276 | String deviceProfileId) { | 273 | String deviceProfileId) { |
277 | - List<String> orgIds = organizationAllIds(tenantId, organizationId); | 274 | + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId); |
278 | if (orgIds.isEmpty()) { | 275 | if (orgIds.isEmpty()) { |
279 | throw new TkDataValidationException(ErrorMessage.ORGANIZATION_NOT_EXTIED.getMessage()); | 276 | throw new TkDataValidationException(ErrorMessage.ORGANIZATION_NOT_EXTIED.getMessage()); |
280 | } | 277 | } |
@@ -294,7 +291,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -294,7 +291,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
294 | @Override | 291 | @Override |
295 | public List<DeviceDTO> findDevicesByTransportTypeAndOrganizationId( | 292 | public List<DeviceDTO> findDevicesByTransportTypeAndOrganizationId( |
296 | String tenantId, String organizationId, DeviceTransportType transportType) { | 293 | String tenantId, String organizationId, DeviceTransportType transportType) { |
297 | - List<String> orgIds = organizationAllIds(tenantId, organizationId); | 294 | + List<String> orgIds = organizationService.organizationAllIds(tenantId, organizationId); |
298 | if (orgIds.isEmpty()) { | 295 | if (orgIds.isEmpty()) { |
299 | throw new TkDataValidationException(ErrorMessage.ORGANIZATION_NOT_EXTIED.getMessage()); | 296 | throw new TkDataValidationException(ErrorMessage.ORGANIZATION_NOT_EXTIED.getMessage()); |
300 | } | 297 | } |
@@ -380,7 +377,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -380,7 +377,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
380 | String convertConfigId = | 377 | String convertConfigId = |
381 | Optional.ofNullable(queryMap.get("convertConfigId")).map(Object::toString).orElse(null); | 378 | Optional.ofNullable(queryMap.get("convertConfigId")).map(Object::toString).orElse(null); |
382 | if (!StringUtils.isEmpty(organizationId)) { | 379 | if (!StringUtils.isEmpty(organizationId)) { |
383 | - List<String> queryOrganizationIds = organizationAllIds(tenantId, organizationId); | 380 | + List<String> queryOrganizationIds = organizationService.organizationAllIds(tenantId, organizationId); |
384 | queryMap.put("organizationIds", queryOrganizationIds); | 381 | queryMap.put("organizationIds", queryOrganizationIds); |
385 | } | 382 | } |
386 | // 用于数据流转已选,待选过滤============开始 | 383 | // 用于数据流转已选,待选过滤============开始 |
@@ -415,28 +412,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -415,28 +412,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
415 | return new TkPageData<>(records, deviceIPage.getTotal()); | 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 | @Override | 417 | @Override |
442 | public TkPageData<RelationDeviceDTO> pageRelation(Map<String, Object> queryMap) { | 418 | public TkPageData<RelationDeviceDTO> pageRelation(Map<String, Object> queryMap) { |
@@ -555,14 +531,14 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -555,14 +531,14 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
555 | @Override | 531 | @Override |
556 | public List<SelectItemDTO> findMasterDevices( | 532 | public List<SelectItemDTO> findMasterDevices( |
557 | String tenantId, String customerId, String organizationId, String deviceProfileId) { | 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 | return baseMapper.masterDevices(customerId, tenantId, orgIds, deviceProfileId); | 535 | return baseMapper.masterDevices(customerId, tenantId, orgIds, deviceProfileId); |
560 | } | 536 | } |
561 | 537 | ||
562 | @Override | 538 | @Override |
563 | public List<SelectItemDTO> findSlaveDevices( | 539 | public List<SelectItemDTO> findSlaveDevices( |
564 | String masterId, String tenantId, String customerId, String organizationId) { | 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 | return baseMapper.slaveDevices(customerId, tenantId, orgIds, masterId); | 542 | return baseMapper.slaveDevices(customerId, tenantId, orgIds, masterId); |
567 | } | 543 | } |
568 | 544 | ||
@@ -574,7 +550,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -574,7 +550,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
574 | @Override | 550 | @Override |
575 | public List<String> findDeviceKeys( | 551 | public List<String> findDeviceKeys( |
576 | String tenantId, String customerId, String organizationId, List<String> deviceIds) { | 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 | return baseMapper.findDeviceKeys(tenantId, customerId, orgIds, deviceIds); | 554 | return baseMapper.findDeviceKeys(tenantId, customerId, orgIds, deviceIds); |
579 | } | 555 | } |
580 | 556 | ||
@@ -688,7 +664,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | @@ -688,7 +664,7 @@ public class TkDeviceServiceImpl extends AbstractBaseService<DeviceMapper, TkDev | ||
688 | 664 | ||
689 | @Override | 665 | @Override |
690 | public List<String> rpcDevices(String tenantId, String organizationId, String projectId) { | 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 | List<TkDeviceEntity> organizationDevices = | 669 | List<TkDeviceEntity> organizationDevices = |
694 | baseMapper.selectList( | 670 | baseMapper.selectList( |
@@ -6,15 +6,22 @@ import com.google.common.collect.Lists; | @@ -6,15 +6,22 @@ import com.google.common.collect.Lists; | ||
6 | import com.google.common.collect.Sets; | 6 | import com.google.common.collect.Sets; |
7 | import lombok.RequiredArgsConstructor; | 7 | import lombok.RequiredArgsConstructor; |
8 | import org.apache.commons.lang3.StringUtils; | 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 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
10 | import org.springframework.transaction.annotation.Transactional; | 15 | import org.springframework.transaction.annotation.Transactional; |
11 | import org.springframework.util.Assert; | 16 | import org.springframework.util.Assert; |
17 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | ||
12 | import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; | 18 | import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; |
13 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | 19 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
14 | import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | 20 | import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; |
15 | import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; | 21 | import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO; |
16 | import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; | 22 | import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; |
17 | import org.thingsboard.server.common.data.yunteng.utils.tree.TreeUtils; | 23 | import org.thingsboard.server.common.data.yunteng.utils.tree.TreeUtils; |
24 | +import org.thingsboard.server.dao.cache.EntitiesCacheManager; | ||
18 | import org.thingsboard.server.dao.yunteng.entities.*; | 25 | import org.thingsboard.server.dao.yunteng.entities.*; |
19 | import org.thingsboard.server.dao.yunteng.mapper.*; | 26 | import org.thingsboard.server.dao.yunteng.mapper.*; |
20 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | 27 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; |
@@ -23,6 +30,8 @@ import org.thingsboard.server.dao.yunteng.service.TkOrganizationService; | @@ -23,6 +30,8 @@ import org.thingsboard.server.dao.yunteng.service.TkOrganizationService; | ||
23 | import java.util.*; | 30 | import java.util.*; |
24 | import java.util.stream.Collectors; | 31 | import java.util.stream.Collectors; |
25 | 32 | ||
33 | +import static org.thingsboard.server.common.data.CacheConstants.DEVICE_CACHE; | ||
34 | + | ||
26 | @Service | 35 | @Service |
27 | @RequiredArgsConstructor | 36 | @RequiredArgsConstructor |
28 | public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationMapper, TkOrganizationEntity> | 37 | public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationMapper, TkOrganizationEntity> |
@@ -34,6 +43,9 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -34,6 +43,9 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
34 | private final SceneLinkageMapper sceneMapper; | 43 | private final SceneLinkageMapper sceneMapper; |
35 | private final AlarmContactMapper contactMapper; | 44 | private final AlarmContactMapper contactMapper; |
36 | 45 | ||
46 | + @Caching(evict= { | ||
47 | + @CacheEvict(cacheNames = FastIotConstants.CacheConfigKey.ORGANIZATION, key = "{#tenantId, #organizationDTO.id}") | ||
48 | + }) | ||
37 | @Override | 49 | @Override |
38 | @Transactional | 50 | @Transactional |
39 | public OrganizationDTO saveOrganization( | 51 | public OrganizationDTO saveOrganization( |
@@ -148,7 +160,9 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -148,7 +160,9 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
148 | .lambda() | 160 | .lambda() |
149 | .in(TkUserOrganizationMappingEntity::getOrganizationId, organizationIds)); | 161 | .in(TkUserOrganizationMappingEntity::getOrganizationId, organizationIds)); |
150 | } | 162 | } |
151 | - | 163 | + @Caching(evict= { |
164 | + @CacheEvict(cacheNames = FastIotConstants.CacheConfigKey.ORGANIZATION, key = "{#tenantId, #organizationDTO.id}") | ||
165 | + }) | ||
152 | @Override | 166 | @Override |
153 | @Transactional | 167 | @Transactional |
154 | public OrganizationDTO updateOrganization( | 168 | public OrganizationDTO updateOrganization( |
@@ -339,4 +353,30 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -339,4 +353,30 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
339 | } | 353 | } |
340 | return organization.getDTO(OrganizationDTO.class); | 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,4 +21,12 @@ public interface TkOrganizationService extends BaseService<TkOrganizationEntity> | ||
21 | void unBindUserToOrganization(Set<String> userIds); | 21 | void unBindUserToOrganization(Set<String> userIds); |
22 | 22 | ||
23 | OrganizationDTO findOrganizationById(String id,String tenantId); | 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 | } |