diff --git a/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java b/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java index 51e34ca..ff2c8ec 100644 --- a/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java +++ b/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java @@ -19,9 +19,11 @@ import com.heai.modules.pms.mapper.QcMapper; import com.heai.modules.pms.service.QcService; import com.heai.modules.pms.util.HttpClientUtil; import com.heai.modules.pms.util.ResponseData; +import com.heai.modules.board.dao.BoardMapper; import com.heai.modules.production.dao.PrintLabelRecordMapper; import com.heai.modules.production.dao.StagnationDetailMapper; import com.heai.modules.production.entity.BatchDetailVO; +import com.heai.modules.production.entity.SiteData; import com.heai.modules.production.entity.StagnationDetail; import com.heai.modules.production.service.InspectService; @@ -116,6 +118,9 @@ public class QcServiceImpl implements QcService { @Autowired private StagnationDetailMapper stagnationDetailMapper; + @Autowired + private BoardMapper boardMapper; + // ======================= 检验方法 ======================= /** @@ -5346,6 +5351,34 @@ public class QcServiceImpl implements QcService { qcMapper.updateQcItemOrder(checkData); } + /** + * 按 Site 表全部 siteID 循环调用 GetQmsTaskAutomaticallyGenerated + */ + @Override + public void autoGenerateQmsTaskBySites() { + List siteList = boardMapper.getSiteData(new SiteData()); + if (siteList == null || siteList.isEmpty()) { + log.info("Site 表无数据,跳过 GetQmsTaskAutomaticallyGenerated 调用"); + return; + } + log.info("开始按 Site 调用 GetQmsTaskAutomaticallyGenerated,共 {} 个 site", siteList.size()); + for (SiteData siteData : siteList) { + String siteId = siteData.getSiteID(); + if (StringUtils.isBlank(siteId)) { + continue; + } + try { + List params = new ArrayList<>(); + params.add(siteId); + // 库中过程名:GetQmsTaskAutomaticallyGenerated,参数 @site + procedureDao.execProduceData("GetQmsTaskAutomaticallyGenerated", params); + log.info("GetQmsTaskAutomaticallyGenerated 调用成功,site={}", siteId); + } catch (Exception e) { + log.error("GetQmsTaskAutomaticallyGenerated 调用失败,site={}", siteId, e); + } + } + } + /** * 创建质量任务 */ @@ -5357,7 +5390,7 @@ public class QcServiceImpl implements QcService { List params = new ArrayList<>(); params.add(site); // 执行 不需要验证返回值 - List> resultList = procedureDao.getProcedureData("GET_QMS_TaskAutomaticallyGenerated", params); + List> resultList = procedureDao.getProcedureData("GetQmsTaskAutomaticallyGenerated", params); // 取 QMS_soscheduledrouting_TASK 表 delete_flag 为Y的数据 List qmsTaskDataList = qcMapper.getQMSTask(); // 新增检验单 diff --git a/src/main/java/com/heai/modules/pms/service/QcService.java b/src/main/java/com/heai/modules/pms/service/QcService.java index 056004a..446005b 100644 --- a/src/main/java/com/heai/modules/pms/service/QcService.java +++ b/src/main/java/com/heai/modules/pms/service/QcService.java @@ -470,4 +470,9 @@ public interface QcService { List> searchQcSopFileList(Map params); List getBatchDetailsByLaboratoryOrder(String laboratoryOrderNo); + + /** + * 按 Site 表全部 siteID 循环调用 GetQmsTaskAutomaticallyGenerated 存储过程 + */ + void autoGenerateQmsTaskBySites(); } diff --git a/src/main/java/com/heai/modules/task/QmsTaskAutoGenerateScheduler.java b/src/main/java/com/heai/modules/task/QmsTaskAutoGenerateScheduler.java new file mode 100644 index 0000000..cfc115e --- /dev/null +++ b/src/main/java/com/heai/modules/task/QmsTaskAutoGenerateScheduler.java @@ -0,0 +1,44 @@ +package com.heai.modules.task; + +import com.heai.modules.pms.service.QcService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * QMS 任务自动生成定时调度器 + *

+ * 每隔一段时间查询 Site 表全部 siteID,逐个调用存储过程 GetQmsTaskAutomaticallyGenerated + */ +@Slf4j +@Component +public class QmsTaskAutoGenerateScheduler { + + @Autowired + private QcService qcService; + + @Value("${scheduler.qms-task-auto.enabled:true}") + private boolean enabled; + + /** + * 默认每 10 分钟执行一次:{@code 0 0/10 * * * ?} + * 可通过 {@code scheduler.qms-task-auto.cron} 覆盖 + */ + @Scheduled(cron = "${scheduler.qms-task-auto.cron:0 0/10 * * * ?}") + public void scheduleQmsTaskAutoGenerate() { + if (!enabled) { + log.debug("QMS任务自动生成定时任务已禁用"); + return; + } + + log.info("=== QMS任务自动生成定时调度开始 ==="); + try { + qcService.autoGenerateQmsTaskBySites(); + log.info("=== QMS任务自动生成定时调度完成 ==="); + } catch (Exception e) { + log.error("=== QMS任务自动生成定时调度失败 ===", e); + } + } +} diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 516598f..0cddd25 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -65,3 +65,8 @@ scheduler: # 是否启用定时任务(true-启用,false-禁用) enabled: false cron: "0 45 16 * * ?" + # QMS任务自动生成(按 Site 循环调用 GetQmsTaskAutomaticallyGenerated) + qms-task-auto: + enabled: true + # 每10分钟执行一次 + cron: "0 0/10 * * * ?"