| 
					
				 | 
			
			
				@@ -1,17 +1,22 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.google.common.collect.Lists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.ExtracurricularExercises; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.StudentCourseHomework; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.StudentLessonTrainingDetail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.Teacher; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.enums.ImSendTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.enums.MessageTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.enums.YesOrNoEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.ExtracurricularExercisesService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.StudentLessonTrainingDetailService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.StudentServeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.SysMessageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.dal.BaseDAO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,6 +26,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.message.MessageSenderPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.collection.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang3.ObjectUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -55,6 +61,12 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private StudentCourseHomeworkDao studentCourseHomeworkDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ClassGroupStudentMapperDao classGroupStudentMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private StudentLessonTrainingDetailService studentLessonTrainingDetailService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public BaseDAO<Long, ExtracurricularExercises> getDAO() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return extracurricularExercisesDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -70,16 +82,28 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("请填写内容"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<MusicScoreSubjectDto> scoreSubjectDtoList = exercises.getMusicScoreSubjectDtos(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(StringUtils.isBlank(exercises.getStudentIdList())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(scoreSubjectDtoList == null || scoreSubjectDtoList.size() == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				throw new BizException("请指定学生"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (exercises.getClassGroupId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<ClassGroupStudentMapper> studentMapperList = classGroupStudentMapperDao.findByClassGroup( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                exercises.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CollectionUtils.isEmpty(studentMapperList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("班级学生为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Integer> studentIdList = studentMapperList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .filter(o -> !o.getStatus().equals(ClassGroupStudentStatusEnum.QUIT)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               .map(ClassGroupStudentMapper::getUserId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            exercises.setStudentIdList(StringUtils.join(studentIdList,",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if(StringUtils.isNotBlank(exercises.getStudentIdList()) || CollectionUtils.isEmpty(scoreSubjectDtoList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			List<Integer> studentIdList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			for (MusicScoreSubjectDto musicScoreSubjectDto : scoreSubjectDtoList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				studentIdList.addAll(musicScoreSubjectDto.getUserIdList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			exercises.setStudentIdList(StringUtils.join(studentIdList,",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("请指定学生"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		teacherDao.getLocked(exercises.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Teacher teacher = teacherDao.get(exercises.getTeacherId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -100,32 +124,45 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		extracurricularExercisesDao.insert(exercises); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		String dateStr = DateUtil.dateToString(exercises.getExpireDate(), "MM月dd日HH点"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<List<Integer>, List<MusicScoreSubjectDto>> collect = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Set<List<Integer>> lists = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(!CollectionUtils.isEmpty(scoreSubjectDtoList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			collect = scoreSubjectDtoList.stream().collect(Collectors.groupingBy(e -> e.getUserIdList())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			lists = collect.keySet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (Integer studentId : studentIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentExtraExercise.setExtracurricularExercisesId(exercises.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentExtraExercise.setUserId(studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentExtraExercise.setStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentExtraExercise.setIsReplied(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentExtraExercise.setIsView(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentExtraExercise.setIsRepliedTimely(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentExtraExercise.setMusicScoreId(exercises.getMusicScoreId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(!CollectionUtils.isEmpty(scoreSubjectDtoList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				for (List<Integer> list : lists) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if(list.contains(studentId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						MusicScoreSubjectDto musicScoreSubjectDto = collect.get(list).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						studentExtraExercise.setMusicScoreId(StringUtils.join(musicScoreSubjectDto.getMusicScoreIdList(),",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						studentExtraExercise.setMusicScoreContent(JSONObject.toJSONString(musicScoreSubjectDto.getMusicScoreHomeworkDtoList())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			extracurricularExercisesReplyDao.insert(studentExtraExercise); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentExtraExercise.setExtracurricularExercisesId(exercises.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentExtraExercise.setStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentExtraExercise.setIsReplied(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentExtraExercise.setIsView(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentExtraExercise.setIsRepliedTimely(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentExtraExercise.setMusicScoreId(exercises.getMusicScoreId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ExtracurricularExercisesReply> extracurricularExercisesReplies = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<StudentLessonTrainingDetail> studentLessonTrainingDetailList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(!CollectionUtils.isEmpty(scoreSubjectDtoList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (MusicScoreSubjectDto musicScoreSubjectDto : scoreSubjectDtoList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 原本作业逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (Integer userId : musicScoreSubjectDto.getUserIdList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentExtraExercise.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentExtraExercise.setMusicScoreId(StringUtils.join(musicScoreSubjectDto.getMusicScoreIdList(),",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentExtraExercise.setMusicScoreContent(JSONObject.toJSONString(musicScoreSubjectDto.getMusicScoreHomeworkDtoList())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    extracurricularExercisesReplies.add(ObjectUtils.clone(studentExtraExercise)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 作业详情 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                studentLessonTrainingDetailList.addAll(studentLessonTrainingDetailService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   .homeWorkDetail(musicScoreSubjectDto.getStudentLessonTrainingDetails(), musicScoreSubjectDto.getUserIdList(),exercises.getId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Integer studentId : studentIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                studentExtraExercise.setUserId(studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                extracurricularExercisesReplies.add(ObjectUtils.clone(studentExtraExercise)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 作业详情 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentLessonTrainingDetailList.addAll(studentLessonTrainingDetailService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                       .homeWorkDetail(exercises.getStudentLessonTrainingDetails(), studentIds,exercises.getId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        extracurricularExercisesReplyDao.batchInsert(extracurricularExercisesReplies); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentLessonTrainingDetailService.saveBatch(studentLessonTrainingDetailList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (ExtracurricularExercisesReply extracurricularExercisesReply : extracurricularExercisesReplies) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Integer studentId = extracurricularExercisesReply.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			String notifyUrl = "?courseScheduleID=" + studentExtraExercise.getId() + "&studentCourseHomeworkId=" + studentExtraExercise.getId() + "&extra=1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			String extra = "dayaedu" + notifyUrl + "&userId=" + studentId; 
			 |