|
@@ -426,7 +426,7 @@ public class StudentServeServiceImpl implements StudentServeService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- List<StudentExtracurricularExercisesSituation> weekServiceWithStudents = studentExtracurricularExercisesSituationDao.findWeekServiceWithStudents(monDayDate.toString(), studentIds);
|
|
|
+ List<StudentExtracurricularExercisesSituation> weekServiceWithStudents = studentExtracurricularExercisesSituationDao.findWeekServiceWithStudents(monDayDate.toString(), null, studentIds);
|
|
|
Map<String, StudentExtracurricularExercisesSituation> codeServeMap = weekServiceWithStudents.stream().collect(Collectors.toMap(StudentExtracurricularExercisesSituation::getStuAndTeaCode, s -> s, (s1, s2) -> s1));
|
|
|
|
|
|
Set<String> newCodes = results.stream().map(StudentExtracurricularExercisesSituation::getStuAndTeaCode).collect(Collectors.toSet());
|
|
@@ -463,6 +463,126 @@ public class StudentServeServiceImpl implements StudentServeService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public void updateExercisesSituation(Date date,List<Integer> studentIds, Integer teacherId) {
|
|
|
+ LocalDate nowDate = LocalDateTime.ofInstant(date.toInstant(), DateUtil.zoneId).toLocalDate();
|
|
|
+ if(Objects.isNull(date)){
|
|
|
+ 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());
|
|
|
+
|
|
|
+ Map<Integer, List<StudentServeCourseHomeworkDto>> studentHomeworkMap=new HashMap<>();
|
|
|
+ Map<Integer, List<ExtracurricularExercisesReply>> studentExercisesMap=new HashMap<>();
|
|
|
+
|
|
|
+ List<StudentServeCourseHomeworkDto> allStudentHomeworks = studentCourseHomeworkDao.findStudentHomeworkWithCourseDateRange(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(studentIds));
|
|
|
+ List<StudentServeCourseHomeworkDto> studentHomeworksTmp =new ArrayList<>();
|
|
|
+ for (StudentServeCourseHomeworkDto studentHomework : allStudentHomeworks) {
|
|
|
+ LocalDate courseStartLocalDate = LocalDateTime.ofInstant(studentHomework.getCourseStartTime().toInstant(), DateUtil.zoneId).toLocalDate();
|
|
|
+ switch (courseStartLocalDate.getDayOfWeek()){
|
|
|
+ case SATURDAY:
|
|
|
+ if(DateUtil.daysBetween(studentHomework.getCourseStartTime(), studentHomework.getHomeworkCreateTime())<4){
|
|
|
+ studentHomeworksTmp.add(studentHomework);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case SUNDAY:
|
|
|
+ if(DateUtil.daysBetween(studentHomework.getCourseStartTime(), studentHomework.getHomeworkCreateTime())<3){
|
|
|
+ studentHomeworksTmp.add(studentHomework);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ LocalDate homeworkCreateTime = LocalDateTime.ofInstant(studentHomework.getHomeworkCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
|
|
|
+ if(courseStartLocalDate.get(DateUtil.weekFields.weekOfYear())==homeworkCreateTime.get(DateUtil.weekFields.weekOfYear())){
|
|
|
+ studentHomeworksTmp.add(studentHomework);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!CollectionUtils.isEmpty(studentHomeworksTmp)){
|
|
|
+ studentHomeworkMap = studentHomeworksTmp.stream()
|
|
|
+ .collect(Collectors.groupingBy(StudentServeCourseHomeworkDto::getUserId));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<ExtracurricularExercisesReply> allStudentExercises = extracurricularExercisesReplyDao.getStudentExercisesWithTimeZone(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(studentIds));
|
|
|
+ if(!CollectionUtils.isEmpty(allStudentExercises)){
|
|
|
+ studentExercisesMap = allStudentExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getUserId));
|
|
|
+ }
|
|
|
+
|
|
|
+ List<StudentExtracurricularExercisesSituation> weekServiceWithStudents = studentExtracurricularExercisesSituationDao.findWeekServiceWithStudents(monDayDate.toString(), teacherId, studentIds);
|
|
|
+ if(!CollectionUtils.isEmpty(weekServiceWithStudents)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (StudentExtracurricularExercisesSituation weekServiceWithStudent : weekServiceWithStudents) {
|
|
|
+ List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(weekServiceWithStudent.getStudentId());
|
|
|
+ if(!CollectionUtils.isEmpty(studentHomeworks)){
|
|
|
+ weekServiceWithStudent.setActualExercisesNum(1);
|
|
|
+ long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
|
|
|
+ weekServiceWithStudent.setExercisesReplyNum(replyNum>0?1:0);
|
|
|
+ long haveSubmitTimes = studentHomeworks.stream().filter(e -> Objects.nonNull(e.getSubmitTime())).count();
|
|
|
+ if(replyNum>0&&haveSubmitTimes>0){
|
|
|
+ Date lastSubmitTime = studentHomeworks.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(StudentServeCourseHomeworkDto::getSubmitTime)).get().getSubmitTime();
|
|
|
+ weekServiceWithStudent.setLastSubmitTime(lastSubmitTime);
|
|
|
+ }
|
|
|
+ int exercisesMessageNum=0;
|
|
|
+ int exercisesMessageTimelyNum=0;
|
|
|
+ for (StudentServeCourseHomeworkDto studentHomework : studentHomeworks) {
|
|
|
+ if(!YesOrNoEnum.YES.equals(studentHomework.getStatus())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(!YesOrNoEnum.YES.equals(studentHomework.getIsReplied())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ exercisesMessageNum+=1;
|
|
|
+ if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
|
|
|
+ exercisesMessageTimelyNum+=1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ weekServiceWithStudent.setExercisesMessageNum(exercisesMessageNum>0?1:0);
|
|
|
+ weekServiceWithStudent.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ExtracurricularExercisesReply> studentExercises = studentExercisesMap.get(weekServiceWithStudent.getStudentId());
|
|
|
+ if(!CollectionUtils.isEmpty(studentExercises)){
|
|
|
+ weekServiceWithStudent.setActualExercisesNum(1);
|
|
|
+ long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
|
|
|
+ if(weekServiceWithStudent.getExercisesReplyNum()<=0){
|
|
|
+ weekServiceWithStudent.setExercisesReplyNum(replyNum>0?1:0);
|
|
|
+ }
|
|
|
+ long haveSubmitTimes = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).count();
|
|
|
+ if(replyNum>0&&haveSubmitTimes>0){
|
|
|
+ Date lastSubmitTime = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(ExtracurricularExercisesReply::getSubmitTime)).get().getSubmitTime();
|
|
|
+ if(Objects.isNull(weekServiceWithStudent.getLastSubmitTime())||lastSubmitTime.after(weekServiceWithStudent.getLastSubmitTime())){
|
|
|
+ weekServiceWithStudent.setLastSubmitTime(lastSubmitTime);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int exercisesMessageNum=0;
|
|
|
+ int exercisesMessageTimelyNum=0;
|
|
|
+ for (ExtracurricularExercisesReply studentHomework : studentExercises) {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(weekServiceWithStudent.getExercisesMessageNum()<=0){
|
|
|
+ weekServiceWithStudent.setExercisesMessageNum(exercisesMessageNum>0?1:0);
|
|
|
+ }
|
|
|
+ if(weekServiceWithStudent.getExercisesMessageTimelyNum()<=0){
|
|
|
+ weekServiceWithStudent.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ studentExtracurricularExercisesSituationDao.batchUpdate(weekServiceWithStudents);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public Map<String, Object> checkeIsAssignHomework(Long courseScheduleId, String studentIdsStr, Integer teacherId) {
|
|
|
Map<String, Object> result=new HashMap<>();
|
|
|
|