定时任务 导入导出

定时任务 重载功能
yun-zuoyi
汪云昊 5 years ago
parent 2b88f3ecf1
commit 77934319d1

@ -91,4 +91,8 @@ public interface ISysTaskCycleService {
*/
@ApiOperation(value = "根据任务周期id查询相关任务计划信息",notes = "根据任务周期id查询相关任务计划信息")
List<SysRefTaskCyclePlan> findRefTaskCyclePlanByCycleId(Long cycleId);
@ApiOperation(value = "按条件查询任务周期",notes = "按条件查询任务周期")
List<SysTaskCycle> findSysTaskCycleByCondition(SysTaskCycle sysTaskCycle);
}

@ -98,4 +98,13 @@ public interface ISysTaskPlanService {
@AnnoIgnoreLog
@ApiOperation(value = "修改任务计划信息",notes = "修改任务计划信息不会更新quartz数据库")
void updateSysTaskPlan(SysTaskPlan sysTaskPlan);
@ApiOperation(value = "根据id查找任务计划",notes = "根据id查找任务计划")
List<SysTaskPlan> findSysTaskPlanByIds(Long[] ids);
@ApiOperation(value = "检查任务计划是否为空",notes = "检查任务计划是否为空")
boolean checkSysTaskPlanOnly(SysTaskPlan sysTaskPlan);
@ApiOperation(value = "按条件查询定时任务信息",notes = "按条件查询定时任务信息")
List<SysTaskPlan> findSysTaskPlanByCondition(SysTaskPlan sysTaskPlan);
}

@ -100,4 +100,7 @@ public interface ISysTaskService {
*/
@ApiOperation(value = "定时任务唯一校验",notes = "定时任务唯一校验")
boolean checkSysTaskOnly(SysTask sysTask);
@ApiOperation(value = "按条件查询任务",notes = "按条件查询任务")
List<SysTask> findSysTaskByCondition(SysTask sysTask);
}

@ -271,8 +271,16 @@ public class SysRoleController extends CrudBaseController<SysRole> {
ValidatorBean.checkNotNull(roleId, "角色roleId 不能为空");
ValidatorBean.checkNotNull(softType, "产品类型 不能为空");
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(sysRoleService.findSysRefRoleMenuByRoleId(roleId,softType));
List<SysRefRoleMenu> sysRefRoleMenuList;
if (CommonEnumUtil.USER_TYPE.ADMIN.getCode().equals(AuthUtil.getSessionUser().getUserType())) {
sysRefRoleMenuList = sysRoleService.findSysRefRoleMenuByRoleId(-1L, softType);
}else{
sysRefRoleMenuList = sysRoleService.findSysRefRoleMenuByRoleId(roleId, softType);
}
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(sysRefRoleMenuList);
} catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){

@ -14,15 +14,12 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.FileTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.ZipTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.ImppFile;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysTask;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.base.service.CommonServiceImpl;
@ -43,11 +40,9 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.EntityManager;
import java.io.File;
import java.io.FileInputStream;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
@ -351,66 +346,57 @@ public class SysTaskController extends CoreBaseController {
@GetMapping(value = "/export")
@ApiOperation(value = "导出数据")
public ResultBean<SysTask> exportExcel(SysTask bean, boolean needSendMessage) {
ListPager<SysTask> listPager;
List<SysFile> result = new ArrayList<>();
File zipFile = null;
File excelDir = null;
File excelFile;
ExcelTool excelTool;
public void exportExcel(SysTask bean,HttpServletResponse response) {
File excelFile = null;
try {
Pager pager = new Pager(0);
// 判断是否超过excel最大导出数量设定值
pager.setPageSize(RedisCacheTool.getSysConfigIntVal(PlatformConstWords.EXCEL_EXPORT_MAX_ROW, 20000));
// 数据校验
Map<String, String> colMap = ExcelTool.getColName(SysTask.class);
String[] colName = new String[colMap.size()];
int i = 0;
int j = 0;
for (String key : colMap.keySet()) {
colName[i++] = key;
colName[j++] = key;
}
excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
excelDir.mkdir();
do {
listPager = sysTaskService.querySysTaskByPager(bean, pager);
pager = listPager.getObjectPager();
// 将excel导出至临时文件夹
excelFile = new File(MessageFormat.format("{0}{1}{2}{3}.xls", excelDir, File.separator, SysTask.class.getSimpleName(),
pager.getCurrentPage()));
excelFile.createNewFile();
excelTool.exportData(excelFile, listPager.getObjectList(), SysTask.class, colName);
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
// 将所有excel文件打包上传
zipFile = ZipTool.zipFile(null, excelDir);
SysFile sysFile = fileService.upload(new FileInputStream(zipFile), zipFile.getName(),
StringTool.getStringFileSuffix(zipFile.getName(), true), CommonEnumUtil.SOFT_TYPE.CORE.getValue());
result.add(sysFileService.insertSysFile(sysFile));
// 是否发送站内信
if (needSendMessage) {
sysMessageService.insertSysMessage(ExcelTool.sendStationLetter(result, getSessionUser().getUser().getId()));
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
// 将excel导出至临时文件夹
excelFile = new File(System.getProperty("java.io.tmpdir") + File.separator + AuthUtil.getSessionUser().getUserName() +
"SysTask.xls");
excelFile.createNewFile();
excelTool.exportData(excelFile, sysTaskService.findSysTaskByCondition(bean), SysTask.class, colName);
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment;fileName=" + URLEncoder.encode(excelFile.getName(), "UTF-8"));
response.flushBuffer();
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(excelFile));
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
LOGGER.error("下载异常",e);
throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build();
} finally {
// 清理临时文件文件
if (zipFile != null) {
FileTool.deleteFile(zipFile.getPath());
}
if (excelDir != null) {
FileTool.deleteFile(excelDir.getPath());
if (excelFile != null) {
FileTool.deleteFile(excelFile.getPath());
}
}
}
@ -448,27 +434,22 @@ public class SysTaskController extends CoreBaseController {
@GetMapping(value = "/down-template")
@ApiOperation(value = "下载导入模板")
public ResultBean downExcelTemplate() {
public void downExcelTemplate(HttpServletResponse response) {
try {
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
String importTemplateCode = "SysTaskImportTemplate";
// 查询服务器中是否存在模板文件
ImppFile fastDFSFile = new ImppFile("SysTaskImportTemplate.xls",
excelTool.importTemplate(SysTask.class), ".xls");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment;fileName=" + URLEncoder.encode(importTemplateCode + ".xls", "UTF-8"));
response.flushBuffer();
SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode);
if (sysFile == null) {
sysFile = fileService.upload(fastDFSFile, CommonEnumUtil.SOFT_TYPE.CORE.getValue());
sysFile.setFileCode(importTemplateCode);
sysFile = sysFileService.insertSysFile(sysFile);
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
response.getOutputStream().write(excelTool.importTemplate(SysTask.class));
response.getOutputStream().flush();
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
LOGGER.error("下载异常",e);
throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build();
}
}
}

@ -10,15 +10,16 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.FileTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.ZipTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.ImppFile;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.bean.SysRefTaskCyclePlan;
import cn.estsh.i3plus.pojo.platform.bean.SysTask;
import cn.estsh.i3plus.pojo.platform.bean.SysTaskCycle;
import cn.estsh.i3plus.pojo.platform.bean.SysTaskPlan;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
@ -39,12 +40,10 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.EntityManager;
import java.io.File;
import java.io.FileInputStream;
import java.text.MessageFormat;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -353,67 +352,58 @@ public class SysTaskCycleController extends CoreBaseController {
@GetMapping(value = "/export")
@ApiOperation(value = "导出数据")
public ResultBean<SysTaskCycle> exportExcel(SysTaskCycle bean, boolean needSendMessage) {
ListPager<SysTaskCycle> listPager;
List<SysFile> result = new ArrayList<>();
File zipFile = null;
File excelDir = null;
File excelFile;
ExcelTool excelTool;
public void exportExcel(SysTaskCycle bean, HttpServletResponse response) {
File excelFile = null;
try {
Pager pager = new Pager(0);
// 判断是否超过excel最大导出数量设定值
pager.setPageSize(RedisCacheTool.getSysConfigIntVal(PlatformConstWords.EXCEL_EXPORT_MAX_ROW, 20000));
// 数据校验
Map<String, String> colMap = ExcelTool.getColName(SysTaskCycle.class);
String[] colName = new String[colMap.size()];
int i = 0;
int j = 0;
for (String key : colMap.keySet()) {
colName[i++] = key;
colName[j++] = key;
}
excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
excelDir.mkdir();
do {
listPager = sysTaskCycleService.querySysTaskCycleByPager(bean, pager);
pager = listPager.getObjectPager();
// 将excel导出至临时文件夹
excelFile = new File(MessageFormat.format("{0}{1}{2}{3}.xls", excelDir, File.separator,
SysTaskCycle.class.getSimpleName(),
pager.getCurrentPage()));
excelFile.createNewFile();
excelTool.exportData(excelFile, listPager.getObjectList(), SysTaskCycle.class, colName);
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
// 将所有excel文件打包上传
zipFile = ZipTool.zipFile(null, excelDir);
SysFile sysFile = fileService.upload(new FileInputStream(zipFile), zipFile.getName(),
StringTool.getStringFileSuffix(zipFile.getName(), true), CommonEnumUtil.SOFT_TYPE.CORE.getValue());
result.add(sysFileService.insertSysFile(sysFile));
// 是否发送站内信
if (needSendMessage) {
sysMessageService.insertSysMessage(ExcelTool.sendStationLetter(result, getSessionUser().getUser().getId()));
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
// 将excel导出至临时文件夹
excelFile = new File(System.getProperty("java.io.tmpdir") + File.separator + AuthUtil.getSessionUser().getUserName() +
"SysTaskCycle.xls");
excelFile.createNewFile();
excelTool.exportData(excelFile, sysTaskCycleService.findSysTaskCycleByCondition(bean), SysTaskCycle.class, colName);
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment;fileName=" + URLEncoder.encode(excelFile.getName(), "UTF-8"));
response.flushBuffer();
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(excelFile));
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
excelFile.delete();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
LOGGER.error("下载异常",e);
throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build();
} finally {
// 清理临时文件文件
if (zipFile != null) {
FileTool.deleteFile(zipFile.getPath());
}
if (excelDir != null) {
FileTool.deleteFile(excelDir.getPath());
if (excelFile != null) {
FileTool.deleteFile(excelFile.getPath());
}
}
}
@ -427,19 +417,10 @@ public class SysTaskCycleController extends CoreBaseController {
//校验导入数据并初始化
for (SysTaskCycle taskCycle : beanList) {
// if (!sysTaskService.checkSysTaskOnly(sysTask)) {
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("任务名称【%s】必须唯一", sysTask.getName())
// .setErrorSolution("请重新输入")
// .build();
// }
ConvertBean.modelInitialize(taskCycle, AuthUtil.getSessionUser());
}
// sysTaskCycleService.insertSysTaskCycle(beanList);
sysTaskCycleService.insertBatchSysTaskCycle(beanList);
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
@ -451,27 +432,21 @@ public class SysTaskCycleController extends CoreBaseController {
@GetMapping(value = "/down-template")
@ApiOperation(value = "下载导入模板")
public ResultBean downExcelTemplate() {
public void downExcelTemplate(HttpServletResponse response) {
try {
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
String importTemplateCode = "SysTaskCycleImportTemplate";
// 查询服务器中是否存在模板文件
ImppFile fastDFSFile = new ImppFile("SysTaskCycleImportTemplate.xls",
excelTool.importTemplate(SysTaskCycle.class), ".xls");
SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode);
if (sysFile == null) {
sysFile = fileService.upload(fastDFSFile, CommonEnumUtil.SOFT_TYPE.CORE.getValue());
sysFile.setFileCode(importTemplateCode);
sysFile = sysFileService.insertSysFile(sysFile);
}
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment;fileName=" + URLEncoder.encode(importTemplateCode + ".xls", "UTF-8"));
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
response.getOutputStream().write(excelTool.importTemplate(SysTaskCycle.class));
response.getOutputStream().flush();
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
LOGGER.error("下载异常",e);
throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build();
}
}
}

@ -19,7 +19,6 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysTask;
import cn.estsh.i3plus.pojo.platform.bean.SysTaskCycle;
import cn.estsh.i3plus.pojo.platform.bean.SysTaskPlan;
@ -34,6 +33,7 @@ import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -41,10 +41,13 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.EntityManager;
import java.io.File;
import java.util.ArrayList;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @Description :
@ -138,6 +141,7 @@ public class SysTaskPlanController extends CoreBaseController {
@PostMapping(value = "/insert")
@ApiOperation(value = "新增任务计划", notes = "任务计划")
public ResultBean<SysTaskPlan> insertSysTaskTime(@RequestBody SysTaskPlan sysTaskPlan, Integer isExecute) {
boolean isMakeUpOperate = false;
try {
startMultiService();
@ -166,14 +170,14 @@ public class SysTaskPlanController extends CoreBaseController {
sysTaskPlan.setTaskPlanStatus(CommonEnumUtil.DATA_STATUS.ENABLE.getValue());
// 唯一检查
LOGGER.info("定时任务唯一校验 Name:{0}GroupName:{1}", sysTaskPlan.getName(), sysTaskPlan.getGroupName());
LOGGER.info("定时任务唯一校验 Name:{}GroupName:{}", sysTaskPlan.getName(), sysTaskPlan.getGroupName());
BaseResultBean baseResultBean = getJobService(sysTaskPlan.getTaskSoftTypeRdd())
.checkJobExists(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
if (baseResultBean.isSuccess() && baseResultBean.getResultObject() != null && (boolean) baseResultBean.getResultObject()) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail("定时任务已存在 %s" , baseResultBean.getErrorMsg())
.setErrorDetail("定时任务已存在 %s", baseResultBean.getErrorMsg())
.build();
}
@ -182,7 +186,6 @@ public class SysTaskPlanController extends CoreBaseController {
sysTask.getTaskClass(), sysTaskPlan.getName(), sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(),
sysTaskPlan.getTaskPlanParam());
if (!baseResultBean.isSuccess()) {
getJobService(sysTaskPlan.getTaskSoftTypeRdd()).deleteTask(sysTaskPlan.getName(),sysTaskPlan.getGroupName());
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
@ -210,9 +213,17 @@ public class SysTaskPlanController extends CoreBaseController {
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysTaskPlan);
} catch (ImppBusiException busExcep) {
isMakeUpOperate = true;
return ResultBean.fail(busExcep);
} catch (Exception e) {
isMakeUpOperate = true;
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
// 如果失败进行补偿删除,避免添加垃圾数据
if (isMakeUpOperate && sysTaskPlan.getTaskSoftTypeRdd() != null
&& StringUtils.isNotBlank(sysTaskPlan.getName()) && StringUtils.isNotBlank(sysTaskPlan.getGroupName())) {
getJobService(sysTaskPlan.getTaskSoftTypeRdd()).deleteTask(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
}
}
}
@ -274,7 +285,11 @@ public class SysTaskPlanController extends CoreBaseController {
baseResultBean = getJobService(sysTaskPlan.getTaskSoftTypeRdd())
.editTask(sysTask.getTaskPackage(), sysTask.getTaskClass(), sysTaskPlan.getName(),
sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam());
// 判断是否失败如果失败进行补偿新增,避免出现勿删的情况
if (!baseResultBean.isSuccess()) {
getJobService(sysTaskPlan.getTaskSoftTypeRdd())
.addTask(sysTask.getTaskPackage(), sysTask.getTaskClass(), sysTaskPlan.getName()
, sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam());
resultBean = ResultBean.fail(baseResultBean.getErrorMsg());
}
@ -404,7 +419,7 @@ public class SysTaskPlanController extends CoreBaseController {
*
*
* @param sysTaskPlan
* @param pager
* @param pager
* @return
*/
@GetMapping("/query")
@ -450,48 +465,77 @@ public class SysTaskPlanController extends CoreBaseController {
}
/**
*
*
*
* @return
*/
@GetMapping(value = "/refresh/{id}")
@ApiOperation(value = "全部刷新", notes = "全部刷新")
public ResultBean refreshTaskPlan(boolean isSkipDisablePlan) {
@GetMapping(value = "/reload-all")
@ApiOperation(value = "全部重载", notes = "全部重载")
public ResultBean refreshAllTaskPlan(boolean isSkipDisablePlan) {
try {
List<SysTaskPlan> sysTaskPlanList = sysTaskPlanService.listSysTaskPlan();
ResultBean resultBean = ResultBean.success("操作成功");
SysTask sysTask;
SysTaskCycle sysTaskCycle;
for (SysTaskPlan sysTaskPlan : sysTaskPlanList) {
if(isSkipDisablePlan && sysTaskPlan.getTaskPlanStatusVal() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()){
if (isSkipDisablePlan && sysTaskPlan.getTaskPlanStatusVal() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) {
continue;
}
sysTask = sysTaskService.getSysTaskById(sysTaskPlan.getTaskId());
sysTaskCycle = sysTaskCycleService.getSysTaskCycleById(sysTaskPlan.getTaskCycleId());
// 调用对应微服务的检查接口
LOGGER.info("微服定时任务数据校验name:{}, groupName:{}", sysTaskPlan.getName(), sysTaskPlan.getGroupName());
// 修改对应微服务的定时任务
LOGGER.info("微服修改定时任务数据taskPlan", sysTaskPlan.toString());
BaseResultBean baseResultBean = getJobService(sysTaskPlan.getTaskSoftTypeRdd())
.checkJobExists(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
if (baseResultBean.isSuccess() && baseResultBean.getResultObject() != null && !(boolean) baseResultBean.getResultObject()) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("定时任务不存在")
.build();
} else if (!baseResultBean.isSuccess()) {
resultBean = ResultBean.fail(baseResultBean.getErrorMsg());
.editTask(sysTask.getTaskPackage(), sysTask.getTaskClass(), sysTaskPlan.getName(),
sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam());
// 判断是否失败如果失败进行补偿新增,避免出现勿删的情况
if (!baseResultBean.isSuccess()) {
getJobService(sysTaskPlan.getTaskSoftTypeRdd())
.addTask(sysTask.getTaskPackage(), sysTask.getTaskClass(), sysTaskPlan.getName()
, sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam());
}
}
return ResultBean.success("操作成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @return
*/
@PutMapping(value = "/reload-ids")
@ApiOperation(value = "按id重载计划", notes = "按id重载计划")
public ResultBean reloadTaskPlanById(@RequestBody Long[] ids) {
try {
List<SysTaskPlan> sysTaskPlanList = sysTaskPlanService.findSysTaskPlanByIds(ids);
SysTask sysTask;
SysTaskCycle sysTaskCycle;
for (SysTaskPlan sysTaskPlan : sysTaskPlanList) {
sysTask = sysTaskService.getSysTaskById(sysTaskPlan.getTaskId());
sysTaskCycle = sysTaskCycleService.getSysTaskCycleById(sysTaskPlan.getTaskCycleId());
// 修改对应微服务的定时任务
LOGGER.info("微服修改定时任务数据taskPlan", sysTaskPlan.toString());
baseResultBean = getJobService(sysTaskPlan.getTaskSoftTypeRdd())
BaseResultBean baseResultBean = getJobService(sysTaskPlan.getTaskSoftTypeRdd())
.editTask(sysTask.getTaskPackage(), sysTask.getTaskClass(), sysTaskPlan.getName(),
sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam());
// 判断是否失败如果失败进行补偿新增,避免出现勿删的情况
if (!baseResultBean.isSuccess()) {
resultBean = ResultBean.fail(baseResultBean.getErrorMsg());
LOGGER.error("重载任务计划name{} group:{} 失败: {}",sysTaskPlan.getName()
,sysTaskPlan.getGroupName(),baseResultBean.getErrorMsg());
getJobService(sysTaskPlan.getTaskSoftTypeRdd())
.addTask(sysTask.getTaskPackage(), sysTask.getTaskClass(), sysTaskPlan.getName()
, sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam());
}
}
return resultBean;
return ResultBean.success("操作成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
@ -503,67 +547,57 @@ public class SysTaskPlanController extends CoreBaseController {
@GetMapping(value = "/export")
@ApiOperation(value = "导出数据")
public ResultBean<SysTask> exportExcel(SysTask bean, boolean needSendMessage) {
ListPager<SysTask> listPager;
List<SysFile> result = new ArrayList<>();
File zipFile = null;
File excelDir = null;
File excelFile;
ExcelTool excelTool;
public void exportExcel(SysTaskPlan sysTaskPlan,HttpServletResponse response) {
File excelFile = null;
try {
Pager pager = new Pager(0);
// 判断是否超过excel最大导出数量设定值
pager.setPageSize(RedisCacheTool.getSysConfigIntVal(PlatformConstWords.EXCEL_EXPORT_MAX_ROW, 20000));
// 数据校验
Map<String, String> colMap = ExcelTool.getColName(SysTaskCycle.class);
Map<String, String> colMap = ExcelTool.getColName(SysTaskPlan.class);
String[] colName = new String[colMap.size()];
int i = 0;
int j = 0;
for (String key : colMap.keySet()) {
colName[i++] = key;
colName[j++] = key;
}
// excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
// excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
// excelDir.mkdir();
// do {
// listPager = sysTaskService.querySysTaskByPager(bean, pager);
// pager = listPager.getObjectPager();
//
// // 将excel导出至临时文件夹
// excelFile = new File(MessageFormat.format("{0}{1}{2}{3}.xls", excelDir, File.separator,
// SysTaskCycle.class.getSimpleName(),
// pager.getCurrentPage()));
// excelFile.createNewFile();
// excelTool.exportData(excelFile, listPager.getObjectList(), SysTaskCycle.class, colName);
//
// pager.setCurrentPage(pager.getCurrentPage() + 1);
// } while (pager.getCurrentPage() <= pager.getTotalPages());
//
// // 将所有excel文件打包上传
// zipFile = ZipTool.zipFile(null, excelDir);
// SysFile sysFile = fileService.upload(new FileInputStream(zipFile), zipFile.getName(),
// StringTool.getStringFileSuffix(zipFile.getName(), true), CommonEnumUtil.SOFT_TYPE.CORE.getValue());
//
// result.add(sysFileService.insertSysFile(sysFile));
//
// // 是否发送站内信
// if (needSendMessage) {
// sysMessageService.insertSysMessage(ExcelTool.sendStationLetter(result, getSessionUser().getUser().getId()));
// }
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
// 清理临时文件文件
if (zipFile != null) {
FileTool.deleteFile(zipFile.getPath());
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
// 将excel导出至临时文件夹
excelFile = new File(System.getProperty("java.io.tmpdir") + File.separator + AuthUtil.getSessionUser().getUserName() +
"SysTaskPlan.xls");
excelFile.createNewFile();
excelTool.exportData(excelFile, sysTaskPlanService.findSysTaskPlanByCondition(sysTaskPlan), SysTaskPlan.class, colName);
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment;fileName=" + URLEncoder.encode(excelFile.getName(), "UTF-8"));
response.flushBuffer();
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(excelFile));
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
excelFile.delete();
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (excelDir != null) {
FileTool.deleteFile(excelDir.getPath());
} catch (Exception e) {
LOGGER.error("下载异常",e);
throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build();
} finally {
if (excelFile != null) {
FileTool.deleteFile(excelFile.getPath());
}
}
}
@ -573,23 +607,30 @@ public class SysTaskPlanController extends CoreBaseController {
public ResultBean importExcel(@RequestParam("file") MultipartFile file) {
try {
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
List<SysTask> beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), SysTask.class);
List<SysTaskPlan> beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), SysTaskPlan.class);
Set<String> keySet = new HashSet<>();
String key;
// 校验导入数据并初始化
for (SysTask sysTask : beanList) {
if (!sysTaskService.checkSysTaskOnly(sysTask)) {
for (SysTaskPlan sysTaskPlan : beanList) {
key = sysTaskPlan.getName() + sysTaskPlan.getGroupName();
if (keySet.contains(key) || !sysTaskPlanService.checkSysTaskPlanOnly(sysTaskPlan)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("任务名称【%s】必须唯一", sysTask.getName())
.setErrorDetail("任务名称【%s】必须唯一", sysTaskPlan.getName())
.setErrorSolution("请重新输入")
.build();
}
keySet.add(key);
ConvertBean.modelInitialize(sysTask, AuthUtil.getSessionUser());
}
ConvertBean.modelInitialize(sysTaskPlan, AuthUtil.getSessionUser());
sysTaskService.insertBatchSysTask(beanList);
ResultBean resultBean = insertSysTaskTime(sysTaskPlan,CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
if (!resultBean.isSuccess()) {
return resultBean;
}
}
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
@ -601,28 +642,22 @@ public class SysTaskPlanController extends CoreBaseController {
@GetMapping(value = "/down-template")
@ApiOperation(value = "下载导入模板")
public ResultBean downExcelTemplate() {
public void downExcelTemplate(HttpServletResponse response) {
try {
// ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
// String importTemplateCode = "SysTaskCycleImportTemplate";
//
// // 查询服务器中是否存在模板文件
// ImppFile fastDFSFile = new ImppFile("SysTaskCycleImportTemplate.xls",
// excelTool.importTemplate(SysTaskCycle.class), ".xls");
//
// SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode);
// if (sysFile == null) {
// sysFile = fileService.upload(fastDFSFile, CommonEnumUtil.SOFT_TYPE.CORE.getValue());
// sysFile.setFileCode(importTemplateCode);
// sysFile = sysFileService.insertSysFile(sysFile);
// }
// return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile);
return null;
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
String importTemplateCode = "SysTaskPlanImportTemplate";
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment;fileName=" + URLEncoder.encode(importTemplateCode + ".xls", "UTF-8"));
response.flushBuffer();
response.getOutputStream().write(excelTool.importTemplate(SysTaskPlan.class));
response.getOutputStream().flush();
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
LOGGER.error("下载异常",e);
throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build();
}
}
}

@ -2,19 +2,19 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.repository.SysMenuRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRefRoleMenuRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository;
@ -22,12 +22,10 @@ import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CacheCrudService;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -226,11 +224,12 @@ public class SysRoleService extends CacheCrudService<SysRole> implements ISysRol
@Override
public List<SysRefRoleMenu> findSysRefRoleMenuByRoleId(Long roleId, Integer softType) {
LOGGER.info("系统角色权限关系 RefRoleMenu find By RoleId");
return refRoleMenuRDao.findByProperty(
new String[]{"roleId","softType","isValid"},
new Object[]{roleId,softType,
CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}
);
DdlPackBean ddlPackBean = new DdlPackBean();
DdlPreparedPack.getNumEqualPack(roleId,"roleId",ddlPackBean);
DdlPreparedPack.getNumEqualPack(softType,"softType",ddlPackBean);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",ddlPackBean);
return refRoleMenuRDao.findByHqlWhere(ddlPackBean);
}
@Override

@ -1,6 +1,7 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskCycleService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
@ -101,9 +102,9 @@ public class SysTaskCycleService implements ISysTaskCycleService {
pager = PagerHelper.getPager(pager, sysTaskCycleRDao.listCount());
return new ListPager(sysTaskCycleRDao.listPager(pager),pager);
}else {
String hqlPack = CoreHqlPack.packHqlSysTaskCycle(sysTaskCycle);
DdlPackBean hqlPack = CoreHqlPack.packHqlSysTaskCycle(sysTaskCycle);
pager = PagerHelper.getPager(pager, sysTaskCycleRDao.findByHqlWhereCount(hqlPack));
return new ListPager(sysTaskCycleRDao.findByHqlWherePage(hqlPack + sysTaskCycle.orderBy(),pager),pager);
return new ListPager(sysTaskCycleRDao.findByHqlWherePage(hqlPack, pager), pager);
}
}
@ -129,4 +130,10 @@ public class SysTaskCycleService implements ISysTaskCycleService {
public List<SysRefTaskCyclePlan> findRefTaskCyclePlanByCycleId(Long cycleId) {
return sysRefTaskCyclePlanRDao.findByProperty("taskCycleId",cycleId);
}
@Override
public List<SysTaskCycle> findSysTaskCycleByCondition(SysTaskCycle sysTaskCycle) {
return sysTaskCycleRDao.findByHqlWhere(CoreHqlPack.packHqlSysTaskCycle(sysTaskCycle));
}
}

@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
@ -111,6 +112,21 @@ public class SysTaskPlanService implements ISysTaskPlanService {
}
@Override
public List<SysTaskPlan> findSysTaskPlanByIds(Long[] ids) {
return sysTaskPlanRDao.findAllById(Arrays.asList(ids));
}
@Override
public boolean checkSysTaskPlanOnly(SysTaskPlan sysTaskPlan) {
return !sysTaskPlanRDao.isExitByHql(CoreHqlPack.packHqlSysTaskPlanOnly(sysTaskPlan));
}
@Override
public List<SysTaskPlan> findSysTaskPlanByCondition(SysTaskPlan sysTaskPlan) {
return sysTaskPlanRDao.findByHqlWhere(CoreHqlPack.packHqlSysTaskPlan(sysTaskPlan));
}
@Override
@ApiOperation(value = "修改任务计划状态", notes = "修改任务计划状态")
public void updateSysTaskPlanStatus(Long id, int status, SessionUser user) {
LOGGER.info("定时任务 SYS_MENU id:{} status:{} user:{}", id, status, user);

@ -133,4 +133,9 @@ public class SysTaskService implements ISysTaskService {
public boolean checkSysTaskOnly(SysTask sysTask) {
return !sysTaskRDao.isExitByHql(CoreHqlPack.packHqlCheckSysTaskOnly(sysTask));
}
@Override
public List<SysTask> findSysTaskByCondition(SysTask sysTask) {
return sysTaskRDao.findByHqlWhere(CoreHqlPack.packHqlSysTask(sysTask));
}
}

Loading…
Cancel
Save