From 04ee424b7cb48e0cfe412e57a195d7e6ee0c217a Mon Sep 17 00:00:00 2001 From: wangfs <15029758498@163.com> Date: Wed, 26 Nov 2025 23:47:17 +0800 Subject: [PATCH] 养护计划提交 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/MaintainPlanController.java | 21 ++++++++++++++++++++- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailPageReqVO.java | 4 ++-- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailRespVO.java | 9 ++++----- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanPageReqVO.java | 33 --------------------------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRespVO.java | 7 ++++--- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRoadReqVO.java | 21 +++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanSaveReqVO.java | 45 +++++++++++++++++---------------------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanDetailMapper.java | 4 +++- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanMapper.java | 14 +++----------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanRoleMapper.java | 2 ++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java | 7 +++++-- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanService.java | 15 ++++++++++++++- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanDetailMapper.xml | 3 +++ urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanMapper.xml | 4 +++- urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanRoleMapper.xml | 4 +++- 16 files changed, 268 insertions(+), 103 deletions(-) create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRoadReqVO.java diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/MaintainPlanController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/MaintainPlanController.java index 8022bfa..312a585 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/MaintainPlanController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/MaintainPlanController.java @@ -1,5 +1,6 @@ package com.zteits.urbanops.module.garden.controller.admin.maintainplan; +import jakarta.validation.constraints.NotBlank; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -41,7 +42,7 @@ public class MaintainPlanController { @Operation(summary = "创建养护计划汇总") @PreAuthorize("@ss.hasPermission('garden:maintain-plan:create')") public CommonResult createMaintainPlan(@Valid @RequestBody MaintainPlanSaveReqVO createReqVO) { - return success(maintainPlanService.createMaintainPlan(createReqVO)); + return maintainPlanService.createMaintainPlan(createReqVO); } @PutMapping("/update") @@ -70,6 +71,24 @@ public class MaintainPlanController { return success(true); } + @DeleteMapping("/delete-batch_no") + @Parameter(name = "batchNo", description = "批次号", required = true) + @Operation(summary = "根据batch_no删除养护计划汇总") + @PreAuthorize("@ss.hasPermission('garden:maintain-plan:delete')") + public CommonResult deleteInspectionPlanByBatchNo(@RequestParam("batch_no") @NotBlank String batchNo) { + maintainPlanService.deleteInspectionPlanByBatchNo(batchNo); + return success(true); + } + + @DeleteMapping("/delete-stop-plan") + @Parameter(name = "batchNo", description = "批次号", required = true) + @Operation(summary = "根据batch_no删除养护计划汇总") + @PreAuthorize("@ss.hasPermission('garden:maintain-plan:delete')") + public CommonResult stopPlanInspectionPlan(@RequestParam("batch_no") @NotBlank String batchNo) { + maintainPlanService.stopPlanInspectionPlan(batchNo); + return success(true); + } + @GetMapping("/get") @Operation(summary = "获得养护计划汇总") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailPageReqVO.java index f195f8a..4ca687e 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailPageReqVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailPageReqVO.java @@ -1,5 +1,6 @@ package com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo; +import jakarta.validation.constraints.NotEmpty; import lombok.*; import java.time.LocalDate; @@ -15,6 +16,7 @@ import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YE public class MaintainPlanDetailPageReqVO extends PageParam { @Schema(description = "批次号") + @NotEmpty(message = "批次号不能为空") private String batchNo; @Schema(description = "计划编码") @@ -56,7 +58,5 @@ public class MaintainPlanDetailPageReqVO extends PageParam { @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/maintainplan/vo/MaintainPlanDetailRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailRespVO.java index d98a450..d5684fc 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailRespVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanDetailRespVO.java @@ -60,6 +60,10 @@ public class MaintainPlanDetailRespVO { @ExcelProperty("完成状态 1:未完成;2:进行中;3:已完成") private Integer finishState; + @Schema(description = "创建人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "ZIEITS") + @ExcelProperty("创建人ID") + private String creator; + @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") @ExcelProperty("创建者") private String creatorName; @@ -67,9 +71,4 @@ public class MaintainPlanDetailRespVO { @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/maintainplan/vo/MaintainPlanPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanPageReqVO.java index 5ae6813..242eeb6 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanPageReqVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanPageReqVO.java @@ -20,8 +20,6 @@ public class MaintainPlanPageReqVO extends PageParam { @Schema(description = "计划名称", example = "王五") private String planName; - @Schema(description = "业务线: yl-园林;wy-物业:sz-市政") - private String busiLine; @Schema(description = "计划属性:1:标准计划;2:临时计划") private Integer planAttr; @@ -32,30 +30,12 @@ public class MaintainPlanPageReqVO extends PageParam { @Schema(description = "归属(一级部门id)", example = "1713") private Long companyId; - @Schema(description = "部门ID(道路负责部门id)", example = "12055") - private Long deptId; - - @Schema(description = "道路ID", example = "19114") - private Long roadId; - @Schema(description = "道路名称", example = "王五") private String roadName; @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", example = "16420") private Integer levelId; - @Schema(description = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次", example = "28220") - private Integer cycleId; - - @Schema(description = "计划次数") - private Integer planNum; - - @Schema(description = "已完成次数") - private Integer planFinishNum; - - @Schema(description = "完成状态 : 1:未完成;2:已完成") - private Integer finishState; - @Schema(description = "开始时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDate[] beginTime; @@ -64,17 +44,4 @@ public class MaintainPlanPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDate[] endTime; - @Schema(description = "备注", example = "你猜") - private String remark; - - @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/maintainplan/vo/MaintainPlanRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRespVO.java index e652093..de813b6 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRespVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRespVO.java @@ -86,6 +86,10 @@ public class MaintainPlanRespVO { @ExcelProperty("备注") private String remark; + @Schema(description = "创建人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "ZIEITS") + @ExcelProperty("创建人ID") + private String creator; + @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") @ExcelProperty("创建人") private String creatorName; @@ -94,8 +98,5 @@ public class MaintainPlanRespVO { @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/maintainplan/vo/MaintainPlanRoadReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRoadReqVO.java new file mode 100644 index 0000000..c576a12 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanRoadReqVO.java @@ -0,0 +1,21 @@ +package com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 养护计划汇总新增/修改 Request VO") +@Data +public class MaintainPlanRoadReqVO { + + @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/maintainplan/vo/MaintainPlanSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanSaveReqVO.java index c42bf4e..ac3b4a7 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanSaveReqVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/vo/MaintainPlanSaveReqVO.java @@ -1,6 +1,8 @@ package com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRoadReqVO; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; import lombok.*; import java.time.LocalDate; @@ -11,16 +13,8 @@ import jakarta.validation.constraints.*; @Data public class MaintainPlanSaveReqVO { - @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2058") - private Long id; - - @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "批次号不能为空") - private String batchNo; - - @Schema(description = "计划名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") - @NotEmpty(message = "计划名称不能为空") - private String planName; + @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-市政不能为空") @@ -53,21 +47,19 @@ public class MaintainPlanSaveReqVO { @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 = "28220") @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 = "道路信息", requiredMode = Schema.RequiredMode.REQUIRED, example = "[{\"deptId\":11,\"roadId\":1,\"roadName\":\"测试\"}]") + @NotNull + @Size(min = 1) + @Valid + private List roadListReqVO; @Schema(description = "开始时间") private LocalDate beginTime; @@ -79,12 +71,9 @@ public class MaintainPlanSaveReqVO { @NotEmpty(message = "备注不能为空") private String remark; - @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @NotEmpty(message = "创建人不能为空") - private String creatorName; - - @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") - @NotEmpty(message = "更新者不能为空") - private String updaterName; + @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/dal/mysql/maintainplan/MaintainPlanDetailMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanDetailMapper.java index 54de22d..81f7d9a 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanDetailMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanDetailMapper.java @@ -7,6 +7,7 @@ import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDetailDO; import org.apache.ibatis.annotations.Mapper; import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.*; +import org.apache.ibatis.annotations.Param; /** * 养护计划 Mapper @@ -31,8 +32,9 @@ public interface MaintainPlanDetailMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(MaintainPlanDO::getBatchNo, reqVO.getBatchNo()) .likeIfPresent(MaintainPlanDO::getPlanName, reqVO.getPlanName()) - .eqIfPresent(MaintainPlanDO::getBusiLine, reqVO.getBusiLine()) .eqIfPresent(MaintainPlanDO::getPlanAttr, reqVO.getPlanAttr()) .eqIfPresent(MaintainPlanDO::getPlanTypeId, reqVO.getPlanTypeId()) .eqIfPresent(MaintainPlanDO::getCompanyId, reqVO.getCompanyId()) - .eqIfPresent(MaintainPlanDO::getDeptId, reqVO.getDeptId()) - .eqIfPresent(MaintainPlanDO::getRoadId, reqVO.getRoadId()) .likeIfPresent(MaintainPlanDO::getRoadName, reqVO.getRoadName()) .eqIfPresent(MaintainPlanDO::getLevelId, reqVO.getLevelId()) - .eqIfPresent(MaintainPlanDO::getCycleId, reqVO.getCycleId()) - .eqIfPresent(MaintainPlanDO::getPlanNum, reqVO.getPlanNum()) - .eqIfPresent(MaintainPlanDO::getPlanFinishNum, reqVO.getPlanFinishNum()) - .eqIfPresent(MaintainPlanDO::getFinishState, reqVO.getFinishState()) .betweenIfPresent(MaintainPlanDO::getBeginTime, reqVO.getBeginTime()) .betweenIfPresent(MaintainPlanDO::getEndTime, reqVO.getEndTime()) - .eqIfPresent(MaintainPlanDO::getRemark, reqVO.getRemark()) - .likeIfPresent(MaintainPlanDO::getCreatorName, reqVO.getCreatorName()) - .betweenIfPresent(MaintainPlanDO::getCreateTime, reqVO.getCreateTime()) - .likeIfPresent(MaintainPlanDO::getUpdaterName, reqVO.getUpdaterName()) .orderByDesc(MaintainPlanDO::getId)); } + int deleteByBatchNo(@Param("batchNo") String batchNo); + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanRoleMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanRoleMapper.java index 944b6c9..8e411c5 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanRoleMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/maintainplan/MaintainPlanRoleMapper.java @@ -8,6 +8,7 @@ import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanRoleDO; import org.apache.ibatis.annotations.Mapper; import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.*; +import org.apache.ibatis.annotations.Param; /** * 养护计划角色 Mapper @@ -28,4 +29,5 @@ public interface MaintainPlanRoleMapper extends BaseMapperX .orderByDesc(MaintainPlanRoleDO::getId)); } + int deleteByBatchNo(@Param("batchNo") String batchNo); } \ 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 8b9198f..74e1655 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 @@ -59,12 +59,15 @@ public interface ErrorCodeConstants { 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_PLAN_NOT_EXISTS = new ErrorCode(1-100-100-001, "巡检计划汇总不存在"); + ErrorCode INSPECTION_CYCLE_ID_ERROR = new ErrorCode(1-100-100-002, "周期id错误"); ErrorCode INSPECTION_CYCLE_ERROR = new ErrorCode(1-200-100-003, "获取两个时间之间间隔天数错误"); ErrorCode INSPECTION_PLAN_EXISTS = new ErrorCode(1-200-100-004, "道路对应类型已存在记录"); ErrorCode INSPECTION_PLAN_NOT_ALLOW_DELETE = new ErrorCode(1-200-100-005, "计划已开始执行不能删除"); + // ========== 养护计划汇总 TODO 补充编号 ========== + ErrorCode MAINTAIN_PLAN_NOT_EXISTS = new ErrorCode(1-200-200-001, "养护计划汇总不存在"); + //========== 频次 TODO 补充编号 ========== ErrorCode PLAN_RATE_EXISTS = new ErrorCode(1-200-200-001, "养护频次已存在"); ErrorCode PLAN_RATE_LEVEL_ID_DUPLICATE = new ErrorCode(1-200-200-002, "养护等级重复"); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanService.java index d169411..6707f44 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanService.java @@ -1,6 +1,8 @@ package com.zteits.urbanops.module.garden.service.maintainplan; import java.util.*; + +import com.zteits.urbanops.framework.common.pojo.CommonResult; import jakarta.validation.*; import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.*; import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; @@ -20,7 +22,7 @@ public interface MaintainPlanService { * @param createReqVO 创建信息 * @return 编号 */ - Long createMaintainPlan(@Valid MaintainPlanSaveReqVO createReqVO); + CommonResult createMaintainPlan(@Valid MaintainPlanSaveReqVO createReqVO); /** * 更新养护计划汇总 @@ -59,4 +61,15 @@ public interface MaintainPlanService { */ PageResult getMaintainPlanPage(MaintainPlanPageReqVO pageReqVO); + /** + * 根据批次号删除 + * @param batchNo 批次号 + */ + void deleteInspectionPlanByBatchNo(String batchNo); + + /** + * 终止计划 + * @param batchNo + */ + void stopPlanInspectionPlan(String batchNo); } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java index 382551f..4575e28 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java @@ -1,23 +1,40 @@ package com.zteits.urbanops.module.garden.service.maintainplan; import cn.hutool.core.collection.CollUtil; +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.maintainplan.MaintainPlanDetailDO; +import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanRoleDO; +import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanDetailMapper; +import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanRoleMapper; +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.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; +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.maintainplan.vo.*; import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; 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.maintainplan.MaintainPlanMapper; 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.*; /** @@ -27,25 +44,118 @@ import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; */ @Service @Validated +@Slf4j public class MaintainPlanServiceImpl implements MaintainPlanService { @Resource private MaintainPlanMapper maintainPlanMapper; + + @Resource + private MaintainPlanDetailMapper maintainPlanDetailMapper; + + @Resource + private MaintainPlanRoleMapper maintainPlanRoleMapper; + @Override - public Long createMaintainPlan(MaintainPlanSaveReqVO createReqVO) { - // 插入 - MaintainPlanDO maintainPlan = BeanUtils.toBean(createReqVO, MaintainPlanDO.class); - maintainPlanMapper.insert(maintainPlan); + public CommonResult createMaintainPlan(MaintainPlanSaveReqVO createReqVO) { + //存在性校验 + validateMaintainPlanExists(createReqVO); + LocalDateTime now = LocalDateTime.now(); + String userId = SecurityFrameworkUtils.getLoginUserId()+""; + String userName = SecurityFrameworkUtils.getLoginUserNickname(); + 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(); + MaintainPlanDO maintainPlanDO = BeanUtils.toBean(createReqVO, MaintainPlanDO.class); + AtomicInteger count = new AtomicInteger(); + + //按照道路创建计划 + createReqVO.getRoadListReqVO().forEach(roadReqVO -> { + String batchNo = "BN" + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomInt(1000); + maintainPlanDO.setBatchNo(batchNo); + maintainPlanDO.setPlanFinishNum(0); + maintainPlanDO.setFinishState(FinishStateEnum.NOT_FINISHED.getStatus()); + maintainPlanDO.setPlanNum(planNum); + maintainPlanDO.setCreateTime(now); + maintainPlanDO.setUpdateTime(now); + maintainPlanDO.setCreator(userId); + maintainPlanDO.setCreatorName(userName); + maintainPlanDO.setUpdater(userId); + maintainPlanDO.setUpdaterName(userName); + maintainPlanDO.setDeptId(roadReqVO.getDeptId()); + maintainPlanDO.setRoadId(roadReqVO.getRoadId()); + maintainPlanDO.setRoadName(roadReqVO.getRoadName()); + //计划属性label + String planAttrLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.GARDEN_PLAN_ATTR_REDIS_KEY, createReqVO.getPlanAttr()); + maintainPlanDO.setPlanName(roadReqVO.getRoadName() + planAttrLabel + createReqVO.getPlanNameSuffix()); + /*1.插入巡查计划*/ + count.addAndGet(maintainPlanMapper.insert(maintainPlanDO)); + /*2.插入角色*/ + createReqVO.getRoleIds().forEach(roleId -> { + MaintainPlanRoleDO maintainPlanRoleDO = new MaintainPlanRoleDO(); + maintainPlanRoleDO.setBatchNo(batchNo); + maintainPlanRoleDO.setCompanyId(createReqVO.getCompanyId()); + maintainPlanRoleDO.setDeptId(roadReqVO.getDeptId()); + maintainPlanRoleDO.setCreateTime(now); + maintainPlanRoleDO.setUpdateTime(now); + maintainPlanRoleDO.setCreator(userId); + maintainPlanRoleDO.setUpdater(userId); + maintainPlanRoleDO.setRoleId(roleId); + maintainPlanRoleMapper.insert(maintainPlanRoleDO); + }); + /*3.插入巡查计划明细*/ + for (int i = 0; i < betweenDayList.size(); i++) { + String[] dateStr = betweenDayList.get(i).split("/"); + MaintainPlanDetailDO entity = getMaintainPlanDetailDO(batchNo, createReqVO, roadReqVO, now); + 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"))); + + maintainPlanDetailMapper.insert(entity); + } + }); // 返回 - return maintainPlan.getId(); + return CommonResult.success(count.longValue()); + } + + private MaintainPlanDetailDO getMaintainPlanDetailDO(String batchNo, MaintainPlanSaveReqVO saveReqVO, + MaintainPlanRoadReqVO roadReqVO, LocalDateTime now) { + String userId = SecurityFrameworkUtils.getLoginUserId()+""; + String userName = SecurityFrameworkUtils.getLoginUserNickname(); + MaintainPlanDetailDO entity = new MaintainPlanDetailDO(); + entity.setBatchNo(batchNo); + entity.setPlanNo("Y" + 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(userId); + entity.setCreatorName(userName); + entity.setUpdater(userId); + entity.setUpdaterName(userName); + entity.setCreateTime(now); + entity.setUpdateTime(now); + return entity; } @Override public void updateMaintainPlan(MaintainPlanSaveReqVO updateReqVO) { // 校验存在 - validateMaintainPlanExists(updateReqVO.getId()); + //validateMaintainPlanExists(updateReqVO.getId()); // 更新 MaintainPlanDO updateObj = BeanUtils.toBean(updateReqVO, MaintainPlanDO.class); maintainPlanMapper.updateById(updateObj); @@ -54,7 +164,7 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { @Override public void deleteMaintainPlan(Long id) { // 校验存在 - validateMaintainPlanExists(id); + //validateMaintainPlanExists(id); // 删除 maintainPlanMapper.deleteById(id); } @@ -66,9 +176,31 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { } - private void validateMaintainPlanExists(Long id) { - if (maintainPlanMapper.selectById(id) == null) { - // throw exception(MAINTAIN_PLAN_NOT_EXISTS); + private void validateMaintainPlanExists(MaintainPlanSaveReqVO req) { + Set roadIds = req.getRoadListReqVO().stream().map(MaintainPlanRoadReqVO::getRoadId).collect(Collectors.toSet()); + Long count =0L; + //标准计划 + if(req.getPlanAttr().equals(1)){ + QueryWrapper sql = new QueryWrapper<>(); + sql.lambda().eq(MaintainPlanDO::getPlanTypeId, req.getPlanTypeId()) + .in(MaintainPlanDO::getRoadId, roadIds) + .le(MaintainPlanDO::getBeginTime, req.getEndTime()) // start_time <= endTime + .ge(MaintainPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime + + count = maintainPlanMapper.selectCount(sql); + }else{ + QueryWrapper sql = new QueryWrapper<>(); + sql.lambda().eq(MaintainPlanDO::getPlanTypeId, req.getPlanTypeId()) + .in(MaintainPlanDO::getRoadId, roadIds) + .eq(MaintainPlanDO::getDeleted, 0) + .le(MaintainPlanDO::getBeginTime, req.getEndTime()) // start_time <= endTime + .ge(MaintainPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime + + count = maintainPlanMapper.selectCount(sql); + } + + if (count > 0) { + throw exception(INSPECTION_PLAN_EXISTS); } } @@ -82,4 +214,22 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { return maintainPlanMapper.selectPage(pageReqVO); } + @Override + public void deleteInspectionPlanByBatchNo(String batchNo) { + MaintainPlanDO inspectionPlanDO = maintainPlanMapper.selectOne(MaintainPlanDO::getBatchNo, batchNo); + if(inspectionPlanDO !=null && inspectionPlanDO.getPlanFinishNum() >0){ + throw exception(INSPECTION_PLAN_NOT_ALLOW_DELETE); + } + maintainPlanMapper.deleteByBatchNo(batchNo); + maintainPlanDetailMapper.deleteByBatchNo(batchNo); + maintainPlanRoleMapper.deleteByBatchNo(batchNo); + } + + @Override + public void stopPlanInspectionPlan(String batchNo) { + maintainPlanMapper.delete(MaintainPlanDO::getBatchNo, batchNo); + maintainPlanDetailMapper.delete(MaintainPlanDetailDO::getBatchNo,batchNo); + maintainPlanRoleMapper.delete(MaintainPlanRoleDO::getBatchNo, batchNo); + } + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanDetailMapper.xml b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanDetailMapper.xml index 627a695..8fa0be2 100644 --- a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanDetailMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanDetailMapper.xml @@ -9,4 +9,7 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + delete from garden_maintain_plan_detail where batch_no =#{batchNo} + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanMapper.xml b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanMapper.xml index c553792..43e0c60 100644 --- a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanMapper.xml @@ -8,5 +8,7 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - + + delete from garden_maintain_plan where batch_no =#{batchNo} + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanRoleMapper.xml b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanRoleMapper.xml index 8c2f558..d8d8150 100644 --- a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanRoleMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanRoleMapper.xml @@ -8,5 +8,7 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - + + delete from garden_maintain_plan_role where batch_no =#{batchNo} + \ No newline at end of file -- libgit2 0.21.4