Commit b790166a1cfe1be4fea23cad62fdd2821c4bef3f

Authored by xp.Huang
1 parent 94e1cf7f

feat: 组织下拉列表增加通过组织Id过滤

@@ -60,12 +60,13 @@ public class TkOrganizationController extends BaseController { @@ -60,12 +60,13 @@ public class TkOrganizationController extends BaseController {
60 60
61 @GetMapping("/me/list") 61 @GetMapping("/me/list")
62 @ApiOperation("下拉列表") 62 @ApiOperation("下拉列表")
63 - public ResponseEntity getMyOrganizations() throws ThingsboardException { 63 + public ResponseEntity getMyOrganizations(@RequestParam(required = false,name = "organizationId")String organizationId) throws ThingsboardException {
64 List<OrganizationDTO> result = organizationService.getMyOrganizations( 64 List<OrganizationDTO> result = organizationService.getMyOrganizations(
65 getCurrentUser().isPtSysadmin(), 65 getCurrentUser().isPtSysadmin(),
66 getCurrentUser().isPtTenantAdmin(), 66 getCurrentUser().isPtTenantAdmin(),
  67 + getCurrentUser().isCustomerUser(),
67 getCurrentUser().getCurrentTenantId(), 68 getCurrentUser().getCurrentTenantId(),
68 - getCurrentUser().getCurrentUserId()); 69 + getCurrentUser().getCurrentUserId(),organizationId);
69 return ResponseEntity.ok(result); 70 return ResponseEntity.ok(result);
70 } 71 }
71 72
@@ -73,7 +73,7 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM @@ -73,7 +73,7 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM
73 if (isCustomerOrPlatform) { 73 if (isCustomerOrPlatform) {
74 if (StringUtils.isEmpty(organizationDTO.getParentId())) { 74 if (StringUtils.isEmpty(organizationDTO.getParentId())) {
75 // 获取当前用户的最顶级组织ID的父ID 75 // 获取当前用户的最顶级组织ID的父ID
76 - List<OrganizationDTO> myOrganizations = getMyOrganizations(false, false, tenantId, userId); 76 + List<OrganizationDTO> myOrganizations = getMyOrganizations(false, false, false,tenantId, userId,null);
77 if (null != myOrganizations && myOrganizations.size() > 0) { 77 if (null != myOrganizations && myOrganizations.size() > 0) {
78 OrganizationDTO organizationDto = myOrganizations.get(0); 78 OrganizationDTO organizationDto = myOrganizations.get(0);
79 String parentId = organizationDto.getParentId(); 79 String parentId = organizationDto.getParentId();
@@ -212,10 +212,11 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM @@ -212,10 +212,11 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM
212 212
213 @Override 213 @Override
214 public List<OrganizationDTO> getMyOrganizations( 214 public List<OrganizationDTO> getMyOrganizations(
215 - boolean isPtSysAdmin, boolean isPtTenantAdmin, String tenantId, String currentUserId) { 215 + boolean isPtSysAdmin, boolean isPtTenantAdmin,boolean isCustomer, String tenantId, String currentUserId,String organizationId) {
216 // 如果是租户管理员,则返回该租户id下的所有组织 216 // 如果是租户管理员,则返回该租户id下的所有组织
217 - if (isPtTenantAdmin) {  
218 - return findOrganizationTree(tenantId); 217 + if (isPtTenantAdmin || isPtSysAdmin || !isCustomer) {
  218 + List<String> organizationIds = StringUtils.isEmpty(organizationId)?null:List.of(organizationId);
  219 + return findOrganizationTree(tenantId,organizationIds);
219 } else { 220 } else {
220 // 返回当前用户组织id集 221 // 返回当前用户组织id集
221 Set<String> organizationIds = 222 Set<String> organizationIds =
@@ -227,30 +228,28 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM @@ -227,30 +228,28 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM
227 .stream() 228 .stream()
228 .map(TkUserOrganizationMappingEntity::getOrganizationId) 229 .map(TkUserOrganizationMappingEntity::getOrganizationId)
229 .collect(Collectors.toSet()); 230 .collect(Collectors.toSet());
230 - List<TkOrganizationEntity> organizations;  
231 - if (organizationIds.size() > 0 || isPtSysAdmin) {  
232 - organizations =  
233 - baseMapper.selectList(  
234 - new QueryWrapper<TkOrganizationEntity>()  
235 - .lambda()  
236 - .eq(TkOrganizationEntity::getTenantId, tenantId)  
237 - .in(organizationIds.size() > 0, TkOrganizationEntity::getId, organizationIds)); 231 + if(!StringUtils.isEmpty(organizationId)){
  232 + organizationIds = new HashSet<>(List.of(organizationId));
  233 + }
  234 + if (organizationIds.size() > 0) {
  235 + return findOrganizationTree(tenantId, new ArrayList<>(organizationIds));
238 } else { 236 } else {
239 return null; 237 return null;
240 } 238 }
241 - return TreeUtils.buildTree(ReflectUtils.sourceToTarget(organizations, OrganizationDTO.class)); 239 +
242 } 240 }
243 } 241 }
244 242
245 /** 243 /**
246 - * 查询租户id下的所有组织 244 + * 查询租户id下的所有组织或对应组织的下级组织及本身
247 * 245 *
248 * @param tenantId 租户ID 246 * @param tenantId 租户ID
  247 + * @param organizationIds 组织IDS
249 * @return 组织列表 248 * @return 组织列表
250 */ 249 */
251 - private List<OrganizationDTO> findOrganizationTree(String tenantId) { 250 + private List<OrganizationDTO> findOrganizationTree(String tenantId,List<String> organizationIds) {
252 List<OrganizationDTO> organizationTreeList = 251 List<OrganizationDTO> organizationTreeList =
253 - baseMapper.findOrganizationTreeList(tenantId, null); 252 + baseMapper.findOrganizationTreeList(tenantId, organizationIds);
254 return buildOrganizationDTOTree(organizationTreeList); 253 return buildOrganizationDTOTree(organizationTreeList);
255 } 254 }
256 255
@@ -12,7 +12,7 @@ public interface TkOrganizationService extends BaseService<TkOrganizationEntity> @@ -12,7 +12,7 @@ public interface TkOrganizationService extends BaseService<TkOrganizationEntity>
12 boolean deleteOrganizations(DeleteDTO deleteDTO,String tenantId); 12 boolean deleteOrganizations(DeleteDTO deleteDTO,String tenantId);
13 13
14 List<OrganizationDTO> getMyOrganizations( 14 List<OrganizationDTO> getMyOrganizations(
15 - boolean isPtSysAdmin,boolean isPtTenantAdmin, String tenantId, String currentUserId); 15 + boolean isPtSysAdmin,boolean isPtTenantAdmin,boolean isCustomer, String tenantId, String currentUserId,String organizationId);
16 16
17 OrganizationDTO updateOrganization(OrganizationDTO organizationDTO, String tenantId,boolean isCustomerOrPlatform,String userId); 17 OrganizationDTO updateOrganization(OrganizationDTO organizationDTO, String tenantId,boolean isCustomerOrPlatform,String userId);
18 18