Fancy
2024-10-16 e9a28062b899087b341514702efe370b3c6df3d4
pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/task/WorkloadTask.java
@@ -24,24 +24,33 @@
    @Override
    @Transactional
    public void execute(JobExecutionContext ctx) throws JobExecutionException {
        //today 0点5分 统计before today
        log.info("启动统计人员工作量任务");
        OthStatisticWorkloadMapper  workloadMapper = SpringContextUtil.getBean(OthStatisticWorkloadMapper.class);
        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);
            }
        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);
        }
        log.info("生产日志移动任务结束");
        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("统计人员工作量任务结束");
    }
}