Prechádzať zdrojové kódy

学校端课程相关接口

zouxuan 2 rokov pred
rodič
commit
7aaa598b63
17 zmenil súbory, kde vykonal 277 pridanie a 38 odobranie
  1. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  3. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  4. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseStatusEnum.java
  5. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StudentAttendanceStatusEnum.java
  6. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/ClassesForDayDto.java
  7. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/CourseStudentDto.java
  8. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/DailySummaryOfClassesForTheCurrentSemesterDto.java
  9. 15 5
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  10. 103 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  11. 45 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  12. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  13. 24 0
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  14. 5 5
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  15. 0 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduOrganizationController.java
  16. 17 9
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolCourseScheduleController.java
  17. 4 2
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -6,6 +6,9 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.page.CourseDetailQueryInfo;
+import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto;
+import com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -1993,4 +1996,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
         "param") Map<String, Object> param, @Param("courseIds") List<Long> courseIds);
 
     int countTeacherServeHomeworkDetailV2(@Param("param") Map<String, Object> params, @Param("courseIds") List<Long> courseIds);
+
+    List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(@Param("musicGroupIds") List<String> musicGroupIds,
+                                                                                @Param("startTerm") String startTerm,
+                                                                                @Param("endTerm") String endTerm);
+
+    List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(@Param("musicGroupIds") List<String> musicGroupIds,
+                                                                                                      @Param("startTerm") String startTerm,
+                                                                                                      @Param("endTerm") String endTerm);
+
+    List<ClassesForDayDto> getListClassesForDay(@Param("musicGroupIds") List<String> musicGroupIds, @Param("classDate") String classDate, @Param("courseId") Long courseId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -527,4 +527,13 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     List<Map<Integer, String>> queryUserEduMap(@Param("userIdList") List<Integer> userIdList);
 
     List<Map<Integer, String>> queryUserCoopMap(@Param("userIdList") List<Integer> userIdList);
+
+    /**
+    * @description: 根据合作单位获取进行中的乐团列表
+     * @param coopId
+    * @return java.util.List<java.lang.String>
+    * @author zx
+    * @date 2023/5/5 17:08
+    */
+    List<String> findNormalByCooperationId(@Param("coopId") Integer coopId);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -4,6 +4,8 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
@@ -352,4 +354,22 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     void updateQualified(@Param("courseScheduleId") Long courseScheduleId,
                          @Param("studentIds") List<Integer> studentIds,
                          @Param("qualifiedFlag") Integer qualifiedFlag);
+
+    /**
+    * @description: 统计课程学员考勤信息
+     * @param courseIds
+    * @return java.util.List<com.ym.mec.biz.dal.school.dto.ClassesForDayDto>
+    * @author zx
+    * @date 2023/5/6 10:39
+    */
+    List<ClassesForDayDto> statisticalAttendanceInformation(@Param("courseIds") List<Long> courseIds);
+
+    /**
+    * @description: 获取学校端课程关联的学员信息
+     * @param courseId
+    * @return java.util.List<com.ym.mec.biz.dal.school.dto.CourseStudentDto>
+    * @author zx
+    * @date 2023/5/6 11:43
+    */
+    List<CourseStudentDto> queryCourseStudentList(@Param("courseId") Long courseId);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseStatusEnum.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum CourseStatusEnum implements BaseEnum<String,CourseStatusEnum> {
@@ -7,6 +8,7 @@ public enum CourseStatusEnum implements BaseEnum<String,CourseStatusEnum> {
     UNDERWAY("UNDERWAY","进行中"),
     OVER("OVER","已结束");
 
+    @EnumValue
     private String code;
 
     private String msg;

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StudentAttendanceStatusEnum.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.ym.mec.common.enums.BaseEnum;
 
 /**
@@ -12,6 +13,7 @@ public enum StudentAttendanceStatusEnum implements BaseEnum<String,StudentAttend
     DROP_OUT("DROP_OUT","退学"),
     LATE("LATE","迟到");
 
+    @EnumValue
     private String code;
 
     private String msg;

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/ClassesForDayDto.java

@@ -18,12 +18,18 @@ public class ClassesForDayDto {
     @ApiModelProperty(value = "上课时间",required = false)
     private String classDate;
 
+    @ApiModelProperty(value = "老师编号",required = false)
+    private Integer teacherId;
+
     @ApiModelProperty(value = "老师头像",required = false)
     private String teacherAvatar;
 
     @ApiModelProperty(value = "老师名称",required = false)
     private String teacherName;
 
+    @ApiModelProperty(value = "乐团编号",required = false)
+    private String musicGroupId;
+
     @ApiModelProperty(value = "乐团名称",required = false)
     private String musicGroupName;
 
@@ -41,4 +47,7 @@ public class ClassesForDayDto {
 
     @ApiModelProperty(value = "旷课人数",required = false)
     private Integer attendanceTruantNum;
+
+    @ApiModelProperty(value = "退学人数",required = false)
+    private Integer attendanceDropNum;
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/CourseStudentDto.java

@@ -6,6 +6,9 @@ import lombok.Data;
 
 @Data
 public class CourseStudentDto {
+    @ApiModelProperty(value = "学员编号",required = false)
+    private Integer studentId;
+
     @ApiModelProperty(value = "学员头像",required = false)
     private String studentAvatar;
 

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/DailySummaryOfClassesForTheCurrentSemesterDto.java

@@ -3,9 +3,11 @@ package com.ym.mec.biz.dal.school.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.time.LocalDate;
+
 @Data
 public class DailySummaryOfClassesForTheCurrentSemesterDto extends SummaryOfCurrentSemesterCoursesDto{
 
     @ApiModelProperty(value = "上课时间",required = false)
-    private String courseDate;
+    private LocalDate courseDate;
 }

+ 15 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
 import com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto;
 import com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -696,12 +697,12 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 
 	/**
 	* @description: 获取学校端当前学期课程数量汇总
-	 * @param schoolId
+	 * @param coopId
 	* @return java.util.List<com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto>
 	* @author zx
 	* @date 2023/5/4 10:15
 	*/
-    List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer schoolId);
+    List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer coopId);
 
 	/**
 	* @description: 获取当前学期每天课程汇总
@@ -710,16 +711,16 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	* @author zx
 	* @date 2023/5/4 10:31
 	*/
-	List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId);
+	Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId);
 
 	/**
 	* @description: 获取当天课程列表
-	 * @param schoolId
+	 * @param coopId
 	* @return java.util.List<com.ym.mec.biz.dal.school.dto.ClassesForDayDto>
 	* @author zx
 	* @date 2023/5/4 10:50
 	*/
-	List<ClassesForDayDto> getListClassesForDay(Integer schoolId,String classDate);
+	List<ClassesForDayDto> getListClassesForDay(Integer coopId,String classDate);
 
 	/**
 	* @description: 获取课程详情
@@ -729,4 +730,13 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	* @date 2023/5/4 11:06
 	*/
 	ClassesForDayDto getCourseDetail(Long courseId);
+
+	/**
+	* @description: 获取学校端课程学员列表
+	 * @param courseId
+	* @return java.util.List<com.ym.mec.biz.dal.school.dto.CourseStudentDto>
+	* @author zx
+	* @date 2023/5/6 11:29
+	*/
+	List<CourseStudentDto> queryCourseStudentList(Long courseId);
 }

+ 103 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
 import com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto;
 import com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto;
 import com.ym.mec.biz.event.source.CourseEventSource;
@@ -33,6 +34,7 @@ import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.json.JsonUtil;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -45,17 +47,14 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
-
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.IsoFields;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -5996,30 +5995,121 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
     @Override
-    public List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer schoolId) {
+    public List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer coopId) {
+		//获取合作单位关联的所有乐团列表
+		List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
+		if(CollectionUtils.isEmpty(musicGroupIds)){
+			return Collections.EMPTY_LIST;
+		}
 		//获取当前学期
 		Date date = new Date();
 		String startTerm = DateUtil.getStartTerm(date);
 		String endTerm = DateUtil.getEndTerm(date);
-        return null;
+		return courseScheduleDao.getSummaryOfCurrentSemesterCourses(musicGroupIds,startTerm,endTerm);
     }
 
 	@Override
-	public List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId) {
+	public Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>> getDailySummaryOfClassesForTheCurrentSemester(Integer coopId) {
+		//获取合作单位关联的所有乐团列表
+		List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
 		//获取当前学期
 		Date date = new Date();
 		String startTerm = DateUtil.getStartTerm(date);
 		String endTerm = DateUtil.getEndTerm(date);
-		return null;
+		List<DailySummaryOfClassesForTheCurrentSemesterDto> summary;
+		if(CollectionUtils.isEmpty(musicGroupIds)){
+			summary = new ArrayList<>();
+		}else {
+			summary = courseScheduleDao.getDailySummaryOfClassesForTheCurrentSemester(musicGroupIds, startTerm, endTerm);
+		}
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateUtil.ISO_EXPANDED_DATE_FORMAT);
+		LocalDate startDate = LocalDate.parse(startTerm, formatter);
+		LocalDate endDate = LocalDate.parse(endTerm, formatter);
+		Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>> result = new HashMap<>();
+		LocalDate currentWeekStart = startDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+		while (!currentWeekStart.isAfter(endDate)) {
+			int currentWeekNumber = currentWeekStart.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
+			LocalDate currentWeekEnd = currentWeekStart.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+			List<DailySummaryOfClassesForTheCurrentSemesterDto> currentWeekDates = new ArrayList<>();
+			for (DailySummaryOfClassesForTheCurrentSemesterDto dto : summary) {
+				if (!dto.getCourseDate().isBefore(currentWeekStart) && dto.getCourseDate().isBefore(currentWeekEnd)) {
+					currentWeekDates.add(dto);
+				}
+			}
+			result.put(currentWeekNumber, currentWeekDates);
+			currentWeekStart = currentWeekEnd.plusDays(1);
+		}
+		return result;
 	}
 
 	@Override
-	public List<ClassesForDayDto> getListClassesForDay(Integer schoolId,String classDate) {
-		return null;
+	public List<ClassesForDayDto> getListClassesForDay(Integer coopId,String classDate) {
+		//获取合作单位关联的所有乐团列表
+		List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
+		if(CollectionUtils.isEmpty(musicGroupIds)){
+			return Collections.EMPTY_LIST;
+		}
+		List<ClassesForDayDto> listClassesForDay = courseScheduleDao.getListClassesForDay(musicGroupIds, classDate,null);
+		this.initClasses(listClassesForDay);
+		return listClassesForDay;
 	}
 
 	@Override
 	public ClassesForDayDto getCourseDetail(Long courseId) {
-		return null;
+		List<ClassesForDayDto> listClassesForDay = courseScheduleDao.getListClassesForDay(null, null,courseId);
+		this.initClasses(listClassesForDay);
+		return listClassesForDay.get(0);
 	}
+
+	@Override
+	public List<CourseStudentDto> queryCourseStudentList(Long courseId) {
+		List<CourseStudentDto> courseStudentDtos = studentAttendanceDao.queryCourseStudentList(courseId);
+		if(CollectionUtils.isNotEmpty(courseStudentDtos)){
+			List<Integer> studentIds = courseStudentDtos.stream().map(e -> e.getStudentId()).collect(Collectors.toList());
+			List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(studentIds);
+			Map<Integer, SimpleUserDto> simpleUserDtoMap = usersSimpleInfo.stream().collect(Collectors.groupingBy(e -> e.getUserId(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+			for (CourseStudentDto dto : courseStudentDtos) {
+				SimpleUserDto userDto = simpleUserDtoMap.get(dto.getStudentId());
+				if(Objects.nonNull(userDto)){
+					dto.setStudentName(userDto.getUserName());
+					dto.setStudentAvatar(userDto.getAvatar());
+				}
+			}
+		}
+		return courseStudentDtos;
+	}
+
+	private void initClasses(List<ClassesForDayDto> listClassesForDay){
+		if(CollectionUtils.isNotEmpty(listClassesForDay)){
+			Set<String> musicGroupIds = listClassesForDay.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+			//获取乐团名称
+			Map<String,String> musicNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds));
+			//获取老师基本信息
+			List<Integer> teacherIds = listClassesForDay.stream().map(e -> e.getTeacherId()).collect(Collectors.toList());
+			List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(teacherIds);
+			Map<Integer, SimpleUserDto> simpleUserDtoMap = usersSimpleInfo.stream().collect(Collectors.groupingBy(e -> e.getUserId(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+			//统计考勤信息
+			List<Long> courseIds = listClassesForDay.stream().map(e -> e.getCourseId()).collect(Collectors.toList());
+			List<ClassesForDayDto> dtoList = studentAttendanceDao.statisticalAttendanceInformation(courseIds);
+			Map<Long, ClassesForDayDto> dtoMap = dtoList.stream().collect(Collectors.groupingBy(e -> e.getCourseId(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+			for (ClassesForDayDto dto : listClassesForDay) {
+				SimpleUserDto userDto = simpleUserDtoMap.get(dto.getTeacherId());
+				if(Objects.nonNull(userDto)){
+					dto.setTeacherName(userDto.getRealName());
+					dto.setTeacherAvatar(userDto.getAvatar());
+				}
+				dto.setMusicGroupName(musicNameMap.get(dto.getMusicGroupId()));
+				ClassesForDayDto dayDto = dtoMap.get(dto.getCourseId());
+				if(Objects.nonNull(dayDto)){
+					dto.setStudentNum(dayDto.getStudentNum());
+					dto.setAttendanceNormalNum(dayDto.getAttendanceNormalNum());
+					dto.setAttendanceLateNum(dayDto.getAttendanceLateNum());
+					dto.setAttendanceLeaveNum(dayDto.getAttendanceLeaveNum());
+					dto.setAttendanceTruantNum(dayDto.getAttendanceTruantNum());
+					dto.setAttendanceDropNum(dayDto.getAttendanceDropNum());
+				}
+			}
+		}
+	}
+
 }

+ 45 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -4202,10 +4202,53 @@
         count(1)
         from course_schedule cs
         left join course_homework ch on cs.id_ = ch.course_schedule_id_
-
         <where>
-
             <include refid="selectPage"/>
         </where>
     </select>
+
+    <select id="getSummaryOfCurrentSemesterCourses"
+            resultType="com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto">
+        select cs.type_ scheduleType,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 END) subCourseNum,
+               COUNT(cs.id_) totalCourseNum
+        from mec_pro.course_schedule cs
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+        AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
+        AND cs.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
+            #{musicGroupId}
+        </foreach>
+        group by cs.type_
+    </select>
+    <select id="getDailySummaryOfClassesForTheCurrentSemester"
+            resultType="com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto">
+        select cs.class_date_ courseDate,cs.type_ scheduleType,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 END) subCourseNum,
+               COUNT(cs.id_) totalCourseNum
+        from mec_pro.course_schedule cs
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+        AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
+        AND cs.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
+            #{musicGroupId}
+        </foreach>
+        group by cs.class_date_,cs.type_
+    </select>
+    <select id="getListClassesForDay" resultType="com.ym.mec.biz.dal.school.dto.ClassesForDayDto">
+        select cs.id_ courseId,CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',cs.end_class_time_) classDate,cs.status_ courseStatus,cs.name_ courseName,
+        actual_teacher_id_ teacherId,cs.music_group_id_ musicGroupId
+        from mec_pro.course_schedule cs
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+        <if test="classDate != null and classDate != ''">
+            AND cs.class_date_ = #{classDate}
+        </if>
+        <if test="courseId != null and courseId != ''">
+            AND cs.id_ = #{courseId}
+        </if>
+        <if test="musicGroupIds != null and musicGroupIds.size > 0">
+            AND cs.music_group_id_ IN
+            <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
+                #{musicGroupId}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -1247,4 +1247,7 @@
         </foreach>
         GROUP BY sr.user_id_
     </select>
+    <select id="findNormalByCooperationId" resultType="java.lang.String">
+        SELECT id_ FROM music_group WHERE cooperation_organ_id_ = #{coopId} AND mg.status_ = 'PROGRESS'
+    </select>
 </mapper>

+ 24 - 0
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -674,4 +674,28 @@
         </foreach>
         GROUP BY sa.user_id_
     </select>
+    <select id="statisticalAttendanceInformation" resultType="com.ym.mec.biz.dal.school.dto.ClassesForDayDto">
+        select COUNT(cssp.user_id_) studentNum,
+               COUNT(CASE WHEN sa.status_ = 'NORMAL' THEN 1 END) attendanceNormalNum,
+               COUNT(CASE WHEN sa.status_ = 'TRUANT' OR sa.id_ IS NULL THEN 1 END) attendanceTruantNum,
+               COUNT(CASE WHEN sa.status_ = 'LEAVE' THEN 1 END) attendanceLeaveNum,
+               COUNT(CASE WHEN sa.status_ = 'DROP_OUT' THEN 1 END) attendanceDropNum,
+               COUNT(CASE WHEN sa.status_ = 'LATE' THEN 1 END) attendanceLateNum,
+        cssp.course_schedule_id_ courseId
+        from mec_pro.course_schedule_student_payment cssp
+                 left join mec_pro.student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ and sa.user_id_ = cssp.user_id_
+        where cssp.course_schedule_id_ IN
+        <foreach collection="courseIds" item="courseId" separator="," open="(" close=")">
+            #{courseId}
+        </foreach>
+        group by cssp.course_schedule_id_
+    </select>
+    <select id="queryCourseStudentList" resultType="com.ym.mec.biz.dal.school.dto.CourseStudentDto">
+        select cssp.user_id_ studentId,COUNT(CASE WHEN sa.id_ IS NULL THEN 'TRUANT' ELSE sa.status_ END) attendanceStatus,sa.qualified_flag_ qualifiedFlag
+                                      ,CASE WHEN s.membership_end_time_ > NOW() THEN 1 ELSE 0 END memberFlag
+        from mec_pro.course_schedule_student_payment cssp
+        left join mec_pro.student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ and sa.user_id_ = cssp.user_id_
+        left join student s ON s.user_id_ = cssp.user_id_
+        where cssp.course_schedule_id_ = #{courseId}
+    </select>
 </mapper>

+ 5 - 5
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -1249,13 +1249,13 @@ public class DateUtil {
 		String year = DateUtil.getYear(date);
 		if(month >= 9 || month <= 2){
 			if(month >= 9){
-				return year + "-09-01 00:00:00";
+				return year + "-09-01";
 			}else {
 				String year1 = DateUtil.getYear(DateUtil.addYears(date, -1));
-				return year1 + "-09-01 00:00:00";
+				return year1 + "-09-01";
 			}
 		}else {
-			return year + "-03-01 00:00:00";
+			return year + "-03-01";
 		}
     }
 
@@ -1264,9 +1264,9 @@ public class DateUtil {
 		Integer month = Integer.parseInt(DateUtil.getMonth(date));
 		String year = DateUtil.getYear(date);
 		if(month >= 9 || month <= 2){
-			return year + "-02-01 00:00:00";
+			return year + "-02-01";
 		}else {
-			return year + "-08-31 00:00:00";
+			return year + "-08-31";
 		}
     }
 

+ 0 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/EduOrganizationController.java

@@ -33,7 +33,6 @@ public class EduOrganizationController extends BaseController {
     @ApiOperation(value = "获取员工所在分部列表")
     @GetMapping("/queryAllOrgan")
     public HttpResponseResult<List<Organization>> queryAllOrgan() throws Exception {
-
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if(sysUser == null || sysUser.getId() == null){
 	    	Integer tenantId = 1;

+ 17 - 9
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolCourseScheduleController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller.school;
 
 import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
 import com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto;
 import com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto;
 import com.ym.mec.biz.service.CourseScheduleService;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("schoolCourseSchedule")
@@ -27,24 +29,30 @@ public class SchoolCourseScheduleController extends BaseController {
 
     @ApiOperation(value = "课时顶部统计接口---获取当前学期课程汇总")
     @GetMapping("/getSummaryOfCurrentSemesterCourses")
-    public HttpResponseResult<List<SummaryOfCurrentSemesterCoursesDto>> getSummaryOfCurrentSemesterCourses(Integer schoolId) {
-        return succeed(courseScheduleService.getSummaryOfCurrentSemesterCourses(schoolId));
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "coopId", dataType = "Integer", required = true, value = "合作单位"),
+    })
+    public HttpResponseResult<List<SummaryOfCurrentSemesterCoursesDto>> getSummaryOfCurrentSemesterCourses(Integer coopId) {
+        return succeed(courseScheduleService.getSummaryOfCurrentSemesterCourses(coopId));
     }
 
     @ApiOperation(value = "课时每周分组数据接口----获取当前学期每天课程汇总")
     @GetMapping("/getDailySummaryOfClassesForTheCurrentSemester")
-    public HttpResponseResult<List<DailySummaryOfClassesForTheCurrentSemesterDto>> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId) {
-        return succeed(courseScheduleService.getDailySummaryOfClassesForTheCurrentSemester(schoolId));
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "coopId", dataType = "Integer", required = true, value = "合作单位"),
+    })
+    public HttpResponseResult<Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>>> getDailySummaryOfClassesForTheCurrentSemester(Integer coopId) {
+        return succeed(courseScheduleService.getDailySummaryOfClassesForTheCurrentSemester(coopId));
     }
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "classDate", dataType = "String", required = true, value = "上课时间(年月日)"),
-            @ApiImplicitParam(name = "schoolId", dataType = "Integer", required = true, value = "学校"),
+            @ApiImplicitParam(name = "coopId", dataType = "Integer", required = true, value = "合作单位"),
     })
     @ApiOperation(value = "课时每天课程数据详情----获取当天课程列表")
     @GetMapping("/queryListClassesForDay")
-    public HttpResponseResult<List<ClassesForDayDto>> queryListClassesForDay(Integer schoolId,String classDate) {
-        return succeed(courseScheduleService.getListClassesForDay(schoolId,classDate));
+    public HttpResponseResult<List<ClassesForDayDto>> queryListClassesForDay(Integer coopId,String classDate) {
+        return succeed(courseScheduleService.getListClassesForDay(coopId,classDate));
     }
 
     @ApiImplicitParams({
@@ -61,8 +69,8 @@ public class SchoolCourseScheduleController extends BaseController {
     })
     @ApiOperation(value = "课时获取单节课学员名单--获取课程学员列表")
     @GetMapping("/queryCourseStudentList")
-    public HttpResponseResult<ClassesForDayDto> queryCourseStudentList(Long courseId) {
-        return succeed(courseScheduleService.getCourseDetail(courseId));
+    public HttpResponseResult<List<CourseStudentDto>> queryCourseStudentList(Long courseId) {
+        return succeed(courseScheduleService.queryCourseStudentList(courseId));
     }
 
 }

+ 4 - 2
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

@@ -8,7 +8,10 @@ import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -16,7 +19,6 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Collection;
 import java.util.List;
 
 @RequestMapping("schoolTeacherAttendance")