Merge remote-tracking branch 'remotes/origin/dev' into test

yun-zuoyi
汪云昊 5 years ago
commit 7fda80c334

@ -52,4 +52,7 @@ public interface ISystemInitService {
@ApiOperation(value = "对象版本记录信息")
void reloadPojoVersionPlan();
@ApiOperation(value = "定时任务日志等级")
void reloadTaskPlanLogLevel();
}

@ -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);
}

@ -80,6 +80,7 @@ public interface ISysTaskPlanService {
* @param groupName
* @return
*/
@AnnoIgnoreLog
@ApiOperation(value = "查询任务计划",notes = "根据任务计划名称与组名称查询")
SysTaskPlan getSysTaskPlanByNameAndGroup(String name, String groupName);
@ -98,4 +99,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);
}

@ -176,12 +176,13 @@ public class AuthController extends CoreBaseController {
ValidatorBean.checkIsNumber(parentId,"父节点不能为空");
List<SysMenu> result = memTreeService.packTreeSysMenuByUserIdAndParentId(getSessionUser().getUser().getId(), Long.parseLong(parentId));
result = findChildList(result);
// 国际化
result = sysMenuService.setLanguageSysMenuName(getSessionUser().getLanguageCode(),result);
result = findChildList(result);
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(findChildList(result));
.setResultList(result);
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep);

@ -3,13 +3,16 @@ package cn.estsh.i3plus.core.apiservice.controller.base;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.license.ImppLicense;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.license.ImppLicenseTool;
import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -17,9 +20,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@ -158,4 +159,35 @@ public class BackstageController extends CoreBaseController {
}
}
@GetMapping(value = "/reset/task-log-level")
@ApiOperation(value = "重置定时任务日志等级",notes = "重置定时任务日志等级")
public ResultBean restTaskLogLevel(){
try {
systemInitService.reloadTaskPlanLogLevel();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/license")
@ApiOperation(value = "更新授权信息", notes = "更新授权信息")
public ResultBean updateLicense(@RequestBody String content){
try {
ImppLicense license = ImppLicenseDecoder.getLicenseDecoder(content);
if (Objects.nonNull(license)) {
ImppLicenseTool.updateImppLicense(license);
} else {
return ResultBean.fail("错误的授权信息");
}
return ResultBean.success("操作成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
}

@ -336,4 +336,13 @@ public class SysEnumController extends CoreBaseController {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(CommonEnumUtil.DATA_SOURCE_TYPE.values()));
}
@GetMapping("/message-send-status")
@ApiOperation(value = "消息发送状态", notes = "消息发送状态")
public ResultBean getMessageSendStatus() {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.MESSAGE_SEND_STATUS.values()));
}
}

@ -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();
}
}
}

@ -1,5 +1,6 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
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.ISysTaskService;
@ -13,13 +14,13 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean;
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.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
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;
@ -29,22 +30,28 @@ import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.quartz.IQuartzJobService;
import cn.estsh.impp.framework.boot.quartz.ScheduleTool;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
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;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
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 :
@ -72,6 +79,12 @@ public class SysTaskPlanController extends CoreBaseController {
@Autowired
private EntityManager entityManager;
@Autowired
private ISystemInitService systemInitService;
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
/************ 微服定时任务 *********/
@Autowired
private ScheduleTool scheduleTool;
@ -138,6 +151,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 +180,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 +196,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())
@ -208,11 +221,22 @@ public class SysTaskPlanController extends CoreBaseController {
}
}
//更新任务计划缓存
putTaskPlanCache(sysTaskPlan);
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 +298,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());
}
@ -286,6 +314,10 @@ public class SysTaskPlanController extends CoreBaseController {
resultBean = ResultBean.fail(baseResultBean.getErrorMsg());
}
}
//更新任务计划缓存
putTaskPlanCache(sysTaskPlan);
return resultBean;
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
@ -314,6 +346,9 @@ public class SysTaskPlanController extends CoreBaseController {
sysTaskPlanService.deleteSysTaskPlanById(Long.parseLong(id));
getJobService(sysTaskPlan.getTaskSoftTypeRdd()).deleteTask(sysTaskPlan.getName(), sysTaskPlan.getGroupName());
// 清理缓存
removeTaskPlanCache(sysTaskPlan);
return ResultBean.success().setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
@ -404,7 +439,7 @@ public class SysTaskPlanController extends CoreBaseController {
*
*
* @param sysTaskPlan
* @param pager
* @param pager
* @return
*/
@GetMapping("/query")
@ -450,48 +485,85 @@ 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());
}
}
// 刷新全部缓存
reloadAllTaskPlanCache();
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;
// 刷新全部缓存
reloadAllTaskPlanCache();
return ResultBean.success("操作成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
@ -503,67 +575,56 @@ 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);
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();
}
}
}
} 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());
}
}
}
@ -573,23 +634,33 @@ 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(sysTaskPlan, AuthUtil.getSessionUser());
ConvertBean.modelInitialize(sysTask, AuthUtil.getSessionUser());
ResultBean resultBean = insertSysTaskTime(sysTaskPlan,CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
if (!resultBean.isSuccess()) {
return resultBean;
}
}
sysTaskService.insertBatchSysTask(beanList);
// 刷新全部缓存
reloadAllTaskPlanCache();
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
@ -601,28 +672,36 @@ 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();
}
}
private void putTaskPlanCache(SysTaskPlan plan){
String redisKey = CommonConstWords.REDIS_PREFIX_TASK_LOG_LEVEL + ":" + plan.getGroupName() + "." + plan.getName();
redisRes.putObject(redisKey, plan.getLogLevelVal(), -1);
}
private void removeTaskPlanCache(SysTaskPlan plan){
String redisKey = CommonConstWords.REDIS_PREFIX_TASK_LOG_LEVEL + ":" + plan.getGroupName() + "." + plan.getName();
redisRes.deleteKey(redisKey);
}
private void reloadAllTaskPlanCache(){
systemInitService.reloadTaskPlanLogLevel();
}
}

@ -1,38 +1,38 @@
package cn.estsh.i3plus.core.apiservice.mq;
import cn.estsh.i3plus.core.apiservice.serviceimpl.mdm.SysToolSyncDataService;
import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd;
import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear;
import cn.estsh.impp.framework.boot.mdm.mq.BaseMdmDataSyncQueueReceiver;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Configuration;
import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_DATA_CORE;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-05-28 16:54
* @Modify:
**/
@ConditionalOnExpression("'${impp.mq.queue.mdm.sync:true}' == 'true'")
@Configuration
public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver {
/**
*
*/
public MdmDataSyncQueueReceiver() {
putMdmDataRef(SysToolSyncDataService.class, MdmGear.class, MdmGearCoreBusiExtd.class);
}
@Override
@RabbitListener(queues = QUEUE_MDM_SYNC_DATA_CORE)
public void syncMasterData(String syncDataStr, Channel channel, Message message) {
processSyncMasterData(syncDataStr, channel, message);
}
}
//package cn.estsh.i3plus.core.apiservice.mq;
//
//import cn.estsh.i3plus.core.apiservice.serviceimpl.mdm.SysToolSyncDataService;
//import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd;
//import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear;
//import cn.estsh.impp.framework.boot.mdm.mq.BaseMdmDataSyncQueueReceiver;
//import com.rabbitmq.client.Channel;
//import org.springframework.amqp.core.Message;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
//import org.springframework.context.annotation.Configuration;
//
//import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_DATA_CORE;
//
///**
// * @Description :
// * @Reference :
// * @Author : yunhao
// * @CreateDate : 2020-05-28 16:54
// * @Modify:
// **/
//@ConditionalOnExpression("'${impp.mq.queue.mdm.sync:true}' == 'true'")
//@Configuration
//public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver {
//
// /**
// * 初始化类关系
// */
// public MdmDataSyncQueueReceiver() {
// putMdmDataRef(SysToolSyncDataService.class, MdmGear.class, MdmGearCoreBusiExtd.class);
// }
//
// @Override
// @RabbitListener(queues = QUEUE_MDM_SYNC_DATA_CORE)
// public void syncMasterData(String syncDataStr, Channel channel, Message message) {
// processSyncMasterData(syncDataStr, channel, message);
// }
//}

@ -76,7 +76,7 @@ public class MessageLetterQueueReceiver {
if (!StringUtils.isBlank(msg.getMessageReceiversId())) {
String[] userIds = msg.getMessageReceiversId().split(",");
if (userIds != null && userIds.length > 0) {
if (userIds.length > 0) {
List<SysUser> userList = personnelService.findSysUserByIds(StringTool.getArrayLong(userIds));
if (userList != null && userList.size() > 0) {

@ -15,6 +15,7 @@ import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import com.alibaba.fastjson.JSON;
import com.rabbitmq.client.Channel;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
@ -47,9 +48,9 @@ public class MessageMailQueueReceiver {
/**
*
*
* @param data
* @param channel
* @param message
* @param data
* @param channel
* @param message
*/
@RabbitListener(queues = PlatformConstWords.QUEUE_IMPP_MESSAGE_MAIL)
public void processImppMail(String data, Channel channel, Message message) {
@ -60,26 +61,40 @@ public class MessageMailQueueReceiver {
if (msg.getMessageSendTime() == null) {
msg.setMessageSendTime(TimeTool.getNowTime(true));
}
ConvertBean.serviceModelInitialize(msg,msg.getMessageSenderNameRdd());
// 持久化消息化消息并初始化状态
ConvertBean.serviceModelInitialize(msg, msg.getMessageSenderNameRdd());
msg.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SENDING.getValue());
msg = sysMessageService.insertSysMessage(msg);
// 默认发送成功
msg.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SEND_SUCCESS.getValue());
// 设置邮件主题内容及收件人
mailUtil.init();
mailUtil.setSubject(msg.getMessageTitle());
mailUtil.setContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.valueOfDescription(msg.getMessageContentType()));
mailUtil.setBody(msg.getMessageContent());
// 判断收件人类型
if (msg.getMessageReceiverType() != null) {
if (msg.getMessageReceiverType().intValue() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.URGENT.getValue()) {
// 判断是否为系统紧急提示 微服注册状态提示
mailUtil.setTo(RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL));
// 次数过于频繁
mailUtil.send();
try {
mailUtil.send();
} catch (Exception e) {
saveSendErrorMsg(msg, RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL), e);
}
} else if (msg.getMessageReceiverType().intValue() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.EXTERNAL.getValue()) {
//判断是否为外部邮件
mailUtil.setTo(StringUtils.split(msg.getMessageReceiversNameRdd(), ","));
mailUtil.send();
try {
mailUtil.send();
} catch (Exception e) {
saveSendErrorMsg(msg, RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL), e);
}
} else if (msg.getMessageReceiverType().intValue() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.INTERNAL.getValue()) {
// 收件人信息
@ -106,7 +121,12 @@ public class MessageMailQueueReceiver {
sysMessageService.insertSysRefUserMessage(refUserMessage);
mailUtil.setTo(sysUser.getUserEmail());
mailUtil.send();
try {
mailUtil.send();
} catch (Exception e) {
saveSendErrorMsg(msg, RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL), e);
}
}
}
}
@ -132,4 +152,37 @@ public class MessageMailQueueReceiver {
LOGGER.info("[Core Email] Email Id:{} , 耗时{}, Message Info :{}", msg.getId(), System.currentTimeMillis() - startTime, JSON.toJSONString(msg));
}
}
/**
*
*
* @param message
* @param mark
* @param e
*/
private void saveSendErrorMsg(SysMessage message, String mark, Exception e) {
if (message == null) {
return;
}
// 更新消息发送状态
message.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SEND_FAIL.getValue());
StringBuilder errorMsg = new StringBuilder();
// 校验标识是否存在
if (StringUtils.isNotBlank(mark)) {
errorMsg.append("发送标识【");
errorMsg.append(mark);
errorMsg.append("】");
}
// 拼接异常信息
errorMsg.append(ExceptionUtils.getMessage(e));
errorMsg.append("\r\n");
if (!StringUtils.isBlank(message.getErrorMessage())) {
errorMsg.insert(0, message.getErrorMessage());
}
message.setErrorMessage(errorMsg.toString());
}
}

@ -1,10 +1,7 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.base;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionPlanService;
import cn.estsh.i3plus.core.api.iservice.busi.ISystemResourceService;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
@ -69,6 +66,8 @@ public class SystemInitService implements ISystemInitService {
@Autowired
private ISysPojoVersionPlanService pojoVersionPlanService;
@Autowired
private ISysTaskPlanService sysTaskPlanService;
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@ -101,6 +100,10 @@ public class SystemInitService implements ISystemInitService {
LOGGER.info("加载 对象版本控制信息");
reloadPojoVersionPlan();
LOGGER.info("加载 对象版本控制信息 信息完成");
LOGGER.info("加载 定时任务日志等级");
reloadTaskPlanLogLevel();
LOGGER.info("加载 定时任务日志等级 信息完成");
}catch (Exception e){
e.printStackTrace();
}
@ -283,6 +286,7 @@ public class SystemInitService implements ISystemInitService {
}
}
@Override
public void putAndLoadSysMenu() {
SysLocaleResource resource = new SysLocaleResource();
@ -415,4 +419,15 @@ public class SystemInitService implements ISystemInitService {
}
}
}
@Override
public void reloadTaskPlanLogLevel() {
List<SysTaskPlan> sysTaskPlanList = sysTaskPlanService.listSysTaskPlan();
if (CollectionUtils.isNotEmpty(sysTaskPlanList)){
for (SysTaskPlan plan : sysTaskPlanList) {
String redisKey =CommonConstWords.REDIS_PREFIX_TASK_LOG_LEVEL + ":" + plan.getGroupName() + "." + plan.getName();
redisRes.putObject(redisKey, plan.getLogLevelVal(), -1);
}
}
}
}

@ -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));
}
}

@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.base.ISysLogService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskPlanService;
import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -24,6 +25,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;
/**
@ -75,6 +77,7 @@ public class SysTaskPlanService implements ISysTaskPlanService {
}
@Override
@AnnoIgnoreLog
@ApiOperation(value = "修改任务计划", notes = "修改任务计划")
public void updateSysTaskPlan(SysTaskPlan sysTaskPlan) {
SysTaskPlan originSysTaskPlan = sysTaskPlanRDao.getById(sysTaskPlan.getId());
@ -102,6 +105,7 @@ public class SysTaskPlanService implements ISysTaskPlanService {
originSysTaskPlan.setIsInternalUser(sysTaskPlan.getIsInternalUser());
originSysTaskPlan.setNoticeChannel(sysTaskPlan.getNoticeChannel());
originSysTaskPlan.setNoticeMethod(sysTaskPlan.getNoticeMethod());
originSysTaskPlan.setLogLevel(sysTaskPlan.getLogLevel());
if(StringUtils.isNotBlank(sysTaskPlan.getLastRunDateTime())){
originSysTaskPlan.setLastRunDateTime(sysTaskPlan.getLastRunDateTime());
@ -111,6 +115,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);
@ -165,6 +184,7 @@ public class SysTaskPlanService implements ISysTaskPlanService {
}
@Override
@AnnoIgnoreLog
@ApiOperation(value = "查询任务计划", notes = "根据任务计划名称与组名称查询")
public SysTaskPlan getSysTaskPlanByNameAndGroup(String name, String groupName) {
return sysTaskPlanRDao.getByProperty(

@ -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));
}
}

@ -257,7 +257,7 @@ public class MailUtil {
} catch (SMTPAddressFailedException e) {
LOGGER.error(e.getClass() + "\t" + e.getMessage());
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.MAIL_RECIPIENT_NOT_EXIST.getCode())
.setErrorDetail(ImppExceptionEnum.MAIL_RECIPIENT_NOT_EXIST.getDescription())
.setErrorSolution("请重新设置收件人")
@ -265,7 +265,7 @@ public class MailUtil {
} catch (AuthenticationFailedException e) {
LOGGER.error(e.getClass() + "\t" + e.getMessage());
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.MAIL_LOGIN_PASS_ERROR.getCode())
.setErrorDetail(ImppExceptionEnum.MAIL_LOGIN_PASS_ERROR.getDescription())
.setErrorSolution("请重新设置账号或密码")
@ -273,19 +273,27 @@ public class MailUtil {
} catch (MessagingException e) {
LOGGER.error(e.getClass() + "\t" + e.getMessage());
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getCode())
.setErrorDetail(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getDescription())
.setErrorSolution("请重新设置邮件服务器地址或端口")
.build();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
LOGGER.error(e.getClass() + "\t" + e.getMessage());
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getCode())
.setErrorDetail(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getDescription())
.setErrorSolution("请重新设置邮件服务器地址或端口")
.build();
} catch (Exception e) {
LOGGER.error(e.getClass() + "\t" + e.getMessage());
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getCode())
.setErrorDetail(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getDescription())
.setErrorSolution("邮件发送异常:%s", e.getMessage())
.build();
}
}
}

@ -47,10 +47,10 @@
</RollingRandomAccessFile>
<!-- 应用调度日志文件-->
<RollingRandomAccessFile name="log_schedule_file"
fileName="${logFileRootPath}/${project.name}-schedule.log"
<ImppLog4j2File name="log_schedule_file"
filePath="${logFileRootPath}/schedule/"
append="false" immediateFlush="false" bufferedIO="true" bufferSize="8192"
filePattern="${logFileRootPath}/$${date:yyyy-MM}/${project.name}-schedule-%d{yyyy-MM-dd}-%i.log">
filePattern="${logFileRootPath}/$${date:yyyy-MM}/task-name-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="${file_pattern}"/>
<Filters>
@ -71,7 +71,7 @@
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</ImppLog4j2File>
<!--控制台日志-->
<console name="console" target="SYSTEM_OUT" follow="true">

Loading…
Cancel
Save