JSD-6890 开源任务材料
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
4.3 KiB

/*
* Copyright (C), 2018-2021
* Project: starter
* FileName: DingTalkScheduleHelper
* Author: Louis
* Date: 2021/4/21 15:52
*/
package com.fr.plugin.dingtalksyn.helper;
import com.fr.plugin.dingtalksyn.bean.DingTalkJobConstructor;
import com.fr.plugin.dingtalksyn.job.DingTalkSyncMemberJob;
import com.fr.scheduler.ScheduleJobManager;
import com.fr.third.v2.org.quartz.CronScheduleBuilder;
import com.fr.third.v2.org.quartz.TriggerBuilder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.TimeZone;
/**
* <Function Description><br>
* <DingTalkScheduleHelper>
*
* @author Louis
* @since 1.0.0
*/
public class DingTalkScheduleHelper {
private static final String SECOND = "0";
private static final String CRON_EXPRESSION_EVERY_DAY = "%s %s %s ? * *";
private static final String CRON_EXPRESSION_EVERY_WEEK = "%s %s %s ? * %s";
public static final String DINGTALK_SCHEDULE_SYN_MEMBER_JOB_NAME = "MQH_DingTalkSynDepMemberJob";
public static final String DINGTALK_SCHEDULE_SYN_MEMBER_TRIGGER_NAME = "MQH_DingTalkSynDepMemberTrigger";
public static final String DINGTALK_SCHEDULE_SYN_MEMBER_GROUP = "MQH_DingTalkSynDepMemberGroup";
public static final String DINGTALK_SCHEDULE_SYN_MEMBER_TRIGGER_GROUP = "MQH_DingTalkSynDepMemberTriggerGroup";
private DingTalkScheduleHelper() {
}
public static DingTalkScheduleHelper getInstance() {
return DingTalkScheduleHelper.HOLDER.INSTANCE;
}
// private String getSynMemberJobCron(DingTalkTimingTaskConfig var1) {
// int var2 = var1.getPeriod();
// String var3 = var1.getStartHour();
// String var4 = var1.getStartMinute();
// Week var5 = Week.getWeek(var1.getStartWeekDay());
// if (var2 == 0) {
// return String.format("%s %s %s ? * *", "0", var4, var3);
// } else {
// return var2 == 1 ? String.format("%s %s %s ? * %s", "0", var4, var3, var5) : "";
// }
// }
// public void startSynMemberSchedule(DingTalkTimingTaskConfig var1) throws Exception {
// if (var1.isEnableAutoSync()) {
// String var2 = this.getSynMemberJobCron(var1);
// DingTalkJobConstructor var3 = (new DingTalkJobConstructor()).cron(var2).jobName("DingTalkSynDepMemberJob").jobGroup("DingTalkSynDepMemberGroup").triggerName("DingTalkSynDepMemberTrigger").triggerGroup("DingTalkSynDepMemberTriggerGroup").jobClazz(DingTalkSyncMemberJob.class);
// this.startSchedule(var3);
// }
//
// }
public void startSynMemberSchedule(String cronCondition) throws Exception {
DingTalkJobConstructor jobConstructor = (new DingTalkJobConstructor())
.cron(cronCondition).jobName(DINGTALK_SCHEDULE_SYN_MEMBER_JOB_NAME)
.jobGroup(DINGTALK_SCHEDULE_SYN_MEMBER_GROUP).triggerName(DINGTALK_SCHEDULE_SYN_MEMBER_TRIGGER_NAME)
.triggerGroup(DINGTALK_SCHEDULE_SYN_MEMBER_TRIGGER_GROUP).jobClazz(DingTalkSyncMemberJob.class);
this.startSchedule(jobConstructor);
}
public void startSchedule(DingTalkJobConstructor var1) throws Exception {
if (var1 != null) {
String var2 = var1.getCron();
String var3 = var1.getTriggerName();
String var4 = var1.getTriggerGroup();
String var5 = var1.getJobName();
String var6 = var1.getJobGroup();
Class var7 = var1.getJobClazz();
TriggerBuilder var8 = TriggerBuilder.newTrigger();
var8.withIdentity(var3, var4);
var8.withSchedule(CronScheduleBuilder.cronSchedule(var2).withMisfireHandlingInstructionFireAndProceed().inTimeZone(TimeZone.getTimeZone(TimeZone.getDefault().getID()))).startNow();
var8.forJob(var5, var6);
ArrayList var9 = new ArrayList();
var9.add(var8.build());
ScheduleJobManager.getInstance().removeJob(var5, var6);
ScheduleJobManager.getInstance().addJob(var5, var6, "jobDescription", var7, var9, new HashMap());
}
}
public void stopSchedule(String var1, String var2) {
ScheduleJobManager.getInstance().removeJob(var1, var2);
}
public static class HOLDER {
private static final DingTalkScheduleHelper INSTANCE = new DingTalkScheduleHelper();
public HOLDER() {
}
}
}