From b5e1c10a57c7b619b779d2d9ad4cb3773bc39447 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 18 五月 2026 20:40:05 +0800
Subject: [PATCH] feat: 设备巡检添加启用/停止
---
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java | 86 +++++++++++++++++++++++++++++-------------
1 files changed, 59 insertions(+), 27 deletions(-)
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
index 6607d68..97f2de1 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.inspectiontask.dto.TimingTaskDto;
@@ -14,7 +15,6 @@
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import lombok.extern.slf4j.Slf4j;
-import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -122,42 +122,59 @@
@Override
@Transactional
- public int addOrEditTimingTask(TimingTaskDto timingTaskDto) throws SchedulerException {
+ public int addOrEditTimingTask(TimingTaskDto timingTaskDto) {
TimingTask timingTask = new TimingTask();
BeanUtils.copyProperties(timingTaskDto, timingTask);
- // 1. 瑙f瀽瀛楃涓蹭负 LocalDate锛堝彧鍖呭惈骞存湀鏃ワ級
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.now();
- if(StringUtils.isNotEmpty(timingTaskDto.getDateStr())){
+
+ if (StringUtils.isNotEmpty(timingTaskDto.getDateStr())) {
localDate = LocalDate.parse(timingTaskDto.getDateStr(), formatter);
}
- // 2. 鑾峰彇褰撳墠绯荤粺鐨� LocalTime锛堝寘鍚椂鍒嗙锛�
LocalTime currentTime = LocalTime.now();
-
- // 3. 鍚堝苟 LocalDate 鍜屽綋鍓� LocalTime 涓� LocalDateTime
LocalDateTime localDateTime = LocalDateTime.of(localDate, currentTime);
timingTask.setCreateTime(localDateTime);
- // 璁剧疆鍒涘缓浜轰俊鎭拰榛樿鍊�
if (Objects.isNull(timingTaskDto.getId())) {
timingTask.setRegistrationDate(LocalDate.now());
- timingTask.setActive(true);
-
// 璁$畻棣栨鎵ц鏃堕棿
LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask);
timingTask.setNextExecutionTime(firstExecutionTime);
int result = timingTaskMapper.insert(timingTask);
- if (result > 0) {
- // 鏂板鎴愬姛鍚庢坊鍔犲埌璋冨害鍣�
- timingTaskScheduler.scheduleTimingTask(timingTask);
+ // 鏂板鎴愬姛鍚庝笖鍚敤鐘舵�佹墠娣诲姞鍒拌皟搴﹀櫒
+ if (result > 0 && Integer.valueOf(1).equals(timingTask.getIsActive())) {
+ try {
+ timingTaskScheduler.scheduleTimingTask(timingTask);
+ } catch (Exception e) {
+ log.error("娣诲姞宸℃浠诲姟澶辫触 : {}", e.getMessage(), e);
+ throw new ServiceException("娣诲姞宸℃浠诲姟澶辫触");
+ }
}
return result;
} else {
-
-
+ // 缂栬緫鏃讹紝淇濆瓨鏃х殑鐘舵��
+ TimingTask oldTask = timingTaskMapper.selectById(timingTaskDto.getId());
+ Integer oldIsActive = oldTask != null ? oldTask.getIsActive() : 0;
+ Integer newIsActive = timingTask.getIsActive();
int result = timingTaskMapper.updateById(timingTask);
if (result > 0) {
- // 鏇存柊鎴愬姛鍚庨噸鏂拌皟搴︿换鍔�
- timingTaskScheduler.rescheduleTimingTask(timingTask);
+ // 浠庡惎鐢ㄥ彉涓哄仠鐢紝绉婚櫎浠诲姟
+ if (Integer.valueOf(1).equals(oldIsActive)
+ && !Integer.valueOf(1).equals(newIsActive)) {
+ timingTaskScheduler.unscheduleTimingTask(timingTask.getId());
+ }
+ // 浠庡仠鐢ㄥ彉涓哄惎鐢紝娣诲姞浠诲姟
+ else if (!Integer.valueOf(1).equals(oldIsActive)
+ && Integer.valueOf(1).equals(newIsActive)) {
+ // 璁$畻棣栨鎵ц鏃堕棿
+ LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask);
+ timingTask.setNextExecutionTime(firstExecutionTime);
+ try {
+ timingTaskScheduler.scheduleTimingTask(timingTask);
+ } catch (Exception e) {
+ log.error("娣诲姞宸℃浠诲姟澶辫触 : {}", e.getMessage(), e);
+ throw new ServiceException("娣诲姞宸℃浠诲姟澶辫触");
+ }
+ }
}
return result;
}
@@ -195,6 +212,7 @@
// 鏄犲皠鏄熸湡绠�鍐欎笌DayOfWeek
private static final Map<String, DayOfWeek> WEEK_DAY_MAP = new HashMap<>();
+
static {
WEEK_DAY_MAP.put("MON", DayOfWeek.MONDAY);
WEEK_DAY_MAP.put("TUE", DayOfWeek.TUESDAY);
@@ -445,14 +463,29 @@
for (String dayStr : dayStrs) {
switch (dayStr) {
- case "MON": days.add(DayOfWeek.MONDAY); break;
- case "TUE": days.add(DayOfWeek.TUESDAY); break;
- case "WED": days.add(DayOfWeek.WEDNESDAY); break;
- case "THU": days.add(DayOfWeek.THURSDAY); break;
- case "FRI": days.add(DayOfWeek.FRIDAY); break;
- case "SAT": days.add(DayOfWeek.SATURDAY); break;
- case "SUN": days.add(DayOfWeek.SUNDAY); break;
- default: throw new IllegalArgumentException("鏃犳晥鐨勬槦鏈熷嚑: " + dayStr);
+ case "MON":
+ days.add(DayOfWeek.MONDAY);
+ break;
+ case "TUE":
+ days.add(DayOfWeek.TUESDAY);
+ break;
+ case "WED":
+ days.add(DayOfWeek.WEDNESDAY);
+ break;
+ case "THU":
+ days.add(DayOfWeek.THURSDAY);
+ break;
+ case "FRI":
+ days.add(DayOfWeek.FRIDAY);
+ break;
+ case "SAT":
+ days.add(DayOfWeek.SATURDAY);
+ break;
+ case "SUN":
+ days.add(DayOfWeek.SUNDAY);
+ break;
+ default:
+ throw new IllegalArgumentException("鏃犳晥鐨勬槦鏈熷嚑: " + dayStr);
}
}
@@ -460,11 +493,10 @@
}
-
@Override
public int delByIds(Long[] ids) {
int i = timingTaskMapper.deleteBatchIds(Arrays.asList(ids));
- if(i > 0){
+ if (i > 0) {
for (Long id : ids) {
timingTaskScheduler.unscheduleTimingTask(id);
}
--
Gitblit v1.9.3