|
|
@@ -5,18 +5,26 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.template.common.utils.CommonUtil;
|
|
|
+import com.template.common.utils.QuartzJobUtils;
|
|
|
import com.template.mapper.SmartDataSourceMapper;
|
|
|
import com.template.mapper.SmartDataTaskMapper;
|
|
|
import com.template.model.pojo.SmartDataSource;
|
|
|
import com.template.model.pojo.SmartDataTask;
|
|
|
+import com.template.model.result.CommonResult;
|
|
|
import com.template.model.result.PageUtils;
|
|
|
import com.template.services.SmartDataTaskService;
|
|
|
+import org.quartz.CronExpression;
|
|
|
+import org.quartz.JobKey;
|
|
|
+import org.quartz.Scheduler;
|
|
|
+import org.quartz.SchedulerException;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
@@ -28,16 +36,20 @@ import java.util.Map;
|
|
|
*/
|
|
|
@Service
|
|
|
public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, SmartDataTask> implements SmartDataTaskService {
|
|
|
+
|
|
|
@Autowired
|
|
|
private SmartDataTaskMapper smartDataTaskMapper;
|
|
|
|
|
|
@Autowired
|
|
|
private SmartDataSourceMapper smartDataSourceMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private Scheduler scheduler;
|
|
|
+
|
|
|
@Override
|
|
|
- public Map<String, String> insertSmartDataTask(SmartDataTask smartDataTask) {
|
|
|
+ public Map<String, Object> insertSmartDataTask(SmartDataTask smartDataTask) {
|
|
|
// 检测参数,还有是否存在重复记录
|
|
|
- Map<String, String> stringStringMap = validateParams(smartDataTask, "insert");
|
|
|
+ Map<String, Object> stringStringMap = validateParams(smartDataTask, "insert");
|
|
|
if (stringStringMap != null) {
|
|
|
return stringStringMap;
|
|
|
}
|
|
|
@@ -51,27 +63,46 @@ public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, S
|
|
|
}
|
|
|
|
|
|
// 检测验证参数,和数据库中是否存在重复记录
|
|
|
- private Map<String, String> validateParams(SmartDataTask smartDataTask, String action) {
|
|
|
+ private Map<String, Object> validateParams(SmartDataTask smartDataTask, String action) {
|
|
|
// 看是否有相同的记录
|
|
|
+ if ("update".equals(action)) {
|
|
|
+ List<SmartDataTask> smartDataSources = smartDataTaskMapper.isRepeatTaskName(smartDataTask);
|
|
|
+ if (smartDataSources.size() > 0) {
|
|
|
+ return CommonUtil.getReturnMap("0", "任务名有重名!");
|
|
|
+ }
|
|
|
+ }
|
|
|
QueryWrapper<SmartDataTask> queryWrapper = new QueryWrapper<>();
|
|
|
if ("update".equals(action) || "active".equals(action)) {
|
|
|
- queryWrapper.like(smartDataTask.getTkId() != null, "tk_id", smartDataTask.getTkId());
|
|
|
+ queryWrapper.eq(smartDataTask.getTkId() != null, "tk_id", smartDataTask.getTkId());
|
|
|
}
|
|
|
|
|
|
if (!"active".equals(action)) {
|
|
|
- queryWrapper.like(smartDataTask.getTkDsId() != null, "tk_ds_id", smartDataTask.getTkDsId());
|
|
|
- queryWrapper.like(smartDataTask.getTkName() != null, "tk_name", smartDataTask.getTkName());
|
|
|
- queryWrapper.like(StringUtils.hasText(smartDataTask.getTkStartDatetime()), "tk_start_datetime", smartDataTask.getTkStartDatetime());
|
|
|
- queryWrapper.like(smartDataTask.getTkInterval() != null, "tk_interval", smartDataTask.getTkInterval());
|
|
|
- queryWrapper.like(StringUtils.hasText(smartDataTask.getTkSql()), "tk_sql", smartDataTask.getTkSql());
|
|
|
- queryWrapper.like(StringUtils.hasText(smartDataTask.getTkDescrition()), "tk_descrition", smartDataTask.getTkDescrition());
|
|
|
- }
|
|
|
- queryWrapper.like(smartDataTask.getTkActivation() != null, "tk_activation", smartDataTask.getTkActivation());
|
|
|
+ queryWrapper.eq(smartDataTask.getTkName() != null, "tk_name", smartDataTask.getTkName());
|
|
|
+ if ("insert".equals(action)) {
|
|
|
+ List<SmartDataTask> smartDataSources = smartDataTaskMapper.selectList(queryWrapper);
|
|
|
+ if (smartDataSources.size() > 0) {
|
|
|
+ return CommonUtil.getReturnMap("0", "任务名有重名!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ queryWrapper.eq(smartDataTask.getTkDsId() != null, "tk_ds_id", smartDataTask.getTkDsId());
|
|
|
+ queryWrapper.eq(StringUtils.hasText(smartDataTask.getTkCron()), "tk_cron", smartDataTask.getTkCron());
|
|
|
+ queryWrapper.eq(StringUtils.hasText(smartDataTask.getTkSql()), "tk_sql", smartDataTask.getTkSql());
|
|
|
+ queryWrapper.eq(StringUtils.hasText(smartDataTask.getTkDescrition()), "tk_descrition", smartDataTask.getTkDescrition());
|
|
|
+ }
|
|
|
+ queryWrapper.eq(smartDataTask.getTkActivation() != null, "tk_activation", smartDataTask.getTkActivation());
|
|
|
List<SmartDataTask> smartDataSources = smartDataTaskMapper.selectList(queryWrapper);
|
|
|
if (smartDataSources.size() > 0) {
|
|
|
if ("update".equals(action)) {
|
|
|
return CommonUtil.getReturnMap("0", "数据未修改,请修改后再提交!");
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ if ("active".equals(action)) {
|
|
|
+ if (smartDataTask.getTkActivation() == 1) {
|
|
|
+ return CommonUtil.getReturnMap("0", "任务之前已启动!");
|
|
|
+ } else {
|
|
|
+ return CommonUtil.getReturnMap("0", "任务之前已是停止状态!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ("insert".equals(action)) {
|
|
|
return CommonUtil.getReturnMap("0", "有重复记录!");
|
|
|
}
|
|
|
}
|
|
|
@@ -95,11 +126,11 @@ public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, S
|
|
|
if (smartDataSource == null) {
|
|
|
return CommonUtil.getReturnMap("0", "选择的【数据源】不存在!");
|
|
|
}
|
|
|
- if (smartDataTask.getTkStartDatetime() == null) {
|
|
|
- return CommonUtil.getReturnMap("0", "【开始时间】不能为空!");
|
|
|
+ if (smartDataTask.getTkCron() == null) {
|
|
|
+ return CommonUtil.getReturnMap("0", "【定时表达式】不能为空!");
|
|
|
}
|
|
|
- if (smartDataTask.getTkInterval() == null) {
|
|
|
- return CommonUtil.getReturnMap("0", "【间隔时间】不能为空!");
|
|
|
+ if (CronExpression.isValidExpression(smartDataTask.getTkCron())) {
|
|
|
+ return CommonUtil.getReturnMap("0", "【定时表达式】不正确!");
|
|
|
}
|
|
|
if (smartDataTask.getTkSql() == null) {
|
|
|
return CommonUtil.getReturnMap("0", "【任务sql】不能为空!");
|
|
|
@@ -107,15 +138,15 @@ public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, S
|
|
|
}
|
|
|
|
|
|
if (smartDataTask.getTkActivation() == null) {
|
|
|
- return CommonUtil.getReturnMap("0", "【是否激活】不能为空!");
|
|
|
+ return CommonUtil.getReturnMap("0", "【是否启动】不能为空!");
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, String> updateSmartDataTaskById(SmartDataTask smartDataTask) {
|
|
|
+ public Map<String, Object> updateSmartDataTaskById(SmartDataTask smartDataTask) {
|
|
|
// 检测参数,还有是否存在重复记录
|
|
|
- Map<String, String> stringStringMap = validateParams(smartDataTask, "update");
|
|
|
+ Map<String, Object> stringStringMap = validateParams(smartDataTask, "update");
|
|
|
if (stringStringMap != null) {
|
|
|
return stringStringMap;
|
|
|
}
|
|
|
@@ -128,10 +159,9 @@ public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, S
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Map<String, String> updateSmartDataTaskActivation(SmartDataTask smartDataTask) {
|
|
|
+ private Map<String, Object> updateSmartDataTaskActivation(SmartDataTask smartDataTask) {
|
|
|
// 检测参数,还有是否存在重复记录
|
|
|
- Map<String, String> stringStringMap = validateParams(smartDataTask, "active");
|
|
|
+ Map<String, Object> stringStringMap = validateParams(smartDataTask, "active");
|
|
|
if (stringStringMap != null) {
|
|
|
return stringStringMap;
|
|
|
}
|
|
|
@@ -140,15 +170,15 @@ public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, S
|
|
|
int result = smartDataTaskMapper.updateById(smartDataTask);
|
|
|
if (tkActivation == 1) {
|
|
|
if (result > 0) {
|
|
|
- return CommonUtil.getReturnMap(String.valueOf(result), "任务激活成功!");
|
|
|
+ return CommonUtil.getReturnMap(String.valueOf(result), "启动成功!");
|
|
|
} else {
|
|
|
- return CommonUtil.getReturnMap(String.valueOf(result), "任务激活失败!");
|
|
|
+ return CommonUtil.getReturnMap(String.valueOf(result), "启动失败!");
|
|
|
}
|
|
|
} else {
|
|
|
if (result > 0) {
|
|
|
- return CommonUtil.getReturnMap(String.valueOf(result), "任务取消激活成功!");
|
|
|
+ return CommonUtil.getReturnMap(String.valueOf(result), "取消启动成功!");
|
|
|
} else {
|
|
|
- return CommonUtil.getReturnMap(String.valueOf(result), "任务取消激活失败!");
|
|
|
+ return CommonUtil.getReturnMap(String.valueOf(result), "取消启动失败!");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -157,9 +187,9 @@ public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, S
|
|
|
public PageUtils<SmartDataTask> queryPageSmartDataTasks(int currentPage, int pageCount, SmartDataTask smartDataTask) {
|
|
|
Page<SmartDataTask> page = new Page<>(currentPage, pageCount);
|
|
|
QueryWrapper<SmartDataTask> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.like(smartDataTask.getTkDsId() != null, "tk_ds_id", smartDataTask.getTkDsId());
|
|
|
+ queryWrapper.eq(smartDataTask.getTkDsId() != null, "tk_ds_id", smartDataTask.getTkDsId());
|
|
|
queryWrapper.like(smartDataTask.getTkName() != null, "tk_name", smartDataTask.getTkName());
|
|
|
- queryWrapper.like(smartDataTask.getTkActivation() != null, "tk_activation", smartDataTask.getTkActivation());
|
|
|
+ queryWrapper.eq(smartDataTask.getTkActivation() != null, "tk_activation", smartDataTask.getTkActivation());
|
|
|
queryWrapper.like(smartDataTask.getTkDescrition() != null, "tk_descrition", smartDataTask.getTkDescrition());
|
|
|
queryWrapper.orderByDesc("tk_update_time");
|
|
|
IPage<SmartDataTask> result = smartDataTaskMapper.selectPage(page, queryWrapper);
|
|
|
@@ -177,4 +207,102 @@ public class SmartDataTaskServiceImpl extends ServiceImpl<SmartDataTaskMapper, S
|
|
|
SmartDataTask result = smartDataTaskMapper.selectById(id);
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
+ private Map<String, Object> TaskNameValidator(SmartDataTask smartDataTask) {
|
|
|
+ if (smartDataTask.getTkName() == null) {
|
|
|
+ return CommonUtil.getReturnMap(String.valueOf(1), "任务名称为空!");
|
|
|
+ }
|
|
|
+ QueryWrapper<SmartDataTask> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq(smartDataTask.getTkName() != null, "tk_name", smartDataTask.getTkName());
|
|
|
+ SmartDataTask smartDataTask_return = smartDataTaskMapper.selectOne(queryWrapper);
|
|
|
+ if (smartDataTask_return == null) {
|
|
|
+ return CommonUtil.getReturnMap(String.valueOf(1), "【" + smartDataTask.getTkName() + "】没有找到!");
|
|
|
+ } else {
|
|
|
+ return CommonUtil.getReturnMap(String.valueOf(0), smartDataTask_return);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult createJob(SmartDataTask smartDataTask) {
|
|
|
+ Map<String, Object> tmp_map = TaskNameValidator(smartDataTask);
|
|
|
+ if ("1".equals(tmp_map.get("code"))) {
|
|
|
+ return CommonResult.fail((String) tmp_map.get("msg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ SmartDataTask smartDataTask_return = (SmartDataTask) tmp_map.get("msg");
|
|
|
+ Map<String, Object> returnMap = QuartzJobUtils.createScheduleJob(scheduler, smartDataTask_return);
|
|
|
+ if ("0".equals(returnMap.get("code"))) {
|
|
|
+ smartDataTask.setTkActivation(1);
|
|
|
+ Map<String, Object> stringStringMap = updateSmartDataTaskActivation(smartDataTask);
|
|
|
+ String msg;
|
|
|
+ if ("0".equals(stringStringMap.get("code"))) {
|
|
|
+ msg = (String) returnMap.get("msg") + stringStringMap.get("msg");
|
|
|
+ } else {
|
|
|
+ msg = (String) returnMap.get("msg") + stringStringMap.get("msg");
|
|
|
+ }
|
|
|
+ return CommonResult.ok(msg);
|
|
|
+ } else {
|
|
|
+ return CommonResult.fail((String) returnMap.get("msg"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult pauseJob(SmartDataTask smartDataTask) {
|
|
|
+ Map<String, Object> tmp_map = TaskNameValidator(smartDataTask);
|
|
|
+ if ("1".equals(tmp_map.get("code"))) {
|
|
|
+ return CommonResult.fail((String) tmp_map.get("msg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ SmartDataTask smartDataTask_return = (SmartDataTask) tmp_map.get("msg");
|
|
|
+
|
|
|
+ return QuartzJobUtils.pauseScheduleJob(scheduler, smartDataTask_return.getTkName());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult resumeJob(SmartDataTask smartDataTask) {
|
|
|
+ Map<String, Object> tmp_map = TaskNameValidator(smartDataTask);
|
|
|
+ if ("1".equals(tmp_map.get("code"))) {
|
|
|
+ return CommonResult.fail((String) tmp_map.get("msg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ SmartDataTask smartDataTask_return = (SmartDataTask) tmp_map.get("msg");
|
|
|
+
|
|
|
+ return QuartzJobUtils.resumeScheduleJob(scheduler, smartDataTask_return.getTkName());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult updateJob(SmartDataTask smartDataTask) {
|
|
|
+ Map<String, Object> tmp_map = TaskNameValidator(smartDataTask);
|
|
|
+ if ("1".equals(tmp_map.get("code"))) {
|
|
|
+ return CommonResult.fail((String) tmp_map.get("msg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ SmartDataTask smartDataTask_return = (SmartDataTask) tmp_map.get("msg");
|
|
|
+
|
|
|
+ return QuartzJobUtils.updateScheduleJob(scheduler, smartDataTask_return);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult deleteJob(SmartDataTask smartDataTask) {
|
|
|
+ Map<String, Object> tmp_map = TaskNameValidator(smartDataTask);
|
|
|
+ if ("1".equals(tmp_map.get("code"))) {
|
|
|
+ return CommonResult.fail((String) tmp_map.get("msg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ SmartDataTask smartDataTask_return = (SmartDataTask) tmp_map.get("msg");
|
|
|
+
|
|
|
+ return QuartzJobUtils.deleteScheduleJob(scheduler, smartDataTask_return.getTkName());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult runOnceJob(SmartDataTask smartDataTask) {
|
|
|
+ Map<String, Object> tmp_map = TaskNameValidator(smartDataTask);
|
|
|
+ if ("1".equals(tmp_map.get("code"))) {
|
|
|
+ return CommonResult.fail((String) tmp_map.get("msg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ SmartDataTask smartDataTask_return = (SmartDataTask) tmp_map.get("msg");
|
|
|
+
|
|
|
+ return QuartzJobUtils.runOnce(scheduler, smartDataTask_return.getTkName());
|
|
|
+ }
|
|
|
}
|