浏览代码

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

zouxuan 2 年之前
父节点
当前提交
ba29dff0ea

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

@@ -27,7 +27,4 @@ public class TeacherAttendanceSumDto {
 
     @ApiModelProperty(value = "本学期异常考勤课程数")
     private Integer errCourseNum = 0;
-
-    @ApiModelProperty(value = "本学期总课程数")
-    private Integer totalCourseNum = 0;
 }

+ 38 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -1192,15 +1192,23 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			Date now = new Date();
 			String monday = DateUtil.dateToString(DateUtil.getWeekDayWithDate(now, Calendar.MONDAY), DateUtil.ISO_EXPANDED_DATE_FORMAT);
 			String sunday = DateUtil.dateToString(DateUtil.getWeekDayWithDate(now, Calendar.SUNDAY), DateUtil.ISO_EXPANDED_DATE_FORMAT);
+			//获取本周考勤列表
 			TeacherAttendanceQueryInfo info = new TeacherAttendanceQueryInfo();
 			info.setStartTerm(monday);
 			info.setEndTerm(sunday);
 			info.setMusicGroupIds(queryInfo.getMusicGroupIds());
 			List<TeacherAttendanceWrapper.CourseTeacherAttendance> courseTeacherAttendances = teacherAttendanceDao.queryTeacherAttendanceForWeek(info);
+			//获取本学期考勤
+			info.setStartTerm(startTerm);
+			info.setEndTerm(endTerm);
+			info.setMusicGroupIds(queryInfo.getMusicGroupIds());
+			List<TeacherAttendanceWrapper.CourseTeacherAttendance> termCourseTeacherAttendances = teacherAttendanceDao.queryTeacherAttendanceForWeek(info);
 			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<>();
 			if(CollectionUtils.isNotEmpty(courseTeacherAttendances)){
 				attendanceMap = courseTeacherAttendances.stream().collect(Collectors.groupingBy(e -> e.getActualTeacherId()));
+				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));
@@ -1216,13 +1224,39 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				List<TeacherAttendanceWrapper.CourseTeacherAttendance> attendances = attendanceMap.get(dto.getTeacherId());
 				if(CollectionUtils.isNotEmpty(attendances)){
 					dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NORMAL);
-					int errCourseNum = 0;
 					att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendances) {
-						if(attendance.getCourseStatus() == CourseStatusEnum.NOT_START){
-							continue att;
-						}
 						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())){
+								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;
+									}
+								}
+							}
+						}
+					}
+				}
+				List<TeacherAttendanceWrapper.CourseTeacherAttendance> termAttendances = termAttendanceMap.get(dto.getTeacherId());
+				if(CollectionUtils.isNotEmpty(termAttendances)){
+					int errCourseNum = 0;
+					att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendances) {
+						if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
 							errCourseNum++;
 							continue att;
 						}
@@ -1235,13 +1269,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 								if(school != null){
 									Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
 									if(!signRange){
-										dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
 										errCourseNum++;
 										continue att;
 									}
 									signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
 									if(!signRange){
-										dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
 										errCourseNum++;
 									}
 								}

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

@@ -627,7 +627,7 @@
         AND ta.sign_in_time_ IS NOT NULL ORDER BY ta.sign_in_time_ ASC LIMIT 1
     </select>
     <select id="queryTeacherAttendance" resultType="com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto">
-        select cg.type_ classGroupType,cs.actual_teacher_id_ teacherId,COUNT(distinct cs.id_) totalCourseNum,
+        select cg.type_ classGroupType,cs.actual_teacher_id_ teacherId,
                cs.class_group_id_ classGroupId,su.avatar_ teacherAvatar,su.real_name_ teacherName
         from course_schedule cs
         left join class_group cg ON cg.id_ = cs.class_group_id_
@@ -638,7 +638,7 @@
 
     <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
+            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_)
             <if test="queryInfo.startTerm != null and queryInfo.startTerm != ''">
                 AND cs.class_date_ BETWEEN #{queryInfo.startTerm} AND #{queryInfo.endTerm}
             </if>
@@ -697,7 +697,7 @@
         <if test="query.courseType != null and query.courseType != ''">
             AND cs.type_ = #{query.courseType}
         </if>
-        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.status_ != 'NOT_START'
+        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_)
     </select>
     <update id="cleanCourseTeacherSignInfo">
         UPDATE teacher_attendance