Pārlūkot izejas kodu

作业布置优化

zouxuan 4 gadi atpakaļ
vecāks
revīzija
d7298d58f8

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

@@ -1855,6 +1855,10 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     List<CourseSchedule> queryByCourseScheduleIds(Map<String, Object> params);
 
+    int countHomeworkPojoByCourseScheduleIds(Map<String, Object> params);
+
+    List<TeacherServeHomeworkPojo> queryHomeworkPojoByCourseScheduleIds(Map<String, Object> params);
+
     int countByCourseScheduleIds(Map<String, Object> params);
 
     /**

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -193,7 +193,7 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @author Joburgess
      * @date 2020/1/8
      */
-    List<Map<Integer, Integer>> countCourseStudentNum(@Param("courseIds") List<Long> courseIds);
+    List<Map<Long, Long>> countCourseStudentNum(@Param("courseIds") List<Long> courseIds);
 
     /**
      * @param courseScheduleId:

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -378,12 +378,12 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @param courseIds
      * @return
      */
-    List<Map<Long, Long>> countCourseStudentMemberNum(@Param("courseIds") Set<Long> courseIds);
+    List<Map<Long, Long>> countCourseStudentMemberNum(@Param("courseIds") List<Long> courseIds);
 
     /**
      * 获取课程生学员声部名称
      * @param courseIds
      * @return
      */
-    List<Map<Long, String>> countCourseStudentSubjectName(@Param("courseIds") Set<Long> courseIds);
+    List<Map<Long, String>> countCourseStudentSubjectName(@Param("courseIds") List<Long> courseIds);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -142,4 +143,7 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
                                              @Param("type") String type,
                                              @Param("studentIds") List<Integer> studentIds);
 
+    List<Long> queryCourseIdByClassDate(@Param("firstDayOfMonth") Date firstDayOfMonth,
+                                       @Param("lastDayOfMonth") Date lastDayOfMonth,
+                                       @Param("teacherId") Integer teacherId);
 }

+ 0 - 20
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherServeHomeworkDto.java

@@ -10,28 +10,8 @@ public class TeacherServeHomeworkDto extends CourseSchedule {
 
     private String subjectName;
 
-    private String studentSubjectName;
-
-    private Integer memberNum;
-
     private int homeworkExist;
 
-    public String getStudentSubjectName() {
-        return studentSubjectName;
-    }
-
-    public void setStudentSubjectName(String studentSubjectName) {
-        this.studentSubjectName = studentSubjectName;
-    }
-
-    public Integer getMemberNum() {
-        return memberNum;
-    }
-
-    public void setMemberNum(Integer memberNum) {
-        this.memberNum = memberNum;
-    }
-
     public String getSubjectName() {
         return subjectName;
     }

+ 104 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherServeHomeworkPojo.java

@@ -0,0 +1,104 @@
+package com.ym.mec.biz.dal.dto;
+
+public class TeacherServeHomeworkPojo {
+
+    private String subjectName;
+
+    private Integer memberNum;
+
+    private String classGroupName;
+
+    private String courseScheduleType;
+
+    private Long courseScheduleId;
+
+    private Integer studentNum;
+
+    private String classDate;
+
+    private String startClassTime;
+
+    private String endClassTime;
+
+    private String teachMode;
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getMemberNum() {
+        return memberNum;
+    }
+
+    public void setMemberNum(Integer memberNum) {
+        this.memberNum = memberNum;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public String getCourseScheduleType() {
+        return courseScheduleType;
+    }
+
+    public void setCourseScheduleType(String courseScheduleType) {
+        this.courseScheduleType = courseScheduleType;
+    }
+
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public String getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(String classDate) {
+        this.classDate = classDate;
+    }
+
+    public String getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(String startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public String getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(String endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+
+    public String getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(String teachMode) {
+        this.teachMode = teachMode;
+    }
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherServeHomeworkQueryInfo.java

@@ -14,10 +14,20 @@ public class TeacherServeHomeworkQueryInfo extends QueryInfo {
 
     private Date sunday;
 
+    private Date month;
+
     private Integer teacherId;
 
     private String courseType;
 
+    public Date getMonth() {
+        return month;
+    }
+
+    public void setMonth(Date month) {
+        this.month = month;
+    }
+
     public String getCourseType() {
         return courseType;
     }

+ 3 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/StudentExtracurricularExercisesSituationService.java

@@ -1,9 +1,6 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.dto.StudentExercisesSituationDto;
-import com.ym.mec.biz.dal.dto.TeacherServeDto;
-import com.ym.mec.biz.dal.dto.TeacherServeExtraDto;
-import com.ym.mec.biz.dal.dto.TeacherServeHomeworkDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
 import com.ym.mec.biz.dal.page.StudentExercisesSituationQueryInfo;
 import com.ym.mec.biz.dal.page.StudentServiceDetailQueryInfo;
@@ -58,6 +55,8 @@ public interface StudentExtracurricularExercisesSituationService extends BaseSer
 
     PageInfo<TeacherServeHomeworkDto> queryTeacherServeHomeworkDetail(TeacherServeHomeworkQueryInfo queryInfo);
 
+    PageInfo<TeacherServeHomeworkPojo> queryTeacherServeHomeworkDetail1(TeacherServeHomeworkQueryInfo queryInfo);
+
     PageInfo<TeacherServeExtraDto> queryTeacherServeExtraDetail(TeacherServeHomeworkQueryInfo queryInfo);
 
 }

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

@@ -1120,7 +1120,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             params.put("offset", pageInfo.getOffset());
             dataList = courseScheduleDao.getCourseSchedulesWithDate(params);
             List<Long> allCourseScheduleIds = dataList.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
-            List<Map<Integer, Integer>> courseStudentNumMaps = courseScheduleStudentPaymentDao.countCourseStudentNum(allCourseScheduleIds);
+            List<Map<Long, Long>> courseStudentNumMaps = courseScheduleStudentPaymentDao.countCourseStudentNum(allCourseScheduleIds);
             Map<Long, Long> courseStudentNumMap = MapUtil.convertIntegerMap(courseStudentNumMaps);
 
 			List<StudentAttendance> studentAttendances = studentAttendanceDao.getWithCoursesAndExcludeQuitStudent(allCourseScheduleIds);

+ 54 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java

@@ -61,6 +61,8 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 	private CourseHomeworkDao courseHomeworkDao;
 	@Autowired
 	private ClassGroupDao classGroupDao;
+	@Autowired
+	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 
 	@Override
 	public BaseDAO<Long, StudentExtracurricularExercisesSituation> getDAO() {
@@ -346,9 +348,11 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 		MapUtil.populateMap(params, queryInfo);
 		params.put("courseIds", courseIds);
 
-		Map<Long,Long> memberNumMap = MapUtil.convertIntegerMap(studentDao.countCourseStudentMemberNum(courseIds));
-		Map<Long,String> studentSubjectMap = MapUtil.convertMybatisMap(studentDao.countCourseStudentSubjectName(courseIds));
-
+		List<CourseHomework> courseHomeworks = courseHomeworkDao.findByCourseSchedules(new ArrayList<>(courseIds));
+		Map<Long, Long> courseHomeworkMap = new HashMap<>();
+		if(!CollectionUtils.isEmpty(courseHomeworks)){
+			courseHomeworkMap = courseHomeworks.stream().collect(Collectors.groupingBy(CourseHomework::getCourseScheduleId, Collectors.counting()));
+		}
 		List<TeacherServeHomeworkDto> dataList = new ArrayList<>();
 		int count = courseScheduleDao.countByCourseScheduleIds(params);
 		if (count > 0) {
@@ -361,12 +365,6 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 				List<ClassGroup> classGroups = classGroupDao.findByClassGroupIds(classGroupIds, null);
 				idClassGroupMap = classGroups.stream().collect(Collectors.toMap(ClassGroup::getId, c -> c, (c1, c2) -> c1));
 			}
-
-			List<CourseHomework> courseHomeworks = courseHomeworkDao.findByCourseSchedules(new ArrayList<>(courseIds));
-			Map<Long, Long> courseHomeworkMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(courseHomeworks)){
-				courseHomeworkMap = courseHomeworks.stream().collect(Collectors.groupingBy(CourseHomework::getCourseScheduleId, Collectors.counting()));
-			}
 			List<Integer> subjectIds = new ArrayList<>();
 			for (CourseSchedule courseSchedule : courseSchedules) {
 				if(idClassGroupMap.containsKey(courseSchedule.getClassGroupId())&&StringUtils.isNotBlank(idClassGroupMap.get(courseSchedule.getClassGroupId()).getSubjectIdList())){
@@ -386,9 +384,6 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 				subjects = subjectDao.findBySubjectIds(new ArrayList<>(subjectIds));
 			}
 			for (TeacherServeHomeworkDto teacherServeHomeworkDto : dataList) {
-				Long aLong = memberNumMap.get(teacherServeHomeworkDto.getId());
-				teacherServeHomeworkDto.setMemberNum(aLong==null?0:aLong.intValue());
-				teacherServeHomeworkDto.setStudentSubjectName(studentSubjectMap.get(teacherServeHomeworkDto.getId()));
 				if(idClassGroupMap.containsKey(teacherServeHomeworkDto.getClassGroupId())){
 					ClassGroup classGroup = idClassGroupMap.get(teacherServeHomeworkDto.getClassGroupId());
 					if(StringUtils.isNotBlank(classGroup.getSubjectIdList())){
@@ -407,6 +402,53 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 	}
 
 	@Override
+	public PageInfo<TeacherServeHomeworkPojo> queryTeacherServeHomeworkDetail1(TeacherServeHomeworkQueryInfo queryInfo) {
+		if(Objects.isNull(queryInfo.getMonth())){
+			throw new BizException("请指定课程时间");
+		}
+		PageInfo<TeacherServeHomeworkPojo> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		//获取时间段内有服务指标的课程(课后作业)
+		Date firstDayOfMonth = DateUtil.getFirstDayOfMonth(queryInfo.getMonth());
+		Date lastDayOfMonth = DateUtil.getLastDayOfMonth(queryInfo.getMonth());
+		List<Long> courseIds = studentExtracurricularExercisesSituationDao.queryCourseIdByClassDate(firstDayOfMonth,lastDayOfMonth,queryInfo.getTeacherId());
+		if(courseIds == null || courseIds.size() == 0){
+			return pageInfo;
+		}
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+		params.put("courseIds", courseIds);
+
+		Map<Long,Long> memberNumMap = MapUtil.convertIntegerMap(studentDao.countCourseStudentMemberNum(courseIds));
+		Map<Long,String> studentSubjectMap = MapUtil.convertMybatisMap(studentDao.countCourseStudentSubjectName(courseIds));
+		Map<Long, Long> studentNumMap = MapUtil.convertIntegerMap(courseScheduleStudentPaymentDao.countCourseStudentNum(courseIds));
+
+		List<CourseHomework> courseHomeworks = courseHomeworkDao.findByCourseSchedules(new ArrayList<>(courseIds));
+		if(!CollectionUtils.isEmpty(courseHomeworks)){
+			Set<Long> collect = courseHomeworks.stream().map(e -> e.getCourseScheduleId()).collect(Collectors.toSet());
+			courseIds.removeAll(collect);
+		}
+		if(courseIds.size() == 0){
+			return pageInfo;
+		}
+		List<TeacherServeHomeworkPojo> homeworkPojos;
+		int count = courseScheduleDao.countHomeworkPojoByCourseScheduleIds(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			homeworkPojos = courseScheduleDao.queryHomeworkPojoByCourseScheduleIds(params);
+			pageInfo.setRows(homeworkPojos);
+			for (TeacherServeHomeworkPojo homeworkPojo : homeworkPojos) {
+				Long aLong = memberNumMap.get(homeworkPojo.getCourseScheduleId());
+				homeworkPojo.setMemberNum(aLong==null?0:aLong.intValue());
+				Long aLong1 = studentNumMap.get(homeworkPojo.getCourseScheduleId());
+				homeworkPojo.setStudentNum(aLong1==null?0:aLong1.intValue());
+				homeworkPojo.setSubjectName(studentSubjectMap.get(homeworkPojo.getCourseScheduleId()));
+			}
+		}
+		return pageInfo;
+	}
+
+	@Override
 	public PageInfo<TeacherServeExtraDto> queryTeacherServeExtraDetail(TeacherServeHomeworkQueryInfo queryInfo) {
 		if(Objects.isNull(queryInfo.getMonday())||Objects.isNull(queryInfo.getSunday())||Objects.isNull(queryInfo.getTeacherId())){
 			throw new BizException("请指定教师");

+ 41 - 6
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -3842,9 +3842,6 @@
         <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
             #{courseId}
         </foreach>
-        <if test="courseType != null and courseType != ''">
-            AND FIND_IN_SET(cs.type_,#{courseType})
-        </if>
         ORDER BY cs.class_date_,cs.start_class_time_,cs.id_
         <include refid="global.limit"></include>
     </select>
@@ -3856,9 +3853,6 @@
         <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
             #{courseId}
         </foreach>
-        <if test="courseType != null and courseType != ''">
-            AND FIND_IN_SET(cs.type_,#{courseType})
-        </if>
     </select>
 
     <select id="getMusicGroupHasStartCourseNum" resultType="integer">
@@ -4033,4 +4027,45 @@
         WHERE class_date_ BETWEEN #{schoolTerm.startSchoolTerm} AND #{schoolTerm.endSchoolTerm} AND class_group_id_ = #{schoolTerm.classGroupId} AND type_ = #{schoolTerm.courseScheduleType}
         AND CONCAT(class_date_,' ',start_class_time_) &lt;= #{schoolTerm.courseClassTime} AND is_lock_ = 0 AND del_flag_ = 0 AND pre_course_flag_ = 0
     </select>
+    <resultMap id="TeacherServeHomeworkPojo" type="com.ym.mec.biz.dal.dto.TeacherServeHomeworkPojo">
+        <result property="classGroupName" column="name_"/>
+        <result property="courseScheduleType" column="type_"/>
+        <result property="courseScheduleId" column="id_"/>
+        <result property="startClassTime" column="start_class_time_"/>
+        <result property="endClassTime" column="end_class_time_"/>
+        <result property="classDate" column="class_date_"/>
+        <result property="teachMode" column="teach_mode_"/>
+    </resultMap>
+    <select id="queryHomeworkPojoByCourseScheduleIds" resultMap="TeacherServeHomeworkPojo">
+        SELECT
+        cs.id_,
+        cg.name_,
+        cs.type_,
+        cs.class_date_,
+        cs.start_class_time_,
+        cs.end_class_time_,
+        cs.teach_mode_
+        FROM course_schedule cs
+        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+        WHERE cs.id_ IN
+        <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+            #{courseId}
+        </foreach>
+        <if test="courseType != null and courseType != ''">
+            AND FIND_IN_SET(cs.type_,#{courseType})
+        </if>
+        ORDER BY cs.class_date_,cs.start_class_time_,cs.id_
+        <include refid="global.limit"/>
+    </select>
+    <select id="countHomeworkPojoByCourseScheduleIds" resultType="java.lang.Integer">
+        SELECT COUNT(cs.id_)
+        FROM course_schedule cs
+        WHERE cs.id_ IN
+        <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+            #{courseId}
+        </foreach>
+        <if test="courseType != null and courseType != ''">
+            AND FIND_IN_SET(cs.type_,#{courseType})
+        </if>
+    </select>
 </mapper>

+ 0 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -305,12 +305,10 @@
 			COUNT( DISTINCT sa.user_id_ ) AS 'value'
 		FROM
 			course_schedule_student_payment sa
-			LEFT JOIN class_group_student_mapper cgsm ON sa.class_group_id_=cgsm.class_group_id_ AND sa.user_id_=cgsm.user_id_
 		WHERE course_schedule_id_ IN
 			<foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
 				#{courseId}
 			</foreach>
-			AND cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL')
 		GROUP BY
 			course_schedule_id_
 	</select>

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -717,4 +717,11 @@
 		</foreach>
 		GROUP BY sees.monday_
 	</select>
+	<select id="queryCourseIdByClassDate" resultType="java.lang.Long">
+		SELECT DISTINCT csts.course_schedule_id_ FROM course_schedule_teacher_salary csts
+		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+		LEFT JOIN student_extracurricular_exercises_situation_ se ON se.teacher_id_ = csts.user_id_
+		WHERE csts.user_id_ = #{teacherId} AND cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth}
+		AND FIND_IN_SET(cs.id_,se.course_ids_) AND se.serve_type_ = 'HOMEWORK'
+	</select>
 </mapper>

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java

@@ -65,7 +65,7 @@ public class ExtracurricularExercisesController extends BaseController {
             return failed("用户信息获取失败");
         }
         queryInfo.setTeacherId(sysUser.getId());
-        return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeHomeworkDetail(queryInfo));
+        return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeHomeworkDetail1(queryInfo));
     }
 
     @ApiOperation(value = "创建课外训练")