From 41fda4564455acb36849e17f46a707af1a1217ab Mon Sep 17 00:00:00 2001 From: wanglei <3085637232@qq.com> Date: Tue, 30 Dec 2025 15:41:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9F=A5=E8=AF=A2=E6=97=A0?= =?UTF-8?q?=E8=B4=9F=E8=B4=A3=E4=BA=BA=E7=9A=84=E5=8C=BA=E5=9F=9F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../water/controller/web/AreaController.java | 16 ++++++++++++++++ .../com/campus/water/mapper/AreaRepository.java | 8 ++++++++ .../com/campus/water/service/AreaService.java | 9 +++++++++ 3 files changed, 33 insertions(+) diff --git a/src/main/java/com/campus/water/controller/web/AreaController.java b/src/main/java/com/campus/water/controller/web/AreaController.java index d303526..3ad45e5 100644 --- a/src/main/java/com/campus/water/controller/web/AreaController.java +++ b/src/main/java/com/campus/water/controller/web/AreaController.java @@ -114,6 +114,22 @@ public class AreaController { } } + /** + * 查询所有未设置负责人的片区 + * 权限:超级管理员/区域管理员可查看(与区域管理相关权限一致) + */ + @GetMapping("/without-manager") + @PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN')") + public ResponseEntity> getAreasWithoutManager() { + try { + List areas = areaService.getAreasWithoutManager(); + return ResponseEntity.ok(buildResponse(200, "查询无负责人片区成功", areas)); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(buildResponse(500, "查询无负责人片区失败:" + e.getMessage(), null)); + } + } + /** * 根据市区ID查询下属校园 * 权限:超级管理员/区域管理员/维修人员均可查看 diff --git a/src/main/java/com/campus/water/mapper/AreaRepository.java b/src/main/java/com/campus/water/mapper/AreaRepository.java index bbb80d1..da36134 100644 --- a/src/main/java/com/campus/water/mapper/AreaRepository.java +++ b/src/main/java/com/campus/water/mapper/AreaRepository.java @@ -49,4 +49,12 @@ public interface AreaRepository extends JpaRepository { long countByParentAreaId(String areaId); List findByAreaTypeAndParentAreaIdIsNull(Area.AreaType areaType); boolean existsByAreaId(String cityId); + + /** + * 查询没有负责人的片区(manager为null或空字符串) + * 覆盖未设置负责人的所有场景 + */ + @Query("SELECT a FROM Area a WHERE a.manager IS NULL OR a.manager = ''") + List findAreasWithoutManager(); + } \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/AreaService.java b/src/main/java/com/campus/water/service/AreaService.java index 7aaaddd..d2f7aff 100644 --- a/src/main/java/com/campus/water/service/AreaService.java +++ b/src/main/java/com/campus/water/service/AreaService.java @@ -140,6 +140,15 @@ public class AreaService { return areaRepository.findByAreaTypeAndParentAreaIdIsNull(Area.AreaType.zone); } + /** + * 获取所有未设置负责人的片区(manager为空或null) + * @return 无负责人片区列表 + */ + @Transactional(readOnly = true) // 只读事务,提升查询性能 + public List getAreasWithoutManager() { + return areaRepository.findAreasWithoutManager(); + } + /** * 根据市区ID查询下属校园 * @param cityId 市区ID(areaId) -- 2.34.1