Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
2770f89fca

+ 23 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java

@@ -175,13 +175,13 @@ public interface StudentManageDao {
      * 查询有课的学员
      * @return
      */
-    List<Integer> queryHasCourse(Map<String, Object> params);
+    Set<Integer> queryHasCourse(Map<String, Object> params);
 
     /**
      * 查询没课的学员
      * @return
      */
-    List<Integer> queryNotCourse(Map<String, Object> params);
+    Set<Integer> queryNotCourse(Map<String, Object> params);
 
     /**
      * 查询有课的学员
@@ -238,4 +238,25 @@ public interface StudentManageDao {
     Integer countRepliedNum(Integer courseScheduleId);
 
     List<StudentHasCourseDto> queryCourseStudent(@Param("userIds") Set<Integer> userIds);
+
+    /**
+     * 有陪练课的学员列表
+     * @param params
+     * @return
+     */
+    Set<Integer> queryHasPracticeCourse(Map<String, Object> params);
+
+    /**
+     * 没有陪练课的学员列表
+     * @param params
+     * @return
+     */
+    Set<Integer> queryNotPracticeCourse(Map<String, Object> params);
+
+    /**
+     * 是否有课map列表
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,Integer>> getHasPracticeCourse(List<Integer> userIds);
 }

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

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 
@@ -153,4 +154,11 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	 * @param courseScheduleId
 	 */
 	void cuntinueCourseSign(@Param("courseScheduleId")Long courseScheduleId,@Param("startDateTime")Date startDateTime,@Param("endDateTime")Date endDateTime);
+
+	/**
+	 * 修改课程的签到老师
+	 * @param courseScheduleIds
+	 * @param teacherId
+	 */
+    void batchUpdateTeacher(@Param("courseScheduleIds") Set<Long> courseScheduleIds, @Param("teacherId") Integer teacherId);
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.enums.UserGenderEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -50,6 +51,17 @@ public class StudentManageListDto {
 
     private Long hasCourse;
 
+    @ApiModelProperty(value = "是否有陪练课")
+    private YesOrNoEnum hasPracticeCourse;
+
+    public YesOrNoEnum getHasPracticeCourse() {
+        return hasPracticeCourse;
+    }
+
+    public void setHasPracticeCourse(YesOrNoEnum hasPracticeCourse) {
+        this.hasPracticeCourse = hasPracticeCourse;
+    }
+
     public Boolean getIsMake() {
         return isMake;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -34,6 +34,16 @@ public class StudentManageQueryInfo extends QueryInfo {
 
     private Boolean hasCourse;
 
+    private Boolean hasPracticeCourse;
+
+    public Boolean getHasPracticeCourse() {
+        return hasPracticeCourse;
+    }
+
+    public void setHasPracticeCourse(Boolean hasPracticeCourse) {
+        this.hasPracticeCourse = hasPracticeCourse;
+    }
+
     public Boolean getIsMake() {
         return isMake;
     }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -2570,6 +2570,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Set<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toSet());
         checkNewCourseSchedules(courseSchedules,false);
         courseScheduleDao.update(oldCourseSchedule);
+        teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         Map<Integer, String> map = new HashMap<>(2);
         map.put(teacherId,teacherId.toString());
@@ -2610,6 +2611,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         classGroupTeacherMapperService.updateTeacher(classGroupIds,teacherId);
         classGroupTeacherSalaryDao.updateTeacher(classGroupIds,teacherId);
         practiceGroupDao.updateUserId(practiceGroupId,teacherId);
+        teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         if (teacherIdMap != null && teacherIdMap.size() > 0) {
             sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT,
                     teacherIdMap, null, 0, "7","TEACHER");

+ 15 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -56,21 +56,31 @@ public class StudentManageServiceImpl implements StudentManageService {
     public PageInfo findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
         PageInfo<StudentManageListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Boolean hasCourse = queryInfo.getHasCourse();
+        Boolean hasPracticeCourse = queryInfo.getHasPracticeCourse();
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         params.put("offset", pageInfo.getOffset());
         int count = 0;
+        Set<Integer> paramUserIds = null;
+        if(hasPracticeCourse != null){
+            //是否有陪练课
+            if(hasPracticeCourse){
+                paramUserIds = studentManageDao.queryHasPracticeCourse(params);
+            }else {
+                paramUserIds = studentManageDao.queryNotPracticeCourse(params);
+            }
+            params.put("userIds",paramUserIds);
+        }
         if(hasCourse != null){
-            List<Integer> userIds;
             if(hasCourse){
-                userIds = studentManageDao.queryHasCourse(params);
+                paramUserIds = studentManageDao.queryHasCourse(params);
                 count = studentManageDao.countHasCourse(params);
             }else {
-                userIds = studentManageDao.queryNotCourse(params);
+                paramUserIds = studentManageDao.queryNotCourse(params);
                 count = studentManageDao.countNotCourse(params);
             }
             params.remove("offset");
-            params.put("userIds",userIds);
+            params.put("userIds",paramUserIds);
         }else {
             count = studentManageDao.countStudentByOrganId(params);
         }
@@ -84,6 +94,7 @@ public class StudentManageServiceImpl implements StudentManageService {
 //            Map<Integer,Long> hasCourseMap = MapUtil.convertIntegerMap(studentManageDao.queryStudentHasCourse(userIds));
             Map<Integer, SysUserCashAccount> collect = byUserIds.stream()
                     .collect(Collectors.toMap(SysUserCashAccount::getUserId, sysUserCashAccount -> sysUserCashAccount));
+            Map<Integer,Integer> hasPracticeCourseMap = MapUtil.convertIntegerMap(studentManageDao.getHasPracticeCourse(userIds));
             dataList.forEach(e -> {
                 if(hasCourse == null){
                     e.setHasCourse(studentManageDao.getHasCourse(e.getUserId()));

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

@@ -572,6 +572,12 @@
         </if>
     </select>
     <sql id="queryHasCourseSql">
+        <if test="userIds != null">
+            AND su.id_ IN
+            <foreach collection="userIds" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
         <if test="organId != null">
             AND FIND_IN_SET(su.organ_id_,#{organId})
         </if>
@@ -596,7 +602,7 @@
         LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
         LEFT JOIN practice_lesson_apply pla ON su.id_ = pla.user_id_
-        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.status_ != 'OVER'
+        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.status_ != 'OVER' AND su.del_flag_ = 0
         <include refid="queryHasCourseSql"/>
         GROUP BY su.id_
         ORDER BY su.create_time_ DESC
@@ -607,7 +613,7 @@
         LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
         LEFT JOIN practice_lesson_apply pla ON su.id_ = pla.user_id_
-        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.status_ != 'OVER'
+        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.status_ != 'OVER' AND su.del_flag_ = 0
         <include refid="queryHasCourseSql"/>
     </select>
     <select id="queryNotCourse" resultType="java.lang.Integer">
@@ -632,7 +638,13 @@
     </select>
     <sql id="queryNotCourseSql">
         <where>
-                su.user_type_ LIKE '%STUDENT%'
+                su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
+            <if test="userIds != null">
+                AND su.id_ IN
+                <foreach collection="userIds" open="(" close=")" separator="," item="item">
+                    #{item}
+                </foreach>
+            </if>
             <if test="organId != null">
                 AND FIND_IN_SET(su.organ_id_,#{organId})
             </if>
@@ -724,4 +736,36 @@
     <select id="countRepliedNum" resultType="java.lang.Integer">
         SELECT COUNT(id_) FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} AND is_replied_ = 1 AND status_ = 1
     </select>
+
+    <sql id="queryHasPracticeCourseSql">
+        <if test="organId != null">
+            AND FIND_IN_SET(su.organ_id_,#{organId})
+        </if>
+        <if test="search != null and search != ''">
+            AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_ LIKE CONCAT('%',#{search},'%'))
+        </if>
+        <if test="isActive != null and isActive == true">
+            AND su.password_ IS NOT NULL
+        </if>
+        <if test="isActive != null and isActive == false">
+            AND su.password_ IS NULL
+        </if>
+    </sql>
+    <select id="queryHasPracticeCourse" resultType="java.lang.Integer">
+        SELECT DISTINCT su.id_ FROM sys_user su
+        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
+        WHERE su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0 AND cssp.group_type_ = 'PRACTICE'
+        <include refid="queryHasPracticeCourseSql"/>
+    </select>
+    <select id="queryNotPracticeCourse" resultType="java.lang.Integer">
+        SELECT DISTINCT su.id_ FROM sys_user su
+        WHERE su.id_ NOT IN
+        (SELECT DISTINCT cssp.user_id_ FROM course_schedule_student_payment cssp WHERE cssp.group_type_ = 'PRACTICE')
+        AND su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
+        <include refid="queryHasPracticeCourseSql"/>
+    </select>
+    <select id="getHasPracticeCourse" resultType="java.util.Map">
+        
+    </select>
+
 </mapper>

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

@@ -360,6 +360,15 @@
         SET sign_in_time_ = #{startDateTime},sign_in_status_ = 1,sign_out_status_ = 1,sign_out_time_= #{endDateTime}
     	WHERE course_schedule_id_ = #{courseScheduleId}
     </update>
+    <update id="batchUpdateTeacher">
+        UPDATE teacher_attendance
+        SET teacher_id_ = #{teacherId}
+        WHERE course_schedule_id_ IN
+        <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+            #{courseScheduleId}
+        </foreach>
+        AND sign_in_status_ IS NULL AND sign_out_status_ IS NULL
+    </update>
 
     <delete id="deleteByMusicGroupId" parameterType="map" >
 		DELETE ta FROM teacher_attendance ta LEFT JOIN course_schedule cs ON ta.course_schedule_id_ = cs.id_ WHERE ta.music_group_id_=#{musicGroupId} AND ta.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cs.status_ = 'NOT_START'

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -442,7 +442,7 @@
         LEFT JOIN class_group_teacher_mapper cgtm ON t.id_ = cgtm.user_id_
         LEFT JOIN class_group cg ON cg.id_ = cgtm.class_group_id_
         LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE cg.del_flag_ != '1'
+        WHERE cg.del_flag_ != '1' AND cgtm.group_type_ = 'MUSIC'
         <include refid="queryMusicGroupTeachersSql"/>
         GROUP BY t.id_
         <include refid="global.limit"/>
@@ -453,7 +453,7 @@
         LEFT JOIN class_group_teacher_mapper cgtm ON t.id_ = cgtm.user_id_
         LEFT JOIN class_group cg ON cg.id_ = cgtm.class_group_id_
         LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE cg.del_flag_ != '1'
+        WHERE cg.del_flag_ != '1' AND cgtm.group_type_ = 'MUSIC'
         <include refid="queryMusicGroupTeachersSql"/>
     </select>
     <sql id="queryMusicGroupTeachersSql">