From a55c0eaa8b6d64f42cfe981cc1cb4516123915c8 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Mon, 9 Feb 2026 09:49:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(plan):=20=E6=9B=B4=E6=96=B0=E5=B7=A1?= =?UTF-8?q?=E6=A3=80=E5=92=8C=E4=BF=9D=E5=85=BB=E8=AE=A1=E5=88=92=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在巡检计划服务中根据巡检级别和周期字段重新构建cron表达式 - 在保养计划服务中根据保养级别和周期字段重新构建cron表达式 - 实现基于不同级别(日/月/年)的cron表达式生成逻辑 - 添加周级别处理时的日期偏移计算(week + 1) - 集成CronUtils获取下次执行时间功能 - 更新时间限制计算逻辑,统一转换为秒数存储 - 移除控制器文件中的多余空行以优化代码格式 --- .../controller/DmsPlanInspectController.java | 3 -- .../controller/DmsPlanMaintController.java | 3 -- .../impl/DmsPlanInspectServiceImpl.java | 40 +++++++++++++++++++ .../service/impl/DmsPlanMaintServiceImpl.java | 32 ++++++++++++++- 4 files changed, 71 insertions(+), 7 deletions(-) diff --git a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanInspectController.java b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanInspectController.java index 65ccd8b..f777f22 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanInspectController.java +++ b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanInspectController.java @@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; - - - /** * 巡检计划信息Controller * diff --git a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanMaintController.java b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanMaintController.java index f43f1ea..89a766f 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanMaintController.java +++ b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsPlanMaintController.java @@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; - - - /** * 保养计划信息Controller * diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java index d17da40..320ed2d 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java @@ -189,6 +189,46 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService @Override public int updateDmsPlanInspect(DmsPlanInspect dmsPlanInspect) { + // 根据巡检级别和周期字段重新构建cron表达式 + String day = "*"; + String month = "*"; + String week = "*"; + String year = "*"; + String cron = ""; + if (dmsPlanInspect.getDay()!=null){ + day = dmsPlanInspect.getDay().toString(); + } + if (dmsPlanInspect.getMonth()!=null){ + month = dmsPlanInspect.getMonth().toString(); + } + if (dmsPlanInspect.getWeek()!=null){ + Long weekDay = dmsPlanInspect.getWeek() + 1; + week = weekDay.toString(); + } + if (dmsPlanInspect.getYear()!=null){ + year = dmsPlanInspect.getYear().toString(); + } + if (dmsPlanInspect.getInspectLevel().equals(1l)){ + cron = "0 0 "+dmsPlanInspect.getHour()+" "+day+" "+month+" ?"; + } + if (dmsPlanInspect.getInspectLevel().equals(2l)){ + cron = "0 0 "+dmsPlanInspect.getHour()+" ?"+" "+month+" "+week; + } + if (dmsPlanInspect.getInspectLevel().equals(3l)){ + cron = "0 0 "+dmsPlanInspect.getHour()+" "+day+" "+ month+" ? "+year; + } + + String time = cron; + //通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(time); + dmsPlanInspect.setPlanTime(nextExecution); + dmsPlanInspect.setCronExpression(cron); + + Long timeLimitDays = dmsPlanInspect.getTimeLimitDays()==null?0L:dmsPlanInspect.getTimeLimitDays(); + Long timeLimitHours = dmsPlanInspect.getTimeLimitHours() == null?0L:dmsPlanInspect.getTimeLimitHours(); + dmsPlanInspect.setTimeLimit((timeLimitDays * 24 * 60 * 60) + + (timeLimitHours * 60 * 60)); + LoginUser user = SecurityUtils.getLoginUser(); dmsPlanInspect.setUpdateBy(user.getUserId()); dmsPlanInspect.setUpdateTime(DateUtils.getNowDate()); diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java index 9859622..7804791 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java @@ -191,10 +191,40 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { } }*/ - String time = dmsPlanMaint.getCronExpression(); + // 根据保养级别和周期字段重新构建cron表达式 + String day = "*"; + String month = "*"; + String week = "*"; + String year = "*"; + String cron = ""; + if (dmsPlanMaint.getDay()!=null){ + day = dmsPlanMaint.getDay().toString(); + } + if (dmsPlanMaint.getMonth()!=null){ + month = dmsPlanMaint.getMonth().toString(); + } + if (dmsPlanMaint.getWeek()!=null){ + Long weekDay = dmsPlanMaint.getWeek() + 1; + week = weekDay.toString(); + } + if (dmsPlanMaint.getYear()!=null){ + year = dmsPlanMaint.getYear().toString(); + } + if (dmsPlanMaint.getMaintLevel().equals(1l)){ + cron = "0 0 "+dmsPlanMaint.getHour()+" "+day+" "+month+" ?"; + } + if (dmsPlanMaint.getMaintLevel().equals(2l)){ + cron = "0 0 "+dmsPlanMaint.getHour()+" ?"+" "+month+" "+week; + } + if (dmsPlanMaint.getMaintLevel().equals(3l)){ + cron = "0 0 "+dmsPlanMaint.getHour()+" "+day+" "+ month+" ? "+year; + } + + String time = cron; //通过cron表达式获取下一次执行时间 Date nextExecution = CronUtils.getNextExecution(time); dmsPlanMaint.setMaintTime(nextExecution); + dmsPlanMaint.setCronExpression(cron); Long timeLimitDays = dmsPlanMaint.getTimeLimitDays()==null?0L:dmsPlanMaint.getTimeLimitDays(); Long timeLimitHours = dmsPlanMaint.getTimeLimitHours() == null?0L:dmsPlanMaint.getTimeLimitHours(); dmsPlanMaint.setTimeLimit((timeLimitDays * 24 * 60 * 60)