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
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() { |
|
} |
|
} |
|
}
|
|
|