zouxuan 6 vuotta sitten
vanhempi
commit
3bdeaaf8b3

+ 30 - 45
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -76,15 +76,13 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
 
-		boolean isAttendance=false;
-
+		Date date = new Date();
 		if(Objects.isNull(teacherAttendance)){
 			teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
 			teacherAttendance.setTeacherId(user.getId());
+			teacherAttendance.setCreateTime(date);
 		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
 			throw new BizException("当前课程已签到");
-		}else{
-			isAttendance=true;
 		}
 
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId(),user.getId());
@@ -96,10 +94,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
 		teacherAttendance.setRemark(teacherSignOutDto.getTeacherAttendanceInfo().getRemark());
 		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
-		Date date = new Date();
+
 		CourseSchedule courseSchedule = courseScheduleDao.get(teacherAttendance.getCourseScheduleId());
 		if(courseSchedule == null){
-
+			throw new BizException("课程信息不存在");
 		}
 		String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
 		String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
@@ -108,7 +106,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 		Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 		Date addMinutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
-		if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
+		if(teacherAttendance.getSignInTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
 
 			if (currentCourseDetail.getEndClassTime().before(date)){
 				throw new BizException("该课程已结束,不能进行签到!");
@@ -118,55 +116,41 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					user.getId().longValue(),
 					true,
 					currentCourseDetail.getSchoolId().intValue());
-
-			if(yesOrNoEnum==YesOrNoEnum.YES){
-				teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
-				result.put("signInStatus",0);
-			}else{
-				//是否在签到时间段内
-
-				Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
-				if(timeGap<= advanceSignInMinutes){
-					teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
-					result.put("signInStatus",0);
-				}else{
-					if(StringUtils.isEmpty(teacherAttendance.getRemark())){
-						//当前为异常签到,请填写原因!
-						result.put("status",2);
-						return result;
-					}
-					teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
-					result.put("signInStatus",1);
+			teacherAttendance.setSignInTime(date);
+			teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+			result.put("signInStatus",0);
+			if(yesOrNoEnum == YesOrNoEnum.YES){
+				//连堂课
+			}else if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classStartDateTime) > 0){
+				//正常签到范围(开始前20分钟  ~  开始之前)
+			}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
+				if(StringUtils.isEmpty(teacherAttendance.getRemark())){
+					//当前为异常签到,请填写原因!
+					result.put("status",2);
+					return result;
 				}
+				//异常签到范围(开始之后  ~  结束之前)
+				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+				result.put("signInStatus",1);
+			}else {
+				throw new BizException("签到时间异常");
 			}
-			teacherAttendance.setSignInTime(date);
 			if(Objects.nonNull(teacherAttendance.getId())){
 				teacherAttendanceDao.update(teacherAttendance);
 			}else{
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
-		}else{
-			if (currentCourseDetail.getEndClassTime().after(date)){
-				throw new BizException("该课程还未结束,不能进行签退!");
-			}
-			if(!Objects.isNull(teacherAttendance.getSignOutStatus())){
-				throw new BizException("该课程已签退!");
-			}
-			int i = DateUtil.hoursBetween(currentCourseDetail.getEndClassTime(), date);
-			if(i<=1){
-				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-			}else{
-				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
-			}
+			return result;
+		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
 			teacherAttendance.setSignOutTime(date);
-			teacherAttendance.setCreateTime(date);
-			if(isAttendance){
+			teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
+			teacherAttendanceDao.update(teacherAttendance);
+			if(Objects.nonNull(teacherAttendance.getId())){
 				teacherAttendanceDao.update(teacherAttendance);
 			}else{
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
-		}
-		if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
+			result.put("signInStatus",0);
 			//新增课堂作业
 			CourseHomework courseHomework=teacherSignOutDto.getCourseHomeworkInfo();
 			courseHomework.setCourseScheduleId(teacherAttendance.getCourseScheduleId());
@@ -176,11 +160,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			courseHomeworkService.insert(courseHomework);
 			List<StudentCourseHomework> studentCourseHomeworks = studentCourseHomeworkDao
 					.constructInitialStudentHomeworkRecordsWithPayment(teacherAttendance.getCourseScheduleId(),
-					courseHomework.getId());
+							courseHomework.getId());
 			if(CollectionUtils.isEmpty(studentCourseHomeworks)){
 				throw new BizException("此课程没有学生");
 			}
 			studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
+			return result;
 		}
 
 		result.put("status",0);

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

@@ -326,7 +326,7 @@
     </select>
     <sql id="studentPaymentSql">
         <where>
-            cs.id_ IS NOT NULL
+            cs.id_ IS NOT NULL AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             <if test="classGroupType != null">
                 AND cs.type_ = #{classGroupType}
             </if>

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

@@ -488,7 +488,7 @@
         <where>
             sr.music_group_status_ != 'QUIT'
     		<if test="organId != null">
-    			mg.organ_id_ = #{organId}
+    			AND mg.organ_id_ = #{organId}
     		</if>
     	</where> 
     </select>