diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanController.java new file mode 100644 index 0000000..9989986 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanController.java @@ -0,0 +1,115 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan; + +import jakarta.validation.constraints.NotBlank; +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.*; +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.inspectionplan.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanService; + +@Tag(name = "管理后台 - 巡检计划汇总") +@RestController +@RequestMapping("/garden/inspection-plan") +@Validated +public class InspectionPlanController { + + @Resource + private InspectionPlanService inspectionPlanService; + + @PostMapping("/create") + @Operation(summary = "创建巡检计划汇总") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:create')") + public CommonResult createInspectionPlan(@Valid @RequestBody InspectionPlanSaveReqVO createReqVO) { + return inspectionPlanService.createInspectionPlan(createReqVO); + } + + @PutMapping("/update") + @Operation(summary = "更新巡检计划汇总") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:update')") + public CommonResult updateInspectionPlan(@Valid @RequestBody InspectionPlanUpdateReqVO updateReqVO) { + inspectionPlanService.updateInspectionPlan(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除巡检计划汇总") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:delete')") + public CommonResult deleteInspectionPlan(@RequestParam("id") Long id) { + inspectionPlanService.deleteInspectionPlan(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除巡检计划汇总") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:delete')") + public CommonResult deleteInspectionPlanList(@RequestParam("ids") List ids) { + inspectionPlanService.deleteInspectionPlanListByIds(ids); + return success(true); + } + + @DeleteMapping("/delete-batch_no") + @Parameter(name = "batchNo", description = "批次号", required = true) + @Operation(summary = "根据batch_no删除巡检计划汇总") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:delete')") + public CommonResult deleteInspectionPlanByBatchNo(@RequestParam("batch_no") @NotBlank String batchNo) { + inspectionPlanService.deleteInspectionPlanByBatchNo(batchNo); + return success(true); + } + + + + @GetMapping("/get") + @Operation(summary = "获得巡检计划汇总") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:query')") + public CommonResult getInspectionPlan(@RequestParam("id") Long id) { + InspectionPlanDO inspectionPlan = inspectionPlanService.getInspectionPlan(id); + return success(BeanUtils.toBean(inspectionPlan, InspectionPlanRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得巡检计划汇总分页") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:query')") + public CommonResult> getInspectionPlanPage(@Valid InspectionPlanPageReqVO pageReqVO) { + PageResult pageResult = inspectionPlanService.getInspectionPlanPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, InspectionPlanRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出巡检计划汇总 Excel") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportInspectionPlanExcel(@Valid InspectionPlanPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = inspectionPlanService.getInspectionPlanPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "巡检计划汇总.xls", "数据", InspectionPlanRespVO.class, + BeanUtils.toBean(list, InspectionPlanRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanDetailController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanDetailController.java new file mode 100644 index 0000000..8f82cb0 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanDetailController.java @@ -0,0 +1,101 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan; + +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanDetailPageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanDetailRespVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanDetailSaveReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDetailDO; +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanDetailService; +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.*; + + +@Tag(name = "管理后台 - 巡检计划") +@RestController +@RequestMapping("/garden/inspection-plan-detail") +@Validated +public class InspectionPlanDetailController { + + @Resource + private InspectionPlanDetailService inspectionPlanDetailService; + + + + @PutMapping("/update") + @Operation(summary = "更新巡检计划") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-detail:update')") + public CommonResult updateInspectionPlanDetail(@Valid @RequestBody InspectionPlanDetailSaveReqVO updateReqVO) { + inspectionPlanDetailService.updateInspectionPlanDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除巡检计划") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-detail:delete')") + public CommonResult deleteInspectionPlanDetail(@RequestParam("id") Long id) { + inspectionPlanDetailService.deleteInspectionPlanDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除巡检计划") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-detail:delete')") + public CommonResult deleteInspectionPlanDetailList(@RequestParam("ids") List ids) { + inspectionPlanDetailService.deleteInspectionPlanDetailListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得巡检计划") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-detail:query')") + public CommonResult getInspectionPlanDetail(@RequestParam("id") Long id) { + InspectionPlanDetailDO inspectionPlanDetail = inspectionPlanDetailService.getInspectionPlanDetail(id); + return success(BeanUtils.toBean(inspectionPlanDetail, InspectionPlanDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得巡检计划分页") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-detail:query')") + public CommonResult> getInspectionPlanDetailPage(@Valid InspectionPlanDetailPageReqVO pageReqVO) { + PageResult pageResult = inspectionPlanDetailService.getInspectionPlanDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, InspectionPlanDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出巡检计划 Excel") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportInspectionPlanDetailExcel(@Valid InspectionPlanDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = inspectionPlanDetailService.getInspectionPlanDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "巡检计划.xls", "数据", InspectionPlanDetailRespVO.class, + BeanUtils.toBean(list, InspectionPlanDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanRoleController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanRoleController.java new file mode 100644 index 0000000..0f2ddc5 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanRoleController.java @@ -0,0 +1,106 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan; + +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRolePageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRoleRespVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRoleSaveReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanRoleDO; +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanRoleService; +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.*; + + +@Tag(name = "管理后台 - 巡检计划角色") +@RestController +@RequestMapping("/garden/inspection-plan-role") +@Validated +public class InspectionPlanRoleController { + + @Resource + private InspectionPlanRoleService inspectionPlanRoleService; + + @PostMapping("/create") + @Operation(summary = "创建巡检计划角色") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-role:create')") + public CommonResult createInspectionPlanRole(@Valid @RequestBody InspectionPlanRoleSaveReqVO createReqVO) { + return success(inspectionPlanRoleService.createInspectionPlanRole(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新巡检计划角色") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-role:update')") + public CommonResult updateInspectionPlanRole(@Valid @RequestBody InspectionPlanRoleSaveReqVO updateReqVO) { + inspectionPlanRoleService.updateInspectionPlanRole(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除巡检计划角色") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-role:delete')") + public CommonResult deleteInspectionPlanRole(@RequestParam("id") Long id) { + inspectionPlanRoleService.deleteInspectionPlanRole(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除巡检计划角色") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-role:delete')") + public CommonResult deleteInspectionPlanRoleList(@RequestParam("ids") List ids) { + inspectionPlanRoleService.deleteInspectionPlanRoleListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得巡检计划角色") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-role:query')") + public CommonResult getInspectionPlanRole(@RequestParam("id") Long id) { + InspectionPlanRoleDO inspectionPlanRole = inspectionPlanRoleService.getInspectionPlanRole(id); + return success(BeanUtils.toBean(inspectionPlanRole, InspectionPlanRoleRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得巡检计划角色分页") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-role:query')") + public CommonResult> getInspectionPlanRolePage(@Valid InspectionPlanRolePageReqVO pageReqVO) { + PageResult pageResult = inspectionPlanRoleService.getInspectionPlanRolePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, InspectionPlanRoleRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出巡检计划角色 Excel") + @PreAuthorize("@ss.hasPermission('garden:inspection-plan-role:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportInspectionPlanRoleExcel(@Valid InspectionPlanRolePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = inspectionPlanRoleService.getInspectionPlanRolePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "巡检计划角色.xls", "数据", InspectionPlanRoleRespVO.class, + BeanUtils.toBean(list, InspectionPlanRoleRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailPageReqVO.java new file mode 100644 index 0000000..37000ea --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailPageReqVO.java @@ -0,0 +1,56 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import jakarta.validation.constraints.NotEmpty; +import lombok.*; + +import java.time.LocalDate; +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 InspectionPlanDetailPageReqVO extends PageParam { + + @Schema(description = "批次号") + @NotEmpty(message = "批次号不能为空") + private String batchNo; + + @Schema(description = "计划编码") + private String planNo; + + @Schema(description = "业务线: yl-园林;wy-物业:sz-市政") + private String busiLine; + + @Schema(description = "归属(一级部门id)", example = "1951") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", example = "16561") + private Long deptId; + + @Schema(description = "道路ID", example = "32704") + private Long roadId; + + @Schema(description = "排序号:第n次计划") + private Integer sortNum; + + @Schema(description = "执行开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] beginTime; + + @Schema(description = "执行时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] endTime; + + @Schema(description = "完成状态 1:未完成;2:进行中;3:已完成") + private Integer finishState; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailRespVO.java new file mode 100644 index 0000000..9c7fb4b --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailRespVO.java @@ -0,0 +1,65 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +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 InspectionPlanDetailRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16197") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("批次号") + private String batchNo; + + @Schema(description = "计划编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计划编码") + private String planNo; + + @Schema(description = "业务线: yl-园林;wy-物业:sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务线: yl-园林;wy-物业:sz-市政") + private String busiLine; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1951") + @ExcelProperty("归属(一级部门id)") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16561") + @ExcelProperty("部门ID(道路负责部门id)") + private Long deptId; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32704") + @ExcelProperty("道路ID") + private Long roadId; + + @Schema(description = "排序号:第n次计划", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("排序号:第n次计划") + private Integer sortNum; + + @Schema(description = "执行开始时间") + @ExcelProperty("执行开始时间") + private LocalDate beginTime; + + @Schema(description = "执行时间") + @ExcelProperty("执行时间") + private LocalDate endTime; + + @Schema(description = "完成状态 1:未完成;2:进行中;3:已完成", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("完成状态 1:未完成;2:进行中;3:已完成") + private Integer finishState; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailSaveReqVO.java new file mode 100644 index 0000000..60de1fe --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanDetailSaveReqVO.java @@ -0,0 +1,55 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 巡检计划新增/修改 Request VO") +@Data +public class InspectionPlanDetailSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16197") + private Long id; + + @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "批次号不能为空") + private String batchNo; + + @Schema(description = "计划编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计划编码不能为空") + private String planNo; + + @Schema(description = "业务线: yl-园林;wy-物业:sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线: yl-园林;wy-物业:sz-市政不能为空") + private String busiLine; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1951") + @NotNull(message = "归属(一级部门id)不能为空") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16561") + @NotNull(message = "部门ID(道路负责部门id)不能为空") + private Long deptId; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32704") + @NotNull(message = "道路ID不能为空") + private Long roadId; + + @Schema(description = "排序号:第n次计划", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "排序号:第n次计划不能为空") + private Integer sortNum; + + @Schema(description = "执行开始时间") + private LocalDate beginTime; + + @Schema(description = "执行时间") + private LocalDate endTime; + + @Schema(description = "完成状态 1:未完成;2:进行中;3:已完成", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "完成状态 1:未完成;2:进行中;3:已完成不能为空") + private Integer finishState; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanPageReqVO.java new file mode 100644 index 0000000..6d4dc00 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanPageReqVO.java @@ -0,0 +1,46 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import lombok.*; +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 InspectionPlanPageReqVO extends PageParam { + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "计划名称", example = "张三") + private String planName; + + + @Schema(description = "计划属性:1:标准计划;2:临时计划") + private Integer planAttr; + + @Schema(description = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;", example = "24742") + private Integer planTypeId; + + @Schema(description = "归属(一级部门id)", example = "20800") + private Long companyId; + + @Schema(description = "道路名称", example = "赵六") + private String roadName; + + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", example = "8588") + private Integer levelId; + + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] beginTime; + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRespVO.java new file mode 100644 index 0000000..06cf25e --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRespVO.java @@ -0,0 +1,101 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fhs.core.trans.anno.Trans; +import com.fhs.core.trans.constant.TransType; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; +import org.apache.ibatis.type.JdbcType; + +@Schema(description = "管理后台 - 巡检计划汇总 Response VO") +@Data +@ExcelIgnoreUnannotated +public class InspectionPlanRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10938") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("批次号") + private String batchNo; + + @Schema(description = "计划名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("计划名称") + private String planName; + + @Schema(description = "业务线: yl-园林;wy-物业:sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务线: yl-园林;wy-物业:sz-市政") + private String busiLine; + + @Schema(description = "计划属性:1:标准计划;2:临时计划", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计划属性:1:标准计划;2:临时计划") + private Integer planAttr; + + @Schema(description = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;", requiredMode = Schema.RequiredMode.REQUIRED, example = "24742") + @ExcelProperty("养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;") + private Integer planTypeId; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "20800") + @ExcelProperty("归属(一级部门id)") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16445") + @ExcelProperty("部门ID(道路负责部门id)") + private Long deptId; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15557") + @ExcelProperty("道路ID") + private Long roadId; + + @Schema(description = "道路名称", example = "赵六") + @ExcelProperty("道路名称") + private String roadName; + + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", requiredMode = Schema.RequiredMode.REQUIRED, example = "8588") + @ExcelProperty("养护级别: 10:特级;11:一级:12:二级;13:三级") + private Integer levelId; + + @Schema(description = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次", requiredMode = Schema.RequiredMode.REQUIRED, example = "6415") + @ExcelProperty("周期ID: 1:日/次;2:周/次;3:月/次;4:年/次") + private Integer cycleId; + + @Schema(description = "计划次数", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计划次数") + private Integer planNum; + + @Schema(description = "已完成次数", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("已完成次数") + private Integer planFinishNum; + + @Schema(description = "完成状态 1:未完成;2:已完成", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("完成状态 1:未完成;2:已完成") + private Integer finishState; + + @Schema(description = "开始时间") + @ExcelProperty("开始时间") + private LocalDateTime beginTime; + + @Schema(description = "开始时间") + @ExcelProperty("开始时间") + private LocalDateTime endTime; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Trans(type = TransType.SIMPLE, target = InspectionPlanDO.class, fields = {"creator", "creatorName"}, refs = {"creator", "creatorName"}) + @TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR) + private String creator; + + private String creatorName; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoadReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoadReqVO.java new file mode 100644 index 0000000..b9c31a5 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoadReqVO.java @@ -0,0 +1,21 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 巡检计划汇总新增/修改 Request VO") +@Data +public class InspectionPlanRoadReqVO { + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16445") + @NotNull(message = "部门ID(道路负责部门id)不能为空") + private Long deptId; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15557") + @NotNull(message = "道路ID不能为空") + private Long roadId; + + @Schema(description = "道路名称", example = "赵六") + private String roadName; +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRolePageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRolePageReqVO.java new file mode 100644 index 0000000..9e3d732 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRolePageReqVO.java @@ -0,0 +1,32 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.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 InspectionPlanRolePageReqVO extends PageParam { + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "归属(一级部门id)", example = "12346") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", example = "22415") + private Long deptId; + + @Schema(description = "角色ID", example = "21343") + private Long roleId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoleRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoleRespVO.java new file mode 100644 index 0000000..aac6168 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoleRespVO.java @@ -0,0 +1,39 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.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 InspectionPlanRoleRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4778") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("批次号") + private String batchNo; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "12346") + @ExcelProperty("归属(一级部门id)") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "22415") + @ExcelProperty("部门ID(道路负责部门id)") + private Long deptId; + + @Schema(description = "角色ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21343") + @ExcelProperty("角色ID") + private Long roleId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoleSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoleSaveReqVO.java new file mode 100644 index 0000000..f902cdf --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanRoleSaveReqVO.java @@ -0,0 +1,31 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.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 InspectionPlanRoleSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4778") + private Long id; + + @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "批次号不能为空") + private String batchNo; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "12346") + @NotNull(message = "归属(一级部门id)不能为空") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "22415") + @NotNull(message = "部门ID(道路负责部门id)不能为空") + private Long deptId; + + @Schema(description = "角色ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21343") + @NotNull(message = "角色ID不能为空") + private Long roleId; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanSaveReqVO.java new file mode 100644 index 0000000..d860813 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanSaveReqVO.java @@ -0,0 +1,69 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import jakarta.validation.constraints.*; + + +@Schema(description = "管理后台 - 巡检计划汇总新增/修改 Request VO") +@Data +public class InspectionPlanSaveReqVO { + + @Schema(description = "计划名称后缀", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "张三") + private String planNameSuffix; + + @Schema(description = "业务线: yl-园林;wy-物业:sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线: yl-园林;wy-物业:sz-市政不能为空") + private String busiLine; + + @Schema(description = "计划属性:1:标准计划;2:临时计划", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "计划属性:1:标准计划;2:临时计划不能为空") + private Integer planAttr; + + @Schema(description = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;", requiredMode = Schema.RequiredMode.REQUIRED, example = "24742") + @NotNull(message = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;不能为空") + private Integer planTypeId; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "20800") + @NotNull(message = "归属(一级部门id)不能为空") + private Long companyId; + + @Schema(description = "道路信息", requiredMode = Schema.RequiredMode.REQUIRED, example = "[{\"deptId\":11,\"roadId\":1,\"roadName\":\"测试\"}]") + @Size(min = 1) + @Valid + private List roadListReqVO; + + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", requiredMode = Schema.RequiredMode.REQUIRED, example = "8588") + @NotNull(message = "养护级别: 10:特级;11:一级:12:二级;13:三级不能为空") + private Integer levelId; + + @Schema(description = "频次值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "频次值不能为空") + private String rateValue; + + @Schema(description = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次不能为空") + @Min(1) + @Max(4) + private Integer cycleId; + + @Schema(description = "开始时间") + private LocalDate beginTime; + + @Schema(description = "开始时间") + private LocalDate endTime; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @NotEmpty(message = "备注不能为空") + private String remark; + + @NotNull(message = "角色Ids不能为空") + @Schema(description = "角色Ids", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2]") + @Size(min = 1) + private Set roleIds; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanUpdateReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanUpdateReqVO.java new file mode 100644 index 0000000..7788a86 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanUpdateReqVO.java @@ -0,0 +1,74 @@ +package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 巡检计划汇总新增/修改 Request VO") +@Data +public class InspectionPlanUpdateReqVO { + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10938") + private Long id; + + + @Schema(description = "业务线: yl-园林;wy-物业:sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线: yl-园林;wy-物业:sz-市政不能为空") + private String busiLine; + + @Schema(description = "计划属性:1:标准计划;2:临时计划", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "计划属性:1:标准计划;2:临时计划不能为空") + private Integer planAttr; + + @Schema(description = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;", requiredMode = Schema.RequiredMode.REQUIRED, example = "24742") + @NotNull(message = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;不能为空") + private Integer planTypeId; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "20800") + @NotNull(message = "归属(一级部门id)不能为空") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16445") + @NotNull(message = "部门ID(道路负责部门id)不能为空") + private Long deptId; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15557") + @NotNull(message = "道路ID不能为空") + private Long roadId; + + @Schema(description = "道路名称", example = "赵六") + private String roadName; + + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", requiredMode = Schema.RequiredMode.REQUIRED, example = "8588") + @NotNull(message = "养护级别: 10:特级;11:一级:12:二级;13:三级不能为空") + private Integer levelId; + + @Schema(description = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次", requiredMode = Schema.RequiredMode.REQUIRED, example = "6415") + @NotNull(message = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次不能为空") + private Integer cycleId; + + @Schema(description = "计划次数", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "计划次数不能为空") + private Integer planNum; + + @Schema(description = "已完成次数", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "已完成次数不能为空") + private Integer planFinishNum; + + @Schema(description = "完成状态 1:未完成;2:已完成", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "完成状态 1:未完成;2:已完成不能为空") + private Integer finishState; + + @Schema(description = "开始时间") + private LocalDateTime beginTime; + + @Schema(description = "开始时间") + private LocalDateTime endTime; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @NotEmpty(message = "备注不能为空") + private String remark; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanDO.java new file mode 100644 index 0000000..cc1df2b --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanDO.java @@ -0,0 +1,98 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan; + +import lombok.*; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; + +/** + * 巡检计划汇总 DO + * + * @author 超级管理员 + */ +@TableName("garden_inspection_plan") +@KeySequence("garden_inspection_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class InspectionPlanDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 批次号 + */ + private String batchNo; + /** + * 计划名称 + */ + private String planName; + /** + * 业务线: yl-园林;wy-物业:sz-市政 + */ + private String busiLine; + /** + * 计划属性:1:标准计划;2:临时计划 + */ + private Integer planAttr; + /** + * 养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视; + */ + private Integer planTypeId; + /** + * 归属(一级部门id) + */ + private Long companyId; + /** + * 部门ID(道路负责部门id) + */ + private Long deptId; + /** + * 道路ID + */ + private Long roadId; + /** + * 道路名称 + */ + private String roadName; + /** + * 养护级别: 10:特级;11:一级:12:二级;13:三级 + */ + private Integer levelId; + /** + * 周期ID: 1:日/次;2:周/次;3:月/次;4:年/次 + */ + private Integer cycleId; + /** + * 计划次数 + */ + private Integer planNum; + /** + * 已完成次数 + */ + private Integer planFinishNum; + /** + * 完成状态 1:未完成;2:已完成 + */ + private Integer finishState; + /** + * 开始时间 + */ + private LocalDateTime beginTime; + /** + * 开始时间 + */ + private LocalDateTime endTime; + /** + * 备注 + */ + private String remark; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanDetailDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanDetailDO.java new file mode 100644 index 0000000..f05ef64 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanDetailDO.java @@ -0,0 +1,74 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan; + +import lombok.*; + +import java.time.LocalDate; +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_inspection_plan_detail") +@KeySequence("garden_inspection_plan_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class InspectionPlanDetailDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 批次号 + */ + private String batchNo; + /** + * 计划编码 + */ + private String planNo; + /** + * 业务线: yl-园林;wy-物业:sz-市政 + */ + private String busiLine; + /** + * 归属(一级部门id) + */ + private Long companyId; + /** + * 部门ID(道路负责部门id) + */ + private Long deptId; + /** + * 道路ID + */ + private Long roadId; + /** + * 排序号:第n次计划 + */ + private Integer sortNum; + /** + * 执行开始时间 + */ + private LocalDate beginTime; + /** + * 执行时间 + */ + private LocalDate endTime; + /** + * 完成状态 1:未完成;2:进行中;3:已完成 + */ + private Integer finishState; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanRoleDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanRoleDO.java new file mode 100644 index 0000000..35e11d7 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanRoleDO.java @@ -0,0 +1,48 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan; + +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_inspection_plan_role") +@KeySequence("garden_inspection_plan_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class InspectionPlanRoleDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 批次号 + */ + private String batchNo; + /** + * 归属(一级部门id) + */ + private Long companyId; + /** + * 部门ID(道路负责部门id) + */ + private Long deptId; + /** + * 角色ID + */ + private Long roleId; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanDetailMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanDetailMapper.java new file mode 100644 index 0000000..134d027 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanDetailMapper.java @@ -0,0 +1,36 @@ +package com.zteits.urbanops.module.garden.dal.mysql.inspectionplan; + +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.inspectionplan.InspectionPlanDetailDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; + +/** + * 巡检计划 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface InspectionPlanDetailMapper extends BaseMapperX { + + default PageResult selectPage(InspectionPlanDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(InspectionPlanDetailDO::getBatchNo, reqVO.getBatchNo()) + .eqIfPresent(InspectionPlanDetailDO::getPlanNo, reqVO.getPlanNo()) + .eqIfPresent(InspectionPlanDetailDO::getBusiLine, reqVO.getBusiLine()) + .eqIfPresent(InspectionPlanDetailDO::getCompanyId, reqVO.getCompanyId()) + .eqIfPresent(InspectionPlanDetailDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(InspectionPlanDetailDO::getRoadId, reqVO.getRoadId()) + .eqIfPresent(InspectionPlanDetailDO::getSortNum, reqVO.getSortNum()) + .betweenIfPresent(InspectionPlanDetailDO::getBeginTime, reqVO.getBeginTime()) + .betweenIfPresent(InspectionPlanDetailDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(InspectionPlanDetailDO::getFinishState, reqVO.getFinishState()) + .betweenIfPresent(InspectionPlanDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(InspectionPlanDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanMapper.java new file mode 100644 index 0000000..c5b6040 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanMapper.java @@ -0,0 +1,33 @@ +package com.zteits.urbanops.module.garden.dal.mysql.inspectionplan; + + +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.inspectionplan.InspectionPlanDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; + +/** + * 巡检计划汇总 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface InspectionPlanMapper extends BaseMapperX { + + default PageResult selectPage(InspectionPlanPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(InspectionPlanDO::getBatchNo, reqVO.getBatchNo()) + .likeIfPresent(InspectionPlanDO::getPlanName, reqVO.getPlanName()) + .eqIfPresent(InspectionPlanDO::getPlanAttr, reqVO.getPlanAttr()) + .eqIfPresent(InspectionPlanDO::getPlanTypeId, reqVO.getPlanTypeId()) + .eqIfPresent(InspectionPlanDO::getCompanyId, reqVO.getCompanyId()) + .likeIfPresent(InspectionPlanDO::getRoadName, reqVO.getRoadName()) + .eqIfPresent(InspectionPlanDO::getLevelId, reqVO.getLevelId()) + .betweenIfPresent(InspectionPlanDO::getBeginTime, reqVO.getBeginTime()) + .betweenIfPresent(InspectionPlanDO::getEndTime, reqVO.getEndTime()) + .orderByDesc(InspectionPlanDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanRoleMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanRoleMapper.java new file mode 100644 index 0000000..af39264 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanRoleMapper.java @@ -0,0 +1,30 @@ +package com.zteits.urbanops.module.garden.dal.mysql.inspectionplan; + +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.controller.admin.inspectionplan.vo.InspectionPlanRolePageReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanRoleDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 巡检计划角色 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface InspectionPlanRoleMapper extends BaseMapperX { + + default PageResult selectPage(InspectionPlanRolePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(InspectionPlanRoleDO::getBatchNo, reqVO.getBatchNo()) + .eqIfPresent(InspectionPlanRoleDO::getCompanyId, reqVO.getCompanyId()) + .eqIfPresent(InspectionPlanRoleDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(InspectionPlanRoleDO::getRoleId, reqVO.getRoleId()) + .betweenIfPresent(InspectionPlanRoleDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(InspectionPlanRoleDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java index 674be0e..20f10e1 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java @@ -52,4 +52,10 @@ public interface ErrorCodeConstants { ErrorCode WASTE_RECORD_NOT_EXISTS = new ErrorCode(1-100-003-012, "园林废弃物录入不存在"); ErrorCode WATER_FEE_NOT_EXISTS = new ErrorCode(1-100-003-013, "水费录入信息不存在"); + + // ========== 巡检计划汇总 TODO 补充编号 ========== + ErrorCode INSPECTION_PLAN_NOT_EXISTS = new ErrorCode(1-200-100-001, "巡检计划汇总不存在"); + ErrorCode INSPECTION_CYCLE_ID_ERROR = new ErrorCode(1-200-100-002, "周期id错误"); + ErrorCode INSPECTION_CYCLE_ERROR = new ErrorCode(1-200-100-003, "获取两个时间之间间隔天数错误"); + ErrorCode INSPECTION_PLAN_EXISTS = new ErrorCode(1-200-100-004, "道路对应类型已存在记录"); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/FinishStateEnum.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/FinishStateEnum.java new file mode 100644 index 0000000..fe76530 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/FinishStateEnum.java @@ -0,0 +1,29 @@ +package com.zteits.urbanops.module.garden.enums; + + +public enum FinishStateEnum { + + /** + * 未完成 + */ + NOT_FINISHED(1), + /** + * 已完成 + */ + FINISHED(2), + ; + + FinishStateEnum(Integer status) { + this.status = status; + } + + private Integer status; + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java new file mode 100644 index 0000000..5baa472 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java @@ -0,0 +1,7 @@ +package com.zteits.urbanops.module.garden.enums; + +public class PlanConstants { + + /*计划属性-字典key*/ + public static final String GARDEN_PLAN_ATTR_REDIS_KEY = "garden_plan_attr"; +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanDetailService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanDetailService.java new file mode 100644 index 0000000..f811bd3 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanDetailService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.service.inspectionplan; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDetailDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 巡检计划 Service 接口 + * + * @author 超级管理员 + */ +public interface InspectionPlanDetailService { + + /** + * 创建巡检计划 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createInspectionPlanDetail(@Valid InspectionPlanDetailSaveReqVO createReqVO); + + /** + * 更新巡检计划 + * + * @param updateReqVO 更新信息 + */ + void updateInspectionPlanDetail(@Valid InspectionPlanDetailSaveReqVO updateReqVO); + + /** + * 删除巡检计划 + * + * @param id 编号 + */ + void deleteInspectionPlanDetail(Long id); + + /** + * 批量删除巡检计划 + * + * @param ids 编号 + */ + void deleteInspectionPlanDetailListByIds(List ids); + + /** + * 获得巡检计划 + * + * @param id 编号 + * @return 巡检计划 + */ + InspectionPlanDetailDO getInspectionPlanDetail(Long id); + + /** + * 获得巡检计划分页 + * + * @param pageReqVO 分页查询 + * @return 巡检计划分页 + */ + PageResult getInspectionPlanDetailPage(InspectionPlanDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanDetailServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanDetailServiceImpl.java new file mode 100644 index 0000000..c957a76 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanDetailServiceImpl.java @@ -0,0 +1,85 @@ +package com.zteits.urbanops.module.garden.service.inspectionplan; + +import cn.hutool.core.collection.CollUtil; +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.inspectionplan.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDetailDO; +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.inspectionplan.InspectionPlanDetailMapper; + +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 InspectionPlanDetailServiceImpl implements InspectionPlanDetailService { + + @Resource + private InspectionPlanDetailMapper inspectionPlanDetailMapper; + + @Override + public Long createInspectionPlanDetail(InspectionPlanDetailSaveReqVO createReqVO) { + // 插入 + InspectionPlanDetailDO inspectionPlanDetail = BeanUtils.toBean(createReqVO, InspectionPlanDetailDO.class); + inspectionPlanDetailMapper.insert(inspectionPlanDetail); + + // 返回 + return inspectionPlanDetail.getId(); + } + + @Override + public void updateInspectionPlanDetail(InspectionPlanDetailSaveReqVO updateReqVO) { + // 校验存在 + validateInspectionPlanDetailExists(updateReqVO.getId()); + // 更新 + InspectionPlanDetailDO updateObj = BeanUtils.toBean(updateReqVO, InspectionPlanDetailDO.class); + inspectionPlanDetailMapper.updateById(updateObj); + } + + @Override + public void deleteInspectionPlanDetail(Long id) { + // 校验存在 + validateInspectionPlanDetailExists(id); + // 删除 + inspectionPlanDetailMapper.deleteById(id); + } + + @Override + public void deleteInspectionPlanDetailListByIds(List ids) { + // 删除 + inspectionPlanDetailMapper.deleteByIds(ids); + } + + + private void validateInspectionPlanDetailExists(Long id) { + if (inspectionPlanDetailMapper.selectById(id) == null) { + //throw exception(INSPECTION_PLAN_DETAIL_NOT_EXISTS); + } + } + + @Override + public InspectionPlanDetailDO getInspectionPlanDetail(Long id) { + return inspectionPlanDetailMapper.selectById(id); + } + + @Override + public PageResult getInspectionPlanDetailPage(InspectionPlanDetailPageReqVO pageReqVO) { + return inspectionPlanDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanRoleService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanRoleService.java new file mode 100644 index 0000000..ee16b6e --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanRoleService.java @@ -0,0 +1,63 @@ +package com.zteits.urbanops.module.garden.service.inspectionplan; + +import java.util.*; + +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRolePageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRoleSaveReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanRoleDO; +import jakarta.validation.*; +import com.zteits.urbanops.framework.common.pojo.PageResult; + +/** + * 巡检计划角色 Service 接口 + * + * @author 超级管理员 + */ +public interface InspectionPlanRoleService { + + /** + * 创建巡检计划角色 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createInspectionPlanRole(@Valid InspectionPlanRoleSaveReqVO createReqVO); + + /** + * 更新巡检计划角色 + * + * @param updateReqVO 更新信息 + */ + void updateInspectionPlanRole(@Valid InspectionPlanRoleSaveReqVO updateReqVO); + + /** + * 删除巡检计划角色 + * + * @param id 编号 + */ + void deleteInspectionPlanRole(Long id); + + /** + * 批量删除巡检计划角色 + * + * @param ids 编号 + */ + void deleteInspectionPlanRoleListByIds(List ids); + + /** + * 获得巡检计划角色 + * + * @param id 编号 + * @return 巡检计划角色 + */ + InspectionPlanRoleDO getInspectionPlanRole(Long id); + + /** + * 获得巡检计划角色分页 + * + * @param pageReqVO 分页查询 + * @return 巡检计划角色分页 + */ + PageResult getInspectionPlanRolePage(InspectionPlanRolePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanRoleServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanRoleServiceImpl.java new file mode 100644 index 0000000..136b539 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanRoleServiceImpl.java @@ -0,0 +1,77 @@ +package com.zteits.urbanops.module.garden.service.inspectionplan; + +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRolePageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRoleSaveReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanRoleDO; +import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanRoleMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; + +/** + * 巡检计划角色 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class InspectionPlanRoleServiceImpl implements InspectionPlanRoleService { + + @Resource + private InspectionPlanRoleMapper inspectionPlanRoleMapper; + + @Override + public Long createInspectionPlanRole(InspectionPlanRoleSaveReqVO createReqVO) { + // 插入 + InspectionPlanRoleDO inspectionPlanRole = BeanUtils.toBean(createReqVO, InspectionPlanRoleDO.class); + inspectionPlanRoleMapper.insert(inspectionPlanRole); + + // 返回 + return inspectionPlanRole.getId(); + } + + @Override + public void updateInspectionPlanRole(InspectionPlanRoleSaveReqVO updateReqVO) { + // 校验存在 + validateInspectionPlanRoleExists(updateReqVO.getId()); + // 更新 + InspectionPlanRoleDO updateObj = BeanUtils.toBean(updateReqVO, InspectionPlanRoleDO.class); + inspectionPlanRoleMapper.updateById(updateObj); + } + + @Override + public void deleteInspectionPlanRole(Long id) { + // 校验存在 + validateInspectionPlanRoleExists(id); + // 删除 + inspectionPlanRoleMapper.deleteById(id); + } + + @Override + public void deleteInspectionPlanRoleListByIds(List ids) { + // 删除 + inspectionPlanRoleMapper.deleteByIds(ids); + } + + + private void validateInspectionPlanRoleExists(Long id) { + if (inspectionPlanRoleMapper.selectById(id) == null) { + //throw exception(""); + } + } + + @Override + public InspectionPlanRoleDO getInspectionPlanRole(Long id) { + return inspectionPlanRoleMapper.selectById(id); + } + + @Override + public PageResult getInspectionPlanRolePage(InspectionPlanRolePageReqVO pageReqVO) { + return inspectionPlanRoleMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java new file mode 100644 index 0000000..d55b45c --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java @@ -0,0 +1,69 @@ +package com.zteits.urbanops.module.garden.service.inspectionplan; + +import java.util.*; + +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; + +/** + * 巡检计划汇总 Service 接口 + * + * @author 超级管理员 + */ +public interface InspectionPlanService { + + /** + * 创建巡检计划汇总 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + CommonResult createInspectionPlan(@Valid InspectionPlanSaveReqVO createReqVO); + + /** + * 更新巡检计划汇总 + * + * @param updateReqVO 更新信息 + */ + void updateInspectionPlan(@Valid InspectionPlanUpdateReqVO updateReqVO); + + /** + * 删除巡检计划汇总 + * + * @param id 编号 + */ + void deleteInspectionPlan(Long id); + + /** + * 批量删除巡检计划汇总 + * + * @param ids 编号 + */ + void deleteInspectionPlanListByIds(List ids); + + /** + * 获得巡检计划汇总 + * + * @param id 编号 + * @return 巡检计划汇总 + */ + InspectionPlanDO getInspectionPlan(Long id); + + /** + * 获得巡检计划汇总分页 + * + * @param pageReqVO 分页查询 + * @return 巡检计划汇总分页 + */ + PageResult getInspectionPlanPage(InspectionPlanPageReqVO pageReqVO); + + /** + * 根据批次号删除 + * @param batchNo 批次号 + */ + void deleteInspectionPlanByBatchNo(String batchNo); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java new file mode 100644 index 0000000..a053192 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java @@ -0,0 +1,209 @@ +package com.zteits.urbanops.module.garden.service.inspectionplan; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.util.collection.CollectionUtils; +import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDetailDO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanRoleDO; +import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanDetailMapper; +import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanRoleMapper; +import com.zteits.urbanops.module.garden.enums.FinishStateEnum; +import com.zteits.urbanops.module.garden.enums.PlanConstants; +import com.zteits.urbanops.module.garden.util.TimeIntervalCalculatorUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; + +import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanMapper; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; + +/** + * 巡检计划汇总 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +@Slf4j +public class InspectionPlanServiceImpl implements InspectionPlanService { + + @Resource + private InspectionPlanMapper inspectionPlanMapper; + + @Resource + private InspectionPlanDetailMapper inspectionPlanDetailMapper; + + @Resource + private InspectionPlanRoleMapper inspectionPlanRoleMapper; + + @Transactional(rollbackFor = Exception.class) + @Override + public CommonResult createInspectionPlan(InspectionPlanSaveReqVO createReqVO) { + //存在性校验 + validateInspectionPlanExists(createReqVO); + LocalDateTime now = LocalDateTime.now(); + String userName = SecurityFrameworkUtils.getLoginUserId()+""; + int rateValue; + if (createReqVO.getRateValue().contains("/")) { + rateValue = Integer.parseInt(createReqVO.getRateValue().split("/")[1]); + } else { + rateValue = Integer.parseInt(createReqVO.getRateValue()); + } + //计算开始和计算时间 在间隔周期下每天的次数 + List betweenDayList = TimeIntervalCalculatorUtil.calculateIntervals(createReqVO.getBeginTime(), createReqVO.getEndTime(), createReqVO.getCycleId(), rateValue); + if (CollectionUtils.isAnyEmpty(betweenDayList)) { + log.warn("获取两个时间之间间隔天数错误"); + return CommonResult.error(INSPECTION_CYCLE_ERROR); + } + //计算计划次数 + Integer planNum = betweenDayList.size(); + InspectionPlanDO inspectionPlan = BeanUtils.toBean(createReqVO, InspectionPlanDO.class); + AtomicInteger count = new AtomicInteger(); + + //按照道路创建计划 + createReqVO.getRoadListReqVO().forEach(roadReqVO -> { + String batchNo = "BN" + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomInt(1000); + inspectionPlan.setBatchNo(batchNo); + inspectionPlan.setPlanFinishNum(0); + inspectionPlan.setFinishState(FinishStateEnum.NOT_FINISHED.getStatus()); + inspectionPlan.setPlanNum(planNum); + inspectionPlan.setCreateTime(now); + inspectionPlan.setUpdateTime(now); + inspectionPlan.setCreator(userName); + inspectionPlan.setUpdater(userName); + inspectionPlan.setDeptId(roadReqVO.getDeptId()); + inspectionPlan.setRoadId(roadReqVO.getRoadId()); + inspectionPlan.setRoadName(roadReqVO.getRoadName()); + //计划属性label + String planAttrLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.GARDEN_PLAN_ATTR_REDIS_KEY, createReqVO.getPlanAttr()); + inspectionPlan.setPlanName(roadReqVO.getRoadName() + planAttrLabel + createReqVO.getPlanNameSuffix()); + /*1.插入巡查计划*/ + count.addAndGet(inspectionPlanMapper.insert(inspectionPlan)); + /*2.插入角色*/ + createReqVO.getRoleIds().forEach(roleId -> { + InspectionPlanRoleDO inspectionPlanRoleDO = new InspectionPlanRoleDO(); + inspectionPlanRoleDO.setBatchNo(batchNo); + inspectionPlanRoleDO.setCompanyId(createReqVO.getCompanyId()); + inspectionPlanRoleDO.setDeptId(roadReqVO.getDeptId()); + inspectionPlanRoleDO.setCreateTime(now); + inspectionPlanRoleDO.setUpdateTime(now); + inspectionPlanRoleDO.setCreator(userName); + inspectionPlanRoleDO.setUpdater(userName); + inspectionPlanRoleDO.setRoleId(roleId); + inspectionPlanRoleMapper.insert(inspectionPlanRoleDO); + }); + /*3.插入巡查计划明细*/ + for (int i = 0; i < betweenDayList.size(); i++) { + String[] dateStr = betweenDayList.get(i).split("/"); + InspectionPlanDetailDO entity = getInspectionPlanDetailDO(batchNo, createReqVO, roadReqVO, now, userName); + entity.setSortNum(i+1); + entity.setBeginTime(LocalDate.parse(dateStr[0], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + entity.setEndTime(LocalDate.parse(dateStr[1], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + + inspectionPlanDetailMapper.insert(entity); + } + }); + + // 返回 + return CommonResult.success(count.longValue()); + } + + private InspectionPlanDetailDO getInspectionPlanDetailDO(String batchNo, InspectionPlanSaveReqVO saveReqVO, + InspectionPlanRoadReqVO roadReqVO, LocalDateTime now, String userName) { + InspectionPlanDetailDO entity = new InspectionPlanDetailDO(); + entity.setBatchNo(batchNo); + entity.setPlanNo("P" + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomInt(1000)); + entity.setBusiLine(saveReqVO.getBusiLine()); + entity.setCompanyId(saveReqVO.getCompanyId()); + entity.setDeptId(roadReqVO.getDeptId()); + entity.setRoadId(roadReqVO.getRoadId()); + entity.setFinishState(FinishStateEnum.NOT_FINISHED.getStatus()); + entity.setCreator(userName); + entity.setUpdater(userName); + entity.setCreateTime(now); + entity.setUpdateTime(now); + return entity; + } + + @Override + public void updateInspectionPlan(InspectionPlanUpdateReqVO updateReqVO) { + // 校验存在 + validateInspectionPlanExists(updateReqVO.getId()); + // 更新 + InspectionPlanDO updateObj = BeanUtils.toBean(updateReqVO, InspectionPlanDO.class); + inspectionPlanMapper.updateById(updateObj); + } + + @Override + public void deleteInspectionPlan(Long id) { + // 校验存在 + validateInspectionPlanExists(id); + // 删除 + inspectionPlanMapper.deleteById(id); + } + + @Override + public void deleteInspectionPlanListByIds(List ids) { + // 删除 + inspectionPlanMapper.deleteByIds(ids); + } + + + private void validateInspectionPlanExists(InspectionPlanSaveReqVO req) { + Set roadIds = req.getRoadListReqVO().stream().map(InspectionPlanRoadReqVO::getRoadId).collect(Collectors.toSet()); + QueryWrapper sql = new QueryWrapper<>(); + sql.lambda().eq(InspectionPlanDO::getPlanTypeId, req.getPlanTypeId()) + .in(InspectionPlanDO::getRoadId, roadIds) + .between(InspectionPlanDO::getBeginTime, req.getBeginTime(), req.getEndTime()); + + Long count = inspectionPlanMapper.selectCount(sql); + if (count > 0) { + throw exception(INSPECTION_PLAN_EXISTS); + } + } + + private void validateInspectionPlanExists(Long id) { + if (inspectionPlanMapper.selectById(id) == null) { + throw exception(INSPECTION_PLAN_NOT_EXISTS); + } + } + + + @Override + public InspectionPlanDO getInspectionPlan(Long id) { + return inspectionPlanMapper.selectById(id); + } + + @Override + public PageResult getInspectionPlanPage(InspectionPlanPageReqVO pageReqVO) { + return inspectionPlanMapper.selectPage(pageReqVO); + } + + @Override + public void deleteInspectionPlanByBatchNo(String batchNo) { + inspectionPlanMapper.delete(InspectionPlanDO::getBatchNo, batchNo); + inspectionPlanDetailMapper.delete(InspectionPlanDetailDO::getBatchNo, batchNo); + inspectionPlanRoleMapper.delete(InspectionPlanRoleDO::getBatchNo, batchNo); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/util/TimeIntervalCalculatorUtil.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/util/TimeIntervalCalculatorUtil.java new file mode 100644 index 0000000..6f0fa26 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/util/TimeIntervalCalculatorUtil.java @@ -0,0 +1,100 @@ +package com.zteits.urbanops.module.garden.util; + + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.INSPECTION_CYCLE_ID_ERROR; + +public class TimeIntervalCalculatorUtil { + enum IntervalUnit { + DAY, WEEK, MONTH, YEAR + } + + public static void main(String[] args) { + + System.out.println("请输入开始日期(yyyy-MM-dd):"); + LocalDate startDate = LocalDate.of(2025,10,1); + + System.out.println("请输入结束日期(yyyy-MM-dd):"); + LocalDate endDate = LocalDate.of(2025,10,7); + + System.out.println("请选择间隔单位(1.天 2.周 3.月 4.年):"); + IntervalUnit unit = IntervalUnit.DAY; + + System.out.println("请输入间隔数量(如2表示每2天/周/月/年):"); + int intervalCount =2; + + List intervals = calculateIntervals(startDate, endDate, 1, intervalCount); + + System.out.println("\n执行周期:"); + intervals.forEach(System.out::println); + } + + /** + * 执行次数计算 + * @param start + * @param end + * @param cycleId 1:日/次;2:周/次;3:月/次;4:年/次 + * @param intervalCount + * @return + */ + public static List calculateIntervals(LocalDate start, LocalDate end, Integer cycleId, int intervalCount) { + List intervals = new ArrayList<>(); + LocalDate currentStart = start; + IntervalUnit unit = getIntervalUnit(cycleId); + + while (currentStart.isBefore(end) || currentStart.isEqual(end)) { + LocalDate currentEnd = calculateEndDate(currentStart, end, unit, intervalCount); + intervals.add(currentStart + "/" + currentEnd); + currentStart = currentEnd.plusDays(1); + } + + return intervals; + } + + private static LocalDate calculateEndDate(LocalDate currentStart, LocalDate endDate, + IntervalUnit unit, int intervalCount) { + switch (unit) { + case DAY: + LocalDate dayEnd = currentStart.plusDays(intervalCount - 1); + return dayEnd.isAfter(endDate) ? endDate : dayEnd; + case WEEK: + LocalDate weekEnd = currentStart.plusDays(7 * intervalCount - 1); + return weekEnd.isAfter(endDate) ? endDate : weekEnd; + case MONTH: + LocalDate monthEnd = currentStart.plusMonths(intervalCount) + .withDayOfMonth(1).minusDays(1); + return monthEnd.isAfter(endDate) ? endDate : monthEnd; + case YEAR: + LocalDate yearEnd = currentStart.plusYears(intervalCount) + .withDayOfYear(1).minusDays(1); + return yearEnd.isAfter(endDate) ? endDate : yearEnd; + default: + return endDate; + } + } + + /** + * 转换枚举 + * @param cycleId 1:日/次;2:周/次;3:月/次;4:年/次 + * @return + */ + public static IntervalUnit getIntervalUnit(Integer cycleId) { + switch (cycleId) { + case 1: + return IntervalUnit.DAY; + case 2: + return IntervalUnit.WEEK; + case 3: + return IntervalUnit.MONTH; + case 4: + return IntervalUnit.YEAR; + default: + throw exception(INSPECTION_CYCLE_ID_ERROR); + } + } + +} diff --git a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanDetailMapper.xml b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanDetailMapper.xml new file mode 100644 index 0000000..b693066 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanMapper.xml b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanMapper.xml new file mode 100644 index 0000000..32bfd65 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file