Browse Source

1、恢复休学时返回默认教师

Joburgess 5 years ago
parent
commit
a897bd263e

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

@@ -90,6 +90,15 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     int countByCourseSchedule(Long courseScheduleId);
 
     /**
+     * @describe 统计每节课上的学生数
+     * @author Joburgess
+     * @date 2019/12/26
+     * @param courseScheduleIds:
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+     */
+    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+    /**
      * @describe 根据课程获取最后的点名时间
      * @author Joburgess
      * @date 2019/10/24

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java

@@ -44,6 +44,17 @@ public class CourseScheduleDto extends CourseSchedule {
 
     private String subjectName;
 
+    @ApiModelProperty(value = "是否是第一次进行学生点名")
+    private int studentAttendanceIsFirstTime;
+
+    public int getStudentAttendanceIsFirstTime() {
+        return studentAttendanceIsFirstTime;
+    }
+
+    public void setStudentAttendanceIsFirstTime(int studentAttendanceIsFirstTime) {
+        this.studentAttendanceIsFirstTime = studentAttendanceIsFirstTime;
+    }
+
     public String getSubjectName() {
         return subjectName;
     }

+ 0 - 22
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java

@@ -83,28 +83,6 @@ public class TeacherAttendanceDto {
     @ApiModelProperty(value = "学生数量")
     private Integer studentNum;
 
-    @ApiModelProperty(value = "可更新学生签到信息限制时间")
-    private Integer enableStudentAttendanceTimeRange;
-
-    @ApiModelProperty(value = "是否是第一次进行学生点名")
-    private int studentAttendanceIsFirstTime;
-
-    public Integer getEnableStudentAttendanceTimeRange() {
-        return enableStudentAttendanceTimeRange;
-    }
-
-    public void setEnableStudentAttendanceTimeRange(Integer enableStudentAttendanceTimeRange) {
-        this.enableStudentAttendanceTimeRange = enableStudentAttendanceTimeRange;
-    }
-
-    public int getStudentAttendanceIsFirstTime() {
-        return studentAttendanceIsFirstTime;
-    }
-
-    public void setStudentAttendanceIsFirstTime(int studentAttendanceIsFirstTime) {
-        this.studentAttendanceIsFirstTime = studentAttendanceIsFirstTime;
-    }
-
     public Integer getStudentNum() {
         return studentNum;
     }

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

@@ -113,16 +113,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(currentCourseDetail)){
 		    throw new BizException("课程不存在");
         }
-		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
 		YesOrNoEnum yesOrNoEnum = enableOnlyNormalAttendance(currentCourseDetail.getStartClassTime(),
 				user.getId().longValue(),
 				true,
 				currentCourseDetail.getSchoolId().intValue());
 		currentCourseDetail.setOnlyNormal(yesOrNoEnum);
 		currentCourseDetail.setCurrentClassTimes(courseScheduleDao.countClassGroupOverCourseNum(currentCourseDetail.getClassId()));
-		currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
-		int i = studentAttendanceDao.countByCourseSchedule(courseID);
-		currentCourseDetail.setStudentAttendanceIsFirstTime(i>0?0:1);
 
 		currentCourseDetail.setCurrentTime(new Date());
 		currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES)));
@@ -376,7 +372,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<Map<Integer, String>> subjectNameCourseMaps = subjectDao.findSubjectNameCourseMaps(courseScheduleIds);
 			subjectNameCourseMap = MapUtil.convertMybatisMap(subjectNameCourseMaps);
 		}
+		List<Map<Integer, Integer>> studentNumCourseMaps=null;
+		if(CollectionUtils.isEmpty(courseScheduleIds)){
+			studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds);
+		}
+		Map<Integer, Integer> studentNumCourseMap=new HashMap<>();
+		if(Objects.nonNull(studentNumCourseMaps)){
+			studentNumCourseMap=MapUtil.convertIntegerMap(studentNumCourseMaps);
+		}
 		for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+			Integer studentNum=studentNumCourseMap.get(courseScheduleDto.getId());
+			if(Objects.nonNull(studentNum)){
+				courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum>0?0:1);
+			}else{
+				courseScheduleDto.setStudentAttendanceIsFirstTime(1);
+			}
+
 			if(now.before(courseScheduleDto.getStartClassTime())){
 				courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
 			}else if(now.after(courseScheduleDto.getEndClassTime())){

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

@@ -361,4 +361,18 @@
     <select id="countStudentAttendenceNum" resultType="int">
         SELECT COUNT(*) FROM student_attendance sa WHERE course_schedule_id_ = #{courseScheduleId} AND status_='NORMAL'
     </select>
+    <select id="countStudentAttendancesByCourses" resultType="java.util.Map">
+        SELECT
+            course_schedule_id_ AS 'key',
+            COUNT( id_ ) AS 'value'
+        FROM
+            student_attendance
+        WHERE
+            course_schedule_id_ IN
+            <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+                #{courseScheduleId}
+            </foreach>
+        GROUP BY
+            course_schedule_id_
+    </select>
 </mapper>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -298,7 +298,7 @@
             teacher t
             LEFT JOIN sys_user su ON t.id_ = su.id_
         WHERE
-            FIND_IN_SET(t.subject_id_, #{subjectIds})
+            FIND_IN_SET(#{subjectIds},t.subject_id_)
             AND INTE_ARRAY ( CONCAT(t.organ_id_,',',t.flow_organ_range_), #{organIds} )
     </select>
     <select id="findByTeacherId" resultMap="TeacherBasicDto">

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

@@ -5,12 +5,14 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -37,6 +39,8 @@ public class TeacherCourseScheduleController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     @ApiOperation(value = "根据月份获取该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
@@ -59,10 +63,12 @@ public class TeacherCourseScheduleController extends BaseController {
         if(null==user){
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type);
         Map<String,Object> result = new HashMap<>();
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealDaysRange",1);
+        result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
         return succeed(result);
     }