frin.fei 7 years ago
commit b68025dda1

@ -69,4 +69,19 @@ public interface ISysDictionaryService {
* @param ids
*/
void deleteSysDictionaryByIds(String[] ids);
/**
*
* @param fileName
* @return
*/
boolean checkFileName(String fileName);
/**
* CODE
* @param parentCode
* @param code
* @return
*/
SysDictionary getSysDictionaryByParentCodeAndCode(String parentCode,String code);
}

@ -19,7 +19,7 @@ public interface ISysFileService {
*
* @param sysFile
*/
void insertSysFile(SysFile sysFile);
SysFile insertSysFile(SysFile sysFile);
/**
*
@ -44,7 +44,7 @@ public interface ISysFileService {
* @param id
* @return
*/
SysFile getSysFileById(String id);
SysFile getSysFileById(Long id);
/**
*

@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.TaskTime;
import cn.estsh.i3plus.pojo.platform.bean.TaskTimeExpression;
import java.util.List;
@ -17,10 +18,17 @@ import java.util.List;
public interface ITaskTimeService {
/**
*
* @param taskTime
* @return
*/
TaskTime insertTaskTime(TaskTime taskTime, TaskTimeExpression taskTimeExpression);
/**
*
* @param taskTime
*/
void updateTaskTime(TaskTime taskTime);
void updateTaskTime(TaskTime taskTime, TaskTimeExpression taskTimeExpression);
/**
*
@ -37,13 +45,6 @@ public interface ITaskTimeService {
void deleteTaskTimeById(String id);
/**
*
* @param taskTime
* @return
*/
TaskTime insertTaskTime(TaskTime taskTime);
/**
*
* @return
*/
@ -76,4 +77,18 @@ public interface ITaskTimeService {
*
*/
void updateTaskTimeStatusByIds(String[] ids, Integer status);
/**
*
* @param lastDate
* @param name
* @param groupName
*/
void doTaskTimeLastDateByNameAndGroupName(String lastDate,String name,String groupName);
/**
*
* @param idStr
*/
void executeTaskTimeById(long idStr);
}

@ -1,12 +1,16 @@
package cn.estsh.i3plus.core.apiservice.controller;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@ -18,7 +22,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
* @CreateDate : 2018-09-28 11:20
* @Modify:
**/
@Controller
@RestController
@RequestMapping("/demo-upload")
@Api(description="复杂对象服务demo")
public class DemoUploadController {
@ -51,19 +55,16 @@ public class DemoUploadController {
@PostMapping("/upload")
@ApiOperation(value = "文件上传",notes = "文件上传")
public String singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
if (file.isEmpty()) {
redirectAttributes.addFlashAttribute("message", "请选择需要上传的文件。");
return "redirect:/demo-upload/uploadStatus";
}
public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
try {
// Get the file and save it somewhere
String path = dfsClient.saveFile(file);
redirectAttributes.addFlashAttribute("message","文件上传成功 '" + file.getOriginalFilename() + "'");
redirectAttributes.addFlashAttribute("path","url路径 '" + path + "'");
} catch (Exception e) {
LOGGER.error("upload file failed",e);
FastDFSFile dfsFile = dfsClient.saveFile(file);
return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(dfsFile);
}catch(ImppBusiException busExcep){
LOGGER.error(busExcep.getErrorMsg() + "{}",busExcep.getErrorDetail(),busExcep);
return ResultBean.fail(busExcep.getErrorShow());
}catch(Exception e){
LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + "{}",e.getMessage(),e);
return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
return "redirect:/demo-upload/uploadStatus";
}
}

@ -1,18 +1,24 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
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.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
@ -21,7 +27,10 @@ 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 org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.io.IOException;
import java.util.List;
/**
@ -40,30 +49,11 @@ public class SysFileController {
@Autowired
private ISysFileService sysFileService;
@Autowired
private ISysDictionaryService dictionaryService;
@PostMapping(value = "/insert")
@ApiOperation(value = "添加文件资源",notes = "添加文件资源")
public ResultBean insertSysFile(SysFile sysFile){
try {
// 登录用户
SessionUser user = AuthUtil.getSessionUser();
// 条件校验
ValidatorBean.beginValid(sysFile).notNull("name",sysFile.getName());
// 添加初始化
ConvertBean.modelInitialize(sysFile,user);
sysFileService.insertSysFile(sysFile);
return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
LOGGER.error(busExcep.getErrorMsg() + "{}",busExcep.getErrorDetail(),busExcep);
return ResultBean.fail(busExcep.getErrorShow());
}catch(Exception e){
LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + "{}",e.getMessage(),e);
return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
@Autowired
private FastDFSClient dfsClient;
@PutMapping(value = "/update")
@ApiOperation(value = "修改文件资源",notes = "修改文件资源")
@ -122,7 +112,7 @@ public class SysFileController {
@ApiOperation(value = "根据id查询文件资源",notes = "根据id查询文件资源")
public ResultBean getSysFileById(@PathVariable("id") String id){
try {
SysFile sysFile = sysFileService.getSysFileById(id);
SysFile sysFile = sysFileService.getSysFileById(Long.parseLong(id));
return ResultBean.success("查询成功")
.setResultObject(sysFile)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
@ -173,6 +163,53 @@ public class SysFileController {
}
}
/****************** 对文件操作 ******************/
@PostMapping("/upload")
@ApiOperation(value = "文件上传",notes = "文件上传")
public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
try {
if(file.isEmpty()){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("请选择需要上传的文件。")
.build();
}
boolean checkFileN = dictionaryService.checkFileName(file.getOriginalFilename());
if(!checkFileN){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_FORMAT.getCode())
.setErrorDetail("文件格式不支持")
.setErrorSolution("请到字典管理中添加文件类型")
.build();
}
FastDFSFile dfsFile = dfsClient.saveFile(file);
String filePath = dfsClient.getHostUi() + "/" + dfsFile.getDfsGroupName() + "/" + dfsFile.getDfsFileName();
SysDictionary dictionary = dictionaryService.getSysDictionaryByParentCodeAndCode(
CommonConstWords.DICTIONARY_FILE_TYPE,
StringTool.getStringFileSuffix(file.getOriginalFilename(),false));
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(dfsFile.getDfsGroupName());
sysFile.setDfsFileName(dfsFile.getDfsFileName());
sysFile.setFileSize(dfsFile.getContent().length);
sysFile.setFilePath(filePath);
sysFile.setFileOriginalName(file.getOriginalFilename());
sysFile.setFileTypeId(dictionary.getId());
sysFile.setFileTypeName(dictionary.getName());
SysFile fileDb = sysFileService.insertSysFile(sysFile);
return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(fileDb);
}catch(ImppBusiException busExcep){
LOGGER.error(busExcep.getErrorMsg() + "{}",busExcep.getErrorDetail(),busExcep);
return ResultBean.fail(busExcep.getErrorShow());
}catch(Exception e){
LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + "{}",e.getMessage(),e);
return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
}

@ -1,6 +1,7 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.IDepartmentService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
@ -8,6 +9,7 @@ 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.Department;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
@ -45,6 +47,9 @@ public class SysUserInfoController {
@Autowired
private IDepartmentService departmentService;
@Autowired
private ISysFileService sysFileService;
@PostMapping(value="/insert")
@ApiOperation(value="添加用户信息",notes="返回内容添加用户信息")
public ResultBean insertSysUserInfo(SysUserInfo userInfo){
@ -62,7 +67,6 @@ public class SysUserInfoController {
ConvertBean.modelInitialize(userInfo,user);
SysUserInfo pos = sysUserInfoService.insertSysUserInfo(userInfo);
sysUserInfoService.refreshRefUserDepartment(pos.getId().toString(),
new String[]{userInfo.getDepartmentId().toString()},
user.getUserName());

@ -46,28 +46,33 @@ public class TaskTimeController {
@PostMapping(value = "/insert")
@ApiOperation(value = "新增定时任务", notes = "定时任务")
public ResultBean insertTaskTime(TaskTime taskTime) {
public ResultBean insertTaskTime(TaskTime taskTime,Boolean isExecute) {
try {
// 数据校验
ValidatorBean.beginValid(taskTime)
.notNull("timeId", taskTime.getTimeId())
.notNull("name", taskTime.getName())
.notNull("timeId",taskTime.getTimeId())
.notNull("taskMethodTypeId", taskTime.getTaskMethodTypeId());
.notNull("groupName",taskTime.getGroupName())
.notNull("timeExpressionId",taskTime.getTimeExpressionId())
.notNull("taskMethodTypeId", taskTime.getTaskMethodTypeId())
.notNull("taskPackage",taskTime.getTaskPackage())
.notNull("taskClass",taskTime.getTaskClass());
TaskTimeExpression taskTimeExpression = taskTimeExpressionService.getTaskTimeExpressionById(taskTime.getTimeId().toString());
ValidatorBean.beginValid(taskTimeExpression);
TaskTimeExpression taskTimeExpression = taskTimeExpressionService
.getTaskTimeExpressionById(taskTime.getTimeExpressionId().toString());
ValidatorBean.checkNotNull(taskTimeExpression,"定时执行策略不存在");
taskTime.setRedTimeName(taskTimeExpression.getName());
taskTime.setRedTimeExpression(taskTimeExpression.getExpressionContent());
taskTime.setTimeExpressionNameRdd(taskTimeExpression.getName());
taskTime.setTimeExpressionContentRdd(taskTimeExpression.getExpressionContent());
taskTime.setTaskStartDateTimeRdd(taskTimeExpression.getExpressionStartDatetime());
taskTime.setTaskEndDateTimeRdd(taskTimeExpression.getExpressionEndDatetime());
taskTime.setTaskStatus(CommonEnumUtil.DATA_STATUS.ENABLE.getValue());
ConvertBean.modelInitialize(taskTime, AuthUtil.getSessionUser());
taskTime = taskTimeService.insertTaskTime(taskTime);
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(taskTime);
taskTime = taskTimeService.insertTaskTime(taskTime,taskTimeExpression);
// 立即执行
if(isExecute != null && isExecute){
taskTimeService.executeTaskTimeById(taskTime.getId());
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(taskTime);
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep.getErrorShow());
@ -79,31 +84,33 @@ public class TaskTimeController {
@PutMapping(value = "/update")
@ApiOperation(value = "修改定时任务", notes = "定时任务")
public ResultBean updateTaskTime(TaskTime taskTime) {
public ResultBean updateTaskTime(TaskTime taskTime,Boolean isExecute) {
try {
// 数据校验
ValidatorBean.beginValid(taskTime)
.notNull("id", taskTime.getId())
.notNull("timeId", taskTime.getTimeId())
.notNull("name", taskTime.getName())
.notNull("taskMethodTypeId",taskTime.getTaskMethodTypeId());
TaskTimeExpression taskTimeExpression = taskTimeExpressionService.getTaskTimeExpressionById(taskTime.getTimeId().toString());
// 数据真实性校验
ValidatorBean.beginValid(taskTimeExpression);
.notNull("groupName",taskTime.getGroupName())
.notNull("timeExpressionId",taskTime.getTimeExpressionId())
.notNull("taskMethodTypeId", taskTime.getTaskMethodTypeId())
.notNull("taskPackage",taskTime.getTaskPackage())
.notNull("taskClass",taskTime.getTaskClass());
// 数据冗余
taskTime.setRedTimeName(taskTimeExpression.getName());
taskTime.setRedTimeExpression(taskTimeExpression.getExpressionContent());
TaskTimeExpression taskTimeExpression = taskTimeExpressionService
.getTaskTimeExpressionById(taskTime.getTimeExpressionId().toString());
ValidatorBean.checkNotNull(taskTimeExpression,"定时执行策略不存在");
ConvertBean.modelUpdate(taskTime, AuthUtil.getSessionUser());
taskTimeService.updateTaskTime(taskTime);
taskTime.setTimeExpressionNameRdd(taskTimeExpression.getName());
taskTime.setTimeExpressionContentRdd(taskTimeExpression.getExpressionContent());
taskTime.setTaskStartDateTimeRdd(taskTimeExpression.getExpressionStartDatetime());
taskTime.setTaskEndDateTimeRdd(taskTimeExpression.getExpressionEndDatetime());
taskTime.setTaskStatus(CommonEnumUtil.DATA_STATUS.ENABLE.getValue());
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(taskTime);
taskTimeService.updateTaskTime(taskTime,taskTimeExpression);
if(isExecute != null && isExecute){
taskTimeService.executeTaskTimeById(taskTime.getId());
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(taskTime);
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep.getErrorShow());
@ -250,4 +257,22 @@ public class TaskTimeController {
return ResultBean.fail().setCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode());
}
}
@GetMapping(value = "/execute/{id}")
@ApiOperation(value = "立即执行", notes = "立即执行")
public ResultBean executeByTaskTimeId(@PathVariable("id") String id) {
try {
// 数据校验
ValidatorBean.checkNotNull(id, "定时任务id 不能为空");
taskTimeService.executeTaskTimeById(Long.parseLong(id));
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep.getErrorShow());
} catch (Exception e) {
LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + "{}", e.getMessage(), e);
return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
}

@ -1,11 +1,19 @@
package cn.estsh.i3plus.core.apiservice.schedulejob;
import cn.estsh.i3plus.core.api.iservice.busi.ITaskTimeService;
import cn.estsh.i3plus.pojo.platform.repository.TaskTimeRepository;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import io.swagger.annotations.ApiOperation;
import org.quartz.JobExecutionContext;
import org.quartz.Scheduler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Description :
@ -18,12 +26,21 @@ import org.slf4j.LoggerFactory;
public class DemoJob extends BaseImppScheduleJob {
public static final Logger LOGGER = LoggerFactory.getLogger(DemoJob.class);
@Autowired
private ITaskTimeService taskTimeService;
public DemoJob() {
super(DemoJob.class,"定时任务demo");
}
@Override
public void executeImppJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
taskTimeService.doTaskTimeLastDateByNameAndGroupName(sdf.format(new Date()),
context.getJobDetail().getKey().getName(),
context.getJobDetail().getKey().getGroup());
System.out.println("定时任务被执行");
LOGGER.info("projectName{},port:{}",applicationProperties.getApplicationName(),applicationProperties.getServerPort());
}
}

@ -1,6 +1,8 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
@ -139,4 +141,30 @@ public class SysDictionaryService implements ISysDictionaryService {
sysDictionaryRDao.deleteByIds(array);
}
@Override
public boolean checkFileName(String fileName) {
List<SysDictionary> list = findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_FILE_TYPE);
if(list != null && list.size()> 0){
String suffix = StringTool.getStringFileSuffix(fileName,true);
for (SysDictionary dictionary : list) {
if(suffix.toUpperCase().equals(dictionary.getDictionaryValue().toUpperCase())){
return true;
}
}
}
return false;
}
@Override
public SysDictionary getSysDictionaryByParentCodeAndCode(String parentCode, String code) {
List<SysDictionary> list = sysDictionaryRDao.findByProperty(new String[]{"redParentCode","dictionaryCode"},
new Object[]{parentCode,code});
if(list != null && list.size() > 0){
return list.get(0);
}
return null;
}
}

@ -29,9 +29,9 @@ public class SysFileServiceImpl implements ISysFileService {
public SysFileRepository sysFileRDao;
@Override
public void insertSysFile(SysFile sysFile) {
public SysFile insertSysFile(SysFile sysFile) {
LOGGER.info("文件资源 SYS_FILE :{}",sysFile);
sysFileRDao.insert(sysFile);
return sysFileRDao.insert(sysFile);
}
@Override
@ -53,9 +53,9 @@ public class SysFileServiceImpl implements ISysFileService {
}
@Override
public SysFile getSysFileById(String id) {
public SysFile getSysFileById(Long id) {
LOGGER.info("文件资源 SYS_FILE id:{}",id);
return sysFileRDao.getById(Long.parseLong(id));
return sysFileRDao.getById(id);
}
@Override

@ -1,5 +1,6 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -71,37 +72,14 @@ public class SysUserService implements ISysUserService {
@Autowired
private RefUserPositionRepository refUserPositionRDao;
@Autowired
private SysFileRepository sysFileRDao;
@Override
public SessionUser queryUserLogin(String loginName, String password, String languageCode) throws AuthenticationException {
LOGGER.debug("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode);
// SysUser user = this.getSysUserByLoginName(loginName);
//
// if(user == null){
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
// .setErrorCode(ImppExceptionEnum.LOGIN_USER_NAME_EXCEPTION.getCode())
// .setErrorDetail("用户名不存在")
// .setErrorSolution("请重新输入用户名")
// .build();
// }
//
// AuthenticationToken token = null;
// switch (user.getUserTypeId()) {
// case 2:
// token = new AdminToken(loginName, password, languageCode);
// break;
// case 3:
// token = new SaAdminToken(loginName, password, languageCode);
// break;
// default:
// token = new UserToken(loginName, password, languageCode);
// break;
// }
// SessionUser sessionUser = AuthUtil.login(token);
UserToken token = new UserToken(loginName,password,languageCode);
System.out.println("=============" + token);
SessionUser sessionUser = AuthUtil.login(token);
SysUser user = this.getSysUserByLoginName(loginName);
@ -336,7 +314,6 @@ public class SysUserService implements ISysUserService {
* @return
*/
public SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType, String languageCode) {
LOGGER.debug("平台用户 SYS_USER user id :{}", user.getId());
SysUserInfo userInfo = sysUserInfoRDao.getById(user.getUserInfoId());
Organize organize = organizeRDao.getById(userInfo.getOrganizeId());

@ -4,16 +4,30 @@ import cn.estsh.i3plus.core.api.iservice.busi.ITaskTimeService;
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.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.platform.bean.RefExpressionTrigger;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.TaskTime;
import cn.estsh.i3plus.pojo.platform.bean.TaskTimeExpression;
import cn.estsh.i3plus.pojo.platform.repository.RefExpressionTriggerRepository;
import cn.estsh.i3plus.pojo.platform.repository.TaskTimeRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import org.hibernate.service.spi.ServiceException;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
/**
@ -30,11 +44,65 @@ public class TaskTimeServiceImpl implements ITaskTimeService {
@Autowired
private TaskTimeRepository taskTimeRDao;
@Autowired
private RefExpressionTriggerRepository refExpressionTriggerRDao;
@Autowired
private Scheduler scheduler;
@Override
public void updateTaskTime(TaskTime taskTime) {
LOGGER.info("定时任务 TASK_TIME :{}", taskTime);
public void updateTaskTime(TaskTime taskTime, TaskTimeExpression taskTimeExpression) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TaskTime oldTaskTime = taskTimeRDao.getById(taskTime.getId());
// 更新关系表
refExpressionTriggerRDao.updateByProperties(
"expressionId",oldTaskTime.getTimeExpressionId(),
new String[]{"name","groupName"},
new String[]{oldTaskTime.getName(),taskTime.getGroupName()}
);
taskTimeRDao.update(taskTime);
try {
TriggerKey triggerKey = TriggerKey.triggerKey(taskTime.getName(),taskTime.getGroupName());
System.out.println(scheduler.getTrigger(triggerKey));
if (!scheduler.checkExists(triggerKey)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("定时任务不存在")
.setErrorSolution("请重新选择")
.build();
}
// 添加定时任务与触发器到quartz表中
CronScheduleBuilder schedBuilder = CronScheduleBuilder
.cronSchedule(taskTimeExpression.getExpressionContent())
.withMisfireHandlingInstructionDoNothing();
TriggerBuilder<CronTrigger> trigger = TriggerBuilder.newTrigger()
.withIdentity(triggerKey)
.withDescription(taskTimeExpression.getExpressionDescription())
.withSchedule(schedBuilder)
.startAt(sdf.parse(taskTimeExpression.getExpressionStartDatetime()));
if(taskTimeExpression.getExpressionEndDatetime() != null){
trigger = trigger.endAt(sdf.parse(taskTimeExpression.getExpressionEndDatetime()));
}
JobKey jobKey = new JobKey(taskTime.getName(), taskTime.getGroupName());
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
jobDetail.getJobBuilder().withDescription(taskTime.getTaskDescription());
HashSet<Trigger> triggerSet = new HashSet<>();
triggerSet.add(trigger.build());
scheduler.scheduleJob(jobDetail, triggerSet, true);
} catch (SchedulerException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
@Override
@ -44,18 +112,117 @@ public class TaskTimeServiceImpl implements ITaskTimeService {
taskTime.setTaskStatus(status);
taskTime.setModifyUser(user.getUserName());
taskTimeRDao.update(taskTime);
try {
TriggerKey triggerKey = TriggerKey.triggerKey(taskTime.getName(), taskTime.getGroupName());
if (!scheduler.checkExists(triggerKey)) {
}
if (status == CommonEnumUtil.DATA_STATUS.ENABLE.getValue()){
scheduler.resumeTrigger(triggerKey);
} else {
scheduler.pauseTrigger(triggerKey);
}
} catch (SchedulerException e) {
LOGGER.info("重新开始任务-->复杂调度" + e.getMessage());
e.printStackTrace();
}
}
@Override
public void deleteTaskTimeById(String id) {
LOGGER.info("定时任务 TASK_TIME Key:{}", id);
try {
TaskTime taskTime = taskTimeRDao.getById(Long.parseLong(id));
ValidatorBean.checkNotNull(taskTime,"定时任务不存在");
taskTimeRDao.deleteById(Long.parseLong(id));
// 删除关系表数据
refExpressionTriggerRDao.deleteByProperty("expressionId",taskTime.getTimeExpressionId());
TriggerKey triggerKey = TriggerKey.triggerKey(taskTime.getName(),taskTime.getGroupName());
if(scheduler.checkExists(triggerKey)){
scheduler.pauseTrigger(triggerKey);
scheduler.unscheduleJob(triggerKey);
}else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("定时任务不存在")
.setErrorSolution("请重新选择")
.build();
}
} catch (SchedulerException e) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.TASK_EXCEPTION.getCode())
.build();
}
}
@Override
public TaskTime insertTaskTime(TaskTime taskTime) {
LOGGER.info("定时任务 TASK_TIME :{}", taskTime);
return taskTimeRDao.insert(taskTime);
public TaskTime insertTaskTime(TaskTime taskTime, TaskTimeExpression taskTimeExpression) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 唯一校验
JobKey jobKey = JobKey.jobKey(taskTime.getName(),taskTime.getGroupName());
TriggerKey triggerKey = TriggerKey.triggerKey(taskTime.getName(),taskTime.getGroupName());
if (taskTimeRDao.isExitByProperty(new String[]{"name","groupName"},new String[]{taskTime.getName(),taskTime.getGroupName()})
|| scheduler.checkExists(jobKey) || scheduler.checkExists(triggerKey)){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("定时任务已存在")
.setErrorSolution("请重新输入任务名称和组名称")
.build();
}
RefExpressionTrigger refExpressionTrigger = new RefExpressionTrigger();
refExpressionTrigger.setExpressionId(taskTimeExpression.getId());
refExpressionTrigger.setTriggerName(taskTime.getName());
refExpressionTrigger.setTriggerGroupName(taskTime.getGroupName());
taskTime = taskTimeRDao.insert(taskTime);
// 添加表达式与触发器关系表
refExpressionTriggerRDao.insert(refExpressionTrigger);
// 添加定时任务与触发器到quartz表中
CronScheduleBuilder schedBuilder = CronScheduleBuilder
.cronSchedule(taskTimeExpression.getExpressionContent())
.withMisfireHandlingInstructionDoNothing();
TriggerBuilder<CronTrigger> trigger = TriggerBuilder.newTrigger()
.withIdentity(triggerKey)
.withDescription(taskTimeExpression.getExpressionDescription())
.withSchedule(schedBuilder)
.startAt(sdf.parse(taskTimeExpression.getExpressionStartDatetime()));
if(taskTimeExpression.getExpressionEndDatetime() != null){
trigger = trigger.endAt(sdf.parse(taskTimeExpression.getExpressionEndDatetime()));
}
Class<? extends Job> clazz = (Class<? extends Job>) Class.forName(taskTime.getTaskPackage() + "." + taskTime.getTaskClass());
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(jobKey).withDescription(taskTime.getTaskDescription()).build();
scheduler.scheduleJob(jobDetail, trigger.build());
} catch (SchedulerException e) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.TASK_EXCEPTION.getCode())
.build();
} catch (ParseException e) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_FORMAT.getCode())
.setErrorDetail("表达式起止时间错误")
.setErrorSolution("请更改表达式起止时间")
.build();
} catch (ClassNotFoundException e) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("定时任务包名及类名不正确")
.setErrorSolution("请重新输入定时任务包名及类名")
.build();
}
return taskTime;
}
@Override
@ -104,5 +271,33 @@ public class TaskTimeServiceImpl implements ITaskTimeService {
taskTimeRDao.updateByHqlWhere(where.toString(), "taskStatus", status);
}
@Override
public void doTaskTimeLastDateByNameAndGroupName(String lastDate, String name, String groupName) {
taskTimeRDao.updateByProperties(
new String[]{"name","groupName"},new String[]{name,groupName},
"lastRunDateTime",lastDate);
}
@Override
public void executeTaskTimeById(long id) {
TaskTime taskTime = taskTimeRDao.getById(id);
JobKey jobKey = JobKey.jobKey(taskTime.getName(),taskTime.getGroupName());
try {
if (scheduler.checkExists(jobKey)) {
scheduler.triggerJob(jobKey);
} else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("定时任务不存在")
.setErrorSolution("请重新输入任务名称和组名称")
.build();
}
} catch (SchedulerException e) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.TASK_EXCEPTION.getCode())
.build();
}
}
}

@ -40,7 +40,7 @@ public class TestSysFileService extends TestBase {
@Test
@Transactional
public void testGetSysFileById() {
SysFile sysFile = sysFileService.getSysFileById("1057110061127700480");
SysFile sysFile = sysFileService.getSysFileById(1057110061127700480L);
System.out.println(JSON.toJSONString(sysFile));
}
@ -74,7 +74,7 @@ public class TestSysFileService extends TestBase {
@Test
@Transactional
public void testUpdateSysFile(){
SysFile sysFile = sysFileService.getSysFileById("1057110613261684736");
SysFile sysFile = sysFileService.getSysFileById(1057110613261684736L);
sysFile.setName("测试修改");
sysFileService.updateSysFile(sysFile);

@ -56,17 +56,16 @@ public class TestTaskTimeService extends TestBase {
public void testInsertTaskTime() {
TaskTime taskTime = new TaskTime();
taskTime.setName("时间表达式");
taskTime.setTimeId(1L);
taskTime.setTaskStartDateTime("2018-01-01 00:00:00");
taskTime.setTaskEndDateTime("2018-12-31 00:00:00");
taskTime.setLastRunDateTime("2018-11-03 00:00:00");
taskTime.setTimeExpressionId(1L);
taskTime.setTaskStartDateTimeRdd("2018-01-01 00:00:00");
taskTime.setTaskEndDateTimeRdd("2018-12-31 00:00:00");
taskTime.setTaskTypeId(ImppEnumUtil.TASK_METHOD_TYPE.TYPE_GROUP.getValue());
taskTime.setTaskStatus(CommonEnumUtil.DATA_STATUS.ENABLE.getValue());
for (int i = 0; i < 50; i++) {
taskTime.setId(null);
taskTime.setName("时间表达式"+i);
taskTimeService.insertTaskTime(taskTime);
taskTimeService.insertTaskTime(taskTime,null);
}
System.out.println(JSON.toJSONString(taskTime));
}
@ -80,7 +79,7 @@ public class TestTaskTimeService extends TestBase {
TaskTime taskTime = taskTimeService.getTaskTimeById("1057110613261684736");
taskTime.setName("测试修改");
taskTimeService.updateTaskTime(taskTime);
taskTimeService.updateTaskTime(taskTime,null);
}
/**

Loading…
Cancel
Save