|
|
@@ -2,15 +2,14 @@ package net.yyc.quartz.executor;
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import net.yyc.quartz.entity.JobBriefing;
|
|
|
import net.yyc.quartz.service.EmailService;
|
|
|
import net.yyc.quartz.service.JobBriefingService;
|
|
|
+import net.yyc.quartz.util.DateUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.time.format.DateTimeFormatter;
|
|
|
-
|
|
|
/**
|
|
|
* 每日简报执行器
|
|
|
* 每天早上9点执行,生成昨日任务执行简报并发送邮件
|
|
|
@@ -25,10 +24,9 @@ public class JobBriefingExecutor {
|
|
|
@Value("${spring.profiles.active:unknown}")
|
|
|
private String activeProfile;
|
|
|
|
|
|
- private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
-
|
|
|
/**
|
|
|
* 生成并发送每日简报
|
|
|
+ * DATE_FORMATTER
|
|
|
*
|
|
|
* @return 执行结果(成功返回"success",失败返回异常信息)
|
|
|
*/
|
|
|
@@ -39,7 +37,7 @@ public class JobBriefingExecutor {
|
|
|
|
|
|
log.info("[简报] 开始构建简报内容");
|
|
|
String content = buildEmailContent(briefing);
|
|
|
- String subject = String.format("【%s-定时任务简报】%s", activeProfile, briefing.getReportDate().format(DATE_FORMATTER));
|
|
|
+ String subject = String.format("【%s-定时任务简报】%s", activeProfile, DateUtils.formatLocalDate(briefing.getReportDate()));
|
|
|
|
|
|
log.info("[简报] 准备发送邮件");
|
|
|
boolean success = emailService.sendBriefing(content, subject);
|
|
|
@@ -63,8 +61,7 @@ public class JobBriefingExecutor {
|
|
|
|
|
|
// 标题
|
|
|
sb.append("<h2 style='color: #333; margin-bottom: 20px;'>定时任务每日简报</h2>");
|
|
|
- sb.append(String.format("<p><b>报告日期:</b>%s</p>",
|
|
|
- briefing.getReportDate().format(DATE_FORMATTER)));
|
|
|
+ sb.append(String.format("<p><b>报告日期:</b>%s</p>", DateUtils.formatLocalDate(briefing.getReportDate())));
|
|
|
|
|
|
// 错过执行告警
|
|
|
if (!briefing.getMissedJobs().isEmpty()) {
|
|
|
@@ -84,7 +81,7 @@ public class JobBriefingExecutor {
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ffc107;'>%s</td>",
|
|
|
escapeHtml(job.getJobGroup())));
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ffc107;'>%s</td>",
|
|
|
- escapeHtml(job.getNextExecuteTime())));
|
|
|
+ escapeHtml(DateUtils.formatLocalDateTime(job.getNextExecuteTime()))));
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ffc107; color: #856404;'>%s</td>",
|
|
|
escapeHtml(job.getRemark())));
|
|
|
sb.append("</tr>");
|
|
|
@@ -131,12 +128,6 @@ public class JobBriefingExecutor {
|
|
|
// 格式化平均耗时
|
|
|
String avgTimeText = formatDuration(job.getAvgExecuteTime());
|
|
|
|
|
|
- // 格式化最后执行时间(只显示月日时分的后19位)
|
|
|
- String lastExecText = "";
|
|
|
- if (job.getLastExecuteTime() != null && job.getLastExecuteTime().length() >= 16) {
|
|
|
- lastExecText = job.getLastExecuteTime().substring(5, 16); // MM-DD HH:mm
|
|
|
- }
|
|
|
-
|
|
|
sb.append(String.format("<tr style='%s'>", rowBgColor));
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ddd;'><b>%s</b></td>",
|
|
|
escapeHtml(job.getJobName())));
|
|
|
@@ -157,9 +148,9 @@ public class JobBriefingExecutor {
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ddd; text-align: center;'>%s</td>",
|
|
|
avgTimeText));
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ddd;'>%s</td>",
|
|
|
- job.getNextExecuteTime() != null ? job.getNextExecuteTime() : "-"));
|
|
|
+ job.getNextExecuteTime() != null ? DateUtils.formatLocalDateTime(job.getNextExecuteTime()) : "-"));
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ddd;'>%s</td>",
|
|
|
- lastExecText));
|
|
|
+ DateUtils.formatLocalDateTime(job.getLastExecuteTime())));
|
|
|
sb.append(String.format("<td style='padding: 8px; border: 1px solid #ddd; text-align: center; %s'>%s</td>",
|
|
|
"失败".equals(job.getLastExecStatus()) ? "color: red; font-weight: bold;" : "color: green;",
|
|
|
job.getLastExecStatus() != null ? job.getLastExecStatus() : "-"));
|