Commit cfd6f8c0 authored by 黎博's avatar 黎博

修改一下编辑接口

parent 125f6b0b
......@@ -112,28 +112,41 @@ public class SqlMonitorTaskController {
*/
@PostMapping("/edit")
public JsonResult editMonitorTask(@RequestBody SqlMonitorTask sqlMonitorTask) {
// 新定时任务名称
String newTaskName = sqlMonitorTask.getTaskName();
QueryWrapper<SqlMonitorTask> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("task_name", sqlMonitorTask.getTaskName());
queryWrapper.eq("task_name", newTaskName);
SqlMonitorTask sqlMonitorTaskTemp = sqlMonitorTaskService.getOne(queryWrapper);
SqlMonitorTask sqlMonitorTaskOld = sqlMonitorTaskService.getById(sqlMonitorTask.getId());
// 老定时任务名称
String oldTaskName = sqlMonitorTaskOld.getTaskName();
if (sqlMonitorTaskTemp != null && !sqlMonitorTaskTemp.getId().equals(sqlMonitorTask.getId())) {
return JsonResult.buildErrorStateResult("监控名称重复", false);
}
boolean updateResult = sqlMonitorTaskService.updateById(sqlMonitorTask);
if (updateResult) {
// 如果监控名称发生了改变,删除原有监控,使用新名称来创建监控
if (!newTaskName.equals(oldTaskName)) {
// 删除老的监控
if (QuartzUtils.queryJobExistence(scheduler, oldTaskName)) {
QuartzUtils.deleteScheduleJob(scheduler, oldTaskName);
}
// 创建新监控
QuartzUtils.createSqlScheduleJob(scheduler, sqlMonitorTask);
}
// 如果状态发生了变更,则根据改变之后的状态来决定是暂停任务还是重启任务
if (!sqlMonitorTask.getStatus().equals(sqlMonitorTaskOld.getStatus())) {
// 如果变更后的状态为0
if (sqlMonitorTask.getStatus() == 0) {
QuartzUtils.pauseScheduleJob(scheduler, sqlMonitorTask.getTaskName());
QuartzUtils.pauseScheduleJob(scheduler, newTaskName);
}
// 如果变更后的状态为1
if (sqlMonitorTask.getStatus() == 1) {
QuartzUtils.resumeScheduleJob(scheduler, sqlMonitorTask.getTaskName());
QuartzUtils.resumeScheduleJob(scheduler, newTaskName);
}
}
// 如果报警频率发生变更,且定时任务状态为启用
if (!sqlMonitorTask.getTaskCron().equals(sqlMonitorTaskOld.getTaskCron()) && sqlMonitorTask.getStatus() == 1) {
// 如果项目存在,则更新一下
if (QuartzUtils.queryJobExistence(scheduler, newTaskName)) {
QuartzUtils.updateSqlScheduleJob(scheduler, sqlMonitorTask);
}
return JsonResult.buildSuccessResult("监控修改成功!");
......@@ -216,7 +229,7 @@ public class SqlMonitorTaskController {
}
List<Map<String, Object>> resultList = JdbcUtils.queryForList(sqlMonitorDataSource.getHost(), sqlMonitorDataSource.getPort(),
sqlMonitorDataSource.getUsername(), sqlMonitorDataSource.getPassword(), null, sqlMonitorTask.getSql());
String dingUrl = sqlMonitorTask.getDingUrl();
String dingUrl = sqlMonitorTask.getDingUrl().trim();
String dingText = sqlMonitorTask.getDingText();
if (resultList != null) {
dingText = SqlMonitorHandler.replaceDingText(dingText, resultList);
......
......@@ -51,7 +51,7 @@ public class SqlMonitorHandler extends QuartzJobBean {
List<Map<String, Object>> resultList = JdbcUtils.queryForList(sqlMonitorDataSource.getHost(), sqlMonitorDataSource.getPort(),
sqlMonitorDataSource.getUsername(), sqlMonitorDataSource.getPassword(), null, sqlMonitorTask.getSql());
String dingUrl = sqlMonitorTask.getDingUrl();
String dingUrl = sqlMonitorTask.getDingUrl().trim();
String dingText = sqlMonitorTask.getDingText();
if (resultList != null) {
dingText = replaceDingText(dingText, resultList);
......
......@@ -122,4 +122,21 @@ public class QuartzUtils {
log.info("删除定时任务出错:" + e.getMessage());
}
}
/**
* 查询job是否存在
* @param scheduler 调度器
* @param jobName job名称
* @return
*/
public static boolean queryJobExistence(Scheduler scheduler, String jobName) {
JobKey jobKey = JobKey.jobKey(jobName);
try {
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
return jobDetail != null;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment