parent
							
								
									298a694881
								
							
						
					
					
						commit
						ec741b4249
					
				@ -0,0 +1,74 @@ | 
				
			||||
package digital.laboratory.platform.sewage.task; | 
				
			||||
 | 
				
			||||
import digital.laboratory.platform.sewage.entity.SewageJob; | 
				
			||||
import digital.laboratory.platform.sewage.service.SewageJobService; | 
				
			||||
import lombok.extern.java.Log; | 
				
			||||
import org.springframework.scheduling.annotation.Scheduled; | 
				
			||||
import org.springframework.stereotype.Component; | 
				
			||||
 | 
				
			||||
import javax.annotation.Resource; | 
				
			||||
import java.time.LocalDate; | 
				
			||||
import java.time.Year; | 
				
			||||
 | 
				
			||||
@Log | 
				
			||||
@Component | 
				
			||||
public class JobTask { | 
				
			||||
 | 
				
			||||
    @Resource | 
				
			||||
    private SewageJobService sewageJobService; | 
				
			||||
 | 
				
			||||
    /** | 
				
			||||
     * 每天凌晨 0 点执行:判断当天所属季度任务是否存在,不存在则创建 | 
				
			||||
     */ | 
				
			||||
    @Scheduled(cron = "0 0 0 * * ?") | 
				
			||||
    public void runAtMidnight() { | 
				
			||||
        log.info(">>> 每天凌晨定时任务开始执行"); | 
				
			||||
 | 
				
			||||
        int year = Year.now().getValue(); | 
				
			||||
        int quarter = getCurrentQuarter(); | 
				
			||||
        // 计算本季度的开始日期
 | 
				
			||||
        int month = (quarter - 1) * 3 + 1; // 季度对应的第一个月 (1,4,7,10)
 | 
				
			||||
        LocalDate startDate = LocalDate.of(year, month, 1); | 
				
			||||
        // 计算本季度的结束日期
 | 
				
			||||
        LocalDate endDate = startDate.plusMonths(3).minusDays(1); | 
				
			||||
 | 
				
			||||
        boolean exists = sewageJobService.lambdaQuery() | 
				
			||||
                .eq(SewageJob::getJobYear, year) | 
				
			||||
                .eq(SewageJob::getJobSeason, quarter) | 
				
			||||
                .exists(); | 
				
			||||
 | 
				
			||||
        if (exists) { | 
				
			||||
            log.info(">>> 季度任务已存在:" + "year" + "年第" + quarter + "季度"); | 
				
			||||
        } else { | 
				
			||||
            log.info(">>> 未找到季度任务,开始创建:" + "year" + "年第" + quarter + "季度"); | 
				
			||||
 | 
				
			||||
            SewageJob job = new SewageJob(); | 
				
			||||
            job.setJobYear(year); | 
				
			||||
            job.setJobSeason(quarter); | 
				
			||||
            job.setName(year + "年第" + quarter + "季度污水监测任务"); | 
				
			||||
            job.setJobNo(sewageJobService.getNewJobNo(year, quarter)); | 
				
			||||
            job.setStatus(1); | 
				
			||||
            job.setDescription("贵阳市" + year + "年第" + quarter + "季度污水监测任务"); | 
				
			||||
            job.setLauncheOrgId("0"); | 
				
			||||
            job.setStartDate(startDate.atStartOfDay()); | 
				
			||||
            job.setExpirationDate(endDate.atStartOfDay()); | 
				
			||||
 | 
				
			||||
            boolean saved = sewageJobService.save(job); | 
				
			||||
            if (saved) { | 
				
			||||
                log.info(">>> 创建成功:" + "year" + "年第" + quarter + "季度"); | 
				
			||||
            } else { | 
				
			||||
                log.info(">>> 创建失败:" + "year" + "年第" + quarter + "季度"); | 
				
			||||
            } | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        log.info(">>> 每天凌晨定时任务执行完毕"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    /** | 
				
			||||
     * 根据当前月份获取季度(1~4) | 
				
			||||
     */ | 
				
			||||
    private int getCurrentQuarter() { | 
				
			||||
        int month = LocalDate.now().getMonthValue(); | 
				
			||||
        return (month - 1) / 3 + 1; | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue