From 0afef28ce2e627dbebfebfd01ba23546b1496312 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 15 五月 2026 13:25:57 +0800
Subject: [PATCH] feat(inspectiontask): 添加设备巡检异常联动维修单功能
---
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java | 71 +++++++++++++++++++++++++++--------
1 files changed, 54 insertions(+), 17 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..779dc5f 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -7,15 +7,14 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.inspectiontask.dto.TimingTaskDto;
-import com.ruoyi.inspectiontask.mapper.InspectionTaskMapper;
import com.ruoyi.inspectiontask.mapper.TimingTaskMapper;
import com.ruoyi.inspectiontask.pojo.TimingTask;
import com.ruoyi.inspectiontask.service.TimingTaskService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import lombok.RequiredArgsConstructor;
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;
@@ -30,19 +29,14 @@
*/
@Service
@Slf4j
+@RequiredArgsConstructor
public class TimingTaskServiceImpl extends ServiceImpl<TimingTaskMapper, TimingTask> implements TimingTaskService {
- @Autowired
- private TimingTaskMapper timingTaskMapper;
-
- @Autowired
- private InspectionTaskMapper inspectionTaskMapper;
-
- @Autowired
- private TimingTaskScheduler timingTaskScheduler;
-
- @Autowired
- private SysUserMapper sysUserMapper;
+ private final TimingTaskMapper timingTaskMapper;
+ private final TimingTaskScheduler timingTaskScheduler;
+ private final SysUserMapper sysUserMapper;
+ private static final int ENABLED = 1;
+ private static final int DISABLED = 0;
@Override
@@ -52,6 +46,12 @@
LambdaQueryWrapper<TimingTask> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(timingTask.getTaskName())) {
queryWrapper.like(TimingTask::getTaskName, timingTask.getTaskName());
+ }
+ if (StringUtils.isNotBlank(timingTask.getInspectionProject())) {
+ queryWrapper.like(TimingTask::getInspectionProject, timingTask.getInspectionProject());
+ }
+ if (timingTask.getIsEnabled() != null) {
+ queryWrapper.eq(TimingTask::getIsEnabled, timingTask.getIsEnabled());
}
IPage<TimingTask> taskPage = timingTaskMapper.selectPage(page, queryWrapper);
@@ -123,8 +123,17 @@
@Override
@Transactional
public int addOrEditTimingTask(TimingTaskDto timingTaskDto) throws SchedulerException {
+ TimingTask oldTimingTask = null;
+ if (Objects.nonNull(timingTaskDto.getId())) {
+ oldTimingTask = timingTaskMapper.selectById(timingTaskDto.getId());
+ if (oldTimingTask == null) {
+ throw new IllegalArgumentException("瀹氭椂浠诲姟涓嶅瓨鍦�");
+ }
+ }
TimingTask timingTask = new TimingTask();
BeanUtils.copyProperties(timingTaskDto, timingTask);
+ timingTask.setIsEnabled(resolveEnabledValue(timingTask.getIsEnabled(), oldTimingTask));
+ timingTask.setActive(ENABLED == timingTask.getIsEnabled());
// 1. 瑙f瀽瀛楃涓蹭负 LocalDate锛堝彧鍖呭惈骞存湀鏃ワ級
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.now();
@@ -140,13 +149,12 @@
// 璁剧疆鍒涘缓浜轰俊鎭拰榛樿鍊�
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) {
+ if (result > 0 && isEnabled(timingTask.getIsEnabled(), timingTask.isActive())) {
// 鏂板鎴愬姛鍚庢坊鍔犲埌璋冨害鍣�
timingTaskScheduler.scheduleTimingTask(timingTask);
}
@@ -156,8 +164,17 @@
int result = timingTaskMapper.updateById(timingTask);
if (result > 0) {
- // 鏇存柊鎴愬姛鍚庨噸鏂拌皟搴︿换鍔�
- timingTaskScheduler.rescheduleTimingTask(timingTask);
+ boolean oldEnabled = isEnabled(oldTimingTask == null ? null : oldTimingTask.getIsEnabled(), oldTimingTask != null && oldTimingTask.isActive());
+ boolean newEnabled = isEnabled(timingTask.getIsEnabled(), timingTask.isActive());
+ if (!newEnabled) {
+ timingTaskScheduler.unscheduleTimingTask(timingTask.getId());
+ } else if (oldEnabled) {
+ // 鏇存柊鎴愬姛鍚庨噸鏂拌皟搴︿换鍔�
+ timingTaskScheduler.rescheduleTimingTask(timingTask);
+ } else {
+ // 浠庣鐢ㄦ敼涓哄惎鐢ㄦ椂閲嶆柊鍒涘缓璋冨害浠诲姟
+ timingTaskScheduler.scheduleTimingTask(timingTask);
+ }
}
return result;
}
@@ -459,6 +476,26 @@
return days;
}
+ private Integer resolveEnabledValue(Integer requestEnabled, TimingTask oldTimingTask) {
+ if (requestEnabled != null) {
+ return requestEnabled;
+ }
+ if (oldTimingTask != null) {
+ if (oldTimingTask.getIsEnabled() != null) {
+ return oldTimingTask.getIsEnabled();
+ }
+ return oldTimingTask.isActive() ? ENABLED : DISABLED;
+ }
+ return ENABLED;
+ }
+
+ private boolean isEnabled(Integer enabledValue, boolean activeFallback) {
+ if (enabledValue != null) {
+ return ENABLED == enabledValue;
+ }
+ return activeFallback;
+ }
+
@Override
--
Gitblit v1.9.3