package com.dy.pmsOther.task; import com.dy.common.schedulerTask.TaskJob; import com.dy.common.springUtil.SpringContextUtil; import com.dy.pmsGlobal.daoOth.OthStatisticWorkloadMapper; import com.dy.pmsGlobal.pojoSta.StaDeviceProductionLog; import lombok.extern.slf4j.Slf4j; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.List; @Slf4j public class WorkloadTask extends TaskJob { @Override @Transactional public void execute(JobExecutionContext ctx) throws JobExecutionException { log.info("启动统计人员工作量任务"); OthStatisticWorkloadMapper workloadMapper = SpringContextUtil.getBean(OthStatisticWorkloadMapper.class); //找到最大一条日期记录 Date maxDate = workloadMapper.selectMaxDate(); //往后循环天数汇总 if(maxDate != null){ //循环统计 LocalDate firstDay = maxDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate today = LocalDate.now(); LocalDate nextDate = firstDay.plusDays(1); long daysBetween = ChronoUnit.DAYS.between(firstDay,today); for(int i=1 ; i<= daysBetween ; i++){ Date startDt = Date.from(LocalDateTime.of(nextDate, LocalTime.of(0,0,0)).atZone(ZoneId.systemDefault()).toInstant()); ; Date endDt = Date.from(LocalDateTime.of(nextDate, LocalTime.of(23,59,59)).atZone(ZoneId.systemDefault()).toInstant()); workloadMapper.insertBatch(startDt,endDt); nextDate = firstDay.plusDays(i); } } log.info("生产日志移动任务结束"); } }