From 6047f24edc72a13b71813c3fb6cc0d087c0f6cd7 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 29 十二月 2025 12:46:35 +0800
Subject: [PATCH] yys  巡检定时任务持久化

---
 /dev/null                                                                              |   93 ---------------
 main-business/src/main/java/com/ruoyi/business/task/QuartzConfig.java                  |   64 ++++++++++
 ruoyi-quartz/pom.xml                                                                   |    4 
 main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskScheduler.java   |   80 ++++++++-----
 basic-server/src/main/java/com/ruoyi/basic/service/impl/SupplyServiceImpl.java         |   18 +-
 main-business/src/main/java/com/ruoyi/business/task/TimingTaskJob.java                 |    7 
 main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskServiceImpl.java |    8 +
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java        |   24 +++
 basic-server/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java       |   20 +-
 9 files changed, 166 insertions(+), 152 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
index 2186ae5..5547a57 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -72,21 +72,21 @@
     public int addOrEditCustomer(CustomerDto customerDto) {
         Customer customer = new Customer();
         BeanUtils.copyProperties(customerDto, customer);
-        if (customerDto.getBids().size() != 3) {
-            throw new RuntimeException("璇烽�夋嫨缁忚惀鍦板潃鐪佸競鍖�");
+        if (customerDto.getBids() != null && customerDto.getBids().size() == 3) {
+            customer.setBusinessProvinceId(customerDto.getBids().get(0));
+            customer.setBusinessCityId(customerDto.getBids().get(1));
+            customer.setBusinessDistrictId(customerDto.getBids().get(2));
         }
 
-        if (customerDto.getCids().size() != 3) {
-            throw new RuntimeException("璇烽�夋嫨鑱旂郴鍦板潃鐪佸競鍖�");
+        if (customerDto.getCids() != null && customerDto.getCids().size() == 3) {
+            customer.setProvinceId(customerDto.getCids().get(0));
+            customer.setCityId(customerDto.getCids().get(1));
+            customer.setDistrictId(customerDto.getCids().get(2));
         }
 
-        customer.setBusinessProvinceId(customerDto.getBids().get(0));
-        customer.setBusinessCityId(customerDto.getBids().get(1));
-        customer.setBusinessDistrictId(customerDto.getBids().get(2));
 
-        customer.setProvinceId(customerDto.getCids().get(0));
-        customer.setCityId(customerDto.getCids().get(1));
-        customer.setDistrictId(customerDto.getCids().get(2));
+
+
 
         if (Objects.isNull(customerDto.getId())) {
             return customerMapper.insert(customer);
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/SupplyServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/SupplyServiceImpl.java
index fdf4c45..8b163c0 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/SupplyServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/SupplyServiceImpl.java
@@ -67,21 +67,19 @@
     public int addOrEditSupply(SupplyDto supplyDto) {
         Supply supply = new Supply();
         BeanUtils.copyProperties(supplyDto, supply);
-        if (supplyDto.getBids().size() != 3) {
-            throw new RuntimeException("璇烽�夋嫨缁忚惀鍦板潃鐪佸競鍖�");
+        if (supplyDto.getBids() != null && supplyDto.getBids().size() == 3) {
+            supply.setBProvinceId(supplyDto.getBids().get(0));
+            supply.setBCityId(supplyDto.getBids().get(1));
+            supply.setBDistrictId(supplyDto.getBids().get(2));
         }
 
-        if (supplyDto.getCids().size() != 3) {
-            throw new RuntimeException("璇烽�夋嫨鑱旂郴鍦板潃鐪佸競鍖�");
+        if (supplyDto.getCids() != null && supplyDto.getCids().size() == 3) {
+            supply.setCProvinceId(supplyDto.getCids().get(0));
+            supply.setCCityId(supplyDto.getCids().get(1));
+            supply.setCDistrictId(supplyDto.getCids().get(2));
         }
 
-        supply.setBProvinceId(supplyDto.getBids().get(0));
-        supply.setBCityId(supplyDto.getBids().get(1));
-        supply.setBDistrictId(supplyDto.getBids().get(2));
 
-        supply.setCProvinceId(supplyDto.getCids().get(0));
-        supply.setCCityId(supplyDto.getCids().get(1));
-        supply.setCDistrictId(supplyDto.getCids().get(2));
 
 
         if (Objects.isNull(supplyDto.getId())) {
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskScheduler.java b/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskScheduler.java
index 9927845..2b7f1a2 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskScheduler.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskScheduler.java
@@ -43,13 +43,18 @@
             throw new SchedulerException("Existing trigger is not a CronTrigger");
         }
 
-        // 鏋勫缓鏂拌Е鍙戝櫒
-        Trigger newTrigger = TriggerBuilder.newTrigger()
-                .withIdentity(triggerKey)
-                .withDescription(task.getTaskName())
-                .withSchedule(CronScheduleBuilder.cronSchedule(convertToCronExpression(task)))
-                .startAt(Date.from(task.getNexExecutionTime().atZone(ZoneId.systemDefault()).toInstant()))
-                .forJob(oldTrigger.getJobKey())
+        // 3. 鏋勫缓CronTrigger锛岀‘淇濇寔涔呭寲閰嶇疆
+        CronTrigger newTrigger = TriggerBuilder.newTrigger()
+                .withIdentity(triggerKey)                // 鍞竴鏍囪瘑锛岀敤浜庢寔涔呭寲瀛樺偍
+                .withDescription(task.getTaskName() + "_TRIGGER") // 瑙﹀彂鍣ㄦ弿杩�
+                .forJob(oldTrigger.getJobKey())                       // 鍏宠仈瀵瑰簲鐨凧ob
+                .withSchedule(CronScheduleBuilder
+                        .cronSchedule(convertToCronExpression(task)) // 閿欒繃鎵ц鏃剁殑绛栫暐锛堟牴鎹笟鍔¤皟鏁达級
+                )
+                // 4. 璁剧疆寮�濮嬫椂闂达紙鑻ヤ负null鍒欑珛鍗崇敓鏁堬級
+                .startAt(task.getNexExecutionTime() != null
+                        ? Date.from(task.getNexExecutionTime().atZone(ZoneId.systemDefault()).toInstant())
+                        : new Date())
                 .build();
 
         scheduler.rescheduleJob(triggerKey, newTrigger);
@@ -74,40 +79,55 @@
     /**
      * 鍒犻櫎浠诲姟
      */
-    public void unscheduleTimingTask(Long taskId) throws SchedulerException {
-        JobKey jobKey = new JobKey("timingTask_" + taskId);
-        scheduler.deleteJob(jobKey);
+    public void unscheduleTimingTask(Long taskId) {
+        try{
+            JobKey jobKey = new JobKey("timingTask_" + taskId);
+            scheduler.deleteJob(jobKey);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
 
     private JobDetail buildJobDetail(TimingTask task) {
-        JobDataMap jobDataMap = new JobDataMap();
-        jobDataMap.put("taskId", task.getId());
+        // 1. 鏋勫缓鍞竴JobKey锛堝熀浜庝换鍔D锛岀‘淇濋噸鍚悗鑳借瘑鍒級
+        JobKey jobKey = new JobKey("timingTask_" + task.getId());
 
+        // 2. 灏佽浠诲姟鏁版嵁锛堜粎浣跨敤鍩烘湰绫诲瀷锛岀‘淇濆彲搴忓垪鍖栵級
+        JobDataMap jobDataMap = new JobDataMap();
+        jobDataMap.put("taskId", task.getId().toString());           // 浠诲姟ID锛圠ong锛屽彲搴忓垪鍖栵級
+        // 鎸夐渶娣诲姞鍏朵粬蹇呰鐨勫熀鏈被鍨嬪弬鏁�
+
+        // 3. 鏋勫缓JobDetail锛岃缃寔涔呭寲鐩稿叧灞炴��
         return JobBuilder.newJob(TimingTaskJob.class)
-                .withIdentity("timingTask_" + task.getId())
-                .withDescription(task.getTaskName())
-                .usingJobData(jobDataMap)
-                .storeDurably()
+                .withIdentity(jobKey)                    // 鍞竴鏍囪瘑锛岀敤浜庢寔涔呭寲瀛樺偍
+                .withDescription(task.getTaskName())     // 浠诲姟鎻忚堪锛屽瓨鍏ユ暟鎹簱
+                .usingJobData(jobDataMap)                // 缁戝畾浠诲姟鏁版嵁
+                .storeDurably(true)                          // 鍗充娇娌℃湁瑙﹀彂鍣ㄥ叧鑱斾篃鎸佷箙鍖栦繚瀛�
+                .requestRecovery(true)                   // 褰撹皟搴﹀櫒宕╂簝鍚庢仮澶嶆椂锛岄噸鏂版墽琛屾湭瀹屾垚鐨勪换鍔�
                 .build();
     }
 
     private Trigger buildJobTrigger(TimingTask task, JobDetail jobDetail) {
+        // 1. 鏋勫缓鍞竴TriggerKey锛堝熀浜庝换鍔D锛�
+        TriggerKey triggerKey = new TriggerKey("trigger_" + task.getId());
+
+        // 2. 鐢熸垚Cron琛ㄨ揪寮忥紙鍘熼�昏緫涓嶅彉锛�
         String cronExpression = convertToCronExpression(task);
 
-            TriggerBuilder<CronTrigger> triggerBuilder = TriggerBuilder.newTrigger()
-                .withIdentity("trigger_" + task.getId())
-                .withDescription(task.getTaskName())
-                .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression));
-
-        if (jobDetail != null) {
-            triggerBuilder.forJob(jobDetail);
-        }
-
-        if (task.getNexExecutionTime() != null) {
-            triggerBuilder.startAt(Date.from(task.getNexExecutionTime().atZone(ZoneId.systemDefault()).toInstant()));
-        }
-
-        return triggerBuilder.build();
+        // 3. 鏋勫缓CronTrigger锛岀‘淇濇寔涔呭寲閰嶇疆
+        return TriggerBuilder.newTrigger()
+                .withIdentity(triggerKey)                // 鍞竴鏍囪瘑锛岀敤浜庢寔涔呭寲瀛樺偍
+                .withDescription(task.getTaskName() + "_TRIGGER") // 瑙﹀彂鍣ㄦ弿杩�
+                .forJob(jobDetail)                       // 鍏宠仈瀵瑰簲鐨凧ob
+                .withSchedule(CronScheduleBuilder
+                        .cronSchedule(cronExpression)
+                        .withMisfireHandlingInstructionDoNothing() // 閿欒繃鎵ц鏃剁殑绛栫暐锛堟牴鎹笟鍔¤皟鏁达級
+                )
+                // 4. 璁剧疆寮�濮嬫椂闂达紙鑻ヤ负null鍒欑珛鍗崇敓鏁堬級
+                .startAt(task.getNexExecutionTime() != null
+                        ? Date.from(task.getNexExecutionTime().atZone(ZoneId.systemDefault()).toInstant())
+                        : new Date())
+                .build();
     }
 
     private String convertToCronExpression(TimingTask task) {
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskServiceImpl.java
index cb3911d..47bae19 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/TimingTaskServiceImpl.java
@@ -400,6 +400,12 @@
 
     @Override
     public int delByIds(Long[] ids) {
-        return timingTaskMapper.deleteByIds(Arrays.asList(ids));
+        int i = timingTaskMapper.deleteByIds(Arrays.asList(ids));
+//        if (i > 0) {
+//            for (Long id : ids) {
+//                timingTaskScheduler.unscheduleTimingTask(id);
+//            }
+//        }
+        return i;
     }
 }
diff --git a/main-business/src/main/java/com/ruoyi/business/task/QuartzConfig.java b/main-business/src/main/java/com/ruoyi/business/task/QuartzConfig.java
new file mode 100644
index 0000000..62832ba
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/task/QuartzConfig.java
@@ -0,0 +1,64 @@
+package com.ruoyi.business.task;
+
+import org.quartz.Scheduler;
+import org.quartz.spi.TriggerFiredBundle;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+import org.springframework.scheduling.quartz.SpringBeanJobFactory;
+
+import javax.sql.DataSource;
+
+@Configuration
+public class QuartzConfig {
+    @Autowired
+    private ApplicationContext applicationContext;
+
+    // 鍋囪宸查厤缃悕涓篸ataSource鐨勬暟鎹簮Bean
+    @Autowired
+    private DataSource dataSource;
+
+    @Bean
+    public SchedulerFactoryBean schedulerFactoryBean() {
+        SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
+
+        // 閰嶇疆SpringBeanJobFactory锛岀敤浜庢敮鎸丣ob涓殑渚濊禆娉ㄥ叆
+        AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
+        jobFactory.setApplicationContext(applicationContext);
+        schedulerFactory.setJobFactory(jobFactory);
+
+        // 鍦╯chedulerFactoryBean()鏂规硶涓坊鍔�
+//        schedulerFactory.setDataSource(dataSource);
+        // 鍏朵粬閰嶇疆...
+        return schedulerFactory;
+    }
+
+    @Bean
+    public Scheduler scheduler() {
+        return schedulerFactoryBean().getScheduler();
+    }
+
+    // 鑷畾涔塉obFactory锛屾敮鎸佽嚜鍔ㄦ敞鍏�
+    public static class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory
+            implements ApplicationContextAware {
+
+        private transient AutowireCapableBeanFactory beanFactory;
+
+        @Override
+        public void setApplicationContext(ApplicationContext applicationContext) {
+            this.beanFactory = applicationContext.getAutowireCapableBeanFactory();
+        }
+
+        @Override
+        protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
+            Object jobInstance = super.createJobInstance(bundle);
+            // 灏咼ob瀹炰緥浜ょ粰Spring瀹瑰櫒绠$悊锛屼娇鍏惰兘澶熻繘琛屼緷璧栨敞鍏�
+            beanFactory.autowireBean(jobInstance);
+            return jobInstance;
+        }
+    }
+}
\ No newline at end of file
diff --git a/main-business/src/main/java/com/ruoyi/business/task/TimingTaskJob.java b/main-business/src/main/java/com/ruoyi/business/task/TimingTaskJob.java
index e642756..2db1aad 100644
--- a/main-business/src/main/java/com/ruoyi/business/task/TimingTaskJob.java
+++ b/main-business/src/main/java/com/ruoyi/business/task/TimingTaskJob.java
@@ -8,15 +8,16 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 
 @Component
 @DisallowConcurrentExecution // 绂佹骞跺彂鎵ц鍚屼竴涓狫ob
-public class TimingTaskJob implements Job {
+public class TimingTaskJob implements Job,Serializable {
+    private static final long serialVersionUID = 1L; // 蹇呴』瀹氫箟搴忓垪鍖朓D
 
     @Autowired
-    private
-    TimingTaskService timingTaskService;
+    private TimingTaskService timingTaskService;
 
     @Autowired
     private InspectionTaskMapper inspectionTaskMapper;
diff --git a/ruoyi-admin/src/main/resources/application.yml.example b/ruoyi-admin/src/main/resources/application.yml.example
deleted file mode 100644
index 6d4220e..0000000
--- a/ruoyi-admin/src/main/resources/application.yml.example
+++ /dev/null
@@ -1,124 +0,0 @@
-# 椤圭洰鐩稿叧閰嶇疆
-ruoyi:
-  # 鍚嶇О
-  name: RuoYi
-  # 鐗堟湰
-  version: 3.8.9
-  # 鐗堟潈骞翠唤
-  copyrightYear: 2025
-  # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
-  profile: D:/Backup/妗岄潰/download
-  # 鑾峰彇ip鍦板潃寮�鍏�
-  addressEnabled: false
-  # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
-  captchaType: math
-
-# 寮�鍙戠幆澧冮厤缃�
-server:
-  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
-  port: 7016
-  servlet:
-    # 搴旂敤鐨勮闂矾寰�
-    context-path: /
-  tomcat:
-    # tomcat鐨刄RI缂栫爜
-    uri-encoding: UTF-8
-    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
-    accept-count: 1000
-    threads:
-      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
-      max: 800
-      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
-      min-spare: 100
-
-# 鏃ュ織閰嶇疆
-logging:
-  level:
-    com.ruoyi: debug
-    org.springframework: warn
-
-# 鐢ㄦ埛閰嶇疆
-user:
-  password:
-    # 瀵嗙爜鏈�澶ч敊璇鏁�
-    maxRetryCount: 10
-    # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
-    lockTime: 1
-
-# Spring閰嶇疆
-spring:
-  # 璧勬簮淇℃伅
-  messages:
-    # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
-    basename: i18n/messages
-  profiles:
-    active: docker
-  # 鏂囦欢涓婁紶
-  servlet:
-    multipart:
-      # 鍗曚釜鏂囦欢澶у皬
-      max-file-size: 10MB
-      # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
-      max-request-size: 20MB
-  # 鏈嶅姟妯″潡
-  devtools:
-    restart:
-      # 鐑儴缃插紑鍏�
-      enabled: false
-
-  flyway:
-    enabled: true
-    baseline-on-migrate: true
-    baseline-version: 20230720000000
-    clean-disabled: true
-    out-of-order: true
-    #鎸囧畾sql鏂囦欢璺緞
-    locations:
-      - classpath:db/migration/postgresql
-
-# token閰嶇疆
-token:
-  # 浠ょ墝鑷畾涔夋爣璇�
-  header: Authorization
-  # 浠ょ墝瀵嗛挜
-  secret: abcdefghijklmnopqrstuvwxyz
-  # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
-  expireTime: 450
-
-# MyBatis Plus閰嶇疆
-mybatis-plus:
-  # 鎼滅储鎸囧畾鍖呭埆鍚�
-  typeAliasesPackage: com.ruoyi.**.domain
-  # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
-  mapperLocations: classpath*:mapper/**/*Mapper.xml
-  # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
-  configLocation: classpath:mybatis/mybatis-config.xml
-
-# PageHelper鍒嗛〉鎻掍欢
-pagehelper:
-  helperDialect: mysql
-  supportMethodsArguments: true
-  params: count=countSql
-
-# Springdoc閰嶇疆
-springdoc:
-  api-docs:
-    path: /v3/api-docs
-  swagger-ui:
-    enabled: true
-    path: /swagger-ui.html
-    tags-sorter: alpha
-  group-configs:
-    - group: 'default'
-      display-name: '娴嬭瘯妯″潡'
-      paths-to-match: '/**'
-      packages-to-scan: com.ruoyi.web.controller.tool
-
-# 闃叉XSS鏀诲嚮
-xss:
-  # 杩囨护寮�鍏�
-  enabled: true
-  # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
-  excludes: /system/notice
-  # 鍖归厤閾炬帴
-  urlPatterns: /system/*,/monitor/*,/tool/*
diff --git a/ruoyi-admin/src/main/resources/logback.xml.example b/ruoyi-admin/src/main/resources/logback.xml.example
deleted file mode 100644
index afdb6d7..0000000
--- a/ruoyi-admin/src/main/resources/logback.xml.example
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <!-- 鏃ュ織瀛樻斁璺緞 -->
-	<property name="log.path" value="C:/Users/12631/Desktop/download/logs" />
-    <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
-	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
-
-	<!-- 鎺у埗鍙拌緭鍑� -->
-	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-	</appender>
-	
-	<!-- 绯荤粺鏃ュ織杈撳嚭 -->
-	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-info.log</file>
-        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
-		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
-			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
-			<maxHistory>60</maxHistory>
-		</rollingPolicy>
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-		<filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!-- 杩囨护鐨勭骇鍒� -->
-            <level>INFO</level>
-            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
-            <onMatch>ACCEPT</onMatch>
-            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
-            <onMismatch>DENY</onMismatch>
-        </filter>
-	</appender>
-	
-	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-error.log</file>
-        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
-            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
-			<maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!-- 杩囨护鐨勭骇鍒� -->
-            <level>ERROR</level>
-			<!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
-            <onMatch>ACCEPT</onMatch>
-			<!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-	
-	<!-- 鐢ㄦ埛璁块棶鏃ュ織杈撳嚭  -->
-    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<file>${log.path}/sys-user.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 鎸夊ぉ鍥炴粴 daily -->
-            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-	
-	<!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗  -->
-	<logger name="com.ruoyi" level="info" />
-	<!-- Spring鏃ュ織绾у埆鎺у埗  -->
-	<logger name="org.springframework" level="warn" />
-
-	<root level="info">
-		<appender-ref ref="console" />
-	</root>
-	
-	<!--绯荤粺鎿嶄綔鏃ュ織-->
-    <root level="info">
-        <appender-ref ref="file_info" />
-        <appender-ref ref="file_error" />
-    </root>
-	
-	<!--绯荤粺鐢ㄦ埛鎿嶄綔鏃ュ織-->
-    <logger name="sys-user" level="info">
-        <appender-ref ref="sys-user"/>
-    </logger>
-</configuration> 
\ No newline at end of file
diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml
index 0421087..7d39ac6 100644
--- a/ruoyi-quartz/pom.xml
+++ b/ruoyi-quartz/pom.xml
@@ -34,6 +34,10 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>main-business</artifactId>
+        </dependency>
 
     </dependencies>
 
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
index 78ebef8..09834b4 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
@@ -1,6 +1,10 @@
 package com.ruoyi.quartz.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.business.entity.TimingTask;
+import com.ruoyi.business.mapper.TimingTaskMapper;
+import com.ruoyi.business.service.impl.TimingTaskScheduler;
 import jakarta.annotation.PostConstruct;
 import org.quartz.JobDataMap;
 import org.quartz.JobKey;
@@ -31,17 +35,27 @@
     @Autowired
     private SysJobMapper jobMapper;
 
+    @Autowired
+    private TimingTaskMapper timingTaskMapper;
+
+    @Autowired
+    private TimingTaskScheduler timingTaskScheduler;
+
     /**
      * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧畾鏃跺櫒 涓昏鏄槻姝㈡墜鍔ㄤ慨鏀规暟鎹簱瀵艰嚧鏈悓姝ュ埌瀹氭椂浠诲姟澶勭悊锛堟敞锛氫笉鑳芥墜鍔ㄤ慨鏀规暟鎹簱ID鍜屼换鍔$粍鍚嶏紝鍚﹀垯浼氬鑷磋剰鏁版嵁锛�
      */
     @PostConstruct
     public void init() throws SchedulerException, TaskException
     {
-        scheduler.clear();
-        List<SysJob> jobList = jobMapper.selectJobAll();
-        for (SysJob job : jobList)
-        {
-            ScheduleUtils.createScheduleJob(scheduler, job);
+//        scheduler.clear();
+//        List<SysJob> jobList = jobMapper.selectJobAll();
+//        for (SysJob job : jobList)
+//        {
+//            ScheduleUtils.createScheduleJob(scheduler, job);
+//        }
+        List<TimingTask> timingTasks = timingTaskMapper.selectList(null);
+        for (TimingTask timingTask : timingTasks) {
+            timingTaskScheduler.scheduleTimingTask(timingTask);
         }
     }
 

--
Gitblit v1.9.3