Search in sources :

Example 1 with BriefingTask

use of com.topcom.cms.yuqing.domain.BriefingTask in project topcom-cloud by 545314690.

the class BriefingTaskController method findByUserId.

/**
 * 查询当前登录用户的自定义专题
 *
 * @return 分页数据
 */
@RequestMapping(value = "/findByType", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public BriefingTask findByUserId(@CurrentUser User user, @RequestParam Briefing.BriefingType briefingType) {
    List<BriefingTask> briefingTasks = briefingTaskManager.findByUserIdAndBriefingType(user.getId(), briefingType);
    if (briefingTasks.size() > 0) {
        BriefingTask briefingTask = briefingTasks.get(0);
        briefingTask.setCronExpression(CronExpression.formCronString(briefingTask.getCron()));
        return briefingTask;
    } else {
        return briefingTaskManager.createDefault(briefingType);
    }
}
Also used : BriefingTask(com.topcom.cms.yuqing.domain.BriefingTask)

Example 2 with BriefingTask

use of com.topcom.cms.yuqing.domain.BriefingTask in project topcom-cloud by 545314690.

the class BriefingTaskController method testCreate.

/**
 * testCreate
 */
@RequestMapping(value = "/testCreate", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public Object testCreate(@CurrentUser User user, @RequestParam Briefing.BriefingType briefingType, @RequestParam Integer month, @RequestParam(required = false) Integer week) throws Exception {
    BriefingTask briefingTask = findByUserId(user, briefingType);
    Future future = briefingCreator.create(briefingTask, month, week);
    return future.get();
}
Also used : Future(java.util.concurrent.Future) BriefingTask(com.topcom.cms.yuqing.domain.BriefingTask)

Example 3 with BriefingTask

use of com.topcom.cms.yuqing.domain.BriefingTask in project topcom-cloud by 545314690.

the class BriefingTaskWatcher method doAroundUpdate.

@Around("updateBriefingTask()")
public Object doAroundUpdate(ProceedingJoinPoint joinPoint) throws BusinessException {
    Object[] args = joinPoint.getArgs();
    if (args.length == 1) {
        try {
            Object proceed = joinPoint.proceed(args);
            final BriefingTask briefingTask = (BriefingTask) proceed;
            if (briefingTask != null) {
                if (briefingTask.isEnable() == true) {
                    // 如果是开启
                    scheduleJob(briefingTask);
                    LogUtil.logger.info("更新任务:" + briefingTask.getBriefingType() + "成功");
                } else {
                    // 如果是关闭
                    deleteJob(String.valueOf(briefingTask.getId()));
                }
            }
            return briefingTask;
        } catch (Throwable throwable) {
            throwable.printStackTrace();
            throw new BusinessException("更新失败");
        }
    }
    return null;
}
Also used : BusinessException(com.topcom.cms.exception.BusinessException) BriefingTask(com.topcom.cms.yuqing.domain.BriefingTask) Around(org.aspectj.lang.annotation.Around)

Example 4 with BriefingTask

use of com.topcom.cms.yuqing.domain.BriefingTask in project topcom-cloud by 545314690.

the class BriefingJob method execute.

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    Long briefingTaskId = (Long) context.getMergedJobDataMap().get("briefingTaskId");
    BriefingTask briefingTask = briefingTaskManager.findById(briefingTaskId);
    logger.info("任务运行:" + briefingTask.getBriefingType() + ":" + briefingTaskId);
    /**
     * 生成月报
     */
    JSONObject briefing = null;
    try {
        briefing = (JSONObject) briefingCreator.create(briefingTask).get();
        logger.info("任务运行:生成报告成功");
    } catch (BusinessException | InterruptedException | ExecutionException e) {
        e.printStackTrace();
        logger.info("任务运行:生成报告失败");
    }
    List<Contact> contacts = briefingTask.getContacts();
    // 过滤出email联系人
    Set<String> emailSet = contacts.stream().filter(contact -> Contact.Type.EMAIL.equals(contact.getType())).map(contact -> contact.getAccount()).collect(Collectors.toSet());
    if (emailSet.size() > 0) {
        SenderFactory emailSenderFactory = new EmailSenderFactory();
        Sender emailSender = emailSenderFactory.create();
        String[] emails = {};
        emails = emailSet.toArray(emails);
        if (briefing != null) {
            try {
                BriefingEmail briefingEmail = new BriefingEmail().create(emails, briefing);
                briefingEmail.setSubject(SUBJECT);
                emailSender.send(briefingEmail);
            } catch (IOException | TemplateException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
Also used : JobExecutionContext(org.quartz.JobExecutionContext) SenderFactory(com.topcom.cms.yuqing.task.sender.factory.SenderFactory) TemplateException(freemarker.template.TemplateException) Logger(org.jboss.logging.Logger) BusinessException(com.topcom.cms.exception.BusinessException) Autowired(org.springframework.beans.factory.annotation.Autowired) Set(java.util.Set) Job(org.quartz.Job) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) EmailSenderFactory(com.topcom.cms.yuqing.task.sender.factory.EmailSenderFactory) JobExecutionException(org.quartz.JobExecutionException) ExecutionException(java.util.concurrent.ExecutionException) BriefingEmail(com.topcom.cms.yuqing.vo.email.BriefingEmail) Component(org.springframework.stereotype.Component) List(java.util.List) BriefingTask(com.topcom.cms.yuqing.domain.BriefingTask) BriefingTaskManager(com.topcom.cms.yuqing.service.BriefingTaskManager) JSONObject(net.sf.json.JSONObject) Contact(com.topcom.cms.yuqing.domain.Contact) Sender(com.topcom.cms.yuqing.task.sender.Sender) TemplateException(freemarker.template.TemplateException) IOException(java.io.IOException) BriefingEmail(com.topcom.cms.yuqing.vo.email.BriefingEmail) TemplateException(freemarker.template.TemplateException) BusinessException(com.topcom.cms.exception.BusinessException) IOException(java.io.IOException) JobExecutionException(org.quartz.JobExecutionException) ExecutionException(java.util.concurrent.ExecutionException) Contact(com.topcom.cms.yuqing.domain.Contact) Sender(com.topcom.cms.yuqing.task.sender.Sender) BusinessException(com.topcom.cms.exception.BusinessException) EmailSenderFactory(com.topcom.cms.yuqing.task.sender.factory.EmailSenderFactory) JSONObject(net.sf.json.JSONObject) SenderFactory(com.topcom.cms.yuqing.task.sender.factory.SenderFactory) EmailSenderFactory(com.topcom.cms.yuqing.task.sender.factory.EmailSenderFactory) BriefingTask(com.topcom.cms.yuqing.domain.BriefingTask) JobExecutionException(org.quartz.JobExecutionException) ExecutionException(java.util.concurrent.ExecutionException)

Aggregations

BriefingTask (com.topcom.cms.yuqing.domain.BriefingTask)4 BusinessException (com.topcom.cms.exception.BusinessException)2 Contact (com.topcom.cms.yuqing.domain.Contact)1 BriefingTaskManager (com.topcom.cms.yuqing.service.BriefingTaskManager)1 Sender (com.topcom.cms.yuqing.task.sender.Sender)1 EmailSenderFactory (com.topcom.cms.yuqing.task.sender.factory.EmailSenderFactory)1 SenderFactory (com.topcom.cms.yuqing.task.sender.factory.SenderFactory)1 BriefingEmail (com.topcom.cms.yuqing.vo.email.BriefingEmail)1 TemplateException (freemarker.template.TemplateException)1 IOException (java.io.IOException)1 List (java.util.List)1 Set (java.util.Set)1 ExecutionException (java.util.concurrent.ExecutionException)1 Future (java.util.concurrent.Future)1 Collectors (java.util.stream.Collectors)1 JSONObject (net.sf.json.JSONObject)1 Around (org.aspectj.lang.annotation.Around)1 Logger (org.jboss.logging.Logger)1 Job (org.quartz.Job)1 JobExecutionContext (org.quartz.JobExecutionContext)1