增加多群通知
This commit is contained in:
+7
-7
@@ -5,20 +5,20 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
/**
|
||||
* Zeodao任务提醒系统主启动类
|
||||
*
|
||||
* 多群任务提醒系统主启动类
|
||||
*
|
||||
* @author Zeodao
|
||||
* @version 1.0.0
|
||||
* @version 2.0.0
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableScheduling
|
||||
public class ZeodaoTaskReminderApplication {
|
||||
public class TaskReminderApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ZeodaoTaskReminderApplication.class, args);
|
||||
SpringApplication.run(TaskReminderApplication.class, args);
|
||||
System.out.println("=================================");
|
||||
System.out.println("Zeodao任务提醒系统启动成功!");
|
||||
System.out.println("系统将在工作日早上9:00和下午17:30发送任务提醒");
|
||||
System.out.println("多群任务提醒系统启动成功!");
|
||||
System.out.println("系统支持多个群组和多种任务管理系统");
|
||||
System.out.println("=================================");
|
||||
}
|
||||
}
|
||||
@@ -192,14 +192,11 @@ public class WechatWebhookService {
|
||||
String systemIcon = getTaskSystemIcon(group.getTaskSystem());
|
||||
|
||||
message.append("## ").append(systemIcon).append(" ").append(systemName).append("任务状态提醒\n\n");
|
||||
message.append("**⏰ 时间:** ").append(timestamp).append(" (").append(dayOfWeek).append(")\n");
|
||||
message.append("**📝 提醒类型:** ").append(timeType).append("\n\n");
|
||||
message.append("### 📢 重要提醒\n");
|
||||
message.append(baseMessage).append("\n\n");
|
||||
message.append("### 🔗 操作指引\n");
|
||||
message.append("⏰ **时间:** ").append(timestamp).append(" (").append(dayOfWeek).append(")\n\n");
|
||||
message.append("📢 ").append(baseMessage).append("\n\n");
|
||||
message.append("🔗 **操作指引:**\n");
|
||||
message.append(getTaskSystemInstructions(group.getTaskSystem()));
|
||||
message.append("---\n");
|
||||
message.append("💡 **温馨提示:** 及时更新任务状态有助于团队协作和项目管理");
|
||||
message.append("💡 及时更新任务状态有助于团队协作和项目管理");
|
||||
|
||||
return message.toString();
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.util.Set;
|
||||
/**
|
||||
* 节假日工具类
|
||||
* 用于判断是否为节假日或周末
|
||||
*
|
||||
*
|
||||
* @author Zeodao
|
||||
* @version 1.0.0
|
||||
*/
|
||||
@@ -22,54 +22,15 @@ public class HolidayUtil {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(HolidayUtil.class);
|
||||
|
||||
// 2024年法定节假日(可根据实际情况调整)
|
||||
private static final Set<LocalDate> HOLIDAYS_2024 = new HashSet<>();
|
||||
|
||||
// 2025年法定节假日(可根据实际情况调整)
|
||||
private static final Set<LocalDate> HOLIDAYS_2025 = new HashSet<>();
|
||||
|
||||
static {
|
||||
// 初始化2024年节假日
|
||||
initHolidays2024();
|
||||
// 初始化2025年节假日
|
||||
initHolidays2025();
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化2024年节假日
|
||||
*/
|
||||
private static void initHolidays2024() {
|
||||
// 元旦:1月1日
|
||||
HOLIDAYS_2024.add(LocalDate.of(2024, Month.JANUARY, 1));
|
||||
|
||||
// 春节:2月10日-17日
|
||||
for (int day = 10; day <= 17; day++) {
|
||||
HOLIDAYS_2024.add(LocalDate.of(2024, Month.FEBRUARY, day));
|
||||
}
|
||||
|
||||
// 清明节:4月4日-6日
|
||||
for (int day = 4; day <= 6; day++) {
|
||||
HOLIDAYS_2024.add(LocalDate.of(2024, Month.APRIL, day));
|
||||
}
|
||||
|
||||
// 劳动节:5月1日-5日
|
||||
for (int day = 1; day <= 5; day++) {
|
||||
HOLIDAYS_2024.add(LocalDate.of(2024, Month.MAY, day));
|
||||
}
|
||||
|
||||
// 端午节:6月10日
|
||||
HOLIDAYS_2024.add(LocalDate.of(2024, Month.JUNE, 10));
|
||||
|
||||
// 中秋节:9月15日-17日
|
||||
for (int day = 15; day <= 17; day++) {
|
||||
HOLIDAYS_2024.add(LocalDate.of(2024, Month.SEPTEMBER, day));
|
||||
}
|
||||
|
||||
// 国庆节:10月1日-7日
|
||||
for (int day = 1; day <= 7; day++) {
|
||||
HOLIDAYS_2024.add(LocalDate.of(2024, Month.OCTOBER, day));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 初始化2025年节假日
|
||||
@@ -77,7 +38,7 @@ public class HolidayUtil {
|
||||
private static void initHolidays2025() {
|
||||
// 元旦:1月1日
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.JANUARY, 1));
|
||||
|
||||
|
||||
// 春节:1月28日-2月3日(预估,实际以国务院公布为准)
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.JANUARY, 28));
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.JANUARY, 29));
|
||||
@@ -86,25 +47,25 @@ public class HolidayUtil {
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.FEBRUARY, 1));
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.FEBRUARY, 2));
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.FEBRUARY, 3));
|
||||
|
||||
|
||||
// 清明节:4月5日-7日(预估)
|
||||
for (int day = 5; day <= 7; day++) {
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.APRIL, day));
|
||||
}
|
||||
|
||||
|
||||
// 劳动节:5月1日-5日(预估)
|
||||
for (int day = 1; day <= 5; day++) {
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.MAY, day));
|
||||
}
|
||||
|
||||
|
||||
// 端午节:5月31日-6月2日(预估)
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.MAY, 31));
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.JUNE, 1));
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.JUNE, 2));
|
||||
|
||||
|
||||
// 中秋节:10月6日(预估)
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.OCTOBER, 6));
|
||||
|
||||
|
||||
// 国庆节:10月1日-7日
|
||||
for (int day = 1; day <= 7; day++) {
|
||||
HOLIDAYS_2025.add(LocalDate.of(2025, Month.OCTOBER, day));
|
||||
@@ -113,35 +74,32 @@ public class HolidayUtil {
|
||||
|
||||
/**
|
||||
* 判断指定日期是否为周末
|
||||
*
|
||||
*
|
||||
* @param date 日期
|
||||
* @return 是否为周末
|
||||
*/
|
||||
public boolean isWeekend(LocalDate date) {
|
||||
DayOfWeek dayOfWeek = date.getDayOfWeek();
|
||||
boolean isWeekend = dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY;
|
||||
|
||||
|
||||
if (isWeekend) {
|
||||
logger.debug("日期 {} 是周末", date);
|
||||
}
|
||||
|
||||
|
||||
return isWeekend;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断指定日期是否为法定节假日
|
||||
*
|
||||
*
|
||||
* @param date 日期
|
||||
* @return 是否为节假日
|
||||
*/
|
||||
public boolean isHoliday(LocalDate date) {
|
||||
boolean isHoliday = false;
|
||||
|
||||
|
||||
int year = date.getYear();
|
||||
switch (year) {
|
||||
case 2024:
|
||||
isHoliday = HOLIDAYS_2024.contains(date);
|
||||
break;
|
||||
case 2025:
|
||||
isHoliday = HOLIDAYS_2025.contains(date);
|
||||
break;
|
||||
@@ -150,17 +108,17 @@ public class HolidayUtil {
|
||||
logger.warn("未配置年份 {} 的节假日信息,默认不是节假日", year);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (isHoliday) {
|
||||
logger.debug("日期 {} 是法定节假日", date);
|
||||
}
|
||||
|
||||
|
||||
return isHoliday;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断指定日期是否为工作日
|
||||
*
|
||||
*
|
||||
* @param date 日期
|
||||
* @return 是否为工作日
|
||||
*/
|
||||
@@ -170,7 +128,7 @@ public class HolidayUtil {
|
||||
|
||||
/**
|
||||
* 获取下一个工作日
|
||||
*
|
||||
*
|
||||
* @param date 起始日期
|
||||
* @return 下一个工作日
|
||||
*/
|
||||
@@ -184,15 +142,12 @@ public class HolidayUtil {
|
||||
|
||||
/**
|
||||
* 添加自定义节假日
|
||||
*
|
||||
*
|
||||
* @param date 节假日日期
|
||||
*/
|
||||
public void addCustomHoliday(LocalDate date) {
|
||||
int year = date.getYear();
|
||||
switch (year) {
|
||||
case 2024:
|
||||
HOLIDAYS_2024.add(date);
|
||||
break;
|
||||
case 2025:
|
||||
HOLIDAYS_2025.add(date);
|
||||
break;
|
||||
|
||||
@@ -37,10 +37,10 @@ task:
|
||||
task-system: "smartsheet"
|
||||
schedules:
|
||||
morning:
|
||||
time: "0 0 8 * * MON-FRI" # 工作日早上8点
|
||||
time: "0 50 8 * * MON-FRI" # 工作日早上8点50分
|
||||
message: "早上好!请大家及时更新智能表格中的任务状态,确保项目进度信息准确无误。"
|
||||
evening:
|
||||
time: "0 0 18 * * MON-FRI" # 工作日下午6点
|
||||
time: "0 20 17 * * MON-FRI" # 工作日下午5点20分
|
||||
message: "下班前提醒:请在智能表格中更新今日工作完成情况,为明天做好准备!"
|
||||
enabled: true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user