|  | @@ -56,6 +56,7 @@ public class StudentServeServiceImpl implements StudentServeService {
 | 
	
		
			
				|  |  |          if(StringUtils.isNotBlank(monday)){
 | 
	
		
			
				|  |  |              nowDate=LocalDate.parse(monday, DateUtil.dateFormatter);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
 | 
	
		
			
				|  |  |          LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
 | 
	
		
			
				|  |  |          Date nextMonday = Date.from(sunDayDate.plusDays(1).atStartOfDay(DateUtil.zoneId).toInstant());
 | 
	
	
		
			
				|  | @@ -74,6 +75,7 @@ public class StudentServeServiceImpl implements StudentServeService {
 | 
	
		
			
				|  |  |          //本周无课学员编号集合
 | 
	
		
			
				|  |  |          Set<Integer> noClassStudentIds=new HashSet<>();
 | 
	
		
			
				|  |  |          for (Map.Entry<Integer, List<StudentServeDto>> studentCoursesEntry : studentCoursesMap.entrySet()) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              List<StudentServeDto> haveCourseStudents = studentCoursesEntry.getValue().stream().filter(e -> Objects.nonNull(e.getCourseStartTime())).collect(Collectors.toList());
 | 
	
		
			
				|  |  |              if(CollectionUtils.isEmpty(haveCourseStudents)){
 | 
	
		
			
				|  |  |                  noClassStudentIds.add(studentCoursesEntry.getKey());
 | 
	
	
		
			
				|  | @@ -84,7 +86,7 @@ public class StudentServeServiceImpl implements StudentServeService {
 | 
	
		
			
				|  |  |                  noClassStudentIds.add(studentCoursesEntry.getKey());
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(studentServeDto.getCourseStartTime().after(nextMonday)){
 | 
	
		
			
				|  |  | +            if(!studentServeDto.getCourseStartTime().before(nextMonday)){
 | 
	
		
			
				|  |  |                  dontServeInCurrentWeekStudentIds.add(studentCoursesEntry.getKey());
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -98,16 +100,20 @@ public class StudentServeServiceImpl implements StudentServeService {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        Set<Integer> allServeStudentIds=new HashSet<>();
 | 
	
		
			
				|  |  | +        allServeStudentIds.addAll(haveClassStudentIds);
 | 
	
		
			
				|  |  | +        allServeStudentIds.addAll(noClassStudentIds);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          Map<Integer, List<StudentServeCourseHomeworkDto>> studentHomeworkMap=new HashMap<>();
 | 
	
		
			
				|  |  |          Map<Integer, List<ExtracurricularExercisesReply>> studentExercisesMap=new HashMap<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (!CollectionUtils.isEmpty(haveClassStudentIds)){
 | 
	
		
			
				|  |  | -            List<StudentServeCourseHomeworkDto> studentHomeworks = studentCourseHomeworkDao.findStudentHomeworkWithCourseDateRange(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(haveClassStudentIds));
 | 
	
		
			
				|  |  | +        if (!CollectionUtils.isEmpty(allServeStudentIds)){
 | 
	
		
			
				|  |  | +            List<StudentServeCourseHomeworkDto> studentHomeworks = studentCourseHomeworkDao.findStudentHomeworkWithCourseDateRange(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(allServeStudentIds));
 | 
	
		
			
				|  |  |              studentHomeworkMap = studentHomeworks.stream().filter(h -> DateUtil.daysBetween(h.getCourseStartTime(), h.getHomeworkCreateTime())<3).collect(Collectors.groupingBy(StudentServeCourseHomeworkDto::getUserId));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if(!CollectionUtils.isEmpty(noClassStudentIds)){
 | 
	
		
			
				|  |  | -            List<ExtracurricularExercisesReply> studentExercises = extracurricularExercisesReplyDao.getStudentExercisesWithTimeZone(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(noClassStudentIds));
 | 
	
		
			
				|  |  | +        if(!CollectionUtils.isEmpty(allServeStudentIds)){
 | 
	
		
			
				|  |  | +            List<ExtracurricularExercisesReply> studentExercises = extracurricularExercisesReplyDao.getStudentExercisesWithTimeZone(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(allServeStudentIds));
 | 
	
		
			
				|  |  |              studentExercisesMap = studentExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getUserId));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -122,67 +128,63 @@ public class StudentServeServiceImpl implements StudentServeService {
 | 
	
		
			
				|  |  |              studentExtracurricularExercisesSituation.setStudentId(studentCoursesEntry.getKey());
 | 
	
		
			
				|  |  |              studentExtracurricularExercisesSituation.setTeacherId(studentCoursesEntry.getValue().get(0).getTeacherId());
 | 
	
		
			
				|  |  |              studentExtracurricularExercisesSituation.setExpectExercisesNum(1);
 | 
	
		
			
				|  |  | +            studentExtracurricularExercisesSituation.setActualExercisesNum(0);
 | 
	
		
			
				|  |  | +            studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
 | 
	
		
			
				|  |  | +            studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
 | 
	
		
			
				|  |  | +            studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
 | 
	
		
			
				|  |  |              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"));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(haveClassStudentIds.contains(studentCoursesEntry.getKey())){
 | 
	
		
			
				|  |  |                  studentExtracurricularExercisesSituation.setServeType("HOMEWORK");
 | 
	
		
			
				|  |  | -                List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(studentCoursesEntry.getKey());
 | 
	
		
			
				|  |  | -                if(CollectionUtils.isEmpty(studentHomeworks)){
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
 | 
	
		
			
				|  |  | -                    results.add(studentExtracurricularExercisesSituation);
 | 
	
		
			
				|  |  | -                    continue;
 | 
	
		
			
				|  |  | -                }else{
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setActualExercisesNum(1);
 | 
	
		
			
				|  |  | -                    long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.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();
 | 
	
		
			
				|  |  | -                        studentExtracurricularExercisesSituation.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;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
 | 
	
		
			
				|  |  | -                    results.add(studentExtracurricularExercisesSituation);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(noClassStudentIds.contains(studentCoursesEntry.getKey())){
 | 
	
		
			
				|  |  |                  studentExtracurricularExercisesSituation.setServeType("EXERCISE");
 | 
	
		
			
				|  |  | -                List<ExtracurricularExercisesReply> studentExercises = studentExercisesMap.get(studentCoursesEntry.getKey());
 | 
	
		
			
				|  |  | -                if(CollectionUtils.isEmpty(studentExercises)){
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
 | 
	
		
			
				|  |  | -                    results.add(studentExtracurricularExercisesSituation);
 | 
	
		
			
				|  |  | -                    continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(studentCoursesEntry.getKey());
 | 
	
		
			
				|  |  | +            if(!CollectionUtils.isEmpty(studentHomeworks)){
 | 
	
		
			
				|  |  | +                studentExtracurricularExercisesSituation.setActualExercisesNum(1);
 | 
	
		
			
				|  |  | +                long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
 | 
	
		
			
				|  |  | +                studentExtracurricularExercisesSituation.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();
 | 
	
		
			
				|  |  | +                    studentExtracurricularExercisesSituation.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;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
 | 
	
		
			
				|  |  | +                studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            List<ExtracurricularExercisesReply> studentExercises = studentExercisesMap.get(studentCoursesEntry.getKey());
 | 
	
		
			
				|  |  | +            if(!CollectionUtils.isEmpty(studentExercises)){
 | 
	
		
			
				|  |  |                  studentExtracurricularExercisesSituation.setActualExercisesNum(1);
 | 
	
		
			
				|  |  |                  long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
 | 
	
		
			
				|  |  | -                studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
 | 
	
		
			
				|  |  | +                if(studentExtracurricularExercisesSituation.getExercisesReplyNum()<=0){
 | 
	
		
			
				|  |  | +                    studentExtracurricularExercisesSituation.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();
 | 
	
		
			
				|  |  | -                    studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
 | 
	
		
			
				|  |  | +                    if(Objects.isNull(studentExtracurricularExercisesSituation.getLastSubmitTime())||lastSubmitTime.after(studentExtracurricularExercisesSituation.getLastSubmitTime())){
 | 
	
		
			
				|  |  | +                        studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  int exercisesMessageNum=0;
 | 
	
		
			
				|  |  |                  int exercisesMessageTimelyNum=0;
 | 
	
	
		
			
				|  | @@ -198,10 +200,14 @@ public class StudentServeServiceImpl implements StudentServeService {
 | 
	
		
			
				|  |  |                          exercisesMessageTimelyNum+=1;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
 | 
	
		
			
				|  |  | -                studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
 | 
	
		
			
				|  |  | -                results.add(studentExtracurricularExercisesSituation);
 | 
	
		
			
				|  |  | +                if(studentExtracurricularExercisesSituation.getExercisesMessageNum()<=0){
 | 
	
		
			
				|  |  | +                    studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if(studentExtracurricularExercisesSituation.getExercisesMessageTimelyNum()<=0){
 | 
	
		
			
				|  |  | +                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            results.add(studentExtracurricularExercisesSituation);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
 |