From 398f9230aa3dd82f524d809e2b2f6ce9975f3d18 Mon Sep 17 00:00:00 2001 From: wangfs <15029758498@163.com> Date: Wed, 3 Dec 2025 01:04:40 +0800 Subject: [PATCH] 道路街道提交 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadController.java | 3 +-- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadStreetController.java | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadPageReqVO.java | 11 ++++++++++- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadRespVO.java | 16 ++++++++++++++-- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadSaveReqVO.java | 15 ++++++++++++--- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetPageReqVO.java | 35 +++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetRespVO.java | 43 +++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetSaveReqVO.java | 35 +++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadUpdateReqVO.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java | 17 +++++++++++++---- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadStreetDO.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadInterceptMapper.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadMapper.java | 3 +++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadStreetMapper.java | 31 +++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadService.java | 2 +- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadServiceImpl.java | 21 ++++++++++++++++++--- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetService.java | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetServiceImpl.java | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml | 4 ++++ urbanops-module-garden/src/main/resources/mapper/road/RoadInterceptMapper.xml | 12 ++++++++++++ urbanops-module-garden/src/main/resources/mapper/road/RoadStreetMapper.xml | 12 ++++++++++++ urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/dept/DeptController.java | 10 +++++++++- urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptService.java | 5 +++++ urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptServiceImpl.java | 12 +++++++++++- urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/util/DeptTreeUtil.java | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 25 files changed, 833 insertions(+), 18 deletions(-) create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadStreetController.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetPageReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetRespVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetSaveReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadUpdateReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadStreetDO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadInterceptMapper.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadStreetMapper.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetService.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetServiceImpl.java create mode 100644 urbanops-module-garden/src/main/resources/mapper/road/RoadInterceptMapper.xml create mode 100644 urbanops-module-garden/src/main/resources/mapper/road/RoadStreetMapper.xml create mode 100644 urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/util/DeptTreeUtil.java diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadController.java index b24465f..7a2aeb1 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadController.java @@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; @@ -48,7 +47,7 @@ public class RoadController { @PutMapping("/update") @Operation(summary = "更新道路管理") @PreAuthorize("@ss.hasPermission('garden:road:update')") - public CommonResult updateRoad(@Valid @RequestBody RoadSaveReqVO updateReqVO) { + public CommonResult updateRoad(@Valid @RequestBody RoadUpdateReqVO updateReqVO) { roadService.updateRoad(updateReqVO); return success(true); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadStreetController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadStreetController.java new file mode 100644 index 0000000..21e8d4c --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/RoadStreetController.java @@ -0,0 +1,113 @@ +package com.zteits.urbanops.module.garden.controller.admin.road; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; + +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; + +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zteits.urbanops.module.garden.controller.admin.road.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadStreetDO; +import com.zteits.urbanops.module.garden.service.road.RoadStreetService; + +@Tag(name = "管理后台 - 街道") +@RestController +@RequestMapping("/garden/road-street") +@Validated +public class RoadStreetController { + + @Resource + private RoadStreetService roadStreetService; + + @PostMapping("/create") + @Operation(summary = "创建街道") + @PreAuthorize("@ss.hasPermission('garden:road-street:create')") + public CommonResult createRoadStreet(@Valid @RequestBody RoadStreetSaveReqVO createReqVO) { + return success(roadStreetService.createRoadStreet(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新街道") + @PreAuthorize("@ss.hasPermission('garden:road-street:update')") + public CommonResult updateRoadStreet(@Valid @RequestBody RoadStreetSaveReqVO updateReqVO) { + roadStreetService.updateRoadStreet(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除街道") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:road-street:delete')") + public CommonResult deleteRoadStreet(@RequestParam("id") Long id) { + roadStreetService.deleteRoadStreet(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除街道") + @PreAuthorize("@ss.hasPermission('garden:road-street:delete')") + public CommonResult deleteRoadStreetList(@RequestParam("ids") List ids) { + roadStreetService.deleteRoadStreetListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得街道") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:road-street:query')") + public CommonResult getRoadStreet(@RequestParam("id") Long id) { + RoadStreetDO roadStreet = roadStreetService.getRoadStreet(id); + return success(BeanUtils.toBean(roadStreet, RoadStreetRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得街道列表") + @Parameter(name = "busi_line", description = "业务线", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:road-street:query')") + public CommonResult> getRoadStreet(@RequestParam("busi_line") @NotBlank String busiLine) { + List roadStreet = roadStreetService.getRoadStreetList(busiLine); + return success(BeanUtils.toBean(roadStreet, RoadStreetRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得街道分页") + @PreAuthorize("@ss.hasPermission('garden:road-street:query')") + public CommonResult> getRoadStreetPage(@Valid RoadStreetPageReqVO pageReqVO) { + PageResult pageResult = roadStreetService.getRoadStreetPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, RoadStreetRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出街道 Excel") + @PreAuthorize("@ss.hasPermission('garden:road-street:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportRoadStreetExcel(@Valid RoadStreetPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = roadStreetService.getRoadStreetPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "街道.xls", "数据", RoadStreetRespVO.class, + BeanUtils.toBean(list, RoadStreetRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadPageReqVO.java index 10d3f00..4cf921c 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadPageReqVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadPageReqVO.java @@ -16,15 +16,24 @@ public class RoadPageReqVO extends PageParam { @Schema(description = "道路名称", example = "赵六") private String roadName; - @Schema(description = "街道ID", example = "30480") + @Schema(description = "街道ID", example = "11139") private String streetId; @Schema(description = "街道名称", example = "赵六") private String streetName; + @Schema(description = "业务线:yl-园林;wy-物业;sz-市政") + private String busiLine; + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", example = "26337") private Integer levelId; + @Schema(description = "道路属性") + private String roadAttr; + + @Schema(description = "道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection") + private String direction; + @Schema(description = "行道树绿化面积") private String greenBeltTreeArea; diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadRespVO.java index fb2167d..518c6f8 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadRespVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadRespVO.java @@ -12,7 +12,7 @@ import cn.idev.excel.annotation.*; @ExcelIgnoreUnannotated public class RoadRespVO { - @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15456") + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24756") @ExcelProperty("ID") private Long id; @@ -20,7 +20,7 @@ public class RoadRespVO { @ExcelProperty("道路名称") private String roadName; - @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30480") + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11139") @ExcelProperty("街道ID") private String streetId; @@ -28,10 +28,22 @@ public class RoadRespVO { @ExcelProperty("街道名称") private String streetName; + @Schema(description = "业务线:yl-园林;wy-物业;sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务线:yl-园林;wy-物业;sz-市政") + private String busiLine; + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", requiredMode = Schema.RequiredMode.REQUIRED, example = "26337") @ExcelProperty("养护级别: 10:特级;11:一级:12:二级;13:三级") private Integer levelId; + @Schema(description = "道路属性") + @ExcelProperty("道路属性") + private String roadAttr; + + @Schema(description = "道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection") + private String direction; + @Schema(description = "行道树绿化面积", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("行道树绿化面积") private String greenBeltTreeArea; diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadSaveReqVO.java index c867d9d..79d858d 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadSaveReqVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadSaveReqVO.java @@ -9,13 +9,11 @@ import jakarta.validation.constraints.*; @Data public class RoadSaveReqVO { - @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15456") - private Long id; @Schema(description = "道路名称", example = "赵六") private String roadName; - @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30480") + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11139") @NotEmpty(message = "街道ID不能为空") private String streetId; @@ -23,10 +21,21 @@ public class RoadSaveReqVO { @NotEmpty(message = "街道名称不能为空") private String streetName; + @Schema(description = "业务线:yl-园林;wy-物业;sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线:yl-园林;wy-物业;sz-市政不能为空") + private String busiLine; + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", requiredMode = Schema.RequiredMode.REQUIRED, example = "26337") @NotNull(message = "养护级别: 10:特级;11:一级:12:二级;13:三级不能为空") private Integer levelId; + @Schema(description = "道路属性") + private String roadAttr; + + @Schema(description = "道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection不能为空") + private String direction; + @Schema(description = "行道树绿化面积", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "行道树绿化面积不能为空") private String greenBeltTreeArea; diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetPageReqVO.java new file mode 100644 index 0000000..458d903 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetPageReqVO.java @@ -0,0 +1,35 @@ +package com.zteits.urbanops.module.garden.controller.admin.road.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 街道分页 Request VO") +@Data +public class RoadStreetPageReqVO extends PageParam { + + @Schema(description = "街道ID", example = "8439") + private String streetId; + + @Schema(description = "街道名称", example = "芋艿") + private String streetName; + + @Schema(description = "业务线:yl-园林;wy-物业;sz-市政") + private String busiLine; + + @Schema(description = "创建者", example = "芋艿") + private String creatorName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "更新者", example = "王五") + private String updaterName; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetRespVO.java new file mode 100644 index 0000000..d31c55a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetRespVO.java @@ -0,0 +1,43 @@ +package com.zteits.urbanops.module.garden.controller.admin.road.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 街道 Response VO") +@Data +@ExcelIgnoreUnannotated +public class RoadStreetRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7534") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8439") + @ExcelProperty("街道ID") + private String streetId; + + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("街道名称") + private String streetName; + + @Schema(description = "业务线:yl-园林;wy-物业;sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务线:yl-园林;wy-物业;sz-市政") + private String busiLine; + + @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("创建者") + private String creatorName; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("更新者") + private String updaterName; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetSaveReqVO.java new file mode 100644 index 0000000..3af4882 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadStreetSaveReqVO.java @@ -0,0 +1,35 @@ +package com.zteits.urbanops.module.garden.controller.admin.road.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 街道新增/修改 Request VO") +@Data +public class RoadStreetSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7534") + private Long id; + + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8439") + @NotEmpty(message = "街道ID不能为空") + private String streetId; + + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "街道名称不能为空") + private String streetName; + + @Schema(description = "业务线:yl-园林;wy-物业;sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线:yl-园林;wy-物业;sz-市政不能为空") + private String busiLine; + + @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "创建者不能为空") + private String creatorName; + + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "更新者不能为空") + private String updaterName; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadUpdateReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadUpdateReqVO.java new file mode 100644 index 0000000..633a489 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/road/vo/RoadUpdateReqVO.java @@ -0,0 +1,103 @@ +package com.zteits.urbanops.module.garden.controller.admin.road.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 道路管理新增/修改 Request VO") +@Data +public class RoadUpdateReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15456") + @NotNull(message = "道路id不能为空") + private Long id; + + @Schema(description = "道路名称", example = "赵六") + @NotEmpty(message = "道路名称不能为空") + private String roadName; + + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11139") + @NotEmpty(message = "街道ID不能为空") + private String streetId; + + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "街道名称不能为空") + private String streetName; + + @Schema(description = "业务线:yl-园林;wy-物业;sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线:yl-园林;wy-物业;sz-市政不能为空") + private String busiLine; + + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", requiredMode = Schema.RequiredMode.REQUIRED, example = "26337") + @NotNull(message = "养护级别: 10:特级;11:一级:12:二级;13:三级不能为空") + private Integer levelId; + + @Schema(description = "道路属性") + private String roadAttr; + + @Schema(description = "道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection不能为空") + private String direction; + + @Schema(description = "行道树绿化面积", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "行道树绿化面积不能为空") + private String greenBeltTreeArea; + + @Schema(description = "绿化带面积", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "绿化带面积不能为空") + private String greenBeltArea; + + @Schema(description = "总绿化带面积", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "总绿化带面积不能为空") + private String totalArea; + + @Schema(description = "行道树(棵)面积", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "行道树(棵)面积不能为空") + private String treeArea; + + @Schema(description = "起点经度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "起点经度不能为空") + private String startingLatitude; + + @Schema(description = "起点维度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "起点维度不能为空") + private String startingLongitude; + + @Schema(description = "起点描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @NotEmpty(message = "起点描述不能为空") + private String startingRemark; + + @Schema(description = "终点经度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "终点经度不能为空") + private String endLatitude; + + @Schema(description = "终点维度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "终点维度不能为空") + private String endLongitude; + + @Schema(description = "终点描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @NotEmpty(message = "终点描述不能为空") + private String endRemark; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @NotEmpty(message = "备注不能为空") + private String remark; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2323") + @NotNull(message = "归属(一级部门id)不能为空") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "13872") + @NotNull(message = "部门ID(道路负责部门id)不能为空") + private Long deptId; + + @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "创建者不能为空") + private String creatorName; + + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "更新者不能为空") + private String updaterName; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java index b06df63..9bc2f81 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java @@ -40,10 +40,22 @@ public class RoadDO extends BaseDO { */ private String streetName; /** + * 业务线:yl-园林;wy-物业;sz-市政 + */ + private String busiLine; + /** * 养护级别: 10:特级;11:一级:12:二级;13:三级 */ private Integer levelId; /** + * 道路属性 + */ + private String roadAttr; + /** + * 道路方位 W-西 E-东 N-北 S-南 参考字典roadDirection + */ + private String direction; + /** * 行道树绿化面积 */ private String greenBeltTreeArea; @@ -104,8 +116,5 @@ public class RoadDO extends BaseDO { */ private String updaterName; - /** - * 方向 - */ - private String direction; + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadStreetDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadStreetDO.java new file mode 100644 index 0000000..4f98694 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadStreetDO.java @@ -0,0 +1,52 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.road; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; + +/** + * 街道 DO + * + * @author 超级管理员 + */ +@TableName("garden_road_street") +@KeySequence("garden_road_street_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RoadStreetDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 街道ID + */ + private String streetId; + /** + * 街道名称 + */ + private String streetName; + /** + * 业务线:yl-园林;wy-物业;sz-市政 + */ + private String busiLine; + /** + * 创建者 + */ + private String creatorName; + /** + * 更新者 + */ + private String updaterName; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadInterceptMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadInterceptMapper.java new file mode 100644 index 0000000..9a2abb1 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadInterceptMapper.java @@ -0,0 +1,46 @@ +package com.zteits.urbanops.module.garden.dal.mysql.road; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zteits.urbanops.module.garden.controller.admin.road.vo.RoadPageReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 道路管理 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface RoadInterceptMapper extends BaseMapperX { + + default PageResult selectPage(RoadPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(RoadDO::getRoadName, reqVO.getRoadName()) + .eqIfPresent(RoadDO::getStreetId, reqVO.getStreetId()) + .likeIfPresent(RoadDO::getStreetName, reqVO.getStreetName()) + .eqIfPresent(RoadDO::getBusiLine, reqVO.getBusiLine()) + .eqIfPresent(RoadDO::getLevelId, reqVO.getLevelId()) + .eqIfPresent(RoadDO::getRoadAttr, reqVO.getRoadAttr()) + .eqIfPresent(RoadDO::getDirection, reqVO.getDirection()) + .eqIfPresent(RoadDO::getGreenBeltTreeArea, reqVO.getGreenBeltTreeArea()) + .eqIfPresent(RoadDO::getGreenBeltArea, reqVO.getGreenBeltArea()) + .eqIfPresent(RoadDO::getTotalArea, reqVO.getTotalArea()) + .eqIfPresent(RoadDO::getTreeArea, reqVO.getTreeArea()) + .eqIfPresent(RoadDO::getStartingLatitude, reqVO.getStartingLatitude()) + .eqIfPresent(RoadDO::getStartingLongitude, reqVO.getStartingLongitude()) + .eqIfPresent(RoadDO::getStartingRemark, reqVO.getStartingRemark()) + .eqIfPresent(RoadDO::getEndLatitude, reqVO.getEndLatitude()) + .eqIfPresent(RoadDO::getEndLongitude, reqVO.getEndLongitude()) + .eqIfPresent(RoadDO::getEndRemark, reqVO.getEndRemark()) + .eqIfPresent(RoadDO::getRemark, reqVO.getRemark()) + .eqIfPresent(RoadDO::getCompanyId, reqVO.getCompanyId()) + .eqIfPresent(RoadDO::getDeptId, reqVO.getDeptId()) + .likeIfPresent(RoadDO::getCreatorName, reqVO.getCreatorName()) + .betweenIfPresent(RoadDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(RoadDO::getUpdaterName, reqVO.getUpdaterName()) + .orderByDesc(RoadDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadMapper.java index 406671d..3cb4265 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadMapper.java @@ -22,7 +22,10 @@ public interface RoadMapper extends BaseMapperX { .likeIfPresent(RoadDO::getRoadName, reqVO.getRoadName()) .eqIfPresent(RoadDO::getStreetId, reqVO.getStreetId()) .likeIfPresent(RoadDO::getStreetName, reqVO.getStreetName()) + .eqIfPresent(RoadDO::getBusiLine, reqVO.getBusiLine()) .eqIfPresent(RoadDO::getLevelId, reqVO.getLevelId()) + .eqIfPresent(RoadDO::getRoadAttr, reqVO.getRoadAttr()) + .eqIfPresent(RoadDO::getDirection, reqVO.getDirection()) .eqIfPresent(RoadDO::getGreenBeltTreeArea, reqVO.getGreenBeltTreeArea()) .eqIfPresent(RoadDO::getGreenBeltArea, reqVO.getGreenBeltArea()) .eqIfPresent(RoadDO::getTotalArea, reqVO.getTotalArea()) diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadStreetMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadStreetMapper.java new file mode 100644 index 0000000..911af9f --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/road/RoadStreetMapper.java @@ -0,0 +1,31 @@ +package com.zteits.urbanops.module.garden.dal.mysql.road; + +import java.util.*; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadStreetDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.road.vo.*; + +/** + * 街道 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface RoadStreetMapper extends BaseMapperX { + + default PageResult selectPage(RoadStreetPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(RoadStreetDO::getStreetId, reqVO.getStreetId()) + .likeIfPresent(RoadStreetDO::getStreetName, reqVO.getStreetName()) + .eqIfPresent(RoadStreetDO::getBusiLine, reqVO.getBusiLine()) + .likeIfPresent(RoadStreetDO::getCreatorName, reqVO.getCreatorName()) + .betweenIfPresent(RoadStreetDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(RoadStreetDO::getUpdaterName, reqVO.getUpdaterName()) + .orderByDesc(RoadStreetDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadService.java index 55e7a0c..1e8a0e0 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadService.java @@ -27,7 +27,7 @@ public interface RoadService { * * @param updateReqVO 更新信息 */ - void updateRoad(@Valid RoadSaveReqVO updateReqVO); + void updateRoad(@Valid RoadUpdateReqVO updateReqVO); /** * 删除道路管理 diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadServiceImpl.java index 9602a0a..2e43a9d 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadServiceImpl.java @@ -2,12 +2,15 @@ package com.zteits.urbanops.module.garden.service.road; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.garden.dal.mysql.road.RoadInterceptMapper; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.*; import com.zteits.urbanops.module.garden.controller.admin.road.vo.*; import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadDO; @@ -34,10 +37,22 @@ public class RoadServiceImpl implements RoadService { @Resource private RoadMapper roadMapper; + @Resource + private RoadInterceptMapper roadInterceptMapper; + @Override public Long createRoad(RoadSaveReqVO createReqVO) { + LocalDateTime now = LocalDateTime.now(); + String userId = SecurityFrameworkUtils.getLoginUserId() + ""; + String userName = SecurityFrameworkUtils.getLoginUserNickname(); // 插入 RoadDO road = BeanUtils.toBean(createReqVO, RoadDO.class); + road.setCreateTime(now); + road.setCreator(userId); + road.setCreatorName(userName); + road.setUpdateTime(now); + road.setUpdaterName(userName); + road.setUpdater(userId); roadMapper.insert(road); // 返回 @@ -45,9 +60,9 @@ public class RoadServiceImpl implements RoadService { } @Override - public void updateRoad(RoadSaveReqVO updateReqVO) { + public void updateRoad(RoadUpdateReqVO updateReqVO) { // 校验存在 - validateRoadExists(updateReqVO.getId()); + //validateRoadExists(updateReqVO.getId()); // 更新 RoadDO updateObj = BeanUtils.toBean(updateReqVO, RoadDO.class); roadMapper.updateById(updateObj); @@ -81,7 +96,7 @@ public class RoadServiceImpl implements RoadService { @Override public PageResult getRoadPage(RoadPageReqVO pageReqVO) { - return roadMapper.selectPage(pageReqVO); + return roadInterceptMapper.selectPage(pageReqVO); } @Override diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetService.java new file mode 100644 index 0000000..c15d2d0 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetService.java @@ -0,0 +1,70 @@ +package com.zteits.urbanops.module.garden.service.road; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.road.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadStreetDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 街道 Service 接口 + * + * @author 超级管理员 + */ +public interface RoadStreetService { + + /** + * 创建街道 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createRoadStreet(@Valid RoadStreetSaveReqVO createReqVO); + + /** + * 更新街道 + * + * @param updateReqVO 更新信息 + */ + void updateRoadStreet(@Valid RoadStreetSaveReqVO updateReqVO); + + /** + * 删除街道 + * + * @param id 编号 + */ + void deleteRoadStreet(Long id); + + /** + * 批量删除街道 + * + * @param ids 编号 + */ + void deleteRoadStreetListByIds(List ids); + + /** + * 获得街道 + * + * @param id 编号 + * @return 街道 + */ + RoadStreetDO getRoadStreet(Long id); + + /** + * 获得街道分页 + * + * @param pageReqVO 分页查询 + * @return 街道分页 + */ + PageResult getRoadStreetPage(RoadStreetPageReqVO pageReqVO); + + /** + * 获得街道 + * + * @param busiLine 编号 + * @return 街道 + */ + List getRoadStreetList(String busiLine); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetServiceImpl.java new file mode 100644 index 0000000..5b20c74 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/road/RoadStreetServiceImpl.java @@ -0,0 +1,94 @@ +package com.zteits.urbanops.module.garden.service.road; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +import com.zteits.urbanops.module.garden.controller.admin.road.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadStreetDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; + +import com.zteits.urbanops.module.garden.dal.mysql.road.RoadStreetMapper; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; + +/** + * 街道 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class RoadStreetServiceImpl implements RoadStreetService { + + @Resource + private RoadStreetMapper roadStreetMapper; + + @Override + public Long createRoadStreet(RoadStreetSaveReqVO createReqVO) { + // 插入 + RoadStreetDO roadStreet = BeanUtils.toBean(createReqVO, RoadStreetDO.class); + roadStreetMapper.insert(roadStreet); + + // 返回 + return roadStreet.getId(); + } + + @Override + public void updateRoadStreet(RoadStreetSaveReqVO updateReqVO) { + // 校验存在 + validateRoadStreetExists(updateReqVO.getId()); + // 更新 + RoadStreetDO updateObj = BeanUtils.toBean(updateReqVO, RoadStreetDO.class); + roadStreetMapper.updateById(updateObj); + } + + @Override + public void deleteRoadStreet(Long id) { + // 校验存在 + validateRoadStreetExists(id); + // 删除 + roadStreetMapper.deleteById(id); + } + + @Override + public void deleteRoadStreetListByIds(List ids) { + // 删除 + roadStreetMapper.deleteByIds(ids); + } + + + private void validateRoadStreetExists(Long id) { + if (roadStreetMapper.selectById(id) == null) { + //throw exception(ROAD_STREET_NOT_EXISTS); + } + } + + @Override + public RoadStreetDO getRoadStreet(Long id) { + return roadStreetMapper.selectById(id); + } + + @Override + public PageResult getRoadStreetPage(RoadStreetPageReqVO pageReqVO) { + return roadStreetMapper.selectPage(pageReqVO); + } + + @Override + public List getRoadStreetList(String busiLine) { + QueryWrapper sql = new QueryWrapper<>(); + sql.lambda().eq(RoadStreetDO::getBusiLine, busiLine).eq(RoadStreetDO::getDeleted,0); + return roadStreetMapper.selectList(sql); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml index 00f1a6e..32a3d7c 100644 --- a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml @@ -63,6 +63,10 @@ AND b.road_name LIKE CONCAT(#{req.roadName},'%') + + AND a.role_name LIKE CONCAT(#{req.roleName},'%') + + and b.company_id = #{req.companyId} diff --git a/urbanops-module-garden/src/main/resources/mapper/road/RoadInterceptMapper.xml b/urbanops-module-garden/src/main/resources/mapper/road/RoadInterceptMapper.xml new file mode 100644 index 0000000..0782905 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/road/RoadInterceptMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/road/RoadStreetMapper.xml b/urbanops-module-garden/src/main/resources/mapper/road/RoadStreetMapper.xml new file mode 100644 index 0000000..95181bf --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/road/RoadStreetMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/dept/DeptController.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/dept/DeptController.java index 74964fa..dd6fc7e 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/dept/DeptController.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/dept/DeptController.java @@ -94,12 +94,20 @@ public class DeptController { @GetMapping("/sub-list") @Operation(summary = "获取二级部门列表") - //@PreAuthorize("@ss.hasPermission('system:dept:query')") + @PreAuthorize("@ss.hasPermission('system:dept:query')") public CommonResult> getSubDeptList() { List list = deptService.getSubDeptList(); return success(BeanUtils.toBean(list, DeptRespVO.class)); } + @GetMapping("/last-list") + @Operation(summary = "获取最末级部门列表") + @PreAuthorize("@ss.hasPermission('system:dept:query')") + public CommonResult> getLastDeptList(@RequestParam("id") Long id) { + List list = deptService.getLastDeptList(id); + return success(BeanUtils.toBean(list, DeptRespVO.class)); + } + @GetMapping("/sub-list-id") @Operation(summary = "根据id获取子部门列表") @PreAuthorize("@ss.hasPermission('system:dept:query')") diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptService.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptService.java index 3bd853b..05418bc 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptService.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptService.java @@ -139,4 +139,9 @@ public interface DeptService { */ List getSubDeptAllList(); + /** + * 查询所有最末级部门信息 + * @return 末级list + */ + List getLastDeptList(Long id); } diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptServiceImpl.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptServiceImpl.java index 8620def..a938030 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptServiceImpl.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptServiceImpl.java @@ -2,6 +2,7 @@ package com.zteits.urbanops.module.system.service.dept; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zteits.urbanops.framework.common.enums.CommonStatusEnum; import com.zteits.urbanops.framework.common.util.object.BeanUtils; import com.zteits.urbanops.framework.datapermission.core.annotation.DataPermission; @@ -11,6 +12,7 @@ import com.zteits.urbanops.module.system.dal.dataobject.dept.DeptDO; import com.zteits.urbanops.module.system.dal.mysql.dept.DeptMapper; import com.zteits.urbanops.module.system.dal.redis.RedisKeyConstants; import com.google.common.annotations.VisibleForTesting; +import com.zteits.urbanops.module.system.util.DeptTreeUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -247,6 +249,14 @@ public class DeptServiceImpl implements DeptService { @Override public List getSubDeptAllList() { - return deptMapper.selectList(); + QueryWrapper sql = new QueryWrapper<>(); + sql.lambda().eq(DeptDO::getDeleted, 0); + return deptMapper.selectList(sql); + } + + @Override + public List getLastDeptList(Long id) { + List allList = getSubDeptAllList(); + return DeptTreeUtil.findLeafDeptDOs(allList, id); } } diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/util/DeptTreeUtil.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/util/DeptTreeUtil.java new file mode 100644 index 0000000..37b3569 --- /dev/null +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/util/DeptTreeUtil.java @@ -0,0 +1,86 @@ +package com.zteits.urbanops.module.system.util; + +import com.zteits.urbanops.module.system.dal.dataobject.dept.DeptDO; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 部门树形结构工具类 + */ +public class DeptTreeUtil { + + /** + * 预构建parentId -> 子部门列表的映射(提升查找效率) + * @param allDeptDOs 全量部门列表 + * @return 父ID映射表 + */ + private static Map> buildParentDeptDOMap(List allDeptDOs) { + return allDeptDOs.stream() + .collect(Collectors.groupingBy(DeptDO::getParentId, Collectors.toList())); + } + + // ==================== 1. 查找指定部门的所有下级节点(所有层级) ==================== + /** + * 迭代式(广度优先)查找所有下级节点(避免递归栈溢出) + * @param allDeptDOs 全量部门列表 + * @param parentDeptDOId 目标父部门ID + * @return 所有下级部门列表 + */ + public static List findAllChildrenDeptDOs(List allDeptDOs, Long parentDeptDOId) { + if (allDeptDOs == null || allDeptDOs.isEmpty() || parentDeptDOId == null) { + return Collections.emptyList(); + } + // 预构建父ID映射表 + Map> parentDeptDOMap = buildParentDeptDOMap(allDeptDOs); + + List result = new ArrayList<>(); + Queue queue = new LinkedList<>(); + queue.offer(parentDeptDOId); + + while (!queue.isEmpty()) { + Long currentParentId = queue.poll(); + // 获取当前父ID的直接子节点 + List directChildren = parentDeptDOMap.getOrDefault(currentParentId, Collections.emptyList()); + result.addAll(directChildren); + // 子节点ID入队,继续遍历其子节点 + directChildren.forEach(child -> queue.offer(child.getId())); + } + return result; + } + + // ==================== 2. 查找指定部门下的最末端部门(叶子节点) ==================== + /** + * 迭代式查找最末端部门(无下级的部门) + * @param allDeptDOs 全量部门列表 + * @param parentDeptId 目标父部门ID + * @return 所有叶子节点部门 + */ + public static List findLeafDeptDOs(List allDeptDOs, Long parentDeptId) { + if (allDeptDOs == null || allDeptDOs.isEmpty() || parentDeptId == null) { + return Collections.emptyList(); + } + // 预构建父ID映射表(判断是否有子节点的核心) + Map> parentDeptDOMap = buildParentDeptDOMap(allDeptDOs); + + List leafDeptDOs = new ArrayList<>(); + Queue queue = new LinkedList<>(); + queue.offer(parentDeptId); + + while (!queue.isEmpty()) { + Long currentParentId = queue.poll(); + List directChildren = parentDeptDOMap.getOrDefault(currentParentId, Collections.emptyList()); + + for (DeptDO child : directChildren) { + // 判断当前子节点是否有下级:无则为叶子节点 + if (!parentDeptDOMap.containsKey(child.getId()) || parentDeptDOMap.get(child.getId()).isEmpty()) { + leafDeptDOs.add(child); + } else { + // 有下级则继续遍历 + queue.offer(child.getId()); + } + } + } + return leafDeptDOs; + } +} \ No newline at end of file -- libgit2 0.21.4