吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1398|回复: 6
收起左侧

[Java 转载] 动态加载cron表达式

  [复制链接]
alterempty 发表于 2020-7-27 18:31

@Component
@Lazy(false)
public class EnterpriseNotification implements SchedulingConfigurer {

    //每月5号 0 0 0 5 * ?
    private final static String DEFAULT_CRON = "0 0 0 5 * ?";
    @Resource
    private EnterpriseUserService enterpriseUserService;
    @Resource
    private NoticeService noticeService;
    @Resource
    private NoticeUserService noticeUserService;
    @Resource
    private ConfigService configService;

    //@Scheduled(cron = "${enterprise.push}")
    private void noticePush() {
        Config configContent = configService.getConfigContent("enterprise.nameList", Config.Type.All);
        String[] enterpriseIds = null;
        if (configContent != null) {
            enterpriseIds = configContent.getValue().split(",");
        }
        Date now = new Date();
        String generate = UUIDUtils.generate();
        Notice notice = new Notice();
        notice.setId(generate);
        notice.setIsDeleted(false);
        notice.setCreateDate(now);
        notice.setEditDate(now);
        Config title = configService.getConfigContent("enterprise.title", Config.Type.All);
        notice.setTitle(title == null ? "......" : title.getValue());
        Config content = configService.getConfigContent("enterprise.content", Config.Type.All);
        notice.setContent(content == null ? "......" : content.getValue());
        notice.setType(Notice.Type.guide);
        notice.setNoticeDate(now);
        notice.setCount(1);
        noticeService.saveNotice(notice);
        if (enterpriseIds != null) {
            for (String enterpriseId : enterpriseIds) {
                List<EnterpriseUser> enterpriseUsers = enterpriseUserService.findByEnterprise(enterpriseId);
                for (EnterpriseUser eu : enterpriseUsers) {
                    NoticeUser noticeUser = new NoticeUser();
                    noticeUser.setIsDeleted(false);
                    noticeUser.setCreateDate(now);
                    noticeUser.setEditDate(now);
                    noticeUser.setCreator("sys_job");
                    noticeUser.setEditor("sys_job");
                    noticeUser.setEnterprise(eu.getEnterprise());
                    noticeUser.setNoticeId(generate);
                    noticeUser.setUserId(eu.getId());
                    noticeUser.setStatus("1");
                    noticeUser.setId(UUIDUtils.generate());
                    noticeUser.setNoticeUserType(NoticeUser.NoticeUserType.guide);
                    noticeUserService.saveNoticeUser(noticeUser);
                }
            }
        }
    }

    private String getCron() {
        Config configContent = configService.getConfigContent("enterprise.push", Config.Type.All);
        if (configContent == null || StringUtils.isBlank(configContent.getValue())) {
            return DEFAULT_CRON;
        }
        return configContent.getValue();
    }

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(() -> noticePush(), triggerContext -> {
            String cron = getCron();
            CronTrigger trigger = new CronTrigger(cron);
            Date next = trigger.nextExecutionTime(triggerContext);
            return next;
        });
    }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
Shiny_Li 发表于 2020-7-27 18:52
提示: 作者被禁止或删除 内容自动屏蔽
Lin5520 发表于 2020-7-27 19:29
E式丶男孩 发表于 2020-7-27 19:34
XUPTER 发表于 2020-7-27 20:02
还有待改进
 楼主| alterempty 发表于 2020-7-27 20:09
Lin5520 发表于 2020-7-27 19:29
还不够动态吧,这是写死的,

写死的是默认值, CRON 是从数据库拿到的。
 楼主| alterempty 发表于 2020-7-27 20:10
E式丶男孩 发表于 2020-7-27 19:34
那几个service都没给

service 只是为了获取到 数据库保存的 CRON 没有实际意义
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 05:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表