From 969ef309f4d0df0ff3211e25b0ac46328f79755b Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Fri, 10 Jul 2026 13:53:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E7=AB=99=E5=86=85?= =?UTF-8?q?=E4=BF=A1=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coretask/GenerateMoldWorkOrderTask.java | 28 ++++++++++++++++++- .../coretask/GenerateWorkOrderTask.java | 28 ++++++++++++++++++- .../service/dvrepair/DvRepairServiceImpl.java | 4 ++- .../moldrepair/MoldRepairServiceImpl.java | 4 ++- .../MoldTaskManagementServiceImpl.java | 11 +++++++- .../TaskManagementServiceImpl.java | 11 +++++++- 6 files changed, 80 insertions(+), 6 deletions(-) diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java index 25e932ff1..65493f9c6 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; @@ -77,6 +78,11 @@ public class GenerateMoldWorkOrderTask implements Task { if (moldTaskManagementDO == null) { return; } + if (!isWithinTaskDateRange(moldTaskManagementDO)) { + logger.info("模具工单任务不在执行日期范围内,任务ID: {}, startDate: {}, endDate: {}", + moldTaskManagementDO.getId(), moldTaskManagementDO.getStartDate(), moldTaskManagementDO.getEndDate()); + return; + } List moldIds = Arrays.stream(moldTaskManagementDO.getMoldList().split(",")) .map(String::trim) @@ -125,6 +131,17 @@ public class GenerateMoldWorkOrderTask implements Task { } } + private boolean isWithinTaskDateRange(MoldTaskManagementDO moldTaskManagementDO) { + LocalDate today = LocalDate.now(); + if (moldTaskManagementDO.getStartDate() != null && today.isBefore(moldTaskManagementDO.getStartDate())) { + return false; + } + if (moldTaskManagementDO.getEndDate() != null && today.isAfter(moldTaskManagementDO.getEndDate())) { + return false; + } + return true; + } + private void sendMoldTicketCreateNotifyMessage(MoldTaskManagementDO moldTaskManagementDO, MoldTicketManagementDO moldTicketManagementDO) { Map templateParams = new HashMap<>(); @@ -132,12 +149,21 @@ public class GenerateMoldWorkOrderTask implements Task { templateParams.put("planNo", Objects.toString(moldTicketManagementDO.getPlanNo(), "")); templateParams.put("configName", Objects.toString(moldTicketManagementDO.getConfigName(), "")); templateParams.put("moldName", Objects.toString(moldTicketManagementDO.getMoldName(), "")); - templateParams.put("taskEndTime", formatNotifyDateTime(moldTicketManagementDO.getTaskEndTime())); + templateParams.put("businessType", getMoldBusinessType(moldTicketManagementDO.getPlanType())); + templateParams.put("createTime", formatNotifyDateTime( + moldTicketManagementDO.getCreateTime() != null ? moldTicketManagementDO.getCreateTime() : LocalDateTime.now())); mesNotifyMessageService.sendToAdmins(moldTaskManagementDO.getOperableUsers(), MOLD_TASK_TICKET_CREATE_NOTIFY_TEMPLATE_CODE, templateParams, "模具工单", moldTicketManagementDO.getId()); } + private String getMoldBusinessType(Integer taskType) { + if (Integer.valueOf(2).equals(taskType)) { + return "模具保养"; + } + return "模具点检"; + } + private String formatNotifyDateTime(LocalDateTime dateTime) { return dateTime == null ? "" : dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java index 524006bb2..d1a8468dc 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java @@ -23,6 +23,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; @@ -98,6 +99,11 @@ public class GenerateWorkOrderTask implements Task { if (taskManagementDO == null){ return; } + if (!isWithinTaskDateRange(taskManagementDO)) { + logger.info("设备工单任务不在执行日期范围内,任务ID: {}, startDate: {}, endDate: {}", + taskManagementDO.getId(), taskManagementDO.getStartDate(), taskManagementDO.getEndDate()); + return; + } // 将逗号分隔的字符串转换为Long类型的List List idList = Arrays.stream(taskManagementDO.getDeviceList().split(",")) @@ -141,18 +147,38 @@ public class GenerateWorkOrderTask implements Task { } } + private boolean isWithinTaskDateRange(TaskManagementDO taskManagementDO) { + LocalDate today = LocalDate.now(); + if (taskManagementDO.getStartDate() != null && today.isBefore(taskManagementDO.getStartDate())) { + return false; + } + if (taskManagementDO.getEndDate() != null && today.isAfter(taskManagementDO.getEndDate())) { + return false; + } + return true; + } + private void sendTicketCreateNotifyMessage(TaskManagementDO taskManagementDO, TicketManagementDO ticketManagementDO) { Map templateParams = new HashMap<>(); templateParams.put("ticketId", ticketManagementDO.getId()); templateParams.put("planNo", Objects.toString(ticketManagementDO.getPlanNo(), "")); templateParams.put("configName", Objects.toString(ticketManagementDO.getConfigName(), "")); templateParams.put("deviceName", Objects.toString(ticketManagementDO.getDeviceName(), "")); - templateParams.put("taskEndTime", formatNotifyDateTime(ticketManagementDO.getTaskEndTime())); + templateParams.put("businessType", getDeviceBusinessType(ticketManagementDO.getPlanType())); + templateParams.put("createTime", formatNotifyDateTime( + ticketManagementDO.getCreateTime() != null ? ticketManagementDO.getCreateTime() : LocalDateTime.now())); mesNotifyMessageService.sendToAdmins(taskManagementDO.getOperableUsers(), TASK_TICKET_CREATE_NOTIFY_TEMPLATE_CODE, templateParams, "设备工单", ticketManagementDO.getId()); } + private String getDeviceBusinessType(Integer taskType) { + if (Integer.valueOf(2).equals(taskType)) { + return "设备保养"; + } + return "设备点检"; + } + private String formatNotifyDateTime(LocalDateTime dateTime) { return dateTime == null ? "" : dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java index 5c789bd18..d7d4e850e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/dvrepair/DvRepairServiceImpl.java @@ -97,7 +97,9 @@ public class DvRepairServiceImpl implements DvRepairService { templateParams.put("machineryName", Objects.toString(dvRepair.getMachineryName(), "")); templateParams.put("faultPhenomenon", Objects.toString(dvRepair.getFaultPhenomenon(), "")); templateParams.put("faultDescription", Objects.toString(dvRepair.getFaultDescription(), "")); - templateParams.put("requireDate", formatNotifyDateTime(dvRepair.getRequireDate())); + templateParams.put("businessType", "设备维修"); + templateParams.put("createTime", formatNotifyDateTime( + dvRepair.getCreateTime() != null ? dvRepair.getCreateTime() : LocalDateTime.now())); mesNotifyMessageService.sendToAdmin(dvRepair.getAcceptedBy(), DV_REPAIR_CREATE_NOTIFY_TEMPLATE_CODE, templateParams, "设备维修单", dvRepair.getId()); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java index 7d5bfb403..fe2ab22b8 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java @@ -106,7 +106,9 @@ public class MoldRepairServiceImpl implements MoldRepairService { templateParams.put("moldName", Objects.toString(moldRepair.getMoldName(), "")); templateParams.put("faultPhenomenon", Objects.toString(moldRepair.getFaultPhenomenon(), "")); templateParams.put("faultDescription", Objects.toString(moldRepair.getFaultDescription(), "")); - templateParams.put("requireDate", formatNotifyDateTime(moldRepair.getRequireDate())); + templateParams.put("businessType", "模具维修"); + templateParams.put("createTime", formatNotifyDateTime( + moldRepair.getCreateTime() != null ? moldRepair.getCreateTime() : LocalDateTime.now())); mesNotifyMessageService.sendToAdmin(moldRepair.getAcceptedBy(), MOLD_REPAIR_CREATE_NOTIFY_TEMPLATE_CODE, templateParams, "模具维修单", moldRepair.getId()); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java index baa472c01..cb3928c0e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java @@ -251,12 +251,21 @@ public class MoldTaskManagementServiceImpl implements MoldTaskManagementService templateParams.put("planNo", Objects.toString(moldticketManagementDO.getPlanNo(), "")); templateParams.put("configName", Objects.toString(moldticketManagementDO.getConfigName(), "")); templateParams.put("moldName", Objects.toString(moldticketManagementDO.getMoldName(), "")); - templateParams.put("taskEndTime", formatNotifyDateTime(moldticketManagementDO.getTaskEndTime())); + templateParams.put("businessType", getMoldBusinessType(moldticketManagementDO.getPlanType())); + templateParams.put("createTime", formatNotifyDateTime( + moldticketManagementDO.getCreateTime() != null ? moldticketManagementDO.getCreateTime() : LocalDateTime.now())); mesNotifyMessageService.sendToAdmins(moldtaskManagementDO.getOperableUsers(), MOLD_TASK_TICKET_CREATE_NOTIFY_TEMPLATE_CODE, templateParams, "模具工单", moldticketManagementDO.getId()); } + private String getMoldBusinessType(Integer taskType) { + if (Integer.valueOf(2).equals(taskType)) { + return "模具保养"; + } + return "模具点检"; + } + private String formatNotifyDateTime(LocalDateTime dateTime) { return dateTime == null ? "" : dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java index 32568ceb0..5e2a1eeb6 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/TaskManagementServiceImpl.java @@ -249,12 +249,21 @@ public class TaskManagementServiceImpl implements TaskManagementService { templateParams.put("planNo", Objects.toString(ticketManagementDO.getPlanNo(), "")); templateParams.put("configName", Objects.toString(ticketManagementDO.getConfigName(), "")); templateParams.put("deviceName", Objects.toString(ticketManagementDO.getDeviceName(), "")); - templateParams.put("taskEndTime", formatNotifyDateTime(ticketManagementDO.getTaskEndTime())); + templateParams.put("businessType", getDeviceBusinessType(ticketManagementDO.getPlanType())); + templateParams.put("createTime", formatNotifyDateTime( + ticketManagementDO.getCreateTime() != null ? ticketManagementDO.getCreateTime() : LocalDateTime.now())); mesNotifyMessageService.sendToAdmins(taskManagementDO.getOperableUsers(), TASK_TICKET_CREATE_NOTIFY_TEMPLATE_CODE, templateParams, "设备工单", ticketManagementDO.getId()); } + private String getDeviceBusinessType(Integer taskType) { + if (Integer.valueOf(2).equals(taskType)) { + return "设备保养"; + } + return "设备点检"; + } + private String formatNotifyDateTime(LocalDateTime dateTime) { return dateTime == null ? "" : dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } From 98544d42c97ab9c9d70a05a34fe369980d738718 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Fri, 10 Jul 2026 15:37:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=8F=8A=E5=8F=B0=E8=B4=A6=E5=AE=9A=E6=97=B6=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E4=BB=BB=E5=8A=A1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/TaskSchedulerManager.java | 18 +++- .../coretask/GenerateMoldWorkOrderTask.java | 4 + .../WorkOrderScheduleInitializer.java | 99 +++++++++++++++++++ 3 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/WorkOrderScheduleInitializer.java diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/scheduler/TaskSchedulerManager.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/scheduler/TaskSchedulerManager.java index 5a9e857fc..792363add 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/scheduler/TaskSchedulerManager.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/scheduled/scheduler/TaskSchedulerManager.java @@ -1,6 +1,8 @@ // TaskSchedulerManager.java package cn.iocoder.yudao.module.iot.controller.admin.device.scheduled.scheduler; +import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; +import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; import cn.iocoder.yudao.module.iot.controller.admin.device.enums.TaskTypeEnum; import cn.iocoder.yudao.module.iot.controller.admin.device.scheduled.core.Task; import org.slf4j.Logger; @@ -42,6 +44,7 @@ public class TaskSchedulerManager { private Long initialDelay; private Long period; private TimeUnit timeUnit; + private Long tenantId; // 构造器 public TaskInfo(Long taskId, String taskType, String taskParam) { @@ -116,6 +119,7 @@ public class TaskSchedulerManager { taskInfo.initialDelay = initialDelay; taskInfo.period = period; taskInfo.timeUnit = timeUnit; + taskInfo.tenantId = TenantContextHolder.getTenantId(); taskInfos.put(taskId, taskInfo); // 根据调度类型创建任务 @@ -123,7 +127,7 @@ public class TaskSchedulerManager { switch (scheduleType) { case "CRON": future = taskScheduler.schedule( - () -> task.execute(taskId, taskParam), + () -> executeTask(task, taskId, taskParam, taskInfo.tenantId), new CronTrigger(cronExpression) ); break; @@ -131,7 +135,7 @@ public class TaskSchedulerManager { case "FIXED_RATE": if (initialDelay != null && period != null && timeUnit != null) { future = taskScheduler.scheduleAtFixedRate( - () -> task.execute(taskId, taskParam), + () -> executeTask(task, taskId, taskParam, taskInfo.tenantId), initialDelay ); } @@ -140,7 +144,7 @@ public class TaskSchedulerManager { case "FIXED_DELAY": if (initialDelay != null && period != null && timeUnit != null) { future = taskScheduler.scheduleWithFixedDelay( - () -> task.execute(taskId, taskParam), + () -> executeTask(task, taskId, taskParam, taskInfo.tenantId), initialDelay ); } @@ -162,6 +166,14 @@ public class TaskSchedulerManager { } } + private void executeTask(Task task, Long taskId, String taskParam, Long tenantId) { + if (tenantId == null) { + task.execute(taskId, taskParam); + return; + } + TenantUtils.execute(tenantId, () -> task.execute(taskId, taskParam)); + } + // TaskSchedulerManager.java public boolean stopTask(Long taskId) { try { diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java index 65493f9c6..62746cf3a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldtaskmanagement/scheduled/coretask/GenerateMoldWorkOrderTask.java @@ -78,6 +78,10 @@ public class GenerateMoldWorkOrderTask implements Task { if (moldTaskManagementDO == null) { return; } + if (!Boolean.TRUE.equals(moldTaskManagementDO.getEnabled())) { + logger.info("模具工单任务已禁用,跳过执行,任务ID: {}", moldTaskManagementDO.getId()); + return; + } if (!isWithinTaskDateRange(moldTaskManagementDO)) { logger.info("模具工单任务不在执行日期范围内,任务ID: {}, startDate: {}, endDate: {}", moldTaskManagementDO.getId(), moldTaskManagementDO.getStartDate(), moldTaskManagementDO.getEndDate()); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/WorkOrderScheduleInitializer.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/WorkOrderScheduleInitializer.java new file mode 100644 index 000000000..4a209acde --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/taskmanagement/WorkOrderScheduleInitializer.java @@ -0,0 +1,99 @@ +package cn.iocoder.yudao.module.mes.service.taskmanagement; + +import cn.iocoder.yudao.module.iot.controller.admin.device.scheduled.scheduler.TaskSchedulerManager; +import cn.iocoder.yudao.framework.tenant.core.service.TenantFrameworkService; +import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.taskmanagement.TaskManagementDO; +import cn.iocoder.yudao.module.mes.dal.mysql.moldtaskmanagement.MoldTaskManagementMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.taskmanagement.TaskManagementMapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Component +public class WorkOrderScheduleInitializer { + + @Resource + private TaskManagementMapper taskManagementMapper; + @Resource + private MoldTaskManagementMapper moldTaskManagementMapper; + @Resource + private TaskSchedulerManager taskSchedulerManager; + @Resource + private TenantFrameworkService tenantFrameworkService; + + @EventListener(ApplicationReadyEvent.class) + public void restoreEnabledWorkOrderSchedules() { + List tenantIds = getTenantIdsSafely(); + for (Long tenantId : tenantIds) { + try { + TenantUtils.execute(tenantId, () -> { + restoreDeviceWorkOrderSchedules(); + restoreMoldWorkOrderSchedules(); + }); + } catch (Exception ex) { + log.error("Tenant {} work order schedule restore exception", tenantId, ex); + } + } + } + + private List getTenantIdsSafely() { + try { + return tenantFrameworkService.getTenantIds(); + } catch (Exception ex) { + log.error("Load tenant ids for work order schedule restore failed", ex); + return Collections.emptyList(); + } + } + + private void restoreDeviceWorkOrderSchedules() { + List taskList = taskManagementMapper.selectList( + Wrappers.lambdaQuery().eq(TaskManagementDO::getEnabled, true)); + for (TaskManagementDO task : taskList) { + if (!StringUtils.hasText(task.getCronExpression())) { + log.warn("Device work order task {} is enabled but cron is blank, skip schedule restore", task.getId()); + continue; + } + try { + boolean success = taskSchedulerManager.startWorkOrderTask(task.getId(), task.getCronExpression()); + if (success) { + log.info("Device work order task {} schedule restored successfully", task.getId()); + } else { + log.warn("Device work order task {} schedule restore failed", task.getId()); + } + } catch (Exception ex) { + log.error("Device work order task {} schedule restore exception", task.getId(), ex); + } + } + } + + private void restoreMoldWorkOrderSchedules() { + List taskList = moldTaskManagementMapper.selectList( + Wrappers.lambdaQuery().eq(MoldTaskManagementDO::getEnabled, true)); + for (MoldTaskManagementDO task : taskList) { + if (!StringUtils.hasText(task.getCronExpression())) { + log.warn("Mold work order task {} is enabled but cron is blank, skip schedule restore", task.getId()); + continue; + } + try { + boolean success = taskSchedulerManager.startMoldWorkOrderTask(task.getId(), task.getCronExpression()); + if (success) { + log.info("Mold work order task {} schedule restored successfully", task.getId()); + } else { + log.warn("Mold work order task {} schedule restore failed", task.getId()); + } + } catch (Exception ex) { + log.error("Mold work order task {} schedule restore exception", task.getId(), ex); + } + } + } +} From f0b0c9e9a910dfcb11d45a48eb5c78a5fda89f8a Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Fri, 10 Jul 2026 17:43:46 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BA=8C?= =?UTF-8?q?=E6=AC=A1=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduled/coretask/GenerateWorkOrderTask.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java index d1a8468dc..334f28f1d 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/taskmanagement/scheduled/coretask/GenerateWorkOrderTask.java @@ -99,6 +99,10 @@ public class GenerateWorkOrderTask implements Task { if (taskManagementDO == null){ return; } + if (!Boolean.TRUE.equals(taskManagementDO.getEnabled())) { + logger.info("设备工单任务已禁用,跳过执行,任务ID: {}", taskManagementDO.getId()); + return; + } if (!isWithinTaskDateRange(taskManagementDO)) { logger.info("设备工单任务不在执行日期范围内,任务ID: {}, startDate: {}, endDate: {}", taskManagementDO.getId(), taskManagementDO.getStartDate(), taskManagementDO.getEndDate());