Merge commit '83984237d5a09a9187c2c87b887d97567f6b19df'

This commit is contained in:
2024-08-20 17:14:32 +08:00
7 changed files with 48 additions and 7 deletions

View File

@@ -46,7 +46,7 @@
<dependency>
<groupId>org.dromara.dynamictp</groupId>
<artifactId>dynamic-tp-spring-boot-starter-adapter-webserver</artifactId>
<version>1.1.6.1</version>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>com.github.jeffreyning</groupId>

View File

@@ -1,5 +1,6 @@
package org.nl.system.service.quartz.config;
import cn.hutool.core.net.NetUtil;
import lombok.RequiredArgsConstructor;
import org.nl.system.service.quartz.ISysQuartzJobService;
import org.nl.system.service.quartz.dao.SysQuartzJob;
@@ -36,5 +37,23 @@ public class JobRunner implements ApplicationRunner {
*/
@Override
public void run(ApplicationArguments applicationArguments) {
//本机IP
String localIp = NetUtil.getLocalhostStr();
System.out.println("本机ip" + localIp);
log.info("--------------------注入定时任务---------------------");
List<SysQuartzJob> quartzJobs = quartzJobService.findByIsPauseIsFalse();
quartzJobs.forEach(job -> {
if (localIp.equals(job.getJob_ip())) {
log.info("定时任务: [{}], 执行ip: {}, 定时任务开启", job.getJob_name(), localIp);
System.out.println("定时任务: " + job.getJob_name() + ", 执行ip: " + localIp + ", 定时任务开启");
quartzManage.addJob(job);
} else {
log.info("定时任务: [{}] 未开启, 本机ip: {} 与 调度ip: {} 不同", job.getJob_name(), localIp, job.getJob_ip());
System.out.println("定时任务 " + job.getJob_name() + " 未开启, 本机ip: " + localIp + " 与 调度ip: " + job.getJob_ip() + " 不同");
}
});
log.info("--------------------定时任务注入完成---------------------");
}
}

View File

@@ -124,4 +124,9 @@ public class SysQuartzJob implements Serializable {
@TableField(exist = false)
private String uuid;
/**
* 调度IP
*/
private String job_ip;
}

View File

@@ -79,6 +79,9 @@
<el-form-item :label="$t('Scheduling.dialog.email')" prop="email">
<el-input v-model="form.email" :placeholder="$t('Scheduling.dialog.p2')" style="width: 220px;" />
</el-form-item>
<el-form-item :label="$t('Scheduling.table.job_ip')" prop="job_ip">
<el-input v-model="form.job_ip" :placeholder="$t('Scheduling.placeholder.ip_tip')" style="width: 220px;" />
</el-form-item>
<el-form-item :label="$t('Scheduling.dialog.pause_after_failure')">
<el-radio-group v-model="form.pause_after_failure" style="width: 220px">
<el-radio :label="true">{{ $t('common.Yes') }}</el-radio>
@@ -112,6 +115,7 @@
<el-table-column show-overflow-tooltip prop="job_id" :label="$t('Scheduling.table.job_id')" />
<el-table-column show-overflow-tooltip prop="job_name" :label="$t('Scheduling.table.job_name')" min-width="120" />
<el-table-column show-overflow-tooltip prop="bean_name" :label="$t('Scheduling.table.bean_name')" />
<el-table-column show-overflow-tooltip prop="job_ip" :label="$t('Scheduling.table.job_ip')" />
<el-table-column show-overflow-tooltip prop="method_name" :label="$t('Scheduling.table.method_name')" />
<el-table-column show-overflow-tooltip prop="params" :label="$t('Scheduling.table.params')" />
<el-table-column
@@ -222,6 +226,7 @@ const defaultForm = {
person_in_charge: null,
email: null,
sub_task: null,
job_ip: null,
pause_after_failure: true
}
export default {
@@ -257,6 +262,9 @@ export default {
],
person_in_charge: [
{ required: true, message: i18n.t('Scheduling.rules.r6'), trigger: 'blur' }
],
job_ip: [
{ required: true, message: i18n.t('Scheduling.rules.r7'), trigger: 'blur' }
]
},
// 是否显示Cron表达式弹出层

View File

@@ -16,7 +16,8 @@ export default {
'search': 'Enter a task name to search',
'log': 'logs',
'cron_expression': 'Please input CRON',
'build_corn': 'Generated expression'
'build_corn': 'Generated expression',
'ip_tip': 'ip address of the timer'
},
'dialog': {
'sub_task': 'sub_task ID',
@@ -34,6 +35,7 @@ export default {
'job_id': 'job ID',
'job_name': 'job name',
'bean_name': 'beanName',
'job_ip': 'IP',
'method_name': 'method',
'params': 'params',
'cron_expression': 'cron-exp',
@@ -56,7 +58,8 @@ export default {
'r3': 'Please enter a Bean name',
'r4': 'Please enter a method name',
'r5': 'Please enter the Cron expression',
'r6': 'Please enter the responsible person name'
'r6': 'Please enter the responsible person name',
'r7': 'Please enter the scheduling IP address'
}
}
}

View File

@@ -16,7 +16,8 @@ export default {
'search': 'Masukkan nama tugas untuk dicari',
'log': 'catatan',
'cron_expression': 'Silakan masukkan CRON',
'build_corn': 'Menghasilkan ekspresi'
'build_corn': 'Menghasilkan ekspresi',
'ip_tip': 'alamat ip pengatur waktu'
},
'dialog': {
'sub_task': 'ID Subtugas',
@@ -34,6 +35,7 @@ export default {
'job_id': 'ID Tugas',
'job_name': 'nama misi',
'bean_name': 'nama bean',
'job_ip': 'IP',
'method_name': 'metode',
'params': 'parameter',
'cron_expression': 'ekspresi cron',
@@ -56,7 +58,8 @@ export default {
'r3': 'Silakan masukkan nama kacang',
'r4': 'Silakan masukkan nama metode',
'r5': 'Silakan masukkan ekspresi Cron',
'r6': 'Silakan masukkan nama penanggung jawab'
'r6': 'Silakan masukkan nama penanggung jawab',
'r7': 'Silakan masukkan alamat IP penjadwalan'
}
}
}

View File

@@ -16,7 +16,8 @@ export default {
'search': '输入任务名称搜索',
'log': '日志',
'cron_expression': '请输入CRON 表达式',
'build_corn': '生成表达式'
'build_corn': '生成表达式',
'ip_tip': '执行定时器的ip地址'
},
'dialog': {
'sub_task': '子任务ID',
@@ -34,6 +35,7 @@ export default {
'job_id': '任务ID',
'job_name': '任务名称',
'bean_name': 'Bean名称',
'job_ip': '调度IP',
'method_name': '执行方法',
'params': '参数',
'cron_expression': 'cron表达式',
@@ -56,7 +58,8 @@ export default {
'r3': '请输入Bean名称',
'r4': '请输入方法名称',
'r5': '请输入Cron表达式',
'r6': '请输入负责人名称'
'r6': '请输入负责人名称',
'r7': '请输入调度IP'
}
}
}