Files
klp-oa/klp-wms/src/main/java/com/klp/task/CostCoilDailyTask.java

55 lines
2.0 KiB
Java
Raw Normal View History

2025-12-02 17:58:16 +08:00
package com.klp.task;
import com.klp.service.ICostCoilDailyService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
/**
* 成本日统计定时任务
*
* 每天凌晨 2 点执行
* 1. 按钢卷维度生成前一日的日成本记录
* 2. 按入场钢卷号维度生成前一日的日成本记录
*
* 说明
* - 具体的计算逻辑在 {@link ICostCoilDailyService#calculateDailyCost(LocalDate)}
* {@link ICostCoilDailyService#calculateDailyCostByEnterCoilNo(LocalDate)} 中实现
* - 当前任务只负责在固定时间触发这两个方法
*/
@Slf4j
@RequiredArgsConstructor
@Component
public class CostCoilDailyTask {
private final ICostCoilDailyService costCoilDailyService;
/**
* 每天凌晨 2:00 计算前一日钢卷日成本按钢卷维度
*/
@Scheduled(cron = "0 0 2 * * ?")
public void calculateDailyCostByCoil() {
LocalDate calcDate = LocalDate.now().minusDays(1);
log.info("[成本定时任务] 开始按钢卷维度计算日期 {} 的成本", calcDate);
int count = costCoilDailyService.calculateDailyCost(calcDate);
log.info("[成本定时任务] 按钢卷维度计算日期 {} 的成本完成,成功 {} 条", calcDate, count);
}
/**
* 每天凌晨 2:10 计算前一日钢卷日成本按入场钢卷号维度
* 与上一个任务错开几分钟避免同时占用资源
*/
@Scheduled(cron = "0 10 2 * * ?")
public void calculateDailyCostByEnterCoilNo() {
LocalDate calcDate = LocalDate.now().minusDays(1);
log.info("[成本定时任务] 开始按入场钢卷号维度计算日期 {} 的成本", calcDate);
int count = costCoilDailyService.calculateDailyCostByEnterCoilNo(calcDate);
log.info("[成本定时任务] 按入场钢卷号维度计算日期 {} 的成本完成,成功 {} 个入场钢卷号", calcDate, count);
}
}