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