Joburgess 5 年之前
父节点
当前提交
6e248cc489

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.TeacherPersonalAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherPersonalAttendanceDto;
 import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -29,5 +30,15 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
      * 统计课次
      * 统计课次
      */
      */
     int countClassTime(Long classGroupId);
     int countClassTime(Long classGroupId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [teacherId, courseScheduleId]
+     * @return com.ym.mec.biz.dal.entity.TeacherAttendance
+     * @describe 根据老师编号和课程编号获取老师签到记录
+     */
+    TeacherAttendance findByTeacherAttendanceInfo(@Param("teacherId") Long teacherId,
+                                                  @Param("courseScheduleId") Long courseScheduleId);
 	
 	
 }
 }

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherAttendance.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.entity;
 
 
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
 
 
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -39,6 +40,15 @@ public class TeacherAttendance {
 	/** 状态(正常签到,异常签到) */
 	/** 状态(正常签到,异常签到) */
 	@ApiModelProperty(value = "状态(1正常签到,0异常签到,2正常签退) ",required = false)
 	@ApiModelProperty(value = "状态(1正常签到,0异常签到,2正常签退) ",required = false)
 	private SignStatusEnum status;
 	private SignStatusEnum status;
+
+	@ApiModelProperty(value = "签到状态:0异常,1正常")
+	private YesOrNoEnum signInStatus;
+
+	@ApiModelProperty(value = "签退状态:0异常,1正常")
+	private YesOrNoEnum signOutStatus;
+
+	@ApiModelProperty(value = "签退使劲按")
+	private Date signOutTime;
 	
 	
 	/** 备注 */
 	/** 备注 */
 	@ApiModelProperty(value = "备注",required = false)
 	@ApiModelProperty(value = "备注",required = false)
@@ -47,6 +57,30 @@ public class TeacherAttendance {
 	/**  */
 	/**  */
 	private java.util.Date createTime;
 	private java.util.Date createTime;
 
 
+	public YesOrNoEnum getSignInStatus() {
+		return signInStatus;
+	}
+
+	public void setSignInStatus(YesOrNoEnum signInStatus) {
+		this.signInStatus = signInStatus;
+	}
+
+	public YesOrNoEnum getSignOutStatus() {
+		return signOutStatus;
+	}
+
+	public void setSignOutStatus(YesOrNoEnum signOutStatus) {
+		this.signOutStatus = signOutStatus;
+	}
+
+	public Date getSignOutTime() {
+		return signOutTime;
+	}
+
+	public void setSignOutTime(Date signOutTime) {
+		this.signOutTime = signOutTime;
+	}
+
 	public Long getId() {
 	public Long getId() {
 		return id;
 		return id;
 	}
 	}

+ 35 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -10,14 +10,17 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 
 
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -51,29 +54,52 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Override
 	@Override
 	public void addTeacherAttendanceRecord(TeacherSignOutDto teacherSignOutDto) {
 	public void addTeacherAttendanceRecord(TeacherSignOutDto teacherSignOutDto) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		SysUser user = sysUserFeignService.queryUserInfo();
-		TeacherAttendance teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
-		teacherAttendance.setTeacherId(Long.valueOf(user.getId()));
+		if(Objects.isNull(user)){
+			throw new BizException("请登录");
+		}
+
+		if(Objects.isNull(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId())){
+			throw new BizException("请选择课程!");
+		}
+
+		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
+
+		if(Objects.isNull(teacherAttendance)){
+			if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus()==SignStatusEnum.YES_QUIT){
+				throw new BizException("该课程还未签到,不能进行签退操作!");
+			}
+			teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
+			teacherAttendance.setTeacherId(Long.valueOf(user.getId()));
+		}
+
 		CourseSchedule courseSchedule=new CourseSchedule();
 		CourseSchedule courseSchedule=new CourseSchedule();
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherAttendance.getCourseScheduleId());
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherAttendance.getCourseScheduleId());
 		courseSchedule.setId(currentCourseDetail.getCourseScheduleId());
 		courseSchedule.setId(currentCourseDetail.getCourseScheduleId());
+
+		teacherAttendance.setMusicGroupId(currentCourseDetail.getMusicGroupId());
+		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
 		Date date = new Date();
 		Date date = new Date();
 		if(teacherAttendance.getStatus()!= SignStatusEnum.YES_QUIT){
 		if(teacherAttendance.getStatus()!= SignStatusEnum.YES_QUIT){
 			Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
 			Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
 			if(timeGap<= ParamEnum.TEACHER_ATTENDANCE_TIME_GAP.getCode()){
 			if(timeGap<= ParamEnum.TEACHER_ATTENDANCE_TIME_GAP.getCode()){
-				teacherAttendance.setStatus(SignStatusEnum.SIGN);
+				teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
 			}else{
 			}else{
-				teacherAttendance.setStatus(SignStatusEnum.EXCEPTION);
+				if(StringUtils.isEmpty(teacherAttendance.getRemark())){
+					throw new BizException("当前为异常签到,请填写原因!");
+				}
+				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
 			}
 			}
+			teacherAttendance.setSignInTime(date);
 			courseSchedule.setStatus(CourseStatusEnum.UNDERWAY);
 			courseSchedule.setStatus(CourseStatusEnum.UNDERWAY);
+			teacherAttendanceDao.insert(teacherAttendance);
 		}else{
 		}else{
+			teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
+			teacherAttendance.setSignOutTime(date);
+			teacherAttendance.setCreateTime(date);
 			courseSchedule.setStatus(CourseStatusEnum.OVER);
 			courseSchedule.setStatus(CourseStatusEnum.OVER);
+			teacherAttendanceDao.update(teacherAttendance);
 		}
 		}
 		courseScheduleDao.update(courseSchedule);
 		courseScheduleDao.update(courseSchedule);
-		teacherAttendance.setMusicGroupId(currentCourseDetail.getMusicGroupId());
-		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
-		teacherAttendance.setSignInTime(date);
-		teacherAttendance.setCreateTime(date);
-		teacherAttendanceDao.insert(teacherAttendance);
 		if(teacherAttendance.getStatus()==SignStatusEnum.YES_QUIT){
 		if(teacherAttendance.getStatus()==SignStatusEnum.YES_QUIT){
 			//更新课次
 			//更新课次
 			ClassGroup classGroup=new ClassGroup();
 			ClassGroup classGroup=new ClassGroup();

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

@@ -13,7 +13,9 @@
         <result column="class_group_id_" property="classGroupId"/>
         <result column="class_group_id_" property="classGroupId"/>
         <result column="course_schedule_id_" property="courseScheduleId"/>
         <result column="course_schedule_id_" property="courseScheduleId"/>
         <result column="sign_in_time_" property="signInTime"/>
         <result column="sign_in_time_" property="signInTime"/>
-        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="sign_in_status_" property="signInStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="sign_out_time_" property="signOutTime"/>
+        <result column="sign_out_status_" property="signOutStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="remark_" property="remark"/>
         <result column="remark_" property="remark"/>
         <result column="create_time_" property="createTime"/>
         <result column="create_time_" property="createTime"/>
     </resultMap>
     </resultMap>
@@ -37,16 +39,16 @@
         </selectKey>
         </selectKey>
         -->
         -->
         INSERT INTO teacher_attendance
         INSERT INTO teacher_attendance
-        (id_,teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,status_,remark_,create_time_)
-        VALUES(#{id},#{teacherId},#{musicGroupId},#{classGroupId},#{courseScheduleId},#{signInTime},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{remark},now())
+        (id_,teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,sign_in_status_,remark_,create_time_,sign_out_time_,sign_out_status_)
+        VALUES(#{id},#{teacherId},#{musicGroupId},#{classGroupId},#{courseScheduleId},#{signInTime},#{signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{remark},now(),#{signOutTime},#{signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
     </insert>
 
 
     <!-- 根据主键查询一条记录 -->
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance">
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance">
         UPDATE teacher_attendance
         UPDATE teacher_attendance
         <set>
         <set>
-            <if test="status != null">
-                status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            <if test="signInStatus != null">
+                sign_in_status_ = #{signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
             </if>
             <if test="remark != null">
             <if test="remark != null">
                 remark_ = #{remark},
                 remark_ = #{remark},
@@ -66,6 +68,12 @@
             <if test="musicGroupId != null">
             <if test="musicGroupId != null">
                 music_group_id_ = #{musicGroupId},
                 music_group_id_ = #{musicGroupId},
             </if>
             </if>
+            <if test="signOutTime != null">
+                sign_out_time_ = #{signOutTime},
+            </if>
+            <if test="signOutStatus != null">
+                sign_out_status_ = #{signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
         </set>
         </set>
         WHERE id_ = #{id}
         WHERE id_ = #{id}
     </update>
     </update>
@@ -148,6 +156,9 @@
     <select id="countClassTime" resultType="java.lang.Integer">
     <select id="countClassTime" resultType="java.lang.Integer">
         select count(*) from teacher_attendance where class_group_id_=#{classGroupId} for update
         select count(*) from teacher_attendance where class_group_id_=#{classGroupId} for update
     </select>
     </select>
+    <select id="findByTeacherAttendanceInfo" resultMap="teacherPersonalAttendance">
+        ELECT * FROM teacher_attendance WHERE teacher_id_=#{teacherId} AND course_schedule_id_=#{courseScheduleId}
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 2 - 0
mec-eureka/src/main/resources/application.yml

@@ -4,6 +4,8 @@ server:
     contextPath: /eureka
     contextPath: /eureka
 
 
 eureka:
 eureka:
+  instance:
+    lease-renewal-interval-in-seconds: 1
   client:
   client:
     registerWithEureka: false
     registerWithEureka: false
     fetchRegistry: false
     fetchRegistry: false