package com.syzton.sunread.scheduler; import java.util.List; import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.syzton.sunread.model.organization.Campus; import com.syzton.sunread.model.organization.Clazz; import com.syzton.sunread.model.organization.ClazzStatisticHistory; import com.syzton.sunread.model.semester.Semester; import com.syzton.sunread.model.user.Student; import com.syzton.sunread.model.user.UserStatisticHistory; import com.syzton.sunread.repository.SemesterRepository; import com.syzton.sunread.repository.organization.CampusRepository; import com.syzton.sunread.repository.organization.ClazzRepository; import com.syzton.sunread.repository.organization.ClazzStatisticHistoryRepository; import com.syzton.sunread.repository.user.StudentRepository; import com.syzton.sunread.repository.user.UserStatisticHistoryRepository; /** * Created by jerry on 4/16/15. */ @Component public class StatisticTask { SemesterRepository semesterRepository; StudentRepository studentRepository; ClazzRepository clazzRepository; ClazzStatisticHistoryRepository clazzStatisticHistoryRepository; UserStatisticHistoryRepository statisticHistoryRepository; CampusRepository campusRepository; @Autowired public StatisticTask(SemesterRepository semesterRepository, StudentRepository studentRepository, ClazzRepository clazzRepository, ClazzStatisticHistoryRepository clazzStatisticHistoryRepository, UserStatisticHistoryRepository statisticHistoryRepository, CampusRepository campusRepository) { this.semesterRepository = semesterRepository; this.studentRepository = studentRepository; this.clazzRepository = clazzRepository; this.clazzStatisticHistoryRepository = clazzStatisticHistoryRepository; this.statisticHistoryRepository = statisticHistoryRepository; this.campusRepository = campusRepository; } @Scheduled(cron = "0 0 1 1 * ?") public void executeStatistic(){ List<Campus> campuses = campusRepository.findAll(); for (Campus campus : campuses) { Semester semester = semesterRepository.findByTimeAndCampus(new DateTime(),campus); backUpUserStatistic(semester.getId()); backUpClazzStatistic(semester.getId()); } } private void backUpClazzStatistic(Long semesterId) { List<Clazz> clazzList = clazzRepository.findAll(); for (Clazz clazz : clazzList){ ClazzStatisticHistory exits = clazzStatisticHistoryRepository.findByClazzIdAndSemesterId(clazz.getId(),semesterId); if(exits == null){ ClazzStatisticHistory statisticHistory = new ClazzStatisticHistory(); statisticHistory.setSemesterId(semesterId); statisticHistory.setClazzId(clazz.getId()); statisticHistory.setTotalPoints(clazz.getClazzStatistic().getTotalPoints()); statisticHistory.setTotalReads(clazz.getClazzStatistic().getTotalReads()); statisticHistory.setAvgPoints(clazz.getClazzStatistic().getAvgPoints()); statisticHistory.setAvgReads(clazz.getClazzStatistic().getAvgReads()); clazzStatisticHistoryRepository.save(statisticHistory); } } } private void backUpUserStatistic(Long semesterId) { List<Student> studentList = studentRepository.findAll(); for(Student student : studentList){ UserStatisticHistory exits = statisticHistoryRepository.findByStudentIdAndSemesterId(student.getId(), semesterId); if(exits == null) { UserStatisticHistory userStatisticHistory = new UserStatisticHistory(); userStatisticHistory.setCoin(student.getStatistic().getCoin()); userStatisticHistory.setPoint(student.getStatistic().getPoint()); userStatisticHistory.setTestPasses(student.getStatistic().getTestPasses()); userStatisticHistory.setReadNum(student.getStatistic().getReadNum()); userStatisticHistory.setNotes(student.getStatistic().getNotes()); userStatisticHistory.setLevel(student.getStatistic().getLevel()); userStatisticHistory.setStudentId(student.getId()); userStatisticHistory.setSemesterId(semesterId); statisticHistoryRepository.save(userStatisticHistory); } } } }