浏览代码

feat:1、服务指标

Joburgess 4 年之前
父节点
当前提交
59e93a34bc

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java

@@ -289,7 +289,7 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 			studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
 			studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
 			results.add(studentExtracurricularExercisesSituation);
 			results.add(studentExtracurricularExercisesSituation);
 		}
 		}
-		studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
+		studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString(),null);
 		studentExtracurricularExercisesSituationDao.batchInsert(results);
 		studentExtracurricularExercisesSituationDao.batchInsert(results);
 	}
 	}
 
 
@@ -359,7 +359,7 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 			results.add(studentExtracurricularExercisesSituation);
 			results.add(studentExtracurricularExercisesSituation);
 		}
 		}
 
 
-		studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
+		studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString(),null);
 
 
 		BigDecimal currentPage=BigDecimal.ONE,
 		BigDecimal currentPage=BigDecimal.ONE,
                 pageSize=new BigDecimal(10000),
                 pageSize=new BigDecimal(10000),

+ 114 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -428,7 +428,119 @@ public class StudentServeServiceImpl implements StudentServeService {
 
 
         if(!CollectionUtils.isEmpty(results)){
         if(!CollectionUtils.isEmpty(results)){
 
 
+            if(CollectionUtils.isEmpty(studentIds)){
+                studentIds = results.stream().map(StudentExtracurricularExercisesSituation::getStudentId).collect(Collectors.toList());
+            }
+
+            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));
+            }
+
+            for (StudentExtracurricularExercisesSituation weekServiceWithStudent : results) {
+                List<StudentServeCourseHomeworkDto> studentAllHomeworks = studentHomeworkMap.get(weekServiceWithStudent.getStudentId());
+                weekServiceWithStudent.setActualExercisesNum(0);
+                if(!CollectionUtils.isEmpty(studentAllHomeworks)&&weekServiceWithStudent.getServeType().equals("HOMEWORK")){
+                    Set<String> courseIds = Arrays.stream(weekServiceWithStudent.getCourseIds().split(",")).collect(Collectors.toSet());
+                    List<StudentServeCourseHomeworkDto> studentHomeworks = studentAllHomeworks.stream().filter(s -> courseIds.contains(s.getCourseScheduleId())).collect(Collectors.toList());
+                    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> studentAllExercises = studentExercisesMap.get(weekServiceWithStudent.getStudentId());
+                if(!CollectionUtils.isEmpty(studentAllExercises)&&weekServiceWithStudent.getServeType().equals("EXERCISE")){
+                    List<ExtracurricularExercisesReply> studentExercises = studentAllExercises.stream().filter(s -> weekServiceWithStudent.getTeacherId().equals(s.getExtracurricularExercises().getTeacherId())).collect(Collectors.toList());
+                    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.deleteByMonday(monDayDate.toString(), studentIds);
             studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString(), studentIds);
+
             BigDecimal currentPage1=BigDecimal.ONE,
             BigDecimal currentPage1=BigDecimal.ONE,
                     pageSize1=new BigDecimal(10000),
                     pageSize1=new BigDecimal(10000),
                     total1=new BigDecimal(results.size()),
                     total1=new BigDecimal(results.size()),
@@ -482,6 +594,8 @@ public class StudentServeServiceImpl implements StudentServeService {
 //                if(!CollectionUtils.isEmpty(newService))
 //                if(!CollectionUtils.isEmpty(newService))
 //                    studentExtracurricularExercisesSituationDao.batchInsert(newService);
 //                    studentExtracurricularExercisesSituationDao.batchInsert(newService);
 
 
+                studentExtracurricularExercisesSituationDao.batchInsert(rows);
+
                 currentPage1=currentPage1.add(BigDecimal.ONE);
                 currentPage1=currentPage1.add(BigDecimal.ONE);
             }
             }
             return;
             return;