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> <dependency>
<groupId>org.dromara.dynamictp</groupId> <groupId>org.dromara.dynamictp</groupId>
<artifactId>dynamic-tp-spring-boot-starter-adapter-webserver</artifactId> <artifactId>dynamic-tp-spring-boot-starter-adapter-webserver</artifactId>
<version>1.1.6.1</version> <version>1.1.7</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.jeffreyning</groupId> <groupId>com.github.jeffreyning</groupId>

View File

@@ -1,5 +1,6 @@
package org.nl.system.service.quartz.config; package org.nl.system.service.quartz.config;
import cn.hutool.core.net.NetUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.nl.system.service.quartz.ISysQuartzJobService; import org.nl.system.service.quartz.ISysQuartzJobService;
import org.nl.system.service.quartz.dao.SysQuartzJob; import org.nl.system.service.quartz.dao.SysQuartzJob;
@@ -36,5 +37,23 @@ public class JobRunner implements ApplicationRunner {
*/ */
@Override @Override
public void run(ApplicationArguments applicationArguments) { 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) @TableField(exist = false)
private String uuid; 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-form-item :label="$t('Scheduling.dialog.email')" prop="email">
<el-input v-model="form.email" :placeholder="$t('Scheduling.dialog.p2')" style="width: 220px;" /> <el-input v-model="form.email" :placeholder="$t('Scheduling.dialog.p2')" style="width: 220px;" />
</el-form-item> </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-form-item :label="$t('Scheduling.dialog.pause_after_failure')">
<el-radio-group v-model="form.pause_after_failure" style="width: 220px"> <el-radio-group v-model="form.pause_after_failure" style="width: 220px">
<el-radio :label="true">{{ $t('common.Yes') }}</el-radio> <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_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="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="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="method_name" :label="$t('Scheduling.table.method_name')" />
<el-table-column show-overflow-tooltip prop="params" :label="$t('Scheduling.table.params')" /> <el-table-column show-overflow-tooltip prop="params" :label="$t('Scheduling.table.params')" />
<el-table-column <el-table-column
@@ -222,6 +226,7 @@ const defaultForm = {
person_in_charge: null, person_in_charge: null,
email: null, email: null,
sub_task: null, sub_task: null,
job_ip: null,
pause_after_failure: true pause_after_failure: true
} }
export default { export default {
@@ -257,6 +262,9 @@ export default {
], ],
person_in_charge: [ person_in_charge: [
{ required: true, message: i18n.t('Scheduling.rules.r6'), trigger: 'blur' } { required: true, message: i18n.t('Scheduling.rules.r6'), trigger: 'blur' }
],
job_ip: [
{ required: true, message: i18n.t('Scheduling.rules.r7'), trigger: 'blur' }
] ]
}, },
// 是否显示Cron表达式弹出层 // 是否显示Cron表达式弹出层

View File

@@ -16,7 +16,8 @@ export default {
'search': 'Enter a task name to search', 'search': 'Enter a task name to search',
'log': 'logs', 'log': 'logs',
'cron_expression': 'Please input CRON', 'cron_expression': 'Please input CRON',
'build_corn': 'Generated expression' 'build_corn': 'Generated expression',
'ip_tip': 'ip address of the timer'
}, },
'dialog': { 'dialog': {
'sub_task': 'sub_task ID', 'sub_task': 'sub_task ID',
@@ -34,6 +35,7 @@ export default {
'job_id': 'job ID', 'job_id': 'job ID',
'job_name': 'job name', 'job_name': 'job name',
'bean_name': 'beanName', 'bean_name': 'beanName',
'job_ip': 'IP',
'method_name': 'method', 'method_name': 'method',
'params': 'params', 'params': 'params',
'cron_expression': 'cron-exp', 'cron_expression': 'cron-exp',
@@ -56,7 +58,8 @@ export default {
'r3': 'Please enter a Bean name', 'r3': 'Please enter a Bean name',
'r4': 'Please enter a method name', 'r4': 'Please enter a method name',
'r5': 'Please enter the Cron expression', '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', 'search': 'Masukkan nama tugas untuk dicari',
'log': 'catatan', 'log': 'catatan',
'cron_expression': 'Silakan masukkan CRON', 'cron_expression': 'Silakan masukkan CRON',
'build_corn': 'Menghasilkan ekspresi' 'build_corn': 'Menghasilkan ekspresi',
'ip_tip': 'alamat ip pengatur waktu'
}, },
'dialog': { 'dialog': {
'sub_task': 'ID Subtugas', 'sub_task': 'ID Subtugas',
@@ -34,6 +35,7 @@ export default {
'job_id': 'ID Tugas', 'job_id': 'ID Tugas',
'job_name': 'nama misi', 'job_name': 'nama misi',
'bean_name': 'nama bean', 'bean_name': 'nama bean',
'job_ip': 'IP',
'method_name': 'metode', 'method_name': 'metode',
'params': 'parameter', 'params': 'parameter',
'cron_expression': 'ekspresi cron', 'cron_expression': 'ekspresi cron',
@@ -56,7 +58,8 @@ export default {
'r3': 'Silakan masukkan nama kacang', 'r3': 'Silakan masukkan nama kacang',
'r4': 'Silakan masukkan nama metode', 'r4': 'Silakan masukkan nama metode',
'r5': 'Silakan masukkan ekspresi Cron', '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': '输入任务名称搜索', 'search': '输入任务名称搜索',
'log': '日志', 'log': '日志',
'cron_expression': '请输入CRON 表达式', 'cron_expression': '请输入CRON 表达式',
'build_corn': '生成表达式' 'build_corn': '生成表达式',
'ip_tip': '执行定时器的ip地址'
}, },
'dialog': { 'dialog': {
'sub_task': '子任务ID', 'sub_task': '子任务ID',
@@ -34,6 +35,7 @@ export default {
'job_id': '任务ID', 'job_id': '任务ID',
'job_name': '任务名称', 'job_name': '任务名称',
'bean_name': 'Bean名称', 'bean_name': 'Bean名称',
'job_ip': '调度IP',
'method_name': '执行方法', 'method_name': '执行方法',
'params': '参数', 'params': '参数',
'cron_expression': 'cron表达式', 'cron_expression': 'cron表达式',
@@ -56,7 +58,8 @@ export default {
'r3': '请输入Bean名称', 'r3': '请输入Bean名称',
'r4': '请输入方法名称', 'r4': '请输入方法名称',
'r5': '请输入Cron表达式', 'r5': '请输入Cron表达式',
'r6': '请输入负责人名称' 'r6': '请输入负责人名称',
'r7': '请输入调度IP'
} }
} }
} }