Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

周箭河 vor 5 Jahren
Ursprung
Commit
c19a68177c

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -430,4 +430,18 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     Set<Integer> findCommEducationalTeacherId(Integer studentId);
+
+    /**
+     * 获取教师关联的学员列表
+     * @param teacherId
+     * @return
+     */
+    Set<Integer> queryCourseClassStudentIds(Integer teacherId);
+
+    /**
+     * 获取教师关联的老师列表
+     * @param teacherId
+     * @return
+     */
+    Set<Integer> queryCourseClassTeacherIds(Integer teacherId);
 }

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

@@ -24,8 +24,18 @@ public class PracticeGroupQueryInfo extends QueryInfo {
 
     private Integer educationalTeacherId;
 
+    private Boolean hasEducationalTeacherId;
+
     private boolean isExport = false;
 
+    public Boolean getHasEducationalTeacherId() {
+        return hasEducationalTeacherId;
+    }
+
+    public void setHasEducationalTeacherId(Boolean hasEducationalTeacherId) {
+        this.hasEducationalTeacherId = hasEducationalTeacherId;
+    }
+
     public Integer getEducationalTeacherId() {
         return educationalTeacherId;
     }

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

@@ -22,6 +22,16 @@ public class VipGroupQueryInfo extends QueryInfo {
 
     private Integer educationalTeacherId;
 
+    private Boolean hasEducationalTeacherId;
+
+    public Boolean getHasEducationalTeacherId() {
+        return hasEducationalTeacherId;
+    }
+
+    public void setHasEducationalTeacherId(Boolean hasEducationalTeacherId) {
+        this.hasEducationalTeacherId = hasEducationalTeacherId;
+    }
+
     public Integer getEducationalTeacherId() {
         return educationalTeacherId;
     }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java

@@ -63,7 +63,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
     List<ImGroupModel> queryTeacherGroups(Integer userId,String search);
 
     /**
-     * 获取和当前教师相关的学员列表
+     * 获取教师通讯录
      * @param id
      * @param search
      * @return

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

@@ -713,12 +713,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<ImGroupModel> imGroupModels = classGroupDao.queryUserMusicGroups(userId, search);
         imGroupModels.addAll(classGroupDao.queryUserVipGroups(userId, search));
         imGroupModels.addAll(classGroupDao.queryUserCommGroups(userId, search));
+
         if (imGroupModels != null && imGroupModels.size() > 0) {
-//            Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
-            //获取班级老师总数map
-//            Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))), HashMap.class);
             imGroupModels.forEach(e -> {
-//                Integer num = numsMap.get(Integer.parseInt(e.getId()));
                 e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId())).size());
             });
         }

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

@@ -4056,6 +4056,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		int count = coursesGroupDao.countTeacherCourseGroups(params);
 		if(count > 0){
 			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
 			List<CoursesGroup> courseGroups = coursesGroupDao.queryTeacherCourseGroups(params);
 			List<Long> collect = courseGroups.stream().map(e -> e.getId()).collect(Collectors.toList());
 			//获取冻结课时

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

@@ -2095,6 +2095,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 //声部名称列表
                 Map<Long, String> subjectNames = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ",")));
                 Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+//                List<Integer> collect = dataList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toList());
+//                Map<Integer, String> educationNames = MapUtil.convertMybatisMap(teacherDao.queryNameByIds(StringUtils.join(collect,",")));
 
                 Map<Integer, String> idNameMap=new HashMap<>();
                 if(!CollectionUtils.isEmpty(educationalTeacherIds)){

+ 23 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -143,12 +143,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		//获取教师所在班级列表
 		List<ImGroupModel> imGroupModels =  classGroupDao.queryTeacherGroups(userId,search);
 		if(imGroupModels != null && imGroupModels.size() > 0){
-//			Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
-			//获取班级老师总数map
-//			Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))),HashMap.class);
-
 			imGroupModels.forEach(e -> {
-//				Integer num = numsMap.get(Integer.parseInt(e.getId()));
 				e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId())).size());
 			});
 		}
@@ -157,23 +152,28 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 
 	@Override
 	public List<BasicUserDto> queryGroupStudents(Integer teacherId, String search) {
+		//获取关联的学员列表
+		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+		//获取关联的老师列表
+		studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
+
 		List<ImGroupModel> musicGroups =  musicGroupDao.queryTeacherGroups(teacherId,search);
 		List<BasicUserDto> teachers = new ArrayList<>();
 		if(musicGroups != null && musicGroups.size() > 0){
 			Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
 			List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
-			Set<Integer> teacherIds = new HashSet<>();
+			Set<Integer> teacherIdSet = new HashSet<>();
 			if(musicGroupList != null && musicGroupList.size() > 0){
 				musicGroupList.forEach(e->{
-					teacherIds.add(e.getTeamTeacherId());
-					teacherIds.add(e.getEducationalTeacherId());
-					teacherIds.add(e.getDirectorUserId());
+					teacherIdSet.add(e.getTeamTeacherId());
+					teacherIdSet.add(e.getEducationalTeacherId());
+					teacherIdSet.add(e.getDirectorUserId());
 				});
 			}
-			teacherIds.remove(teacherId);
-			teacherIds.removeAll(Collections.singleton(null));
-			if(teacherIds.size() > 0){
-				teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIds,","), search);
+			teacherIdSet.remove(teacherId);
+			teacherIdSet.removeAll(Collections.singleton(null));
+			if(teacherIdSet.size() > 0){
+				teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search);
 			}
 		}
 		List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
@@ -187,14 +187,18 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				});
 			}
 		}
+		studentIds.removeAll(userDtos.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
+		studentIds.remove(teacherId);
 		//获取课程关联的学生列表
-		teachers.addAll(teacherDao.findCloseCourseStudentIds(teacherId, search));
+//		teachers.addAll(teacherDao.findCloseCourseStudentIds(teacherId, search));
 		//获取相关vip陪练教务的学员编号
-		teachers.addAll(teacherDao.findVipEducationalStudentId(teacherId,search));
-		teachers.addAll(teacherDao.findCommEducationalStudentId(teacherId,search));
-		teachers.addAll(teacherDao.findPracticeEducationalStudentId(teacherId,search));
-
-		return teachers.stream().distinct().collect(Collectors.toList());
+//		teachers.addAll(teacherDao.findVipEducationalStudentId(teacherId,search));
+//		teachers.addAll(teacherDao.findCommEducationalStudentId(teacherId,search));
+//		teachers.addAll(teacherDao.findPracticeEducationalStudentId(teacherId,search));
+		if(studentIds.size() > 0){
+			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
+		}
+		return teachers;
 	}
 
     @Override

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

@@ -290,7 +290,7 @@
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_
         <where>
-            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND vg.group_status_ = 4 AND cgsm.group_type_ = 'VIP'
+            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND vg.group_status_ = 2 AND cgsm.group_type_ = 'VIP'
             <if test="userId != null">
                 AND cgsm.user_id_ = #{userId}
             </if>
@@ -401,9 +401,9 @@
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_ AND cg.group_type_ = 'MUSIC'
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_ AND cg.group_type_ = 'VIP'
         LEFT JOIN courses_group csg ON csg.id_ = cg.music_group_id_ AND cg.group_type_ = 'COMM'
-        WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR
-        mg.director_user_id_ = #{userId} OR csg.educational_teacher_id_ = #{userId} OR vg.educational_teacher_id_ = #{userId})
+        WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId})
         AND cg.del_flag_ = 0 AND (mg.status_ = 'PROGRESS' OR vg.group_status_ = 2 OR csg.status_ = 'NORMAL')
+        OR (vg.group_status_ = 2 AND vg.educational_teacher_id_ =  #{userId}) OR (csg.status_ = 'NORMAL' AND csg.educational_teacher_id_ =  #{userId})
         <if test="search != null">
             AND cg.name_ LIKE CONCAT('%',#{search},'%')
         </if>

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

@@ -2749,7 +2749,7 @@
         LEFT JOIN course_schedule_evaluate cse ON cs.id_ = cse.course_schedule_id_
         WHERE cs.music_group_id_ = #{groupId} AND cs.group_type_ = #{groupType}
         GROUP BY cs.id_
-        ORDER BY cs.class_date_,cs.start_class_time_ DESC
+        ORDER BY cs.class_date_,cs.start_class_time_ ASC
     </select>
     <select id="getLastEndCourse" resultMap="CourseSchedule">
         SELECT cs.id_ FROM course_schedule cs

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -227,6 +227,12 @@
     <sql id="practiceGroupQueryCondition">
         <where>
             pg.group_status_='NORMAL'
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == true">
+                AND pg.educational_teacher_id_ IS NOT NULL
+            </if>
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == false">
+                AND pg.educational_teacher_id_ IS NULL
+            </if>
             <if test="search!=null and search!=''">
                 AND (pg.name_ LIKE CONCAT('%',#{search},'%') OR pg.id_= #{search})
             </if>

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

@@ -941,4 +941,72 @@
         LEFT JOIN courses_group vg ON vg.id_ = cgsm.music_group_id_
         WHERE cgsm.group_type_ = 'COMM' AND cgsm.user_id_ = #{userId}
     </select>
+    <select id="queryCourseClassStudentIds" resultType="java.lang.Integer">
+        SELECT cssp.user_id_ FROM course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule_student_payment cssp ON csts.course_schedule_id_ = cssp.course_schedule_id_
+        WHERE csts.user_id_ = #{teacherId}
+        GROUP BY cssp.user_id_
+        UNION ALL
+        SELECT cssp.user_id_ FROM class_group_teacher_mapper cgtm
+        LEFT JOIN course_schedule_student_payment cssp ON cgtm.class_group_id_ = cssp.class_group_id_
+        WHERE cgtm.user_id_ = #{teacherId}
+        GROUP BY cssp.user_id_
+        UNION ALL
+        SELECT cssp.user_id_ FROM music_group mg
+        LEFT JOIN course_schedule_student_payment cssp ON mg.id_ = cssp.music_group_id_
+        WHERE (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId}) AND cssp.group_type_ = 'MUSIC'
+        UNION ALL
+        SELECT cssp.user_id_ FROM vip_group vg
+        LEFT JOIN course_schedule_student_payment cssp ON vg.id_ = cssp.music_group_id_
+        WHERE vg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'VIP'
+        UNION ALL
+        SELECT cssp.user_id_ FROM courses_group cg
+        LEFT JOIN course_schedule_student_payment cssp ON cg.id_ = cssp.music_group_id_
+        WHERE cg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'COMM'
+        UNION ALL
+        SELECT cssp.user_id_ FROM practice_group pg
+        LEFT JOIN course_schedule_student_payment cssp ON pg.id_ = cssp.music_group_id_
+        WHERE pg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'PRACTICE'
+    </select>
+    <select id="queryCourseClassTeacherIds" resultType="java.lang.Integer">
+        SELECT csts.user_id_ FROM music_group mg
+        LEFT JOIN course_schedule_teacher_salary csts ON mg.id_ = csts.music_group_id_
+        WHERE csts.group_type_ = 'MUSIC' AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT csts.user_id_ FROM vip_group vg 
+        LEFT JOIN course_schedule_teacher_salary csts ON vg.id_ = csts.music_group_id_
+        WHERE vg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'VIP'
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT csts.user_id_ FROM courses_group cg 
+        LEFT JOIN course_schedule_teacher_salary csts ON cg.id_ = csts.music_group_id_
+        WHERE cg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'COMM'
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT csts.user_id_ FROM practice_group pg 
+        LEFT JOIN course_schedule_teacher_salary csts ON pg.id_ = csts.music_group_id_
+        WHERE pg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'PRACTICE'
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM music_group mg
+        LEFT JOIN class_group_teacher_mapper cgtm ON mg.id_ = cgtm.music_group_id_
+        WHERE cgtm.group_type_ = 'MUSIC' AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
+        GROUP BY cgtm.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM vip_group vg 
+        LEFT JOIN class_group_teacher_mapper cgtm ON vg.id_ = cgtm.music_group_id_
+        WHERE vg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'VIP'
+        GROUP BY cgtm.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM courses_group cg 
+        LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.music_group_id_
+        WHERE cg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'COMM'
+        GROUP BY cgtm.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM practice_group pg 
+        LEFT JOIN class_group_teacher_mapper cgtm ON pg.id_ = cgtm.music_group_id_
+        WHERE pg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'PRACTICE'
+        GROUP BY cgtm.user_id_
+    </select>
 </mapper>

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -168,6 +168,12 @@
             <if test="search!=null and search!=''">
                 AND (vg.name_ LIKE CONCAT('%',#{search},'%') OR vg.id_= #{search})
             </if>
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == true">
+                AND vg.educational_teacher_id_ IS NOT NULL
+            </if>
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == false">
+                AND vg.educational_teacher_id_ IS NULL
+            </if>
             <if test="teacherId!=null">
                 AND vg.user_id_=#{teacherId}
             </if>

+ 4 - 4
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -173,9 +173,9 @@ public class ExportController extends BaseController {
             });
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","网管课编号", "课程名称", "指导老师", "班级人数", "先上课单价", "线下课单价",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","网管课编号", "课程名称", "指导老师", "教务老师", "班级人数", "先上课单价", "线下课单价",
                     "当前课次", "总课次", "剩余课次","开课时间", "结束时间"}, new String[]{
-                    "organName","id", "name", "teacherName", "studentNum", "onlineClassesUnitPrice",
+                    "organName","id", "name", "teacherName", "educationalTeacherName", "studentNum", "onlineClassesUnitPrice",
                     "offlineClassesUnitPrice", "currentClassTimes", "totalClassTimes", "subClassTimes","coursesStartDate", "coursesExpireDate"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -217,9 +217,9 @@ public class ExportController extends BaseController {
             });
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"VIP编号", "课程名称", "课程状态", "指导老师", "班级人数", "先上课单价", "线下课单价",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"VIP编号", "课程名称", "课程状态", "指导老师", "指导老师", "班级人数", "先上课单价", "线下课单价",
                     "活动方案", "当前课次", "总课次", "剩余课次", "月消耗", "开课时间", "结束时间", "申请时间"}, new String[]{
-                    "id", "name", "status.msg", "userName", "studentNum", "onlineClassesUnitPrice",
+                    "id", "name", "status.msg", "userName", "educationalTeacherName", "studentNum", "onlineClassesUnitPrice",
                     "offlineClassesUnitPrice", "vipGroupActivityName", "currentClassTimes", "totalClassTimes", "subClassTimes", "monthConsumeRate",
                     "courseStartDate", "coursesExpireDate", "registrationStartTime"}, rows);
             response.setContentType("application/octet-stream");