55 lines
2.1 KiB
Java
55 lines
2.1 KiB
Java
package com.klp.task;
|
|
|
|
import com.klp.service.IWmsCostCoilDailyService;
|
|
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 IWmsCostCoilDailyService#calculateDailyCost(LocalDate)} 和
|
|
* {@link IWmsCostCoilDailyService#calculateDailyCostByEnterCoilNo(LocalDate)} 中实现。
|
|
* - 当前任务只负责在固定时间触发这两个方法。
|
|
*/
|
|
@Slf4j
|
|
@RequiredArgsConstructor
|
|
@Component
|
|
public class CostCoilDailyTask {
|
|
|
|
private final IWmsCostCoilDailyService 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);
|
|
}
|
|
}
|
|
|
|
|