|
@@ -17,6 +17,7 @@ package com.zbkj.admin.task.sms;
|
|
|
* ░ ░ ░ ░ ░
|
|
|
* ░
|
|
|
*/
|
|
|
+
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.zbkj.admin.task.order.OrderReceiptTask;
|
|
|
import com.zbkj.common.model.merchant.MerchantSmsTiming;
|
|
@@ -31,44 +32,71 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.concurrent.ScheduledFuture;
|
|
|
|
|
|
@Component
|
|
|
public class DynamicScheduledTask {
|
|
|
- private static final Logger logger = LoggerFactory.getLogger( OrderReceiptTask.class);
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(OrderReceiptTask.class);
|
|
|
@Autowired
|
|
|
private OnePassSmsService onePassSmsService;
|
|
|
@Autowired
|
|
|
private MerchantSmsTimingService merchantSmsTimingService;
|
|
|
|
|
|
private final TaskScheduler taskScheduler;
|
|
|
-// private ScheduledFuture<?> job1;
|
|
|
+ // private ScheduledFuture<?> job1;
|
|
|
private List<ScheduledFuture<?>> jobs = new ArrayList<>();
|
|
|
|
|
|
public DynamicScheduledTask(TaskScheduler taskScheduler) {
|
|
|
this.taskScheduler = taskScheduler;
|
|
|
}
|
|
|
|
|
|
- @PostConstruct
|
|
|
+ // @PostConstruct
|
|
|
public void scheduleRunnableWithCronTrigger() {
|
|
|
//启动执行的
|
|
|
LambdaQueryWrapper<MerchantSmsTiming> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq( MerchantSmsTiming::getIsStatus, 1 );
|
|
|
- List<MerchantSmsTiming> list = merchantSmsTimingService.list( queryWrapper );
|
|
|
- logger.info("每月 每日发送短信 任务准备执行------------个数:"+list.size());
|
|
|
- if (list.size()!=0){
|
|
|
+ queryWrapper.eq(MerchantSmsTiming::getIsStatus, 1);
|
|
|
+ List<MerchantSmsTiming> list = merchantSmsTimingService.list(queryWrapper);
|
|
|
+ logger.info("每月 每日发送短信 任务准备执行------------个数:" + list.size());
|
|
|
+ if (list.size() != 0) {
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
String cronExpression = "";
|
|
|
- if (list.get( i ).getMtMy()==1){
|
|
|
- cronExpression ="0 0 "+list.get( i ).getSjXs()+" * * ?";
|
|
|
- }else {
|
|
|
- cronExpression ="0 0 "+list.get( i ).getSjXs()+" "+list.get( i ).getSjDay()+" * ?";
|
|
|
+// String sendTime = list.get(i).getSendTime();
|
|
|
+ String sendTime = "2023-01-02 03:04";
|
|
|
+ String year = sendTime.substring(0, 4);
|
|
|
+ String month = sendTime.substring(5, 7);
|
|
|
+ String day = sendTime.substring(8, 10);
|
|
|
+ String hour = sendTime.substring(11, 13);
|
|
|
+ String minute = sendTime.substring(14, 16);
|
|
|
+ //单次发送
|
|
|
+ if (list.get(i).getSendType() == 1) {
|
|
|
+ cronExpression = "0 " + minute + "" + hour + "" + day + "" + month + " ? " + year;
|
|
|
+ System.out.println(cronExpression);
|
|
|
+ //循环发送
|
|
|
+ } else {
|
|
|
+ //每天
|
|
|
+ if (list.get(i).getIsCirculate() == 1) {
|
|
|
+ cronExpression = "0 " + minute + "" + hour + "" + "*" + "" + "*" + " ? " + year;
|
|
|
+
|
|
|
+ //每月
|
|
|
+ } else {
|
|
|
+ //每月最后一天
|
|
|
+ if (list.get(i).getIsLastDay()==1){
|
|
|
+ cronExpression = "0 " + minute + "" + hour + "" + "L" + "" + "*" + " ? " + year;
|
|
|
+ }else{
|
|
|
+ cronExpression = "0 " + minute + "" + hour + "" + "*" + "" + month+ " ? " + year;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+// cronExpression = "0 0 " + list.get(i).getSjXs() + " " + list.get(i).getSjDay() + " * ?";
|
|
|
}
|
|
|
- String tempId =list.get( i ).getTempId();
|
|
|
- String phone =list.get( i ).getPhone();
|
|
|
- Integer mid =list.get( i ).getMerId();
|
|
|
- ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone,tempId,mid),
|
|
|
+ String tempId = list.get(i).getTempId();
|
|
|
+ String phone = list.get(i).getPhone();
|
|
|
+ Integer mid = list.get(i).getMerId();
|
|
|
+ ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone, tempId, mid),
|
|
|
new CronTrigger(cronExpression));
|
|
|
jobs.add(job);
|
|
|
}
|
|
@@ -76,24 +104,45 @@ public class DynamicScheduledTask {
|
|
|
logger.info("每月 每日发送短信 任务准备执行------------结束");
|
|
|
}
|
|
|
|
|
|
-// 新增或者修改时调用
|
|
|
+ // 新增或者修改时调用
|
|
|
public void addTask() {
|
|
|
LambdaQueryWrapper<MerchantSmsTiming> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq( MerchantSmsTiming::getIsStatus, 1 );
|
|
|
- List<MerchantSmsTiming> list = merchantSmsTimingService.list( queryWrapper );
|
|
|
- logger.info("手动每月 每日发送短信 任务准备执行------------个数:"+list.size());
|
|
|
- if (list.size()!=0){
|
|
|
+ queryWrapper.eq(MerchantSmsTiming::getIsStatus, 1);
|
|
|
+ List<MerchantSmsTiming> list = merchantSmsTimingService.list(queryWrapper);
|
|
|
+ logger.info("手动每月 每日发送短信 任务准备执行------------个数:" + list.size());
|
|
|
+ if (list.size() != 0) {
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
String cronExpression = "";
|
|
|
- if (list.get( i ).getMtMy()==1){
|
|
|
- cronExpression ="0 0 "+list.get( i ).getSjXs()+" * * ?";
|
|
|
- }else {
|
|
|
- cronExpression ="0 0 "+list.get( i ).getSjXs()+" "+list.get( i ).getSjDay()+" * ?";
|
|
|
+// String sendTime = list.get(i).getSendTime();
|
|
|
+ String sendTime = "2024-01-02 03:04";
|
|
|
+ String year = sendTime.substring(0, 4);
|
|
|
+ String month = sendTime.substring(5, 7);
|
|
|
+ String day = sendTime.substring(8, 10);
|
|
|
+ String hour = sendTime.substring(11, 13);
|
|
|
+ String minute = sendTime.substring(14, 16);
|
|
|
+ //单次发送
|
|
|
+ if (list.get(i).getSendType() == 1) {
|
|
|
+ cronExpression = "0 " + minute + " " + hour + " " + day + " " + month + " ? ";
|
|
|
+ //循环发送
|
|
|
+ } else {
|
|
|
+ //每天
|
|
|
+ if (list.get(i).getIsCirculate() == 1) {
|
|
|
+ cronExpression = "0 " + minute + " " + hour + " " + "*" + " " + "*" + " ? ";
|
|
|
+ //每月
|
|
|
+ } else {
|
|
|
+ //每月最后一天
|
|
|
+ if (list.get(i).getIsLastDay()==1){
|
|
|
+ cronExpression = "0 " + "0" + " " + "0" + " " + "1" + " " + "*" + " ? ";
|
|
|
+ }else{
|
|
|
+ cronExpression = "0 " + minute + " " + hour + " " + "*" + " " + month+ " ? ";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- String tempId =list.get( i ).getTempId();
|
|
|
- String phone =list.get( i ).getPhone();
|
|
|
- Integer mid =list.get( i ).getMerId();
|
|
|
- ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone,tempId,mid),
|
|
|
+ String tempId = list.get(i).getTempId();
|
|
|
+ String phone = list.get(i).getPhone();
|
|
|
+ Integer mid = list.get(i).getMerId();
|
|
|
+
|
|
|
+ ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone, tempId, mid),
|
|
|
new CronTrigger(cronExpression));
|
|
|
jobs.add(job);
|
|
|
}
|
|
@@ -102,13 +151,14 @@ public class DynamicScheduledTask {
|
|
|
// ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(param), new CronTrigger(cronExpression));
|
|
|
// jobs.add(job);
|
|
|
}
|
|
|
- public void runTask(String phone,String tempId,Integer mid) {
|
|
|
+
|
|
|
+ public void runTask(String phone, String tempId, Integer mid) {
|
|
|
// 你的任务代码在这里
|
|
|
- onePassSmsService.sendSSM2(phone, Integer.valueOf( tempId ),mid );
|
|
|
+ onePassSmsService.sendSSM2(phone, Integer.valueOf(tempId), mid);
|
|
|
}
|
|
|
|
|
|
// public void updateCronExpression(String newCronExpression) {
|
|
|
// job1.cancel(true);
|
|
|
// job1 = taskScheduler.schedule(this::runTask, new CronTrigger(newCronExpression));
|
|
|
// }
|
|
|
-}
|
|
|
+}
|