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 index 4b56057..332d447 100644 --- 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 @@ -1,40 +1,36 @@ package com.zteits.urbanops.module.garden.controller.admin.inspectionplan; -import com.zteits.urbanops.module.garden.util.StringValidateUtil; +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanPageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRespVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanSaveReqVO; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanUpdateReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import lombok.extern.slf4j.Slf4j; -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 org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; import java.io.IOException; +import java.util.List; -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.alibaba.druid.util.FnvHash.Constants.LOG; +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static com.zteits.urbanops.framework.common.pojo.CommonResult.error; 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 static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PLAN_RATE_VALUE_ERROR; -import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PLAN_RATE_VALUE_INTEGER_ERROR; - -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 @@ -54,12 +50,12 @@ public class InspectionPlanController { log.warn("次数值范围:1-10或者分数格式:1/3, rateValue={}", createReqVO.getRateValue()); return error(PLAN_RATE_VALUE_ERROR); } - //临时计划 - if(createReqVO.getPlanAttr().equals(2)){ - if(!StringValidateUtil.isValidNumberStr(createReqVO.getRateValue())){ - return error(PLAN_RATE_VALUE_INTEGER_ERROR); - } - } +// //临时计划 +// if(createReqVO.getPlanAttr().equals(2)){ +// if(!StringValidateUtil.isValidNumberStr(createReqVO.getRateValue())){ +// return error(PLAN_RATE_VALUE_INTEGER_ERROR); +// } +// } return inspectionPlanService.createInspectionPlan(createReqVO); } @@ -138,4 +134,4 @@ public class InspectionPlanController { list); } -} \ 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 index bb5470f..c1dbcbe 100644 --- 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 @@ -48,8 +48,8 @@ public class InspectionPlanSaveReqVO { @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:年/次不能为空") + @Schema(description = "周期ID: 0:次;1:日/次;2:周/次;3:月/次;4:季/次;5:半年/次;6:年/次", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次;5:按次;6:季度;7:半年") private Integer cycleId; @Schema(description = "开始时间") @@ -69,4 +69,4 @@ public class InspectionPlanSaveReqVO { public boolean verify(){ return StringValidateUtil.validate(rateValue); } -} \ No newline at end of file +} 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 f844f90..4daa642 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,39 +1,36 @@ package com.zteits.urbanops.module.garden.controller.admin.maintainplan; -import com.zteits.urbanops.module.garden.util.StringValidateUtil; +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; +import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.MaintainPlanPageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.MaintainPlanRespVO; +import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.MaintainPlanSaveReqVO; +import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.MaintainPlanUpdateReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; +import com.zteits.urbanops.module.garden.service.maintainplan.MaintainPlanService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import lombok.extern.slf4j.Slf4j; -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 org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; import java.io.IOException; +import java.util.List; -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.apilog.core.enums.OperateTypeEnum.EXPORT; import static com.zteits.urbanops.framework.common.pojo.CommonResult.error; 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 static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PLAN_RATE_VALUE_ERROR; -import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PLAN_RATE_VALUE_INTEGER_ERROR; - -import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.*; -import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; -import com.zteits.urbanops.module.garden.service.maintainplan.MaintainPlanService; @Tag(name = "管理后台 - 养护计划汇总") @RestController @@ -54,11 +51,11 @@ public class MaintainPlanController { return error(PLAN_RATE_VALUE_ERROR); } //临时计划 - if(createReqVO.getPlanAttr().equals(2)){ - if(!StringValidateUtil.isValidNumberStr(createReqVO.getRateValue())){ - return error(PLAN_RATE_VALUE_INTEGER_ERROR); - } - } +// if(createReqVO.getPlanAttr().equals(2)){ +// if(!StringValidateUtil.isValidNumberStr(createReqVO.getRateValue())){ +// return error(PLAN_RATE_VALUE_INTEGER_ERROR); +// } +// } return maintainPlanService.createMaintainPlan(createReqVO); } @@ -137,4 +134,4 @@ public class MaintainPlanController { list); } -} \ No newline at end of file +} 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 c2b043a..88b3701 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 @@ -48,8 +48,8 @@ public class MaintainPlanSaveReqVO { @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:年/次不能为空") + @Schema(description = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次;5:按次;6:季度;7:半年", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "周期ID: 1:日/次;2:周/次;3:月/次;4:年/次;5:按次;6:季度;7:半年") private Integer cycleId; @Schema(description = "开始时间") @@ -69,4 +69,4 @@ public class MaintainPlanSaveReqVO { public boolean verify(){ return StringValidateUtil.validate(rateValue); } -} \ No newline at end of file +} 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 index fe76530..6e479c7 100644 --- 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 @@ -11,6 +11,10 @@ public enum FinishStateEnum { * 已完成 */ FINISHED(2), + /** + * 过期 + */ + EXPIRED(3), ; FinishStateEnum(Integer status) { diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/MaintenanceCycleEnum.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/MaintenanceCycleEnum.java new file mode 100644 index 0000000..b852ca6 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/MaintenanceCycleEnum.java @@ -0,0 +1,75 @@ +package com.zteits.urbanops.module.garden.enums; + +import java.util.HashMap; +import java.util.Map; + +public enum MaintenanceCycleEnum { + + /** + * 字典标签与字典键值对应关系: + * 次 → 0 + * 次/日 → 1 + * 次/周 → 2 + * 次/月 → 3 + * 次/季 → 4 + * 次/半年 → 5 + * 次/年 → 6 + */ + TIME(0, "次"), + DAY(1, "次/日"), + WEEK(2, "次/周"), + MONTH(3, "次/月"), + QUARTER(4, "次/季"), + SEMIANNUAL(5, "次/半年"), + YEAR(6, "次/年"); + + private final Integer key; + private final String value; + + // 用于根据key快速查找枚举 + private static final Map KEY_MAP = new HashMap<>(); + + static { + // 初始化key映射 + for (MaintenanceCycleEnum cycleEnum : values()) { + KEY_MAP.put(cycleEnum.key, cycleEnum); + } + } + + /** + * 构造函数 + * @param key 字典键值 + * @param value 字典标签 + */ + MaintenanceCycleEnum(Integer key, String value) { + this.key = key; + this.value = value; + } + + /** + * 根据key获取对应的枚举 + * @param key 字典键值 + * @return 对应的枚举,如果不存在返回null + */ + public static MaintenanceCycleEnum getByKey(Integer key) { + return KEY_MAP.get(key); + } + + /** + * 根据key获取对应的字典标签 + * @param key 字典键值 + * @return 对应的字典标签,如果不存在返回null + */ + public static String getValueByKey(Integer key) { + MaintenanceCycleEnum cycleEnum = getByKey(key); + return cycleEnum != null ? cycleEnum.value : null; + } + + public Integer getKey() { + return key; + } + + public String getValue() { + return value; + } +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/plan/InspectionPlanExpiredJob.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/plan/InspectionPlanExpiredJob.java new file mode 100644 index 0000000..52aee3c --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/plan/InspectionPlanExpiredJob.java @@ -0,0 +1,45 @@ +package com.zteits.urbanops.module.garden.job.plan; + +import com.zteits.urbanops.framework.quartz.core.handler.JobHandler; +import com.zteits.urbanops.framework.tenant.core.aop.TenantIgnore; +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanDetailService; +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanService; +import com.zteits.urbanops.module.garden.service.maintainplan.MaintainPlanDetailService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 巡查计划过去 修改状态 + */ +@Component +@Slf4j +public class InspectionPlanExpiredJob implements JobHandler { + + @Resource + private InspectionPlanDetailService inspectionPlanDetailService; + + @Resource + private InspectionPlanService inspectionPlanService ; + + /** + * 清理超过(14)天的日志 + */ + private static final Integer JOB_CLEAN_RETAIN_DAY = 14; + + /** + * 每次删除间隔的条数,如果值太高可能会造成数据库的压力过大 + */ + private static final Integer DELETE_LIMIT = 100; + + @Override + @TenantIgnore + public String execute(String param) { + // 更新过期的计划明细状态为过期(3) + inspectionPlanDetailService.updateExpiredInspectionPlanDetails(); // Fixed method name + // 更新过期的计划状态为过期(3) + inspectionPlanService.updateExpiredInspectionPlans(); // Fixed method name + return "Successfully updated expired maintain plans and plan details"; + } + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/plan/MaintainPlanExpiredJob.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/plan/MaintainPlanExpiredJob.java new file mode 100644 index 0000000..ebdf81c --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/plan/MaintainPlanExpiredJob.java @@ -0,0 +1,31 @@ +package com.zteits.urbanops.module.garden.job.plan; + +import com.zteits.urbanops.framework.quartz.core.handler.JobHandler; +import com.zteits.urbanops.framework.tenant.core.aop.TenantIgnore; +import com.zteits.urbanops.module.garden.service.maintainplan.MaintainPlanDetailService; +import com.zteits.urbanops.module.infra.service.logger.ApiAccessLogService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 养护计划过期 修改状态 + */ +@Component +@Slf4j +public class MaintainPlanExpiredJob implements JobHandler { + + @Resource + private MaintainPlanDetailService maintainPlanDetailService; + + @Override + @TenantIgnore + public String execute(String param) { + // 更新过期的计划明细状态为过期(3) + maintainPlanDetailService.updateExpiredMaintainPlanDetails(); + // 更新过期的计划状态为过期(3) + maintainPlanDetailService.updateExpiredMaintainPlans(); + return "Successfully updated expired maintain plans and plan details"; + } + +} 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 index 2931717..a585a8f 100644 --- 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 @@ -68,4 +68,7 @@ public interface InspectionPlanDetailService { * @return 巡检计划分页 */ List getInspectionPlanDetailForApp(AppInspectionPlanDetailReqVO pageReqVO); -} \ No newline at end of file + + void updateExpiredInspectionPlanDetails(); + +} 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 index 1fe3235..38aa762 100644 --- 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 @@ -1,5 +1,6 @@ package com.zteits.urbanops.module.garden.service.inspectionplan; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.common.util.object.BeanUtils; import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; @@ -8,8 +9,11 @@ import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.Insp import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanDetailReqVO; import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanDetailRespVO; import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDetailDO; +import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; +import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDetailDO; 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.system.api.permission.RoleApi; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; @@ -102,4 +106,17 @@ public class InspectionPlanDetailServiceImpl implements InspectionPlanDetailServ return inspectionPlanDetailMapper.getInspectionPlanDetailForApp(pageReqVO); } -} \ No newline at end of file + @Override + public void updateExpiredInspectionPlanDetails() { + // 更新过期的计划明细状态为过期(3) + LocalDateTime now = LocalDateTime.now(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.lt(InspectionPlanDetailDO::getEndTime, now) + .ne(InspectionPlanDetailDO::getFinishState, FinishStateEnum.FINISHED.getStatus()) // 排除已完成的 + .set(InspectionPlanDetailDO::getFinishState, FinishStateEnum.EXPIRED.getStatus()); // 设置为过期状态 + inspectionPlanDetailMapper.update(null, updateWrapper); + } + + + +} 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 index ada7660..1f084a5 100644 --- 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 @@ -81,4 +81,6 @@ public interface InspectionPlanService { */ PageResult getInspectionPlanAppPage(AppInspectionPlanPageReqVO pageReqVO); -} \ No newline at end of file + void updateExpiredInspectionPlans(); + +} 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 index eaa90f2..2085c72 100644 --- 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 @@ -3,6 +3,7 @@ package com.zteits.urbanops.module.garden.service.inspectionplan; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zteits.urbanops.framework.common.pojo.CommonResult; import com.zteits.urbanops.framework.common.pojo.PageResult; @@ -23,11 +24,13 @@ import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlan import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanRoleMapper; import com.zteits.urbanops.module.garden.dal.mysql.road.RoadMapper; import com.zteits.urbanops.module.garden.enums.FinishStateEnum; +import com.zteits.urbanops.module.garden.enums.MaintenanceCycleEnum; import com.zteits.urbanops.module.garden.enums.PlanConstants; import com.zteits.urbanops.module.garden.util.timeinterval.PeriodResult; import com.zteits.urbanops.module.garden.util.timeinterval.TimeIntervalFrequencyUtil; import com.zteits.urbanops.module.system.api.dept.DeptApi; import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; +import com.zteits.urbanops.module.system.api.dict.DictDataApi; import com.zteits.urbanops.module.system.api.permission.RoleApi; import com.zteits.urbanops.module.system.dal.dataobject.permission.RoleDO; import jakarta.annotation.Resource; @@ -47,6 +50,7 @@ import java.util.stream.Collectors; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; +import static com.zteits.urbanops.module.garden.enums.PlanConstants.CYCLE_ID_TYPE; /** * 巡检计划汇总 Service 实现类 @@ -72,13 +76,13 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { @Resource private RoadMapper roadMapper; - - @Resource private DeptApi deptApi; @Resource private RoleApi roleApi; + @Resource + private DictDataApi dictDataApi; @Transactional(rollbackFor = Exception.class) @Override @@ -99,7 +103,8 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { //计算计划次数 int planNum; //临时计划 - if (createReqVO.getPlanAttr().equals(2)) { + dictDataApi.validateDictDataList(CYCLE_ID_TYPE, Collections.singleton(createReqVO.getCycleId().toString().trim())); + if (createReqVO.getCycleId().equals(MaintenanceCycleEnum.TIME.getKey())) { calculate = new ArrayList<>(); PeriodResult periodResult = new PeriodResult(createReqVO.getBeginTime(), createReqVO.getEndTime(), Integer.parseInt(createReqVO.getRateValue())); calculate.add(periodResult); @@ -234,6 +239,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { QueryWrapper sql = new QueryWrapper<>(); sql.lambda().eq(InspectionPlanDO::getPlanTypeId, req.getPlanTypeId()) .in(InspectionPlanDO::getRoadId, roadIds) + .eq(InspectionPlanDO::getPlanAttr, 1) //标准计划 .le(InspectionPlanDO::getBeginTime, req.getEndTime()) // start_time <= endTime .ge(InspectionPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime @@ -243,6 +249,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { sql.lambda().eq(InspectionPlanDO::getPlanTypeId, req.getPlanTypeId()) .in(InspectionPlanDO::getRoadId, roadIds) .eq(InspectionPlanDO::getDeleted, 0) + .eq(InspectionPlanDO::getPlanAttr, 2) //临时计划 .le(InspectionPlanDO::getBeginTime, req.getEndTime()) // start_time <= endTime .ge(InspectionPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime @@ -399,4 +406,15 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { return roleList.stream().map(InspectionPlanRoleDO::getBatchNo).collect(Collectors.toSet()); } -} \ No newline at end of file + @Override + public void updateExpiredInspectionPlans() { + // 更新过期的计划状态为过期(3) + LocalDateTime now = LocalDateTime.now(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.lt(InspectionPlanDO::getEndTime, now) + .ne(InspectionPlanDO::getFinishState, FinishStateEnum.FINISHED.getStatus()) // 排除已完成的 + .set(InspectionPlanDO::getFinishState, FinishStateEnum.EXPIRED.getStatus()); // 设置为过期状态 + inspectionPlanMapper.update(null, updateWrapper); + } + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailService.java index 4e9e19a..b20be94 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailService.java @@ -77,4 +77,14 @@ public interface MaintainPlanDetailService { */ List getMaintainNotFinishPlanCommitDetail(AppMaintainNotFinishPlanDetailReqVO reqVO); + /** + * 更新过期的计划明细状态为过期(3) + */ + void updateExpiredMaintainPlanDetails(); + + /** + * 更新过期的计划状态为过期(3) + */ + void updateExpiredMaintainPlans(); + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailServiceImpl.java index c4558d0..6ddee61 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanDetailServiceImpl.java @@ -12,10 +12,14 @@ import com.zteits.urbanops.module.garden.controller.app.maintainplan.vo.AppMaint import com.zteits.urbanops.module.garden.controller.app.maintainplan.vo.AppMaintainNotFinishPlanDetailRespVO; import com.zteits.urbanops.module.garden.controller.app.maintainplan.vo.AppMaintainPlanDetailListByRoadPageReqVO; import com.zteits.urbanops.module.garden.controller.app.maintainplan.vo.AppMaintainPlanDetailRespVO; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDetailDO; +import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; 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.MaintainPlanMapper; import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanRoleMapper; +import com.zteits.urbanops.module.garden.enums.FinishStateEnum; import com.zteits.urbanops.module.system.api.permission.RoleApi; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; @@ -44,6 +48,9 @@ public class MaintainPlanDetailServiceImpl implements MaintainPlanDetailService private MaintainPlanDetailMapper maintainPlanDetailMapper; @Resource + private MaintainPlanMapper maintainPlanMapper; + + @Resource private MaintainPlanRoleMapper maintainPlanRoleMapper; @Resource @@ -147,4 +154,26 @@ public class MaintainPlanDetailServiceImpl implements MaintainPlanDetailService return roleList.stream().map(MaintainPlanRoleDO::getBatchNo).collect(Collectors.toSet()); } + @Override + public void updateExpiredMaintainPlanDetails() { + // 更新过期的计划明细状态为过期(3) + LocalDateTime now = LocalDateTime.now(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.lt(MaintainPlanDetailDO::getEndTime, now) + .ne(MaintainPlanDetailDO::getFinishState, FinishStateEnum.FINISHED.getStatus()) // 排除已完成的 + .set(MaintainPlanDetailDO::getFinishState, FinishStateEnum.EXPIRED.getStatus()); // 设置为过期状态 + maintainPlanDetailMapper.update(null, updateWrapper); + } + + @Override + public void updateExpiredMaintainPlans() { + // 更新过期的计划状态为过期(3) + LocalDateTime now = LocalDateTime.now(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.lt(MaintainPlanDO::getEndTime, now) + .ne(MaintainPlanDO::getFinishState, FinishStateEnum.FINISHED.getStatus()) // 排除已完成的 + .set(MaintainPlanDO::getFinishState, FinishStateEnum.EXPIRED.getStatus()); // 设置为过期状态 + maintainPlanMapper.update(null, updateWrapper); + } + } 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 40f8c72..bd41119 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 @@ -25,11 +25,13 @@ import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanInte import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanRoleMapper; import com.zteits.urbanops.module.garden.dal.mysql.road.RoadMapper; import com.zteits.urbanops.module.garden.enums.FinishStateEnum; +import com.zteits.urbanops.module.garden.enums.MaintenanceCycleEnum; import com.zteits.urbanops.module.garden.enums.PlanConstants; import com.zteits.urbanops.module.garden.util.timeinterval.PeriodResult; import com.zteits.urbanops.module.garden.util.timeinterval.TimeIntervalFrequencyUtil; import com.zteits.urbanops.module.system.api.dept.DeptApi; import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; +import com.zteits.urbanops.module.system.api.dict.DictDataApi; import com.zteits.urbanops.module.system.api.permission.RoleApi; import com.zteits.urbanops.module.system.dal.dataobject.permission.RoleDO; import jodd.util.StringUtil; @@ -56,6 +58,8 @@ import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanMapp import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; +import static com.zteits.urbanops.module.garden.enums.PlanConstants.CYCLE_ID_TYPE; + /** * 养护计划汇总 Service 实现类 @@ -88,6 +92,13 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { @Resource private RoleApi roleApi; + @Resource + private DictDataApi dictDataApi; + + /** + * 字典类型:养护周期类型 + */ + @Override public CommonResult createMaintainPlan(MaintainPlanSaveReqVO createReqVO) { //存在性校验 @@ -105,8 +116,9 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { List calculate; //计算计划次数 int planNum; - //临时计划比较特殊 - if (createReqVO.getPlanAttr().equals(2)) { + //按次计划 + dictDataApi.validateDictDataList(CYCLE_ID_TYPE, Collections.singleton(createReqVO.getCycleId().toString().trim())); + if (createReqVO.getCycleId().equals(MaintenanceCycleEnum.TIME.getKey())) { calculate = new ArrayList<>(); PeriodResult periodResult = new PeriodResult(createReqVO.getBeginTime(), createReqVO.getEndTime(), Integer.parseInt(createReqVO.getRateValue())); calculate.add(periodResult); @@ -245,6 +257,7 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { QueryWrapper sql = new QueryWrapper<>(); sql.lambda().eq(MaintainPlanDO::getPlanTypeId, req.getPlanTypeId()) .in(MaintainPlanDO::getRoadId, roadIds) + .eq(MaintainPlanDO::getPlanAttr, 1) //标准计划 .le(MaintainPlanDO::getBeginTime, req.getEndTime()) // start_time <= endTime .ge(MaintainPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime @@ -254,6 +267,7 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { sql.lambda().eq(MaintainPlanDO::getPlanTypeId, req.getPlanTypeId()) .in(MaintainPlanDO::getRoadId, roadIds) .eq(MaintainPlanDO::getDeleted, 0) + .eq(MaintainPlanDO::getPlanAttr, 2) //临时计划 .le(MaintainPlanDO::getBeginTime, req.getEndTime()) // start_time <= endTime .ge(MaintainPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime @@ -422,4 +436,4 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { }); } -} \ No newline at end of file +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/util/timeinterval/TimeIntervalFrequencyUtil.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/util/timeinterval/TimeIntervalFrequencyUtil.java index dc74eb7..1b37e44 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/util/timeinterval/TimeIntervalFrequencyUtil.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/util/timeinterval/TimeIntervalFrequencyUtil.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.INSPECTION_CYCLE_ID_ERROR; @@ -17,29 +18,16 @@ public class TimeIntervalFrequencyUtil { private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - public enum IntervalUnit { - DAY, WEEK, MONTH, YEAR; - } + /** - * 转换枚举 - * @param cycleId 1:日/次;2:周/次;3:月/次;4:年/次 - * @return + * 根据cycleId获取对应的字典值 + * @param cycleId 1:日/次;2:周/次;3:月/次;4:年/次;5:按次;6:季度;7:半年 + * @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); - } - } + public static String getCycleTypeValue(Integer cycleId) { + // 使用DictFrameworkUtils从字典表获取对应的周期类型值 + return String.valueOf(cycleId); } /** * 计算时间段划分结果(基于固定天数换算) @@ -47,7 +35,7 @@ public class TimeIntervalFrequencyUtil { * @param startStr 开始日期 (yyyy-MM-dd) * @param endStr 结束日期 (yyyy-MM-dd) * @param freq 频次值,格式 "x/y" - * @param cycleId 1:日/次;2:周/次;3:月/次;4:年/次 + * @param cycleId 1:日/次;2:周/次;3:月/次;4:年/次;5:按次;6:季度;7:半年 * @return 划分结果列表 */ public static List calculate(String startStr, String endStr, String freq, Integer cycleId) { @@ -65,8 +53,7 @@ public class TimeIntervalFrequencyUtil { int x = Integer.parseInt(parts[0]); // 每周期次数 int y = Integer.parseInt(parts[1]); // 周期数量 - IntervalUnit unit = getIntervalUnit(cycleId); - long periodDays = convertToDays(y, unit); // 转为固定天数 + long periodDays = convertToDays(y, cycleId); // 转为固定天数 List results = new ArrayList<>(); LocalDate currentStart = start; @@ -93,19 +80,32 @@ public class TimeIntervalFrequencyUtil { /** * 将 y 个单位转换为固定天数 + * TIME(0, "次"), + * DAY(1, "次/日"), + * WEEK(2, "次/周"), + * MONTH(3, "次/月"), + * QUARTER(4, "次/季"), + * SEMIANNUAL(5, "次/半年"), + * YEAR(6, "次/年"); */ - private static long convertToDays(int y, IntervalUnit unit) { - switch (unit) { - case DAY: + private static long convertToDays(int y, Integer cycleId) { + switch (cycleId) { + case 1: // DAY return y; - case WEEK: + case 2: // WEEK return (long) y * 7; - case MONTH: + case 3: // MONTH return (long) y * 30; - case YEAR: + case 6: // YEAR return (long) y * 365; + case 0: // TIME + return 1; // 按次:将整个时间段视为1个周期 + case 4: // QUARTER + return (long) y * 90; // 1季度=3个月=90天 + case 5: // SEMIANNUAL + return (long) y * 180; // 半年=6个月=180天 default: - throw new UnsupportedOperationException("不支持的单位: " + unit); + throw new IllegalArgumentException("无效的周期ID: " + cycleId); } } @@ -157,5 +157,18 @@ public class TimeIntervalFrequencyUtil { System.out.println("\n=== 示例5:每1年4次(即:4/1),按年(测试)=== 2023-09-15 2025-01-31"); List r5 = calculate("2023-09-15", "2025-01-31", "4/1", 4); r5.forEach(System.out::println); + + // 新增示例:按次、季度、半年 + System.out.println("\n=== 示例6:按次单位,整个时间段算1个周期 === 2025-01-01 2025-12-31"); + List r6 = calculate("2025-01-01", "2025-12-31", "2/1", 5); + r6.forEach(System.out::println); + + System.out.println("\n=== 示例7:每1季度2次(即:2/1),按季度(90天)=== 2025-01-01 2025-12-31"); + List r7 = calculate("2025-01-01", "2025-12-31", "2/1", 6); + r7.forEach(System.out::println); + + System.out.println("\n=== 示例8:每1半年3次(即:3/1),按半年(180天)=== 2025-01-01 2025-12-31"); + List r8 = calculate("2025-01-01", "2025-12-31", "3/1", 7); + r8.forEach(System.out::println); } } 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 dbe07d2..276fbfa 100644 --- a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanDetailMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanDetailMapper.xml @@ -50,6 +50,7 @@ + and a.finish_state = #{req.finishState} @@ -86,4 +87,4 @@ and c.finish_state = #{req.finishState} = #{req.localDateTime}]]> - \ 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 b550a2b..139e81c 100644 --- a/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/maintainplan/MaintainPlanMapper.xml @@ -44,6 +44,7 @@ + and a.finish_state = #{req.finishState} @@ -93,6 +94,7 @@ + and c.finish_state = #{req.finishState} @@ -104,4 +106,4 @@ - \ No newline at end of file + diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java index eff1346..aef1ac3 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java @@ -465,7 +465,7 @@ public class BpmGardenServiceImpl implements BpmGardenService{ String content = pageVO.getSearchContent(); if(ObjectUtils.isNotAllEmpty(type)){ if("1".equals(type)){ - if(ObjectUtils.isNotAllEmpty(content)){mainInfoPageReqVo.setLonLatAddress(content);} + if(ObjectUtils.isNotAllEmpty(content)){mainInfoPageReqVo.setRoadName(content);} } else if("2".equals(type)){ if(ObjectUtils.isNotAllEmpty(content)){mainInfoPageReqVo.setOrderName(content);}