Commit 795d49714340033adeb521082f69bde9254bd388
1 parent
e7f5653c
优化查询部门接口
Showing
3 changed files
with
76 additions
and
72 deletions
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanController.java
| ... | ... | @@ -93,7 +93,7 @@ public class InspectionPlanController { |
| 93 | 93 | |
| 94 | 94 | @DeleteMapping("/delete-stop-plan") |
| 95 | 95 | @Parameter(name = "batchNo", description = "批次号", required = true) |
| 96 | - @Operation(summary = "根据batch_no删除巡检计划汇总") | |
| 96 | + @Operation(summary = "根据batch_no终止计划") | |
| 97 | 97 | @PreAuthorize("@ss.hasPermission('garden:inspection-plan:delete')") |
| 98 | 98 | public CommonResult<Boolean> stopPlanInspectionPlan(@RequestParam("batch_no") @NotBlank String batchNo) { |
| 99 | 99 | inspectionPlanService.stopPlanInspectionPlan(batchNo); | ... | ... |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/oauth2/OAuth2TokenServiceImpl.java
| ... | ... | @@ -184,7 +184,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { |
| 184 | 184 | AdminUserDO user = adminUserService.getUser(userId); |
| 185 | 185 | OAuth2RefreshTokenDO refreshToken = new OAuth2RefreshTokenDO().setRefreshToken(generateRefreshToken()) |
| 186 | 186 | .setUserId(userId).setUserType(userType) |
| 187 | - .setCompanyId(getParentDeptId(user.getDeptId())) | |
| 187 | + .setCompanyId(user.getCompanyId()) | |
| 188 | 188 | .setBusiLine(user.getBusiLine()) |
| 189 | 189 | .setClientId(clientDO.getClientId()).setScopes(scopes) |
| 190 | 190 | .setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getRefreshTokenValiditySeconds())); |
| ... | ... | @@ -192,75 +192,6 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { |
| 192 | 192 | return refreshToken; |
| 193 | 193 | } |
| 194 | 194 | |
| 195 | - private Long getParentDeptId(Long deptId) { | |
| 196 | - DeptDO dept = deptService.getDept(deptId); | |
| 197 | - if (dept == null) { | |
| 198 | - return null; | |
| 199 | - } | |
| 200 | - //顶级部门ID | |
| 201 | - if(dept.getParentId().equals(0L)) { | |
| 202 | - return dept.getId(); | |
| 203 | - } | |
| 204 | - //二级部门 | |
| 205 | - if(dept.getParentId().equals(100L)) { | |
| 206 | - return dept.getId(); | |
| 207 | - } | |
| 208 | - //一级以下查二级 | |
| 209 | - List<DeptDO> allDeptList = deptService.getSubDeptAllList(); | |
| 210 | - if (CollectionUtil.isEmpty(allDeptList)) { | |
| 211 | - return null; | |
| 212 | - } | |
| 213 | - // 构建部门ID → 部门对象的Map(核心:快速根据ID查部门) | |
| 214 | - Map<Long, DeptDO> deptMap = allDeptList.stream() | |
| 215 | - // 第一个参数:Map 的 Key(取 deptId) | |
| 216 | - // 第二个参数:Map 的 Value(取 Dept 对象本身) | |
| 217 | - .collect(Collectors.toMap(DeptDO::getId, DeptDO -> DeptDO)); | |
| 218 | - | |
| 219 | - DeptDO findDept = findDeptByTargetParentIdLoop(dept.getParentId(), 100L, deptMap); | |
| 220 | - return findDept == null ? null : findDept.getId(); | |
| 221 | - } | |
| 222 | - | |
| 223 | - /** | |
| 224 | - * 循环向上追溯,查找父部门ID等于目标值的部门对象(避免栈溢出) | |
| 225 | - * @param startDeptId 起始部门ID(指定deptId) | |
| 226 | - * @param targetParentId 目标parentId(要匹配的父部门ID) | |
| 227 | - * @param deptIdMap 部门ID映射Map | |
| 228 | - * @return 匹配的部门对象(无则返回null) | |
| 229 | - */ | |
| 230 | - public static DeptDO findDeptByTargetParentIdLoop(Long startDeptId, Long targetParentId, Map<Long, DeptDO> deptIdMap) { | |
| 231 | - // 1. 入参校验 | |
| 232 | - if (startDeptId == null || targetParentId == null || deptIdMap == null || targetParentId == 0) { | |
| 233 | - return null; | |
| 234 | - } | |
| 235 | - | |
| 236 | - Long currentDeptId = startDeptId; | |
| 237 | - while (true) { | |
| 238 | - // 2. 获取当前部门对象 | |
| 239 | - DeptDO currentDept = deptIdMap.get(currentDeptId); | |
| 240 | - if (currentDept == null) { | |
| 241 | - break; | |
| 242 | - } | |
| 243 | - | |
| 244 | - // 3. 获取当前部门的父ID(父部门的deptId) | |
| 245 | - Long parentDeptId = currentDept.getParentId(); | |
| 246 | - // 终止条件:追溯到顶级部门(parentId=0) | |
| 247 | - if (parentDeptId == 0L) { | |
| 248 | - break; | |
| 249 | - } | |
| 250 | - | |
| 251 | - // 4. 校验是否匹配目标parentId | |
| 252 | - if (parentDeptId.equals(targetParentId)) { | |
| 253 | - return currentDept; // 匹配,返回对象 | |
| 254 | - } | |
| 255 | - | |
| 256 | - // 5. 未匹配,继续追溯父部门 | |
| 257 | - currentDeptId = currentDept.getParentId(); | |
| 258 | - } | |
| 259 | - | |
| 260 | - // 遍历结束未匹配 | |
| 261 | - return null; | |
| 262 | - } | |
| 263 | - | |
| 264 | 195 | private OAuth2AccessTokenDO convertToAccessToken(OAuth2RefreshTokenDO refreshTokenDO) { |
| 265 | 196 | OAuth2AccessTokenDO accessTokenDO = BeanUtils.toBean(refreshTokenDO, OAuth2AccessTokenDO.class) |
| 266 | 197 | .setAccessToken(refreshTokenDO.getRefreshToken()); | ... | ... |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImpl.java
| ... | ... | @@ -284,7 +284,11 @@ public class AdminUserServiceImpl implements AdminUserService { |
| 284 | 284 | |
| 285 | 285 | @Override |
| 286 | 286 | public AdminUserDO getUser(Long id) { |
| 287 | - return userMapper.selectById(id); | |
| 287 | + AdminUserDO adminUserDO = userMapper.selectById(id); | |
| 288 | + if (null != adminUserDO) { | |
| 289 | + adminUserDO.setCompanyId(getParentDeptId(adminUserDO.getDeptId())); | |
| 290 | + } | |
| 291 | + return adminUserDO; | |
| 288 | 292 | } |
| 289 | 293 | |
| 290 | 294 | @Override |
| ... | ... | @@ -531,4 +535,73 @@ public class AdminUserServiceImpl implements AdminUserService { |
| 531 | 535 | return passwordEncoder.encode(password); |
| 532 | 536 | } |
| 533 | 537 | |
| 538 | + private Long getParentDeptId(Long deptId) { | |
| 539 | + DeptDO dept = deptService.getDept(deptId); | |
| 540 | + if (dept == null) { | |
| 541 | + return null; | |
| 542 | + } | |
| 543 | + //顶级部门ID | |
| 544 | + if(dept.getParentId().equals(0L)) { | |
| 545 | + return dept.getId(); | |
| 546 | + } | |
| 547 | + //二级部门 | |
| 548 | + if(dept.getParentId().equals(100L)) { | |
| 549 | + return dept.getId(); | |
| 550 | + } | |
| 551 | + //一级以下查二级 | |
| 552 | + List<DeptDO> allDeptList = deptService.getSubDeptAllList(); | |
| 553 | + if (CollectionUtil.isEmpty(allDeptList)) { | |
| 554 | + return null; | |
| 555 | + } | |
| 556 | + // 构建部门ID → 部门对象的Map(核心:快速根据ID查部门) | |
| 557 | + Map<Long, DeptDO> deptMap = allDeptList.stream() | |
| 558 | + // 第一个参数:Map 的 Key(取 deptId) | |
| 559 | + // 第二个参数:Map 的 Value(取 Dept 对象本身) | |
| 560 | + .collect(Collectors.toMap(DeptDO::getId, DeptDO -> DeptDO)); | |
| 561 | + | |
| 562 | + DeptDO findDept = findDeptByTargetParentIdLoop(dept.getParentId(), 100L, deptMap); | |
| 563 | + return findDept == null ? null : findDept.getId(); | |
| 564 | + } | |
| 565 | + | |
| 566 | + /** | |
| 567 | + * 循环向上追溯,查找父部门ID等于目标值的部门对象(避免栈溢出) | |
| 568 | + * @param startDeptId 起始部门ID(指定deptId) | |
| 569 | + * @param targetParentId 目标parentId(要匹配的父部门ID) | |
| 570 | + * @param deptIdMap 部门ID映射Map | |
| 571 | + * @return 匹配的部门对象(无则返回null) | |
| 572 | + */ | |
| 573 | + public static DeptDO findDeptByTargetParentIdLoop(Long startDeptId, Long targetParentId, Map<Long, DeptDO> deptIdMap) { | |
| 574 | + // 1. 入参校验 | |
| 575 | + if (startDeptId == null || targetParentId == null || deptIdMap == null || targetParentId == 0) { | |
| 576 | + return null; | |
| 577 | + } | |
| 578 | + | |
| 579 | + Long currentDeptId = startDeptId; | |
| 580 | + while (true) { | |
| 581 | + // 2. 获取当前部门对象 | |
| 582 | + DeptDO currentDept = deptIdMap.get(currentDeptId); | |
| 583 | + if (currentDept == null) { | |
| 584 | + break; | |
| 585 | + } | |
| 586 | + | |
| 587 | + // 3. 获取当前部门的父ID(父部门的deptId) | |
| 588 | + Long parentDeptId = currentDept.getParentId(); | |
| 589 | + // 终止条件:追溯到顶级部门(parentId=0) | |
| 590 | + if (parentDeptId == 0L) { | |
| 591 | + break; | |
| 592 | + } | |
| 593 | + | |
| 594 | + // 4. 校验是否匹配目标parentId | |
| 595 | + if (parentDeptId.equals(targetParentId)) { | |
| 596 | + return currentDept; // 匹配,返回对象 | |
| 597 | + } | |
| 598 | + | |
| 599 | + // 5. 未匹配,继续追溯父部门 | |
| 600 | + currentDeptId = currentDept.getParentId(); | |
| 601 | + } | |
| 602 | + | |
| 603 | + // 遍历结束未匹配 | |
| 604 | + return null; | |
| 605 | + } | |
| 606 | + | |
| 534 | 607 | } | ... | ... |