Browse Source

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

liujc 2 years ago
parent
commit
6ae0fd4796

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TeacherAttendanceWrapper.java

@@ -27,6 +27,8 @@ public class TeacherAttendanceWrapper {
         private Integer schoolId;
 
         private TeachModeEnum teachMode;
+
+        private Integer classGroupId;
     }
 
     @Data

+ 60 - 48
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -1206,15 +1206,19 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			Map<Integer, List<TeacherAttendanceWrapper.CourseTeacherAttendance>> attendanceMap = new HashMap<>(dtoList.size());
 			Map<Integer, List<TeacherAttendanceWrapper.CourseTeacherAttendance>> termAttendanceMap = new HashMap<>(dtoList.size());
 			Map<Integer, School> idSchoolMap = new HashMap<>();
+			Set<Integer> schoolIds = new HashSet<>();
 			if(CollectionUtils.isNotEmpty(courseTeacherAttendances)){
 				attendanceMap = courseTeacherAttendances.stream().collect(Collectors.groupingBy(e -> e.getActualTeacherId()));
+				schoolIds = courseTeacherAttendances.stream().map(TeacherAttendanceWrapper.CourseTeacherAttendance::getSchoolId).collect(Collectors.toSet());
+			}
+			if(CollectionUtils.isNotEmpty(termCourseTeacherAttendances)){
 				termAttendanceMap = termCourseTeacherAttendances.stream().collect(Collectors.groupingBy(e -> e.getActualTeacherId()));
-				Set<Integer> schoolIds = courseTeacherAttendances.stream().map(TeacherAttendanceWrapper.CourseTeacherAttendance::getSchoolId).collect(Collectors.toSet());
-				if(schoolIds != null && schoolIds.size() > 0){
-					List<School> schools = schoolDao.getSchools(new ArrayList<>(schoolIds));
-					if(!org.springframework.util.CollectionUtils.isEmpty(schools)){
-						idSchoolMap = schools.stream().collect(Collectors.toMap(School::getId, s->s, (s1, s2)->s1));
-					}
+				schoolIds.addAll(termCourseTeacherAttendances.stream().map(TeacherAttendanceWrapper.CourseTeacherAttendance::getSchoolId).collect(Collectors.toSet()));
+			}
+			if(CollectionUtils.isNotEmpty(schoolIds)){
+				List<School> schools = schoolDao.getSchools(new ArrayList<>(schoolIds));
+				if(!org.springframework.util.CollectionUtils.isEmpty(schools)){
+					idSchoolMap = schools.stream().collect(Collectors.toMap(School::getId, s->s, (s1, s2)->s1));
 				}
 			}
 			//定位范围
@@ -1223,29 +1227,33 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			for (TeacherAttendanceSumDto dto : dtoList) {
 				List<TeacherAttendanceWrapper.CourseTeacherAttendance> attendances = attendanceMap.get(dto.getTeacherId());
 				if(CollectionUtils.isNotEmpty(attendances)){
-					dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NORMAL);
-					att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendances) {
-						if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
-							dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
-							break att;
-						}
-						if(attendance.getTeachMode() == TeachModeEnum.OFFLINE){
-							if(StringUtils.isEmpty(attendance.getSignInLongitudeLatitude()) || StringUtils.isEmpty(attendance.getSignOutLongitudeLatitude())){
+					Map<Integer, List<TeacherAttendanceWrapper.CourseTeacherAttendance>> classMap = attendances.stream().collect(Collectors.groupingBy(e -> e.getClassGroupId()));
+					List<TeacherAttendanceWrapper.CourseTeacherAttendance> attendanceList = classMap.get(dto.getClassGroupId());
+					if(CollectionUtils.isNotEmpty(attendanceList)){
+						dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NORMAL);
+						att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendances) {
+							if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
 								dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
 								break att;
-							}else {
-								//计算考勤范围
-								School school = idSchoolMap.get(attendance.getSchoolId());
-								if(school != null){
-									Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
-									if(!signRange){
-										dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
-										break att;
-									}
-									signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
-									if(!signRange){
-										dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
-										break att;
+							}
+							if(attendance.getTeachMode() == TeachModeEnum.OFFLINE){
+								if(StringUtils.isEmpty(attendance.getSignInLongitudeLatitude()) || StringUtils.isEmpty(attendance.getSignOutLongitudeLatitude())){
+									dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
+									break att;
+								}else {
+									//计算考勤范围
+									School school = idSchoolMap.get(attendance.getSchoolId());
+									if(school != null){
+										Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
+										if(!signRange){
+											dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
+											break att;
+										}
+										signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
+										if(!signRange){
+											dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
+											break att;
+										}
 									}
 								}
 							}
@@ -1254,33 +1262,37 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				}
 				List<TeacherAttendanceWrapper.CourseTeacherAttendance> termAttendances = termAttendanceMap.get(dto.getTeacherId());
 				if(CollectionUtils.isNotEmpty(termAttendances)){
-					int errCourseNum = 0;
-					att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : termAttendances) {
-						if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
-							errCourseNum++;
-							continue att;
-						}
-						if(attendance.getTeachMode() == TeachModeEnum.OFFLINE){
-							if(StringUtils.isEmpty(attendance.getSignInLongitudeLatitude()) || StringUtils.isEmpty(attendance.getSignOutLongitudeLatitude())){
+					Map<Integer, List<TeacherAttendanceWrapper.CourseTeacherAttendance>> classMap = termAttendances.stream().collect(Collectors.groupingBy(e -> e.getClassGroupId()));
+					List<TeacherAttendanceWrapper.CourseTeacherAttendance> attendanceList = classMap.get(dto.getClassGroupId());
+					if(CollectionUtils.isNotEmpty(attendanceList)){
+						int errCourseNum = 0;
+						att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendanceList) {
+							if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
 								errCourseNum++;
-							}else {
-								//计算考勤范围
-								School school = idSchoolMap.get(attendance.getSchoolId());
-								if(school != null){
-									Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
-									if(!signRange){
-										errCourseNum++;
-										continue att;
-									}
-									signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
-									if(!signRange){
-										errCourseNum++;
+								continue att;
+							}
+							if(attendance.getTeachMode() == TeachModeEnum.OFFLINE){
+								if(StringUtils.isEmpty(attendance.getSignInLongitudeLatitude()) || StringUtils.isEmpty(attendance.getSignOutLongitudeLatitude())){
+									errCourseNum++;
+								}else {
+									//计算考勤范围
+									School school = idSchoolMap.get(attendance.getSchoolId());
+									if(school != null){
+										Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
+										if(!signRange){
+											errCourseNum++;
+											continue att;
+										}
+										signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
+										if(!signRange){
+											errCourseNum++;
+										}
 									}
 								}
 							}
 						}
+						dto.setErrCourseNum(errCourseNum);
 					}
-					dto.setErrCourseNum(errCourseNum);
 				}
 			}
 			if(queryInfo.getTeacherAttendanceStatus() != null){

+ 6 - 4
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -633,12 +633,14 @@
         left join class_group cg ON cg.id_ = cs.class_group_id_
         left join sys_user su ON su.id_ = cs.actual_teacher_id_
         <include refid="queryTeacherAttendanceSql"/>
-        group by cs.actual_teacher_id_
+        group by cs.actual_teacher_id_,cs.class_group_id_
     </select>
 
     <sql id="queryTeacherAttendanceSql">
         <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 OR cs.new_course_id_=cs.id_)
+            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 OR cs.new_course_id_ = cs.id_)
+            AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             <if test="queryInfo.startTerm != null and queryInfo.startTerm != ''">
                 AND cs.class_date_ BETWEEN #{queryInfo.startTerm} AND #{queryInfo.endTerm}
             </if>
@@ -663,13 +665,13 @@
         </where>
     </sql>
     <select id="queryTeacherAttendanceForWeek" resultType="com.ym.mec.biz.dal.wrapper.TeacherAttendanceWrapper$CourseTeacherAttendance">
-        select cs.actual_teacher_id_ actualTeacherId,cs.id_ courseScheduleId,
+        select cs.actual_teacher_id_ actualTeacherId,cs.id_ courseScheduleId,cs.class_group_id_,
         cs.status_ courseStatus,ta.sign_in_status_ signInStatus,ta.sign_out_status_ signOutStatus,cs.teach_mode_ teachMode,
                ta.sign_in_longitude_latitude_ signInLongitudeLatitude,ta.sign_out_longitude_latitude_ signOutLongitudeLatitude,cs.schoole_id_ schoolId
         from course_schedule cs
         left join teacher_attendance ta ON ta.course_schedule_id_ = cs.id_ AND ta.teacher_id_ = cs.actual_teacher_id_
         <include refid="queryTeacherAttendanceSql"/>
-        group by cs.actual_teacher_id_
+        group by cs.id_
     </select>
     <select id="getCourseTeacherAttendance" resultType="com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto">
         select ta.sign_in_time_ signInTime,ta.sign_in_status_ signInStatus,ta.sign_in_longitude_latitude_ signInLongitudeLatitude,