| | |
| | | @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("统计人员工作量任务结束"); |
| | | } |
| | | } |