KpiCalcMonthlyTask.java 2.75 KB
package cn.fw.morax.server.task;

import cn.fw.morax.service.biz.kpi.*;
import cn.fw.morax.service.data.kpi.KpiAssessService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.YearMonth;

/**
 * @author : kurisu
 * @className : KpiCalcTask
 * @description : 绩效处理任务
 * @date : 2022-04-07 15:29
 */
@Component
@Slf4j
@RequiredArgsConstructor
@ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on")
public class KpiCalcMonthlyTask {
    private final KpiCalculateService kpiCalculateService;
    private final KpiPoolBizService kpiPoolBizService;
    private final KpiCalculateAssessService kpiCalculateAssessService;


    /**
     * 缓存人员质量评测绩效组
     * 每个月2号 0点10分执行
     */
    @Scheduled(cron = "0 10 0 2 * ?")
    public void cacheAssessFinalCalcKpiGroup() {
        kpiCalculateAssessService.cacheAssessCalculableKpiGroupIds(YearMonth.now().minusMonths(1L).atEndOfMonth());
    }

    /**
     * 缓存绩效组排名
     * 每个月2号 1点执行
     */
    @Scheduled(cron = "0 0 1 2 * ?")
    public void cacheAssessFinalCalcKpiGroupRank() {
        kpiPoolBizService.cacheCalculableKpiGroupRank(YearMonth.now().minusMonths(1L).atEndOfMonth(), Boolean.TRUE);
    }

    /**
     * 缓存人员质量评测
     * 每月2号 2点执行
     */
    @Scheduled(cron = "0 0 2 2 * ?")
    public void cacheKpiAssess() {
        kpiCalculateAssessService.cacheCalcKpiAssessIds(YearMonth.now().minusMonths(1L).atEndOfMonth());
    }

    /**
     * 计算人员质量评测 每60秒执行一次
     */
    @Scheduled(initialDelay = 1000L * 15, fixedRate = 1000L * 60)
    public void calcAssessKpi() {
        kpiCalculateAssessService.calcAssessKpi();
    }

    /**
     * 推送评测奖惩数据
     * 每个月2号 3点执行
     */
    @Scheduled(cron = "0 0 3 2 * ?")
    public void pushAssessPunish() {
        kpiCalculateAssessService.pushAssessPunish(YearMonth.now().minusMonths(1L));
    }

    /**
     * 缓存上月绩效组(最终计算)
     * 每个月2号 4点分执行
     */
    @Scheduled(cron = "0 0 4 2 * ?")
    public void cacheFinalCalcKpiGroup() {
        kpiCalculateService.cacheCalculableKpiGroupIds(YearMonth.now().minusMonths(1L).atEndOfMonth());
    }

    /**
     * 缓存上月绩效排名组(最终计算)
     * 每个月2号 4点40执行
     */
    @Scheduled(cron = "0 40 4 2 * ?")
    public void cacheFinalCalcKpiGroupRank() {
        kpiPoolBizService.cacheCalculableKpiGroupRank(YearMonth.now().minusMonths(1L).atEndOfMonth(), Boolean.FALSE);
    }

}