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.
102 lines
4.3 KiB
102 lines
4.3 KiB
4 years ago
|
/*
|
||
|
* 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() {
|
||
|
}
|
||
|
}
|
||
|
}
|