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 {
|
//today 0点5分 统计before today
|
log.info("启动统计人员工作量任务");
|
OthStatisticWorkloadMapper workloadMapper = SpringContextUtil.getBean(OthStatisticWorkloadMapper.class);
|
//找到最大一条日期记录
|
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE;
|
LocalDate maxLocalDate = LocalDate.parse(workloadMapper.selectMaxDate(), formatter);
|
//往后循环天数汇总 //循环统计
|
/* LocalDate maxLocalDate = null;
|
if (maxDate == null) {
|
maxLocalDate = LocalDate.now().minusDays(2);
|
} else {
|
maxLocalDate = maxDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
}*/
|
|
LocalDate today = LocalDate.now();
|
LocalDate statisticDate = maxLocalDate.plusDays(1);
|
long daysBetween = ChronoUnit.DAYS.between(maxLocalDate, today);
|
if (daysBetween > 30) {
|
daysBetween = 30;
|
statisticDate = today.minusDays(daysBetween);
|
}
|
for (int i = 1; i <= daysBetween; i++) {
|
Date startDt = Date.from(LocalDateTime.of(statisticDate, LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
|
Date endDt = Date.from(LocalDateTime.of(statisticDate, LocalTime.of(23, 59, 59)).atZone(ZoneId.systemDefault()).toInstant());
|
workloadMapper.insertBatch(startDt, endDt);
|
statisticDate = maxLocalDate.plusDays(i);
|
}
|
log.info("统计人员工作量任务结束");
|
}
|
}
|