添加批量删除任务计划功能

yun-zuoyi
yunhao.wang 6 years ago
parent 37c2543354
commit 8474f4a569

@ -107,4 +107,12 @@ public interface ISysTaskPlanService {
*/ */
@ApiOperation(value = "修改任务计划信息",notes = "修改任务计划信息不会更新quartz数据库") @ApiOperation(value = "修改任务计划信息",notes = "修改任务计划信息不会更新quartz数据库")
void updateSysTaskPlan(SysTaskPlan sysTaskPlan); void updateSysTaskPlan(SysTaskPlan sysTaskPlan);
/**
*
* @param ids
*/
@ApiOperation(value = "批量删除任务计划信息",notes = "批量删除任务计划信息")
void deleteSysTaskPlanByIds(Long[] ids);
} }

@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskCycleService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskCycleService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskPlanService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskPlanService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.Pager;
@ -221,4 +222,20 @@ public class SysTaskPlanController extends CoreBaseController{
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
@DeleteMapping("/batch-delete")
@ApiOperation(value = "根据id批量删除任务计划",notes = "根据id批量删除任务计划")
public ResultBean deleteSysTaskPlanByIds(String[] idsStr) {
try {
// 数据校验
ValidatorBean.checkNotNull(idsStr, "任务计划id 不能为空");
sysTaskPlanService.deleteSysTaskPlanByIds(StringTool.getArrayLong(idsStr));
return ResultBean.success().setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
} }

@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -51,15 +52,15 @@ public class SysTaskPlanService implements ISysTaskPlanService {
private Scheduler scheduler; private Scheduler scheduler;
@Override @Override
@ApiOperation(value = "新增任务计划",notes = "新增任务计划") @ApiOperation(value = "新增任务计划", notes = "新增任务计划")
public SysTaskPlan insertSysTaskPlan(SysTaskPlan sysTaskPlan, SysTaskCycle sysTaskCycle,SysTask sysTask){ public SysTaskPlan insertSysTaskPlan(SysTaskPlan sysTaskPlan, SysTaskCycle sysTaskCycle, SysTask sysTask) {
try { try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 唯一校验 // 唯一校验
JobKey jobKey = JobKey.jobKey(sysTaskPlan.getName(),sysTaskPlan.getGroupName()); JobKey jobKey = JobKey.jobKey(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
TriggerKey triggerKey = TriggerKey.triggerKey(sysTaskPlan.getName(),sysTaskPlan.getGroupName()); TriggerKey triggerKey = TriggerKey.triggerKey(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
if (sysTaskPlanRDao.isExitByProperty(new String[]{"name","groupName"},new String[]{sysTaskPlan.getName(),sysTaskPlan.getGroupName()}) if (sysTaskPlanRDao.isExitByProperty(new String[]{"name", "groupName"}, new String[]{sysTaskPlan.getName(), sysTaskPlan.getGroupName()})
|| scheduler.checkExists(jobKey) || scheduler.checkExists(triggerKey)){ || scheduler.checkExists(jobKey) || scheduler.checkExists(triggerKey)) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
@ -68,12 +69,14 @@ public class SysTaskPlanService implements ISysTaskPlanService {
.build(); .build();
} }
sysTaskPlan = sysTaskPlanRDao.insert(sysTaskPlan);
SysRefTaskCyclePlan refTaskCyclePlan = new SysRefTaskCyclePlan(); SysRefTaskCyclePlan refTaskCyclePlan = new SysRefTaskCyclePlan();
refTaskCyclePlan.setTaskCycleId(sysTaskCycle.getId()); refTaskCyclePlan.setTaskCycleId(sysTaskCycle.getId());
refTaskCyclePlan.setTaskPlanId(sysTaskPlan.getId());
refTaskCyclePlan.setTaskPlanName(sysTaskPlan.getName()); refTaskCyclePlan.setTaskPlanName(sysTaskPlan.getName());
refTaskCyclePlan.setTaskPlanGroupName(sysTaskPlan.getGroupName()); refTaskCyclePlan.setTaskPlanGroupName(sysTaskPlan.getGroupName());
sysTaskPlan = sysTaskPlanRDao.insert(sysTaskPlan);
// 添加表达式与触发器关系表 // 添加表达式与触发器关系表
sysRefTaskCyclePlanRDao.insert(refTaskCyclePlan); sysRefTaskCyclePlanRDao.insert(refTaskCyclePlan);
@ -86,7 +89,7 @@ public class SysTaskPlanService implements ISysTaskPlanService {
.withDescription(sysTaskCycle.getTaskCycleDescription()) .withDescription(sysTaskCycle.getTaskCycleDescription())
.withSchedule(schedBuilder) .withSchedule(schedBuilder)
.startAt(sdf.parse(sysTaskCycle.getTaskCycleStartDatetime())); .startAt(sdf.parse(sysTaskCycle.getTaskCycleStartDatetime()));
if(sysTaskCycle.getTaskCycleEndDatetime() != null && sysTaskCycle.getTaskCycleEndDatetime().length() != 0){ if (sysTaskCycle.getTaskCycleEndDatetime() != null && sysTaskCycle.getTaskCycleEndDatetime().length() != 0) {
trigger = trigger.endAt(sdf.parse(sysTaskCycle.getTaskCycleEndDatetime())); trigger = trigger.endAt(sdf.parse(sysTaskCycle.getTaskCycleEndDatetime()));
} }
@ -114,11 +117,11 @@ public class SysTaskPlanService implements ISysTaskPlanService {
.setErrorDetail("定时任务包名及类名不正确") .setErrorDetail("定时任务包名及类名不正确")
.setErrorSolution("请重新输入定时任务包名及类名") .setErrorSolution("请重新输入定时任务包名及类名")
.build(); .build();
} catch (RuntimeException e){ } catch (RuntimeException e) {
String message; String message;
if(e.getMessage().indexOf("CronExpression") == 0){ if (e.getMessage().indexOf("CronExpression") == 0) {
message = "时间周期表达式错误"; message = "时间周期表达式错误";
}else { } else {
message = e.getMessage(); message = e.getMessage();
} }
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
@ -131,15 +134,15 @@ public class SysTaskPlanService implements ISysTaskPlanService {
} }
@Override @Override
@ApiOperation(value = "修改任务计划",notes = "修改任务计划") @ApiOperation(value = "修改任务计划", notes = "修改任务计划")
public void updateSysTaskPlan(SysTaskPlan sysTaskPlan, SysTaskCycle sysTaskCycle) { public void updateSysTaskPlan(SysTaskPlan sysTaskPlan, SysTaskCycle sysTaskCycle) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SysTaskPlan oldSysTaskPlan = sysTaskPlanRDao.getById(sysTaskPlan.getId()); SysTaskPlan oldSysTaskPlan = sysTaskPlanRDao.getById(sysTaskPlan.getId());
// 更新关系表 // 更新关系表
sysRefTaskCyclePlanRDao.updateByProperties(new String[]{"taskPlanName","taskPlanGroupName"}, sysRefTaskCyclePlanRDao.updateByProperties(new String[]{"taskPlanName", "taskPlanGroupName"},
new String[]{oldSysTaskPlan.getName(),oldSysTaskPlan.getGroupName()}, new String[]{oldSysTaskPlan.getName(), oldSysTaskPlan.getGroupName()},
"taskCycleId", oldSysTaskPlan.getTaskCycleId() "taskCycleId", oldSysTaskPlan.getTaskCycleId()
); );
@ -149,7 +152,7 @@ public class SysTaskPlanService implements ISysTaskPlanService {
sysTaskPlanRDao.update(sysTaskPlan); sysTaskPlanRDao.update(sysTaskPlan);
try { try {
TriggerKey triggerKey = TriggerKey.triggerKey(oldSysTaskPlan.getName(),oldSysTaskPlan.getGroupName()); TriggerKey triggerKey = TriggerKey.triggerKey(oldSysTaskPlan.getName(), oldSysTaskPlan.getGroupName());
if (!scheduler.checkExists(triggerKey)) { if (!scheduler.checkExists(triggerKey)) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
@ -169,7 +172,7 @@ public class SysTaskPlanService implements ISysTaskPlanService {
.withDescription(sysTaskCycle.getTaskCycleDescription()) .withDescription(sysTaskCycle.getTaskCycleDescription())
.withSchedule(schedBuilder) .withSchedule(schedBuilder)
.startAt(sdf.parse(sysTaskCycle.getTaskCycleStartDatetime())); .startAt(sdf.parse(sysTaskCycle.getTaskCycleStartDatetime()));
if(sysTaskCycle.getTaskCycleEndDatetime() != null && !"".equals(sysTaskCycle.getTaskCycleEndDatetime())){ if (sysTaskCycle.getTaskCycleEndDatetime() != null && !"".equals(sysTaskCycle.getTaskCycleEndDatetime())) {
trigger = trigger.endAt(sdf.parse(sysTaskCycle.getTaskCycleEndDatetime())); trigger = trigger.endAt(sdf.parse(sysTaskCycle.getTaskCycleEndDatetime()));
} }
@ -198,9 +201,9 @@ public class SysTaskPlanService implements ISysTaskPlanService {
} }
@Override @Override
@ApiOperation(value = "修改任务计划状态",notes = "修改任务计划状态") @ApiOperation(value = "修改任务计划状态", notes = "修改任务计划状态")
public void updateSysTaskPlanStatus(Long id, int status, SessionUser user) { public void updateSysTaskPlanStatus(Long id, int status, SessionUser user) {
LOGGER.info("定时任务 SYS_MENU id:{} status:{} user:{}", id,status,user); LOGGER.info("定时任务 SYS_MENU id:{} status:{} user:{}", id, status, user);
SysTaskPlan sysTaskPlan = sysTaskPlanRDao.getById(id); SysTaskPlan sysTaskPlan = sysTaskPlanRDao.getById(id);
sysTaskPlan.setTaskPlanStatus(status); sysTaskPlan.setTaskPlanStatus(status);
sysTaskPlan.setModifyUser(user.getUserName()); sysTaskPlan.setModifyUser(user.getUserName());
@ -217,7 +220,7 @@ public class SysTaskPlanService implements ISysTaskPlanService {
.build(); .build();
} }
if (status == CommonEnumUtil.DATA_STATUS.ENABLE.getValue()){ if (status == CommonEnumUtil.DATA_STATUS.ENABLE.getValue()) {
scheduler.resumeTrigger(triggerKey); scheduler.resumeTrigger(triggerKey);
} else { } else {
scheduler.pauseTrigger(triggerKey); scheduler.pauseTrigger(triggerKey);
@ -233,19 +236,19 @@ public class SysTaskPlanService implements ISysTaskPlanService {
public void deleteSysTaskPlanById(Long id) { public void deleteSysTaskPlanById(Long id) {
try { try {
SysTaskPlan sysTaskPlan = sysTaskPlanRDao.getById(id); SysTaskPlan sysTaskPlan = sysTaskPlanRDao.getById(id);
ValidatorBean.checkNotNull(sysTaskPlan,"定时任务不存在"); ValidatorBean.checkNotNull(sysTaskPlan, "定时任务不存在");
sysTaskPlanRDao.deleteById(id); sysTaskPlanRDao.deleteById(id);
// 删除关系表数据 // 删除关系表数据
sysRefTaskCyclePlanRDao.deleteByProperties(new String[]{"taskPlanName","taskPlanGroupName"}, sysRefTaskCyclePlanRDao.deleteByProperties(new String[]{"taskPlanName", "taskPlanGroupName"},
new Object[]{sysTaskPlan.getName(),sysTaskPlan.getGroupName()}); new Object[]{sysTaskPlan.getName(), sysTaskPlan.getGroupName()});
TriggerKey triggerKey = TriggerKey.triggerKey(sysTaskPlan.getName(),sysTaskPlan.getGroupName()); TriggerKey triggerKey = TriggerKey.triggerKey(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
if(scheduler.checkExists(triggerKey)){ if (scheduler.checkExists(triggerKey)) {
scheduler.pauseTrigger(triggerKey); scheduler.pauseTrigger(triggerKey);
scheduler.unscheduleJob(triggerKey); scheduler.unscheduleJob(triggerKey);
}else { } else {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
@ -268,28 +271,28 @@ public class SysTaskPlanService implements ISysTaskPlanService {
} }
@Override @Override
@ApiOperation(value = "根据id查询任务计划数据",notes = "根据id查询任务计划数据") @ApiOperation(value = "根据id查询任务计划数据", notes = "根据id查询任务计划数据")
public SysTaskPlan getSysTaskPlanById(Long id) { public SysTaskPlan getSysTaskPlanById(Long id) {
return sysTaskPlanRDao.getById(id); return sysTaskPlanRDao.getById(id);
} }
@Override @Override
@ApiOperation(value = "任务计划复杂查询,分页,排序",notes = "任务计划复杂查询,分页,排序") @ApiOperation(value = "任务计划复杂查询,分页,排序", notes = "任务计划复杂查询,分页,排序")
public ListPager querySysTaskPlanByPager(SysTaskPlan sysTaskPlan, Pager pager) { public ListPager querySysTaskPlanByPager(SysTaskPlan sysTaskPlan, Pager pager) {
if(sysTaskPlan == null) { if (sysTaskPlan == null) {
pager = PagerHelper.getPager(pager, sysTaskPlanRDao.listCount()); pager = PagerHelper.getPager(pager, sysTaskPlanRDao.listCount());
return new ListPager(sysTaskPlanRDao.listPager(pager),pager); return new ListPager(sysTaskPlanRDao.listPager(pager), pager);
}else { } else {
String hqlPack = CoreHqlPack.packHqlSysTaskPlan(sysTaskPlan); String hqlPack = CoreHqlPack.packHqlSysTaskPlan(sysTaskPlan);
pager = PagerHelper.getPager(pager, sysTaskPlanRDao.findByHqlWhereCount(hqlPack)); pager = PagerHelper.getPager(pager, sysTaskPlanRDao.findByHqlWhereCount(hqlPack));
return new ListPager(sysTaskPlanRDao.findByHqlWherePage(hqlPack + sysTaskPlan.orderBy(),pager),pager); return new ListPager(sysTaskPlanRDao.findByHqlWherePage(hqlPack + sysTaskPlan.orderBy(), pager), pager);
} }
} }
@Override @Override
@ApiOperation(value = "立即执行任务计划",notes = "立即执行任务计划") @ApiOperation(value = "立即执行任务计划", notes = "立即执行任务计划")
public void executeSysTaskPlan(SysTaskPlan sysTaskPlan) { public void executeSysTaskPlan(SysTaskPlan sysTaskPlan) {
JobKey jobKey = JobKey.jobKey(sysTaskPlan.getName(),sysTaskPlan.getGroupName()); JobKey jobKey = JobKey.jobKey(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
try { try {
if (scheduler.checkExists(jobKey)) { if (scheduler.checkExists(jobKey)) {
scheduler.triggerJob(jobKey); scheduler.triggerJob(jobKey);
@ -310,24 +313,74 @@ public class SysTaskPlanService implements ISysTaskPlanService {
} }
@Override @Override
@ApiOperation(value = "查询任务计划",notes = "根据任务计划名称与组名称查询") @ApiOperation(value = "查询任务计划", notes = "根据任务计划名称与组名称查询")
public SysTaskPlan getSysTaskPlanByNameAndGroup(String name, String groupName) { public SysTaskPlan getSysTaskPlanByNameAndGroup(String name, String groupName) {
List<SysTaskPlan> sysTaskPlanList = sysTaskPlanRDao.findByProperty(new String[]{"name","groupName"},new Object[]{name,groupName}); List<SysTaskPlan> sysTaskPlanList = sysTaskPlanRDao.findByProperty(new String[]{"name", "groupName"}, new Object[]{name, groupName});
if (sysTaskPlanList != null && sysTaskPlanList.size() != 0){ if (sysTaskPlanList != null && sysTaskPlanList.size() != 0) {
return sysTaskPlanList.get(0); return sysTaskPlanList.get(0);
} }
return null; return null;
} }
@Override @Override
@ApiOperation(value = "添加定时任务执行日志",notes = "添加定时任务执行日志") @ApiOperation(value = "添加定时任务执行日志", notes = "添加定时任务执行日志")
public void logInsertSysLogTaskTime(SysLogTaskTime sysLogTaskTime) { public void logInsertSysLogTaskTime(SysLogTaskTime sysLogTaskTime) {
sysLogTaskTimeRDao.insert(sysLogTaskTime); sysLogTaskTimeRDao.insert(sysLogTaskTime);
} }
@Override @Override
@ApiOperation(value = "修改定时任务信息",notes = "修改定时任务信息不会更新quartz数据库") @ApiOperation(value = "修改定时任务信息", notes = "修改定时任务信息不会更新quartz数据库")
public void updateSysTaskPlan(SysTaskPlan sysTaskPlan) { public void updateSysTaskPlan(SysTaskPlan sysTaskPlan) {
sysTaskPlanRDao.update(sysTaskPlan); sysTaskPlanRDao.update(sysTaskPlan);
} }
@Override
@ApiOperation(value = "批量删除任务计划信息", notes = "批量删除任务计划信息")
public void deleteSysTaskPlanByIds(Long[] ids) {
try {
List<SysTaskPlan> sysTaskPlan = sysTaskPlanRDao.findByHqlWhere(CoreHqlPack.packHqlIds("id", ids));
List<TriggerKey> triggerKeyList = new ArrayList<>();
//数据校验
if (sysTaskPlan == null || sysTaskPlan.size() == 0) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("任务计划不存在")
.setErrorSolution("请重新选择任务计划")
.build();
} else {
for (int i = 0; i < sysTaskPlan.size(); i++) {
triggerKeyList.add(TriggerKey.triggerKey(sysTaskPlan.get(i).getName(), sysTaskPlan.get(i).getGroupName()));
}
}
sysTaskPlanRDao.deleteByIds(ids);
// 删除关系表数据
sysRefTaskCyclePlanRDao.deleteByPropertyIn("taskPlanId", ids);
// 检查定时人计划是否存在,并暂停
for (TriggerKey trigger : triggerKeyList) {
if (scheduler.checkExists(trigger)) {
scheduler.pauseTrigger(trigger);
} else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("定时任务不存在")
.setErrorSolution("请重新选择")
.build();
}
}
// 取消调度任务
scheduler.unscheduleJobs(triggerKeyList);
} catch (SchedulerException e) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.TASK_EXCEPTION.getCode())
.build();
}
}
} }

Loading…
Cancel
Save