瀏覽代碼

Merge branch 'feature-operating-report' of http://git.dayaedu.com/yonge/mec into feature-operating-report

zouxuan 5 年之前
父節點
當前提交
4cbff2723b

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

@@ -284,4 +284,13 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      * @param userId
      */
     void cleanCourseStudentSignOut(@Param("courseId") Long courseId, @Param("userId") Integer userId);
+
+    /**
+     * @describe 获取课程的学员签到记录(排除退学学员)
+     * @author Joburgess
+     * @date 2020.09.15
+     * @param courseIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentAttendance>
+     */
+    List<StudentAttendance> getWithCoursesAndExcludeQuitStudent(@Param("courseIds") List<Long> courseIds);
 }

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java

@@ -39,6 +39,8 @@ public class StudentAttendance {
 	@ApiModelProperty(value = "学生姓名",required = false)
 	private String username;
 
+	private String avatar;
+
 	/**  */
 	@ApiModelProperty(value = "声部列表",required = false)
 	private String subjectName;
@@ -133,7 +135,15 @@ public class StudentAttendance {
 	public Long getId(){
 		return this.id;
 	}
-			
+
+	public String getAvatar() {
+		return avatar;
+	}
+
+	public void setAvatar(String avatar) {
+		this.avatar = avatar;
+	}
+
 	public GroupType getGroupType() {
 		return groupType;
 	}

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

@@ -907,7 +907,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             List<Map<Integer, Integer>> courseStudentNumMaps = courseScheduleStudentPaymentDao.countCourseStudentNum(allCourseScheduleIds);
             Map<Long, Long> courseStudentNumMap = MapUtil.convertIntegerMap(courseStudentNumMaps);
 
-            List<Integer> teacherIds=new ArrayList<>();
+			List<StudentAttendance> studentAttendances = studentAttendanceDao.getWithCoursesAndExcludeQuitStudent(allCourseScheduleIds);
+			Map<Long, List<StudentAttendance>> courseStudentAttendanceMap = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
+
+			List<Integer> teacherIds=new ArrayList<>();
             for (CourseScheduleDto courseScheduleEndDto : dataList) {
                 teacherIds.add(courseScheduleEndDto.getActualTeacherId());
             }
@@ -923,6 +926,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 if(Objects.nonNull(group)){
                     dataList.get(i).setGroupName(group.getGroupName());
                 }
+				dataList.get(i).setLeaveStudentNum(0);
+				dataList.get(i).setStudentNum(0);
+                if(courseStudentAttendanceMap.containsKey(dataList.get(i).getId())){
+					List<StudentAttendance> courseStudentAttendances = courseStudentAttendanceMap.get(dataList.get(i).getId());
+					dataList.get(i).setLeaveStudentNum((int) courseStudentAttendances.stream().filter(s->StudentAttendanceStatusEnum.LEAVE.equals(s.getStatus())).count());
+					dataList.get(i).setStudentNum((int) courseStudentAttendances.stream().filter(s->StudentAttendanceStatusEnum.NORMAL.equals(s.getStatus())).count());
+				}
             }
         }
         if (count == 0) {
@@ -1249,6 +1259,16 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		checkNewCourseSchedules(existCourses, false);
 		courseScheduleDao.batchUpdate(existCourses);
+
+		studentAttendanceDao.deleteByCourseSchedules(courseIds);
+		//删除作业
+		courseHomeworkService.delHomwworkByCourseScheduleId(courseIds);
+		//删除评论
+		courseScheduleReviewDao.delByCourseScheduleIds(courseIds);
+		//删除申述
+		courseScheduleComplaintsDao.delByCourseScheduleIds(courseIds);
+		//清除考勤申述
+		teacherAttendanceDao.clearAttendanceComplaints(courseIds);
 		courseScheduleModifyLogDao.batchInsert(scheduleModifyLogs);
 	}
 
@@ -1395,11 +1415,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				lastEndClassTime = cs1.getEndClassTime();
 			}
 
-			if(i!=sameDayCourses.size()-1&&DateUtil.minutesBetween(lastEndClassTime, sameDayCourses.get(i + 1).getStartClassTime())>=singleClassMinutes){
+			if(i!=sameDayCourses.size()-1&&DateUtil.minutesBetween(lastEndClassTime, sameDayCourses.get(i + 1).getStartClassTime())>=singleClassMinutes+10){
 				break;
 			}
 		}
 
+		lastEndClassTime = DateUtil.addMinutes(lastEndClassTime, 10);;
+
 		Date endClassTime = DateUtil.addMinutes(lastEndClassTime, singleClassMinutes);
 		if(!DateUtil.isSameDay(lastEndClassTime, endClassTime)){
 			return false;
@@ -1446,7 +1468,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				return false;
 			}
 			if(!courseLeaveStudentIdsMap.containsKey(sa.getCourseScheduleId())){
-				courseLeaveStudentIdsMap.put(sa.getCourseScheduleId(), Collections.EMPTY_SET);
+				courseLeaveStudentIdsMap.put(sa.getCourseScheduleId(), new HashSet<>());
 			}
 			CourseSchedule cs = idCourseMap.get(sa.getCourseScheduleId());
 			if(DateUtil.addHours(sa.getCreateTime(),4).compareTo(cs.getStartClassTime())<0){

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

@@ -516,31 +516,31 @@
 
     <select id="getCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT
-        cs.id_ seal_class_id_,
-        cg.name_,
-        cs.type_,
-        cs.id_,
-        cs.class_date_,
-        CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
-        CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
-        cs.actual_teacher_id_,
-        cs.status_,
-        cs.student_num_,
-        cs.leave_student_num_,
-        cs.teach_mode_,
-        cs.music_group_id_,
-        cs.group_type_,
-        cs.class_group_id_,
-        cg.student_num_ total_student_num_,
-        su.real_name_ teacher_name_,
-        IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
-        s.name_ school_name_
+            cs.id_ seal_class_id_,
+            cg.name_,
+            cs.type_,
+            cs.id_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.actual_teacher_id_,
+            cs.status_,
+            cs.student_num_,
+            cs.leave_student_num_,
+            cs.teach_mode_,
+            cs.music_group_id_,
+            cs.group_type_,
+            cs.class_group_id_,
+            cg.student_num_ total_student_num_,
+            su.real_name_ teacher_name_,
+            IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
+            s.name_ school_name_
         FROM
-        course_schedule cs
-        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-        LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
-        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=cs.actual_teacher_id_
-        LEFT JOIN school s ON cs.schoole_id_=s.id_
+            course_schedule cs
+            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=cs.actual_teacher_id_
+            LEFT JOIN school s ON cs.schoole_id_=s.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         <if test="classGroupIds != null and organIdList!=null">

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -273,14 +273,16 @@
 	</select>
     <select id="countCourseStudentNum" resultType="java.util.Map">
 		SELECT
-			course_schedule_id_ AS 'key',
-			COUNT( DISTINCT user_id_ ) AS 'value'
+			sa.course_schedule_id_ AS 'key',
+			COUNT( DISTINCT sa.user_id_ ) AS 'value'
 		FROM
-			course_schedule_student_payment
+			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>

+ 17 - 5
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -14,6 +14,7 @@
         <result column="course_schedule_id_" property="courseScheduleId"/>
         <result column="user_id_" property="userId"/>
         <result column="username_" property="username"/>
+        <result column="avatar_" property="avatar"/>
         <result column="subject_name_" property="subjectName"/>
         <result column="phone_" property="phone"/>
         <result column="teacher_id_" property="teacherId"/>
@@ -470,7 +471,7 @@
             GROUP BY sa.course_schedule_id_
     </select>
     <select id="findStudentAttendance" resultMap="StudentAttendance">
-        SELECT sa.*,su.username_,su.phone_,IF(s.name_ IS NULL,s1.name_,s.name_) subject_name_
+        SELECT sa.*,su.username_,su.phone_,IF(s.name_ IS NULL,s1.name_,s.name_) subject_name_,su.avatar_
         FROM course_schedule_student_payment cssp
         LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
         LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
@@ -478,14 +479,16 @@
         LEFT JOIN student_registration sr ON sr.user_id_ = cssp.user_id_ AND cssp.music_group_id_ = sr.music_group_id_
         LEFT JOIN `subject` s ON s.id_ = cg.subject_id_list_
         LEFT JOIN `subject` s1 ON s1.id_ = sr.actual_subject_id_
-        WHERE cssp.course_schedule_id_ = #{search}
+        LEFT JOIN class_group_student_mapper cgsm ON cssp.class_group_id_=cgsm.class_group_id_ AND cssp.user_id_=cgsm.user_id_
+        WHERE cssp.course_schedule_id_ = #{search} AND cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL')
         ORDER BY sa.id_ DESC
         <include refid="global.limit"/>
     </select>
     <select id="countStudentAttendance" resultType="java.lang.Integer">
-        SELECT COUNT(id_)
-        FROM course_schedule_student_payment
-        WHERE course_schedule_id_ = #{search}
+        SELECT COUNT(cssp.id_)
+        FROM course_schedule_student_payment cssp
+        LEFT JOIN class_group_student_mapper cgsm ON cssp.class_group_id_=cgsm.class_group_id_ AND cssp.user_id_=cgsm.user_id_
+        WHERE course_schedule_id_ = #{search} AND cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL')
     </select>
     <select id="findByCourseId" resultMap="StudentAttendance">
         SELECT * FROM student_attendance WHERE course_schedule_id_=#{courseId}
@@ -496,4 +499,13 @@
             #{courseId}
         </foreach>
     </select>
+
+    <select id="getWithCoursesAndExcludeQuitStudent" resultMap="StudentAttendance">
+        SELECT sa.* FROM student_attendance 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 cgsm.status_ NOT IN ('QUIT', 'QUIT_SCHOOL') AND course_schedule_id_ IN
+        <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+            #{courseId}
+        </foreach>
+    </select>
 </mapper>

+ 2 - 4
mec-gateway/mec-gateway-web/src/main/resources/application.yml

@@ -35,7 +35,7 @@ ribbon:
   eureka:
     enable: true
   ReadTimeout: 30000
-  SocketTimeout: 10000
+  ConnectTimeout: 10000
 
 ### 配置网关反向代理
 zuul:
@@ -113,11 +113,9 @@ hystrix:
         isolation:
           thread:
             #发生熔断的超时时间
-            timeoutInMilliseconds: 60000
+            timeoutInMilliseconds: 90000
           semaphore:
             maxConcurrentRequests: 500
-          circuitBreaker:
-            sleepWindowInMilliseconds: 5000
 
 
 #spring boot admin 相关配置

+ 2 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.teacher.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
@@ -323,6 +324,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "课程批量调整检测-仅时间")
     @PostMapping("/courseAdjustOnlyWithClassDateCheck")
     public HttpResponseResult courseAdjustOnlyWithClassDateCheck(@RequestBody VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo){
+        System.out.println(JSON.toJSONString(vipGroupCourseAdjustInfo));
         return succeed(scheduleService.courseAdjustOnlyWithClassDateCheck(vipGroupCourseAdjustInfo));
     }
 

+ 29 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentStudentController.java

@@ -0,0 +1,29 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.09.14
+ */
+@RestController
+@RequestMapping("eduStudentAttendance")
+public class EduStudentStudentController extends BaseController {
+
+    @Autowired
+    private StudentAttendanceService studentAttendanceService;
+
+    @ApiOperation(value = "获取某节课学生签到列表")
+    @GetMapping("/findStudentAttendance")
+    public Object findStudentAttendance(QueryInfo queryInfo){
+        return succeed(studentAttendanceService.findStudentAttendance(queryInfo));
+    }
+
+}