zouxuan 2 лет назад
Родитель
Сommit
60086b0a4a
18 измененных файлов с 164 добавлено и 26 удалено
  1. 2 0
      cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java
  2. 11 1
      cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java
  3. 12 0
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  4. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  5. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  6. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherMapperDao.java
  7. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  8. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupTeachersDto.java
  9. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java
  10. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ClassGroupQueryInfo.java
  11. 24 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  12. 14 9
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  13. 6 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  14. 5 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml
  15. 9 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  16. 6 2
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  17. 15 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentController.java
  18. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

+ 2 - 0
cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java

@@ -32,4 +32,6 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	SysNewsInformationDto queryById(Long id);
 
 	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType,@Param("memo") String memo);
+
+    Boolean countStudentAttendanceError(@Param("startTime") String startTime, @Param("userId") Integer userId);
 }

+ 11 - 1
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -13,6 +13,7 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.web.WebFeignService;
 
 import org.apache.commons.lang3.StringUtils;
@@ -20,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.time.LocalDate;
 import java.util.*;
 
 @Service
@@ -93,7 +95,8 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 			
 			Iterator<SysNewsInformation> iterator = app.getRows().iterator();
 			SysNewsInformation sni = null;
-    		while(iterator.hasNext()){
+			String startTime = DateUtil.format(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(new Date(), -1)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+			while(iterator.hasNext()){
     			sni = iterator.next();
     			if(StringUtils.indexOf(sni.getTitle(), "商城") >= 0){
 					if (TenantContextHolder.getTenantId() != 1 || queryInfo.getOrganId() == 4) {
@@ -107,6 +110,13 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 					}catch (Exception e){
 						e.printStackTrace();
 					}
+				}else if(sni.getTitle().equals("学员考勤异常")){
+					try {
+						//当前老师是否有学员考勤异常
+						sni.setRedDot(sysNewsInformationDao.countStudentAttendanceError(startTime,user.getId()));
+					}catch (Exception e){
+						e.printStackTrace();
+					}
 				}
     		}
     		

+ 12 - 0
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -315,4 +315,16 @@
 		</if>
 		ORDER BY order_ DESC
 	</select>
+    <select id="countStudentAttendanceError" resultType="java.lang.Boolean">
+		SELECT COUNT(DISTINCT cs.id_) FROM course_schedule cs
+		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND cssp.user_id_ = sa.user_id_
+		LEFT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
+		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
+		where cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND csts.user_id_ = #{userId} AND cs.status_ = 'OVER' AND cs.class_date_ >= #{startTime}
+		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0))
+		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
+		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
+	</select>
 </mapper>

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -398,7 +398,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @param classGroupIds
      * @return
      */
-    List<Map<Integer, Integer>> countStudyNum(@Param("classGroupIds") String classGroupIds);
+    List<Map<Integer, Integer>> countStudyNum(@Param("classGroupIds") List<Integer> classGroupIds);
 
     /**
      * 根据班级编号列表,获取班级退班人数

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -458,7 +458,9 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
     List<BaseMapDto<Integer, Integer>> getStudentClassGroupBishopTeacherMap(@Param("studentIds") List<Integer> studentIds,
                                                                             @Param("musicGroupId") String musicGroupId);
 
-    List<Long> getLessThenThreeClassGroupIds(@Param("organIds") String organIds, @Param("hasDesc") Boolean hasDesc);
+    List<Long> getLessThenThreeClassGroupIds(@Param("organIds") String organIds,
+                                             @Param("hasDesc") Boolean hasDesc,
+                                             @Param("classGroupIdList") List<Integer> classGroupIdList);
 
     /**
      * @describe 获取学员与老师所在班级

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherMapperDao.java

@@ -29,6 +29,14 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @param classGroupIds
      * @return
      */
+//    List<ClassGroupTeacherMapper> findClassGroupTeachers(@Param("classGroupIds") String classGroupIds);
+
+    /**
+     * 查询班级老师
+     *
+     * @param classGroupIds
+     * @return
+     */
     List<ClassGroupTeacherMapper> findClassGroupTeachers(@Param("classGroupIds") String classGroupIds);
 
     /**
@@ -151,4 +159,6 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
     Set<Integer> queryTeacherIdsByClassGroupId(@Param("classGroupId") Integer classGroupId,
                                                @Param("musicGroupId") String musicGroupId,
                                                @Param("groupType") GroupType groupType);
+
+    List<Integer> queryClassIdByTeacher(@Param("groupType") GroupType groupType, @Param("mainTeacherUserId") Integer mainTeacherUserId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -514,4 +514,13 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     List<MusicGroupExportDto> exportMusicGroupCourseList(@Param("queryInfo") ExportUserAccountQueryInfo queryInfo);
     //查询
     List<MusicGroupBasicDto> findMusicByCourseIds(@Param("courseIds") List<Long> courseIds);
+
+    /**
+    * @description: 获取乐团教务老师
+     * @param musicGroupIds
+    * @return java.util.Map<java.lang.String,java.lang.String>
+    * @author zx
+    * @date 2022/12/7 14:00
+    */
+    List<Map<String, String>> queryMusicEduMap(@Param("musicGroupIds") List<String> musicGroupIds);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupTeachersDto.java

@@ -21,6 +21,9 @@ public class ClassGroupTeachersDto extends ClassGroup {
 
 	private String bishopTeacherName;
 
+	//乐团主管
+	private String eduName;
+
 	/** 预排课时 */
 	private Integer preTotalClassTimes;
 
@@ -30,6 +33,14 @@ public class ClassGroupTeachersDto extends ClassGroup {
 	/** 已排课时长 */
 	private Integer preMinutes;
 
+	public String getEduName() {
+		return eduName;
+	}
+
+	public void setEduName(String eduName) {
+		this.eduName = eduName;
+	}
+
 	public Integer getPreMinutes() {
 		return preMinutes;
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java

@@ -85,6 +85,17 @@ public class Student extends SysUser {
 	@ApiModelProperty(value = "学员是否需要维修乐器")
 	private Boolean repairFlag = false;
 
+	@ApiModelProperty(value = "排课老师")
+	private Integer courseTeacher;
+
+	public Integer getCourseTeacher() {
+		return courseTeacher;
+	}
+
+	public void setCourseTeacher(Integer courseTeacher) {
+		this.courseTeacher = courseTeacher;
+	}
+
 	public Boolean getRepairFlag() {
 		return repairFlag;
 	}

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ClassGroupQueryInfo.java

@@ -4,6 +4,8 @@ import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 public class ClassGroupQueryInfo extends EducationBaseQueryInfo {
 	
 	@ApiModelProperty(value = "班级编号", required = false)
@@ -28,6 +30,17 @@ public class ClassGroupQueryInfo extends EducationBaseQueryInfo {
 
 	private Integer mainTeacherUserId;
 
+	@ApiModelProperty(value = "班级编号列表")
+	private List<Integer> classGroupIdList;
+
+	public List<Integer> getClassGroupIdList() {
+		return classGroupIdList;
+	}
+
+	public void setClassGroupIdList(List<Integer> classGroupIdList) {
+		this.classGroupIdList = classGroupIdList;
+	}
+
 	public Boolean getLessThenThreeHighOnline() {
 		return lessThenThreeHighOnline;
 	}

+ 24 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -3327,7 +3327,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //获取助教老师
             Map<Integer, String> subTeachers = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "TEACHING"))), HashMap.class);
             //获取在读人数
-            Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countStudyNum(join))), HashMap.class);
+            Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countStudyNum(classGroups))), HashMap.class);
             //获取退班人数
             Map<Integer, Integer> quitNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countQuitNum(join))), HashMap.class);
             dataList.forEach(e -> {
@@ -3569,7 +3569,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<Integer> classGroupSet = classGroups.stream().map(classGroup -> classGroup.getId()).collect(Collectors.toList());
 
         List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getDao().findClassGroupTeachers(classGroupIds);
-        Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countStudyNum(classGroupIds))), HashMap.class);
+        Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countStudyNum(classGroupSet))), HashMap.class);
 
         Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalNumByClassGroupId(classGroupSet, null, 0));
         MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.findByCourseDateAndMusicGroupId(musicGroupId, null, 0);
@@ -3629,11 +3629,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         MapUtil.populateMap(params, queryInfo);
         params.put("groupType", queryInfo.getGroupType().getCode());
         if (Objects.nonNull(queryInfo.getLessThenThreeHighOnline())) {
-            List<Long> lessThenThreeClassGroupIds = classGroupStudentMapperDao.getLessThenThreeClassGroupIds(queryInfo.getOrganIds(),queryInfo.getLessThenThreeHighOnline());
-            params.put("classGroupIds", lessThenThreeClassGroupIds);
+            List<Long> lessThenThreeClassGroupIds = classGroupStudentMapperDao.getLessThenThreeClassGroupIds(queryInfo.getOrganIds(),
+                    queryInfo.getLessThenThreeHighOnline(),queryInfo.getClassGroupIdList());
             if (CollectionUtils.isEmpty(lessThenThreeClassGroupIds)) {
                 return 0;
             } else {
+                params.put("classGroupIdList", lessThenThreeClassGroupIds);
                 return classGroupDao.countClassGroup(params);
             }
         } else {
@@ -3648,6 +3649,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         PageInfo<ClassGroupTeachersDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<String, Object>();
+        if(queryInfo.getMainTeacherUserId() != null){
+            //获取主教老师对应的班级编号列表
+            List<Integer> classIdList = classGroupTeacherMapperService.getDao().queryClassIdByTeacher(queryInfo.getGroupType(),queryInfo.getMainTeacherUserId());
+            if(CollectionUtils.isEmpty(classIdList)){
+                return pageInfo;
+            }
+            queryInfo.setClassGroupIdList(classIdList);
+        }
         int count = this.countClassGroupPage(params,queryInfo);
 
         List<ClassGroupTeachersDto> dataList = null;
@@ -3655,17 +3664,22 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = classGroupDao.queryClassGroupPage(params);
-            String classGroupIds = dataList.stream().map(classGroup -> classGroup.getId().toString()).collect(Collectors.joining(","));
+//            String classGroupIds = dataList.stream().map(classGroup -> classGroup.getId().toString()).collect(Collectors.joining(","));
             List<Integer> classGroupSet = dataList.stream().map(classGroup -> classGroup.getId()).collect(Collectors.toList());
+            Map<String, String> eduNames = new HashMap<>();
+            if(queryInfo.getGroupType() == MUSIC){
+                List<String> musicGroupIds = dataList.stream().map(e -> e.getMusicGroupId()).distinct().collect(Collectors.toList());
+                eduNames = MapUtil.convertMybatisMap(musicGroupDao.queryMusicEduMap(musicGroupIds));
+            }
 
-            List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getDao().findClassGroupTeachers(classGroupIds);
-            Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countStudyNum(classGroupIds))), HashMap.class);
+//            List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getDao().findClassGroupTeachers(classGroupIds);
+            Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countStudyNum(classGroupSet))), HashMap.class);
 
             Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalNumByClassGroupId(classGroupSet, null, 0));
             Map<Integer, Long> currentNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countExpendNumByClassGroupId(classGroupSet));
 
             for (ClassGroupTeachersDto classGroup : dataList) {
-                List<ClassGroupTeacherMapper> classGroupTeacherMappers = new ArrayList<>();
+                /*List<ClassGroupTeacherMapper> classGroupTeacherMappers = new ArrayList<>();
                 for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
                     if (!classGroup.getId().equals(classGroupTeacher.getClassGroupId())) continue;
                     classGroupTeacherMappers.add(classGroupTeacher);
@@ -3680,7 +3694,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         classGroup.setBishopTeacherName(StringUtils.join(bishopTeachers.stream().map(e -> e.getUserName()).collect(Collectors.toList()), ","));
                     }
                 }
-                classGroup.setClassGroupTeacherMapperList(classGroupTeacherMappers);
+                classGroup.setClassGroupTeacherMapperList(classGroupTeacherMappers);*/
+                classGroup.setEduName(eduNames.get(classGroup.getMusicGroupId()));
                 classGroup.setStudentNum(studyNums.get(classGroup.getId()));
                 int totalClassTimes = 0;
                 int currentClassTimes = 0;

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

@@ -318,6 +318,8 @@
         <result column="lock_flag_" property="lockFlag"/>
         <result column="expect_student_num_" property="expectStudentNum"/>
         <result column="total_class_times_" property="totalClassTimes"/>
+        <result column="teachingTeacherName" property="teachingTeacherName"/>
+        <result column="bishopTeacherName" property="bishopTeacherName"/>
     </resultMap>
     <!-- 根据乐团id获取乐团下所有班级 -->
     <select id="findClassGroupByMusicGroupId" resultMap="ClassGroupTeachers">
@@ -842,7 +844,10 @@
 
     <select id="countStudyNum" resultType="java.util.Map">
         SELECT cgsm.class_group_id_ 'key',COUNT(cgsm.user_id_) 'value' FROM class_group_student_mapper cgsm
-        WHERE FIND_IN_SET(cgsm.class_group_id_,#{classGroupIds}) AND cgsm.status_ != 'QUIT'
+        WHERE cgsm.status_ != 'QUIT' AND cgsm.class_group_id_ IN
+        <foreach collection="classGroupIds" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
         GROUP BY cgsm.class_group_id_
     </select>
 
@@ -1555,9 +1560,6 @@
     <sql id="queryClassGroupPageSql">
         <where>
             cg.group_type_ = #{groupType} AND cg.del_flag_ = 0 AND cg.tenant_id_ = #{tenantId}
-            <if test="mainTeacherUserId != null">
-                AND cgtm.user_id_ = #{mainTeacherUserId}
-            </if>
             <if test="type != null">
                 AND type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
@@ -1570,9 +1572,9 @@
             <if test="search != null and search != ''">
                 AND (cg.id_ LIKE CONCAT('%',#{search},'%') OR cg.name_ LIKE CONCAT('%',#{search},'%') OR mg.name_ LIKE CONCAT('%',#{search},'%') OR cg.music_group_id_ LIKE CONCAT('%',#{search},'%'))
             </if>
-            <if test="classGroupIds != null and classGroupIds.size()>0">
+            <if test="classGroupIdList != null and classGroupIdList.size() > 0">
                 AND cg.id_ IN
-                <foreach collection="classGroupIds" open="(" close=")" item="classGroupId" separator=",">
+                <foreach collection="classGroupIdList" open="(" close=")" item="classGroupId" separator=",">
                     #{classGroupId}
                 </foreach>
             </if>
@@ -1580,7 +1582,6 @@
     </sql>
     <select id="countClassGroup" resultType="int">
         SELECT COUNT(cg.id_) FROM class_group cg
-        left join class_group_teacher_mapper cgtm on cgtm.class_group_id_ = cg.id_ and cgtm.teacher_role_ = 'BISHOP'
         <if test="groupType == 'MUSIC'">
             LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
         </if>
@@ -1593,8 +1594,11 @@
         <include refid="queryClassGroupPageSql"/>
     </select>
     <select id="queryClassGroupPage" resultMap="ClassGroupTeachers">
-        SELECT cg.*,mg.name_ music_group_name_,o.name_ organName FROM class_group cg
-        left join class_group_teacher_mapper cgtm on cgtm.class_group_id_ = cg.id_ and cgtm.teacher_role_ = 'BISHOP'
+        SELECT cg.*,mg.name_ music_group_name_,o.name_ organName,cgtm.user_id_
+        ,GROUP_CONCAT(distinct su.real_name_) bishopTeacherName,GROUP_CONCAT(distinct su1.real_name_) teachingTeacherName FROM class_group cg
+        left join class_group_teacher_mapper cgtm on cgtm.class_group_id_ = cg.id_
+        LEFT JOIN sys_user su ON su.id_ = cgtm.user_id_ AND cgtm.teacher_role_ = 'BISHOP'
+        LEFT JOIN sys_user su1 ON su1.id_ = cgtm.user_id_ AND cgtm.teacher_role_ = 'TEACHING'
         <if test="groupType == 'MUSIC'">
             LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
         </if>
@@ -1606,6 +1610,7 @@
         </if>
         LEFT JOIN organization o ON o.id_ = mg.organ_id_
         <include refid="queryClassGroupPageSql"/>
+        GROUP BY cg.id_
         ORDER BY cg.id_ DESC
         <include refid="global.limit"/>
     </select>

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

@@ -657,6 +657,12 @@
         <if test="organIds!=null and organIds!=''">
             AND FIND_IN_SET(mg.organ_id_, #{organIds})
         </if>
+        <if test="classGroupIdList != null and classGroupIdList.size() > 0">
+            AND cg.id_ IN
+            <foreach collection="classGroupIdList" open="(" close=")" item="classGroupId" separator=",">
+                #{classGroupId}
+            </foreach>
+        </if>
         GROUP BY cg.id_
         HAVING
         COUNT(DISTINCT CASE WHEN cgsm.status_ = 'NORMAL' THEN cgsm.user_id_ ELSE NULL END) &lt; 3

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

@@ -118,7 +118,7 @@
         SELECT u.real_name_, ct.*
         FROM sys_user u,
         class_group_teacher_mapper ct
-        WHERE u.id_=ct.user_id_ AND FIND_IN_SET(ct.class_group_id_,#{classGroupIds})
+        WHERE u.id_ = ct.user_id_ AND FIND_IN_SET(ct.class_group_id_,#{classGroupIds})
     </select>
     <select id="findByClassGroupAndRole" resultMap="ClassGroupTeacherMapper">
         SELECT u.real_name_, ct.*
@@ -232,6 +232,10 @@
         SELECT DISTINCT user_id_ FROM course_schedule_teacher_salary
         <include refid="queryTeacherIdsByClassGroupIdSql"/>
     </select>
+    <select id="queryClassIdByTeacher" resultType="java.lang.Integer">
+        select distinct cgtm.class_group_id_ from class_group_teacher_mapper cgtm
+        where cgtm.user_id_ = #{mainTeacherUserId} AND cgtm.teacher_role_ = 'BISHOP' AND cgtm.group_type_ = #{groupType}
+    </select>
     <sql id="queryTeacherIdsByClassGroupIdSql">
         <where>
             class_group_id_ = #{classGroupId}

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

@@ -1223,4 +1223,13 @@
             #{item}
         </foreach>
     </select>
+    <select id="queryMusicEduMap" resultType="java.util.Map">
+        select mg.id_ 'key',su.real_name_ 'value' from music_group mg
+        left join sys_user su ON su.id_ = mg.educational_teacher_id_
+        where mg.educational_teacher_id_ IS NOT NULL AND su.id_ IS NOT NULL
+        AND mg.id_ IN
+        <foreach collection="musicGroupIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

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

@@ -35,6 +35,7 @@
         <result column="count_flag_" property="countFlag"/>
         <result column="ext_subject_ids_" property="extSubjectIds"/>
         <result column="tenant_id_" property="tenantId"/>
+        <result column="course_teacher_" property="courseTeacher"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -87,7 +88,7 @@
         </if>
         create_time_,update_time_,service_tag_update_time_,cooperation_organ_id_,
         care_package_,come_on_package_,member_rank_setting_id_,membership_start_time_,
-        membership_end_time_,current_grade_num_,current_class_,ext_subject_ids_,tenant_id_)
+        membership_end_time_,current_grade_num_,current_class_,ext_subject_ids_,tenant_id_,course_teacher_)
         VALUES
         (#{userId},#{schoolName},#{subjectIdList},
         <if test="serviceTag != null">
@@ -98,12 +99,15 @@
         </if>
         NOW(),NOW(),NOW(),#{cooperationOrganId},
          #{carePackage},#{comeOnPackage},#{memberRankSettingId},#{membershipStartTime},
-         #{membershipEndTime},#{currentGradeNum},#{currentClass},#{extSubjectIds},#{tenantId})
+         #{membershipEndTime},#{currentGradeNum},#{currentClass},#{extSubjectIds},#{tenantId},#{courseTeacher})
     </insert>
 
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.Student">
         UPDATE student
         <set>
+            <if test="courseTeacher != null">
+                course_teacher_ = #{courseTeacher},
+            </if>
             <if test="schoolName != null">
                 school_name_ = #{schoolName},
             </if>

+ 15 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentController.java

@@ -1,13 +1,16 @@
 package com.ym.mec.teacher.controller;
 
 import com.ym.mec.biz.dal.dto.BaseMapDto;
+import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
+import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -15,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 
@@ -29,6 +33,17 @@ public class StudentController extends BaseController {
     private SysUserService sysUserService;
     @Autowired
     private StudentManageService studentManageService;
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+
+    @ApiOperation(value = "获取学员异常考勤列表")
+    @PostMapping("/studentAttendanceError")
+    public Object superFindCourseSchedules(@RequestBody EndCourseScheduleQueryInfo queryInfo){
+        queryInfo.setTeacherIdList(sysUserService.getUserId().toString());
+        queryInfo.setSearchType("STUDENT_ERR_ATTENDANCE");
+        queryInfo.setStartTime(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(new Date(), -1)));
+        return succeed(courseScheduleService.endFindCourseSchedules(queryInfo));
+    }
 
     @ApiOperation(value = "获取学员账户信息")
     @GetMapping("/userCashAccount/get")

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

@@ -488,9 +488,9 @@ public class ExportController extends BaseController {
         List<ClassGroupTeachersDto> rows = classGroupService.queryClassGroupPage(queryInfo).getRows();
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"课程组编号", "课程组名称", "分部名称", "班级名称",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"课程组编号", "课程组名称", "分部名称",  "乐团主管", "班级名称",
                     "班级类型", "班级人数", "主教老师", "助教老师", "已上课时", "总课数"}, new String[]{
-                    "musicGroupId", "musicGroupName", "organName", "name",
+                    "musicGroupId", "musicGroupName", "organName", "eduName", "name",
                     "type.msg", "studentNum == NUll?0:studentNum", "bishopTeacherName", "teachingTeacherName", "currentClassTimes",
                     "totalClassTimes"}, rows);
             response.setContentType("application/octet-stream");