Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

周箭河 4 vuotta sitten
vanhempi
commit
fd73a04cff

+ 1 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -12,7 +11,6 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.time.DateUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -652,7 +650,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
-        List<StudentAttendance> dataList = null;
+        List<StudentAttendance> dataList = new ArrayList<StudentAttendance>();
         int count = studentAttendanceDao.countStudentAttendance(params);
         if (count > 0) {
             pageInfo.setTotal(count);

+ 173 - 48
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -428,7 +428,123 @@ public class StudentServeServiceImpl implements StudentServeService {
 
         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().toString())).collect(Collectors.toList());
+                    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> 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());
+                    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.deleteByMonday(monDayDate.toString(), studentIds);
+
             BigDecimal currentPage1=BigDecimal.ONE,
                     pageSize1=new BigDecimal(10000),
                     total1=new BigDecimal(results.size()),
@@ -482,6 +598,8 @@ public class StudentServeServiceImpl implements StudentServeService {
 //                if(!CollectionUtils.isEmpty(newService))
 //                    studentExtracurricularExercisesSituationDao.batchInsert(newService);
 
+                studentExtracurricularExercisesSituationDao.batchInsert(rows);
+
                 currentPage1=currentPage1.add(BigDecimal.ONE);
             }
             return;
@@ -490,6 +608,9 @@ public class StudentServeServiceImpl implements StudentServeService {
 
     @Override
     public void updateExercisesSituation(Date date,List<Integer> studentIds, Integer teacherId) {
+        if(true){
+            return;
+        }
         LocalDate nowDate = LocalDateTime.ofInstant(date.toInstant(), DateUtil.zoneId).toLocalDate();
         if(Objects.isNull(date)){
             nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
@@ -546,66 +667,70 @@ public class StudentServeServiceImpl implements StudentServeService {
             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;
+                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);
                     }
-                    exercisesMessageNum+=1;
-                    if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
-                        exercisesMessageTimelyNum+=1;
+                    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);
                 }
-                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);
+                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);
                     }
-                }
-                int exercisesMessageNum=0;
-                int exercisesMessageTimelyNum=0;
-                for (ExtracurricularExercisesReply studentHomework : studentExercises) {
-                    if(!new Integer(1).equals(studentHomework.getStatus())){
-                        continue;
+                    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);
+                        }
                     }
-                    if(!new Integer(1).equals(studentHomework.getIsReplied())){
-                        continue;
+                    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;
+                        }
                     }
-                    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);
                     }
-                }
-                if(weekServiceWithStudent.getExercisesMessageNum()<=0){
-                    weekServiceWithStudent.setExercisesMessageNum(exercisesMessageNum>0?1:0);
-                }
-                if(weekServiceWithStudent.getExercisesMessageTimelyNum()<=0){
-                    weekServiceWithStudent.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
                 }
             }
         }

+ 6 - 2
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -215,6 +215,9 @@
             <if test="updateTime != null">
                 update_time_ = NOW(),
             </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
             <if test="parentsCompany != null">
                 parents_company_ = #{parentsCompany},
             </if>
@@ -719,8 +722,9 @@
     	select sr.*,s.name_ subject_name_,mg.status_ music_group_status_,mg.name_ music_group_name_,mgq.status_ music_group_quit_status_ 
     	from student_registration sr left join subject s on s.id_ = sr.actual_subject_id_
     	left join music_group mg on sr.music_group_id_ = mg.id_
-    	left join music_group_quit mgq  on mgq.music_group_id_ = mg.id_ and mgq.join_date_ = sr.create_time_
+    	left join (select mgq.* from music_group_quit mgq LEFT JOIN student_registration sr ON mgq.music_group_id_ = sr.music_group_id_ AND mgq.user_id_ = sr.user_id_ AND mgq.join_date_ = sr.create_time_
+		 where mgq.id_ in (select max(id_) from music_group_quit group by music_group_id_,user_id_)) mgq  on mgq.music_group_id_ = mg.id_
     	where sr.user_id_ = #{userId}
-    	order by sr.id_ 
+    	order by sr.id_
     </select>
 </mapper>