Bläddra i källkod

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

liujc 2 år sedan
förälder
incheckning
9966ff5797

+ 1 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceSumDto.java

@@ -26,8 +26,5 @@ public class TeacherAttendanceSumDto {
     private TeacherAttendanceQueryInfo.TeacherAttendanceEnum teacherAttendanceStatus = TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NO_COURSE;
 
     @ApiModelProperty(value = "本学期异常考勤课程数")
-    private Integer errCourseNum;
-
-    @ApiModelProperty(value = "本学期总课程数")
-    private Integer totalCourseNum;
+    private Integer errCourseNum = 0;
 }

+ 4 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -118,6 +118,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
     @Autowired
+    private CourseScheduleModifyLogService courseScheduleModifyLogService;
+    @Autowired
     private StudentApplyRefundsDao studentApplyRefundsDao;
     @Autowired
     private RedisCache<String, Object> redisCache;
@@ -2497,8 +2499,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             imUserFriendService.refreshClassImUserFriend(classGroupId);
             // 通知学校端
-
-
             for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
                 if (CollectionUtils.isEmpty(classGroup4MixDto.getClassGroupTeacherMapperList())) {
                     continue;
@@ -2738,12 +2738,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //学生结算表
             courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIds);
         }
+        //学校端推送
+        courseScheduleModifyLogService.pushSchoolCourseCreate(courseScheduleList.get(0),musicGroup);
         if (musicGroup.getStatus() == PROGRESS) {
             imUserFriendService.refreshClassImUserFriend(classGroupId);
         }
-
-
-
         return BaseController.succeed(classGroup);
     }
 

+ 41 - 3
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));
@@ -1217,15 +1225,15 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				if(CollectionUtils.isNotEmpty(attendances)){
 					dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NORMAL);
 					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){
@@ -1244,6 +1252,36 @@ 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())){
+								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);
+				}
 			}
 			if(queryInfo.getTeacherAttendanceStatus() != null){
 				dtoList = dtoList.stream().filter(e->e.getTeacherAttendanceStatus() == queryInfo.getTeacherAttendanceStatus()).collect(Collectors.toList());

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

@@ -627,12 +627,10 @@
         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,
-               COUNT(CASE WHEN ta.sign_in_status_ = 1 and ta.sign_in_status_ = 1 THEN NULL ELSE 1 END) errCourseNum,
+        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_
-        left join teacher_attendance ta ON ta.course_schedule_id_ = cs.id_ AND ta.teacher_id_ = cs.actual_teacher_id_
         left join sys_user su ON su.id_ = cs.actual_teacher_id_
         <include refid="queryTeacherAttendanceSql"/>
         group by cs.actual_teacher_id_
@@ -640,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>
@@ -699,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