|
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.time.DayOfWeek;
|
|
import java.time.DayOfWeek;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
@@ -47,6 +48,8 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
|
|
@Autowired
|
|
@Autowired
|
|
private TeacherDao teacherDao;
|
|
private TeacherDao teacherDao;
|
|
@Autowired
|
|
@Autowired
|
|
|
|
+ private StudentDao studentDao;
|
|
|
|
+ @Autowired
|
|
private CourseScheduleDao courseScheduleDao;
|
|
private CourseScheduleDao courseScheduleDao;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -277,4 +280,69 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
|
|
studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
|
|
studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
|
|
studentExtracurricularExercisesSituationDao.batchInsert(results);
|
|
studentExtracurricularExercisesSituationDao.batchInsert(results);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void exercisesSituationStatistics2() {
|
|
|
|
+ LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
|
|
|
|
+ LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
|
|
|
|
+ LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
|
|
|
|
+
|
|
|
|
+ List<Student> serviceStudents = studentDao.getServiceStudents();
|
|
|
|
+ if(CollectionUtils.isEmpty(serviceStudents)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<StudentServiceHomeworkDto> studentHomeworksInWeek = extracurricularExercisesReplyDao.findStudentHomewarksInWeek(monDayDate.toString(), sunDayDate.toString());
|
|
|
|
+ Map<Integer, List<StudentServiceHomeworkDto>> studentExercisesMap = studentHomeworksInWeek.stream().collect(Collectors.groupingBy(StudentServiceHomeworkDto::getUserId));
|
|
|
|
+
|
|
|
|
+ List<StudentExtracurricularExercisesSituation> results=new ArrayList<>();
|
|
|
|
+ for (Student serviceStudent : serviceStudents) {
|
|
|
|
+ StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation();
|
|
|
|
+ studentExtracurricularExercisesSituation.setStudentId(serviceStudent.getUserId());
|
|
|
|
+ studentExtracurricularExercisesSituation.setTeacherId(serviceStudent.getTeacherId());
|
|
|
|
+ studentExtracurricularExercisesSituation.setExpectExercisesNum(1);
|
|
|
|
+ studentExtracurricularExercisesSituation.setWeekOfYear(nowDate.get(DateUtil.weekFields.weekOfYear()));
|
|
|
|
+ studentExtracurricularExercisesSituation.setMonday(DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"));
|
|
|
|
+ studentExtracurricularExercisesSituation.setSunday(DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"));
|
|
|
|
+ List<StudentServiceHomeworkDto> studentHomeworks = studentExercisesMap.get(serviceStudent.getUserId());
|
|
|
|
+ if(CollectionUtils.isEmpty(studentHomeworks)){
|
|
|
|
+ studentExtracurricularExercisesSituation.setActualExercisesNum(0);
|
|
|
|
+ studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
|
|
|
|
+ studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
|
|
|
|
+ studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
|
|
|
|
+ results.add(studentExtracurricularExercisesSituation);
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ studentExtracurricularExercisesSituation.setActualExercisesNum(1);
|
|
|
|
+ long replyNum = studentHomeworks.stream().filter(e -> e.getStatus()==1).count();
|
|
|
|
+ studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
|
|
|
|
+ int exercisesMessageNum=0;
|
|
|
|
+ int exercisesMessageTimelyNum=0;
|
|
|
|
+ for (StudentServiceHomeworkDto studentHomework : studentHomeworks) {
|
|
|
|
+ if(!new Integer(1).equals(studentHomework.getStatus())){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if(!new Integer(1).equals(studentHomework.getIsReplied())){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ exercisesMessageNum+=1;
|
|
|
|
+ if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
|
|
|
|
+ exercisesMessageTimelyNum+=1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
|
|
|
|
+ studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
|
|
|
|
+ results.add(studentExtracurricularExercisesSituation);
|
|
|
|
+ }
|
|
|
|
+ BigDecimal currentPage=BigDecimal.ONE,
|
|
|
|
+ pageSize=new BigDecimal(10000),
|
|
|
|
+ total=new BigDecimal(results.size()),
|
|
|
|
+ totalPage=total.divide(pageSize, BigDecimal.ROUND_UP);
|
|
|
|
+ while (currentPage.compareTo(totalPage)<=0){
|
|
|
|
+ List<StudentExtracurricularExercisesSituation> rows=results.stream().skip(pageSize.multiply(currentPage.subtract(BigDecimal.ONE)).longValue()).limit(pageSize.longValue()).collect(Collectors.toList());
|
|
|
|
+ studentExtracurricularExercisesSituationDao.batchInsert(rows);
|
|
|
|
+ currentPage=currentPage.add(BigDecimal.ONE);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|