yonge %!s(int64=5) %!d(string=hai) anos
pai
achega
bf5cd844df

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -5,9 +5,11 @@ import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -588,4 +590,10 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     int deleteCourseSchedulesByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds);
+    
+    /**
+     * 查询所有未签到的学生信息
+     * @return
+     */
+    List<StudentAttendance> queryUnsignedStudentList();
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -22,6 +22,8 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      * 批量插入学生上课签到情况
      */
     int addStudentAttendances(List<StudentAttendance> studentAttendances);
+    
+    int batchUpdate(List<StudentAttendance> studentAttendances);
 
     /**
      * @describe 根据课程删除对应的点名记录

+ 18 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -925,17 +925,28 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	public boolean updateCourseScheduleToOverStatus() {
+
+		Date date = new Date();
+		List<StudentAttendance> studentAttendanceList = courseScheduleDao.queryUnsignedStudentList();
+		for (StudentAttendance studentAttendance : studentAttendanceList) {
+			studentAttendance.setStatus(StudentAttendanceStatusEnum.TRUANT);
+			studentAttendance.setCreateTime(date);
+		}
+
+		if (studentAttendanceList != null && studentAttendanceList.size() > 0) {
+			studentAttendanceDao.batchUpdate(studentAttendanceList);
+		}
+
 		List<CourseSchedule> list = courseScheduleDao.queryFinishedWithNoUpdateStatus();
 
 		List<CourseSchedule> updateList = new ArrayList<CourseSchedule>();
-		Date date = new Date();
 		List<Integer> classGroups = new ArrayList<Integer>();
 		for (CourseSchedule courseSchedule : list) {
 			courseSchedule.setStatus(CourseStatusEnum.OVER);
 			courseSchedule.setUpdateTime(date);
 			updateList.add(courseSchedule);
-			
-			if(!classGroups.contains(courseSchedule.getClassGroupId())){
+
+			if (!classGroups.contains(courseSchedule.getClassGroupId())) {
 				classGroups.add(courseSchedule.getClassGroupId());
 			}
 		}
@@ -943,12 +954,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if (updateList.size() > 0) {
 			courseScheduleDao.batchUpdate(updateList);
 		}
-		
-		//更新班级课次
-		if(classGroups.size()>0){
+
+		// 更新班级课次
+		if (classGroups.size() > 0) {
 			classGroupService.batchIncreaseClassTimes(classGroups);
 		}
-		
+
 		return true;
 	}
 

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -62,6 +62,15 @@
         <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="rest_of_class_" property="restOfClass"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.entity.StudentAttendance" id="StudentAttendance">
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="course_schedule_id_" property="courseScheduleId"/>
+        <result column="user_id_" property="userId"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="current_class_times_" property="currentClassTimes"/>
+    </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="CourseSchedule">
@@ -1352,4 +1361,8 @@
             #{classGroupId}
         </foreach>
     </delete>
+    
+    <select id="queryUnsignedStudentList" resultMap="StudentAttendance">
+        SELECT a.*,cg.current_class_times_ FROM (SELECT cgsm.user_id_,cs.actual_teacher_id_ teacher_id_,cs.id_ course_schedule_id_,cs.class_group_id_,cs.music_group_id_,cs.group_type_ FROM class_group_student_mapper cgsm right JOIN course_schedule cs ON cgsm.class_group_id_ = cs.class_group_id_ WHERE cgsm.status_ = 'NORMAL' AND CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt;= now()) a LEFT JOIN student_attendance sa ON a.course_schedule_id_ = sa.course_schedule_id_ LEFT JOIN class_group cg ON a.class_group_id_ = cg.id_ WHERE sa.user_id_ IS null
+    </select>
 </mapper>

+ 33 - 0
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -76,6 +76,39 @@
         </set>
         WHERE id_ = #{id}
     </update>
+    
+    <update id="batchUpdate"  parameterType="java.util.List">  
+    	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
+	        update student_attendance
+	        <set>
+	            <if test="item.status != null">
+	                status_ = #{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="item.userId != null">
+	                user_id_ = #{item.userId},
+	            </if>
+	            <if test="item.remark != null">
+	                remark_ = #{item.remark},
+	            </if>
+	            <if test="item.classGroupId != null">
+	                class_group_id_ = #{item.classGroupId},
+	            </if>
+	            <if test="item.teacherId != null">
+	                teacher_id_ = #{item.teacherId},
+	            </if>
+	            <if test="item.courseScheduleId != null">
+	                course_schedule_id_ = #{item.courseScheduleId},
+	            </if>
+	            <if test="item.musicGroupId != null">
+	                music_group_id_ = #{item.musicGroupId},
+	            </if>
+	            <if test="item.currentClassTimes != null">
+	                current_class_times_ = #{item.currentClassTimes},
+	            </if>
+        	</set>
+	        where id = ${item.id}
+	    </foreach>      
+	</update>
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">