因为数据库连接问题导致的插入数据库异常
This commit is contained in:
66
src/main/java/com/rj/scheduler/LBAdminPullScheduler.java
Normal file
66
src/main/java/com/rj/scheduler/LBAdminPullScheduler.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package com.rj.scheduler;
|
||||
|
||||
import com.rj.config.AppConfig;
|
||||
import com.rj.config.HxrAdminProperties;
|
||||
import com.rj.service.HxrAdminOrderSelectService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Clock;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
/**
|
||||
* hxrd 后台订单列表定时拉取:每 50 分钟触发一次,仅工作日(周一至周五)且在每天 18:10~23:59:59(应用时区)内真正执行。
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class LBAdminPullScheduler {
|
||||
|
||||
private static final long FIFTY_MINUTES_MS = 50L * 60L * 1000L;
|
||||
|
||||
private final AppConfig appConfig;
|
||||
private final HxrAdminProperties hxrAdminProperties;
|
||||
private final HxrAdminOrderSelectService hxrAdminOrderSelectService;
|
||||
private final Clock clock;
|
||||
|
||||
@Scheduled(
|
||||
fixedRate = FIFTY_MINUTES_MS,
|
||||
initialDelayString = "${hxr.admin.pull-initial-delay-ms:0}")
|
||||
public void pullAdminOrders() {
|
||||
try {
|
||||
if (!appConfig.getScheduler().isStart()) {
|
||||
log.debug("全局调度未启用,跳过 未寄卖 订单拉取");
|
||||
return;
|
||||
}
|
||||
if (!hxrAdminProperties.isEnabled()) {
|
||||
log.debug("hxr.admin.enabled=false,跳过订单拉取");
|
||||
return;
|
||||
}
|
||||
ZoneId zone = ZoneId.of(appConfig.getTimezone());
|
||||
ZonedDateTime nowZdt = ZonedDateTime.now(clock.withZone(zone));
|
||||
DayOfWeek dow = nowZdt.getDayOfWeek();
|
||||
if (dow == DayOfWeek.SATURDAY || dow == DayOfWeek.SUNDAY) {
|
||||
log.debug("当前为周末 {},跳过 未寄卖 订单拉取", dow);
|
||||
return;
|
||||
}
|
||||
LocalTime now = nowZdt.toLocalTime();
|
||||
LocalTime windowStart = LocalTime.of(18, 10);
|
||||
LocalTime windowEnd = LocalTime.of(23, 59, 59);
|
||||
if (now.isBefore(windowStart) || now.isAfter(windowEnd)) {
|
||||
log.debug("当前时刻 {} 不在窗口 {}~{},跳过 未寄卖 订单拉取", now, windowStart, windowEnd);
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("开始执行 未寄卖 订单拉取(工作日 18:10~23:59:59 窗口内)");
|
||||
hxrAdminOrderSelectService.fetchAndLogEachOrder();
|
||||
} catch (Exception e) {
|
||||
log.error("未寄卖 admin 订单拉取失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user