成本模块

This commit is contained in:
2025-12-02 17:58:16 +08:00
parent be91905508
commit 4b9cce2777
22 changed files with 4808 additions and 3 deletions

View File

@@ -0,0 +1,54 @@
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);
}
}