| 
					
				 | 
			
			
				@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.enums.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.page.GroupCourseScheduleQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.page.GroupQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.constant.CommonConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.controller.BaseController; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -86,6 +87,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private StudentDao studentDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysMessageService sysMessageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private GroupDao groupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static final Logger LOGGER = LoggerFactory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             .getLogger(PracticeGroupService.class); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -315,6 +318,105 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public PageInfo findTeacherCourseGroupsWithWeb(GroupQueryInfo queryInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> params = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MapUtil.populateMap(params, queryInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CourseGroupExtendDto> teacherCourseGroups=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int count = coursesGroupDao.countTeacherGroupsWithWeb(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pageInfo.setTotal(count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            params.put("offset", pageInfo.getOffset()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teacherCourseGroups = coursesGroupDao.findTeacherCourseGroupsWithWeb(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<String> groupIds = teacherCourseGroups.stream().map(e -> String.valueOf(e.getId())).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<GroupBaseCourseInfoDto> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (CourseGroupExtendDto teacherCourseGroup : teacherCourseGroups) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(groupBaseCourseInfo)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getCurrentClassTimes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageInfo.setRows(teacherCourseGroups); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return pageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public PageInfo findStudentCourseGroupsWithWeb(GroupQueryInfo queryInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> params = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MapUtil.populateMap(params, queryInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CourseGroupExtendDto> teacherCourseGroups=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int count = coursesGroupDao.countStudentGroupsWithWeb(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pageInfo.setTotal(count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            params.put("offset", pageInfo.getOffset()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teacherCourseGroups = coursesGroupDao.findStudentCourseGroupsWithWeb(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Integer> teacherIds = teacherCourseGroups.stream().map(CourseGroupExtendDto::getTeacherId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<String> groupIds = teacherCourseGroups.stream().map(e -> String.valueOf(e.getId())).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<GroupBaseCourseInfoDto> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<SimpleUserDto> teachers = teacherDao.findSimpleTeachers(teacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, String> idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getUserName)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (CourseGroupExtendDto teacherCourseGroup : teacherCourseGroups) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(groupBaseCourseInfo)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getCurrentClassTimes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                teacherCourseGroup.setTeacherName(idNameMap.get(teacherCourseGroup.getTeacherId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageInfo.setRows(teacherCourseGroups); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return pageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public GroupHeadInfoDto getGroupHeadInfo(Long courseScheduleId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(Objects.isNull(courseScheduleId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("请选择课程"); 
			 |