Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

Joburgess 5 tahun lalu
induk
melakukan
b511f5e56d

+ 20 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
+import com.ym.mec.biz.dal.dto.MusicGroupRegisterDto;
+import com.ym.mec.biz.dal.dto.RegisterSubjectDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.School;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
@@ -173,20 +175,22 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     MusicGroup findUserMusicGroup(@Param("userId") Integer userId);
 
     /**
+     * @param userId: 用户编号
+     * @return com.ym.mec.biz.dal.entity.MusicGroup
      * @describe 查询用户的乐团信息
      * @author Joburgess
      * @date 2020/2/4
-     * @param userId: 用户编号
-     * @return com.ym.mec.biz.dal.entity.MusicGroup
      */
     List<MusicGroup> findUserMusicGroups(@Param("userId") Integer userId);
 
     /**
      * 查询乐团列表
+     *
      * @param params
      * @return
      */
     List<MusicGroup> findMusicGroups(Map<String, Object> params);
+
     int countMusicGroups(Map<String, Object> params);
 
     /**
@@ -207,6 +211,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 查询用户的学校
+     *
      * @param userId
      * @return
      */
@@ -214,6 +219,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据班级群,获取乐团信息
+     *
      * @param groupId
      * @return
      */
@@ -221,15 +227,25 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取用户所在乐团名
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,String>> queryUserMusicNames(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, String>> queryUserMusicNames(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 获取用户再乐团的状态
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,String>> queryUserMusicStatus(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, String>> queryUserMusicStatus(@Param("userIds") Set<Integer> userIds);
+
+    List<MusicGroupRegisterDto> getMusicGroupRegister(@Param("organIds") String organIds);
+
+    List<RegisterSubjectDto> getRegisterSubjectNum(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    List<MusicGroupRegisterDto> getMusicGroupRegisterOrder(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    List<MusicGroupRegisterDto> getMusicGroupRegisterTotalMoney(@Param("musicGroupIds") List<String> musicGroupIds);
 }

+ 90 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupRegisterDto.java

@@ -0,0 +1,90 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class MusicGroupRegisterDto {
+    private String organName;
+
+    private String musicGroupId;
+
+    private String musicGroupName;
+
+    private MusicGroupStatusEnum musicGroupStatus;
+
+    private Integer registerNum=0;
+
+    private Integer GroupBuyMusicalNum = 0;
+
+    private Integer registerPayNum = 0;
+
+    private BigDecimal totalMoney = BigDecimal.ZERO;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public MusicGroupStatusEnum getMusicGroupStatus() {
+        return musicGroupStatus;
+    }
+
+    public void setMusicGroupStatus(MusicGroupStatusEnum musicGroupStatus) {
+        this.musicGroupStatus = musicGroupStatus;
+    }
+
+    public Integer getRegisterNum() {
+        return registerNum;
+    }
+
+    public void setRegisterNum(Integer registerNum) {
+        this.registerNum = registerNum;
+    }
+
+
+    public Integer getGroupBuyMusicalNum() {
+        return GroupBuyMusicalNum;
+    }
+
+    public void setGroupBuyMusicalNum(Integer groupBuyMusicalNum) {
+        GroupBuyMusicalNum = groupBuyMusicalNum;
+    }
+
+    public Integer getRegisterPayNum() {
+        return registerPayNum;
+    }
+
+    public void setRegisterPayNum(Integer registerPayNum) {
+        this.registerPayNum = registerPayNum;
+    }
+
+    public BigDecimal getTotalMoney() {
+        return totalMoney;
+    }
+
+    public void setTotalMoney(BigDecimal totalMoney) {
+        this.totalMoney = totalMoney;
+    }
+
+}

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterSubjectDto.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.dto;
+
+public class RegisterSubjectDto {
+
+    private String musicGroupId;
+
+    private Integer subjectId;
+
+    private String subjectName;
+
+    private Integer num = 0;
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+}

+ 511 - 406
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -3,445 +3,550 @@
 <!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupDao">
 
-	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroup" id="MusicGroup">
-		<result column="id_" property="id" />
-		<result column="name_" property="name" />
-		<result column="organ_id_" property="organId" />
-		<result column="school_id_" property="schoolId" />
-		<result column="apply_expire_date_" property="applyExpireDate" />
-		<result column="team_teacher_id_" property="teamTeacherId" />
-		<result column="educational_teacher_id_" property="educationalTeacherId" />
-		<result column="charge_type_id_" property="chargeTypeId" />
-		<result column="course_form_" property="courseForm" />
-		<result column="create_time_" property="createTime" />
-		<result column="update_time_" property="updateTime" />
-		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-		<result column="bill_start_date_" property="billStartDate" />
-		<result column="improvent_classes_num_" property="improventClassesNum" />
-		<result column="enroll_classes_" property="enrollClasses" />
-		<result column="payment_expire_date_" property="paymentExpireDate" />
-		<result column="is_extra_class_" property="isExtraClass" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-		<result column="cooperation_organ_id_" property="cooperationOrganId" />
-		<result column="enlightenment_course_time_" property="enlightenmentCourseTime" />
-		<result column="parent_meeting_time_" property="parentMeetingTime" />
-		<result column="img_" property="img" />
-		<result column="director_user_id_" property="directorUserId" />
-		<result column="settlement_type_" property="settlementType" />
-		<result column="expect_start_group_date_" property="expectStartGroupDate" />
-		<result column="group_member_num_" property="groupMemberNum" />
-		<result column="memo_" property="memo" />
-		<result column="repair_user_id_" property="repairUserId" />
-        <result column="ownership_type_" property="ownershipType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+    <resultMap type="com.ym.mec.biz.dal.entity.MusicGroup" id="MusicGroup">
+        <result column="id_" property="id"/>
+        <result column="name_" property="name"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="school_id_" property="schoolId"/>
+        <result column="apply_expire_date_" property="applyExpireDate"/>
+        <result column="team_teacher_id_" property="teamTeacherId"/>
+        <result column="educational_teacher_id_" property="educationalTeacherId"/>
+        <result column="charge_type_id_" property="chargeTypeId"/>
+        <result column="course_form_" property="courseForm"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="bill_start_date_" property="billStartDate"/>
+        <result column="improvent_classes_num_" property="improventClassesNum"/>
+        <result column="enroll_classes_" property="enrollClasses"/>
+        <result column="payment_expire_date_" property="paymentExpireDate"/>
+        <result column="is_extra_class_" property="isExtraClass"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="cooperation_organ_id_" property="cooperationOrganId"/>
+        <result column="enlightenment_course_time_" property="enlightenmentCourseTime"/>
+        <result column="parent_meeting_time_" property="parentMeetingTime"/>
+        <result column="img_" property="img"/>
+        <result column="director_user_id_" property="directorUserId"/>
+        <result column="settlement_type_" property="settlementType"/>
+        <result column="expect_start_group_date_" property="expectStartGroupDate"/>
+        <result column="group_member_num_" property="groupMemberNum"/>
+        <result column="memo_" property="memo"/>
+        <result column="repair_user_id_" property="repairUserId"/>
+        <result column="ownership_type_" property="ownershipType"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="fee_type_" property="feeType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-	</resultMap>
+    </resultMap>
 
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="MusicGroup">
-		SELECT * FROM
-		music_group WHERE id_ = #{id}
-	</select>
-	
-	<select id="getLocked" resultMap="MusicGroup">
-		SELECT * FROM music_group WHERE id_ = #{id} for update
-	</select>
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="MusicGroup">
+        SELECT *
+        FROM music_group
+        WHERE id_ = #{id}
+    </select>
+
+    <select id="getLocked" resultMap="MusicGroup">
+        SELECT *
+        FROM music_group
+        WHERE id_ = #{id} for
+        update
+    </select>
 
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="MusicGroup">
-		SELECT * FROM music_group ORDER
-		BY id_
-	</select>
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="MusicGroup">
+        SELECT *
+        FROM music_group
+        ORDER BY id_
+    </select>
 
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroup"
-		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO music_group
-		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
-		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,settlement_type_,cooperation_organ_id_,enlightenment_course_time_,
-		parent_meeting_time_,img_,director_user_id_,is_classroom_lessons_,memo_,expect_start_group_date_,ownership_type_,repair_user_id_,fee_type_)
-		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
-		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
-		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{settlementType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-		#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId},#{isClassroomLessons},#{memo},#{expectStartGroupDate},
-		#{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{repairUserId},#{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
-	</insert>
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroup"
+            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+        INSERT INTO music_group
+        (id_, name_, organ_id_, school_id_, apply_expire_date_, team_teacher_id_, educational_teacher_id_,
+         charge_type_id_, course_form_, create_time_, update_time_, status_,
+         bill_start_date_, improvent_classes_num_, enroll_classes_, payment_expire_date_, is_extra_class_,
+         settlement_type_, cooperation_organ_id_, enlightenment_course_time_,
+         parent_meeting_time_, img_, director_user_id_, is_classroom_lessons_, memo_, expect_start_group_date_,
+         ownership_type_, repair_user_id_, fee_type_)
+        VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate}, #{teamTeacherId}, #{educationalTeacherId},
+                #{chargeTypeId}, #{courseForm}, now(), now(),
+                #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{billStartDate},
+                #{improventClassesNum}, #{enrollClasses}, #{paymentExpireDate},
+                #{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                #{settlementType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                #{cooperationOrganId}, #{enlightenmentCourseTime}, #{parentMeetingTime}, #{img}, #{directorUserId},
+                #{isClassroomLessons}, #{memo}, #{expectStartGroupDate},
+                #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{repairUserId},
+                #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+    </insert>
 
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroup">
-		UPDATE music_group
-		<set>
-			<if test="ownershipType != null">
-				ownership_type_ = #{ownershipType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			<if test="feeType != null">
-				fee_type_ = #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			<if test="status != null">
-				status_ = #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			repair_user_id_ = #{repairUserId},
-			<if test="organId != null">
-				organ_id_ = #{organId},
-			</if>
-			<if test="improventClassesNum != null">
-				improvent_classes_num_ = #{improventClassesNum},
-			</if>
-			<if test="courseForm != null">
-				course_form_ = #{courseForm},
-			</if>
-			<if test="chargeTypeId != null">
-				charge_type_id_ = #{chargeTypeId},
-			</if>
-			<if test="educationalTeacherId != null">
-				educational_teacher_id_ = #{educationalTeacherId},
-			</if>
-			<if test="enrollClasses != null">
-				enroll_classes_ = #{enrollClasses},
-			</if>
-			<if test="name != null">
-				name_ = #{name},
-			</if>
-			<if test="isExtraClass != null">
-				is_extra_class_ = #{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			<if test="paymentExpireDate != null">
-				payment_expire_date_ = #{paymentExpireDate},
-			</if>
-			<if test="schoolId != null">
-				school_id_ = #{schoolId},
-			</if>
-			<if test="applyExpireDate != null">
-				apply_expire_date_ = #{applyExpireDate},
-			</if>
-			<if test="billStartDate != null">
-				bill_start_date_ = #{billStartDate},
-			</if>
-			<if test="cooperationOrganId != null">
-				cooperation_organ_id_ = #{cooperationOrganId},
-			</if>
-			<if test="updateTime != null">
-				update_time_ = NOW(),
-			</if>
-			<if test="enlightenmentCourseTime != null">
-				enlightenment_course_time_ = #{enlightenmentCourseTime},
-			</if>
-			<if test="teamTeacherId != null">
-				team_teacher_id_ = #{teamTeacherId},director_user_id_ = #{directorUserId},
-			</if>
-			<if test="parentMeetingTime != null">
-				parent_meeting_time_ = #{parentMeetingTime},
-			</if>
-			<if test="img != null">
-				img_ = #{img},
-			</if>
-			<if test="settlementType != null">
-				settlement_type_ = #{settlementType},
-			</if>
-			<if test="isClassroomLessons != null">
-				is_classroom_lessons_ = #{isClassroomLessons},
-			</if>
-			<if test="expectStartGroupDate != null">
-				expect_start_group_date_ = #{expectStartGroupDate},
-			</if>
-			<if test="groupMemberNum != null">
-				group_member_num_ = #{groupMemberNum},
-			</if>
-			<if test="memo != null">
-				memo_ = #{memo},
-			</if>
-		</set>
-		WHERE id_ = #{id}
-	</update>
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroup">
+        UPDATE music_group
+        <set>
+            <if test="ownershipType != null">
+                ownership_type_ = #{ownershipType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="feeType != null">
+                fee_type_ = #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="status != null">
+                status_ = #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            repair_user_id_ = #{repairUserId},
+            <if test="organId != null">
+                organ_id_ = #{organId},
+            </if>
+            <if test="improventClassesNum != null">
+                improvent_classes_num_ = #{improventClassesNum},
+            </if>
+            <if test="courseForm != null">
+                course_form_ = #{courseForm},
+            </if>
+            <if test="chargeTypeId != null">
+                charge_type_id_ = #{chargeTypeId},
+            </if>
+            <if test="educationalTeacherId != null">
+                educational_teacher_id_ = #{educationalTeacherId},
+            </if>
+            <if test="enrollClasses != null">
+                enroll_classes_ = #{enrollClasses},
+            </if>
+            <if test="name != null">
+                name_ = #{name},
+            </if>
+            <if test="isExtraClass != null">
+                is_extra_class_ = #{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="paymentExpireDate != null">
+                payment_expire_date_ = #{paymentExpireDate},
+            </if>
+            <if test="schoolId != null">
+                school_id_ = #{schoolId},
+            </if>
+            <if test="applyExpireDate != null">
+                apply_expire_date_ = #{applyExpireDate},
+            </if>
+            <if test="billStartDate != null">
+                bill_start_date_ = #{billStartDate},
+            </if>
+            <if test="cooperationOrganId != null">
+                cooperation_organ_id_ = #{cooperationOrganId},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+            <if test="enlightenmentCourseTime != null">
+                enlightenment_course_time_ = #{enlightenmentCourseTime},
+            </if>
+            <if test="teamTeacherId != null">
+                team_teacher_id_ = #{teamTeacherId},director_user_id_ = #{directorUserId},
+            </if>
+            <if test="parentMeetingTime != null">
+                parent_meeting_time_ = #{parentMeetingTime},
+            </if>
+            <if test="img != null">
+                img_ = #{img},
+            </if>
+            <if test="settlementType != null">
+                settlement_type_ = #{settlementType},
+            </if>
+            <if test="isClassroomLessons != null">
+                is_classroom_lessons_ = #{isClassroomLessons},
+            </if>
+            <if test="expectStartGroupDate != null">
+                expect_start_group_date_ = #{expectStartGroupDate},
+            </if>
+            <if test="groupMemberNum != null">
+                group_member_num_ = #{groupMemberNum},
+            </if>
+            <if test="memo != null">
+                memo_ = #{memo},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
 
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete">
-		DELETE FROM music_group WHERE id_ = #{id}
-	</delete>
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+        DELETE
+        FROM music_group
+        WHERE id_ = #{id}
+    </delete>
 
-	<select id="queryPage" resultMap="MusicGroup" parameterType="map">
-		SELECT * FROM music_group
-		<include refid="musicGroupQueryPageSql"/>
-		ORDER BY create_time_ DESC
-		<include refid="global.limit" />
-	</select>
+    <select id="queryPage" resultMap="MusicGroup" parameterType="map">
+        SELECT * FROM music_group
+        <include refid="musicGroupQueryPageSql"/>
+        ORDER BY create_time_ DESC
+        <include refid="global.limit"/>
+    </select>
 
-	<sql id="musicGroupQueryPageSql">
-		<where>
-			<if test="organId != null">
-				AND FIND_IN_SET(organ_id_,#{organId})
-			</if>
-			<if test="musicGroupName != null and musicGroupName != ''">
-				AND (name_ LIKE CONCAT('%',#{musicGroupName},'%') or id_ like CONCAT('%',#{musicGroupName},'%'))
-			</if>
-			<if test="chargeTypeId != null">
-				AND charge_type_id_ = #{chargeTypeId}
-			</if>
-			<if test="musicGroupStatus != null">
-				AND status_ = #{musicGroupStatus}
-			</if>
-			<if test="musicGroupId != null">
-				AND FIND_IN_SET(id_,#{musicGroupId})
-			</if>
-		</where>
-	</sql>
+    <sql id="musicGroupQueryPageSql">
+        <where>
+            <if test="organId != null">
+                AND FIND_IN_SET(organ_id_,#{organId})
+            </if>
+            <if test="musicGroupName != null and musicGroupName != ''">
+                AND (name_ LIKE CONCAT('%',#{musicGroupName},'%') or id_ like CONCAT('%',#{musicGroupName},'%'))
+            </if>
+            <if test="chargeTypeId != null">
+                AND charge_type_id_ = #{chargeTypeId}
+            </if>
+            <if test="musicGroupStatus != null">
+                AND status_ = #{musicGroupStatus}
+            </if>
+            <if test="musicGroupId != null">
+                AND FIND_IN_SET(id_,#{musicGroupId})
+            </if>
+        </where>
+    </sql>
 
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM music_group
-		<include refid="musicGroupQueryPageSql"/>
-	</select>
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM music_group
+        <include refid="musicGroupQueryPageSql"/>
+    </select>
 
-	<resultMap type="com.ym.mec.biz.dal.dto.MusicCardDto" id="queryUserMusicGroupsMap">
-		<result column="register_id_" property="registerId" />
-		<result column="user_name_" property="userName" />
-		<result column="subject_name_" property="subjectName" />
-		<result column="subject_id_" property="subjectId" />
-		<result column="current_class_" property="currentClass" />
-		<result column="current_grade_" property="currentGrade" />
-		<result column="music_group_name_" property="musicGroupName" />
-		<result column="music_group_id_" property="musicGroupId" />
-		<result column="vip_class_num_" property="vipClassNum" />
-		<result column="music_group_num_" property="musicGroupNum" />
-		<!--<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>-->
-	</resultMap>
+    <resultMap type="com.ym.mec.biz.dal.dto.MusicCardDto" id="queryUserMusicGroupsMap">
+        <result column="register_id_" property="registerId"/>
+        <result column="user_name_" property="userName"/>
+        <result column="subject_name_" property="subjectName"/>
+        <result column="subject_id_" property="subjectId"/>
+        <result column="current_class_" property="currentClass"/>
+        <result column="current_grade_" property="currentGrade"/>
+        <result column="music_group_name_" property="musicGroupName"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="vip_class_num_" property="vipClassNum"/>
+        <result column="music_group_num_" property="musicGroupNum"/>
+        <!--<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>-->
+    </resultMap>
 
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
-		SELECT sr.id_ register_id_,su.username_ user_name_,sr.current_class_,sr.current_grade_
-		,mg.name_ music_group_name_,s.name_ subject_name_,s.id_ subject_id_,mg.id_ music_group_id_
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
-		LEFT JOIN sys_user su ON  su.id_ = sr.user_id_
-		WHERE sr.user_id_ = #{userId} AND mg.status_ IN ('APPLY','PAY','PREPARE','PROGRESS') AND sr.music_group_status_ != 'QUIT'
-		ORDER BY mg.create_time_ DESC
-	</select>
+        SELECT sr.id_       register_id_
+             , su.username_ user_name_
+             , sr.current_class_
+             , sr.current_grade_
+             , mg.name_     music_group_name_
+             , s.name_      subject_name_
+             , s.id_        subject_id_
+             , mg.id_       music_group_id_
+        FROM student_registration sr
+                 LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+                 LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
+                 LEFT JOIN sys_user su ON su.id_ = sr.user_id_
+        WHERE sr.user_id_ = #{userId}
+          AND mg.status_ IN ('APPLY', 'PAY', 'PREPARE', 'PROGRESS')
+          AND sr.music_group_status_ != 'QUIT'
+        ORDER BY mg.create_time_ DESC
+    </select>
 
-	<select id="queryPersonalMusicGroups" resultMap="queryUserMusicGroupsMap">
-		SELECT sr.name_ user_name_,mg.name_ music_group_name_,s.name_ subject_name_
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
-		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
-		ORDER BY mg.update_time_ DESC LIMIT 1
-	</select>
+    <select id="queryPersonalMusicGroups" resultMap="queryUserMusicGroupsMap">
+        SELECT sr.name_ user_name_, mg.name_ music_group_name_, s.name_ subject_name_
+        FROM student_registration sr
+                 LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+                 LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
+        WHERE sr.user_id_ = #{userId}
+          AND sr.music_group_status_ != 'QUIT'
+        ORDER BY mg.update_time_ DESC
+        LIMIT 1
+    </select>
 
-	<select id="countUserMusicGroups" resultType="int">
-		SELECT COUNT(mg.id_)
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
-	</select>
+    <select id="countUserMusicGroups" resultType="int">
+        SELECT COUNT(mg.id_)
+        FROM student_registration sr
+                 LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE sr.user_id_ = #{userId}
+          AND sr.music_group_status_ != 'QUIT'
+    </select>
     <select id="countCourseByType" resultType="java.lang.Integer">
-		SELECT SUM(cg.total_class_times_) - SUM(cg.current_class_times_) FROM class_group_student_mapper cgsm
-		LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
-		WHERE cgsm.user_id_ = #{userId} AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-		AND cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT'
-	</select>
+        SELECT SUM(cg.total_class_times_) - SUM(cg.current_class_times_)
+        FROM class_group_student_mapper cgsm
+                 LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+        WHERE cgsm.user_id_ = #{userId}
+          AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          AND cg.del_flag_ = 0
+          AND cgsm.status_ != 'QUIT'
+    </select>
 
-	<resultMap type="com.ym.mec.biz.dal.dto.BasicUserDto" id="BasicUserDto">
-		<result column="subject_name_" property="subjectName" />
-		<result column="username_" property="name" />
-		<result column="user_id_" property="userId" />
-		<result column="head_url_" property="headUrl" />
-		<result column="gender_" property="gender"/>
-		<result column="music_group_id_" property="musicGroupId"/>
-		<result column="user_type_" property="userType"/>
-		<result column="music_group_name_" property="musicGroupName"/>
-		<result column="subject_id_" property="subjectId"/>
-		<result column="phone_" property="phone"/>
-	</resultMap>
+    <resultMap type="com.ym.mec.biz.dal.dto.BasicUserDto" id="BasicUserDto">
+        <result column="subject_name_" property="subjectName"/>
+        <result column="username_" property="name"/>
+        <result column="user_id_" property="userId"/>
+        <result column="head_url_" property="headUrl"/>
+        <result column="gender_" property="gender"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="user_type_" property="userType"/>
+        <result column="music_group_name_" property="musicGroupName"/>
+        <result column="subject_id_" property="subjectId"/>
+        <result column="phone_" property="phone"/>
+    </resultMap>
 
     <select id="queryUserGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
         SELECT mg.id_,mg.name_,mg.img_
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		<where>
-				sr.music_group_status_ != 'QUIT'
-			<if test="userId != null">
-				AND sr.user_id_ = #{userId}
-			</if>
-			<if test="search != null">
-				AND mg.name_ LIKE CONCAT('%',#{search},'%')
-			</if>
-		</where>
-	</select>
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        <where>
+            sr.music_group_status_ != 'QUIT'
+            <if test="userId != null">
+                AND sr.user_id_ = #{userId}
+            </if>
+            <if test="search != null">
+                AND mg.name_ LIKE CONCAT('%',#{search},'%')
+            </if>
+        </where>
+    </select>
 
     <select id="countMusicGroupUserNum" resultType="map" parameterType="list">
-		SELECT SUM(student_num_) 'value',music_group_id_ 'key' FROM class_group
-		WHERE FIND_IN_SET(music_group_id_,#{musicGroupIds})
-		GROUP BY music_group_id_
+        SELECT SUM(student_num_) 'value', music_group_id_ 'key'
+        FROM class_group
+        WHERE FIND_IN_SET(music_group_id_, #{musicGroupIds})
+        GROUP BY music_group_id_
     </select>
 
-	<resultMap id="ImUserModel" type="com.ym.mec.common.entity.ImUserModel">
-		<result column="id_" property="id"/>
-		<result property="name" column="username_"/>
-		<result property="portrait" column="avatar_"/>
-	</resultMap>
-	<select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
-		SELECT mg.id_,mg.name_,mg.img_,GROUP_CONCAT(DISTINCT cgtm.user_id_) teacher_ids_
-		FROM music_group mg
-		LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
-		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
-		WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId}
-		 OR director_user_id_ = #{userId}) AND mg.status_ = 'PROGRESS'
-		<if test="search != null and search != ''">
-			AND mg.name_ LIKE CONCAT('%',#{search},'%')
-		</if>
-		GROUP BY mg.id_
-	</select>
+    <resultMap id="ImUserModel" type="com.ym.mec.common.entity.ImUserModel">
+        <result column="id_" property="id"/>
+        <result property="name" column="username_"/>
+        <result property="portrait" column="avatar_"/>
+    </resultMap>
+    <select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
+        SELECT mg.id_,mg.name_,mg.img_,GROUP_CONCAT(DISTINCT cgtm.user_id_) teacher_ids_
+        FROM music_group mg
+        LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
+        LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
+        WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId}
+        OR director_user_id_ = #{userId}) AND mg.status_ = 'PROGRESS'
+        <if test="search != null and search != ''">
+            AND mg.name_ LIKE CONCAT('%',#{search},'%')
+        </if>
+        GROUP BY mg.id_
+    </select>
     <select id="countPayNum" resultType="java.util.Map" parameterType="list">
-		SELECT cg.music_group_id_ `key`,COUNT(cgsm.id_) `value` FROM class_group cg
-		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
-		WHERE FIND_IN_SET(cg.music_group_id_,#{musicGroupIds})
-		AND cgsm.status_ != 'QUIT' AND cg.type_ != 'MIX' AND cg.group_type_ = 'MUSIC'
-		GROUP BY cg.music_group_id_
-	</select>
+        SELECT cg.music_group_id_ `key`, COUNT(cgsm.id_) `value`
+        FROM class_group cg
+                 LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE FIND_IN_SET(cg.music_group_id_, #{musicGroupIds})
+          AND cgsm.status_ != 'QUIT'
+          AND cg.type_ != 'MIX'
+          AND cg.group_type_ = 'MUSIC'
+        GROUP BY cg.music_group_id_
+    </select>
 
     <select id="queryListByIds" resultMap="MusicGroup" parameterType="list">
-		SELECT * FROM music_group WHERE FIND_IN_SET(id_,#{musicGroupIds})
-	</select>
+        SELECT *
+        FROM music_group
+        WHERE FIND_IN_SET(id_, #{musicGroupIds})
+    </select>
     <select id="findSettlementTypeByMusicGroups" resultType="map">
-		SELECT
-			id_ AS 'key',
-			settlement_type_ AS 'value'
-		FROM
-			music_group
-		WHERE
-			id_ IN
-			<foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
-				#{musicGroupId}
-			</foreach>
-    </select>
-    
-  	<select id="queryOrganMusicGroupNum" resultType="map">
-    	select count(*) total,sum(case when status_ = 'PREPARE' then 1 else 0 end) prepare_num_,sum(case when status_ = 'PROGRESS' then 1 else 0 end) progress_num_,sum(case when status_ = 'PAUSE' then 1 else 0 end) pause_num_ from music_group
-   		where organ_id_ not in (36,38)
-   		<if test="organId != null">
-   			and FIND_IN_SET(organ_id_,#{organId})
-   		</if>
-  	</select>
-  	
-  	<select id="queryCurrentMonthCoursesNum" resultType="int">
-  		SELECT count(cs.id_) from course_schedule cs
-		left join class_group cg on cs.class_group_id_ = cg.id_
-		left join music_group mg on cg.music_group_id_ = mg.id_
-		where cs.group_type_ = 'MUSIC' AND cg.group_type_ = 'MUSIC'
-  		and DATE_FORMAT(cs.class_date_, '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m') and (cs.del_flag_ = 0 or cs.del_flag_ is null) and mg.organ_id_ not in (36,38)
-   		<if test="organId != null">
-   			AND FIND_IN_SET(mg.organ_id_,#{organId})
-   		</if>
-  	</select>
-	<select id="queryTeacherMap" resultType="java.util.Map">
-		SELECT su.id_ 'key',su.phone_ 'value' FROM class_group_teacher_mapper cgtm
-		LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
-		WHERE cgtm.music_group_id_ = #{musicGroupId} AND su.phone_ IS NOT NULL
-		GROUP BY su.id_
-	</select>
-	<select id="queryUserIdByRoleId" resultType="java.lang.Integer" parameterType="list">
-		SELECT DISTINCT sur.user_id_ FROM sys_user_role sur
-		LEFT JOIN employee e ON sur.user_id_ = e.user_id_
-		WHERE sur.role_id_ IN
-		<foreach collection="roleIds" open="(" separator="," close=")" item="item">
-			#{item}
-		</foreach>
-		<if test="organId != null">
-			AND FIND_IN_SET(#{organId},e.organ_id_list_)
-		</if>
-	</select>
-	<select id="queryTeacherIdMap" resultType="java.util.Map">
-		SELECT cgtm.user_id_ 'key',cgtm.user_id_ 'value' FROM class_group_teacher_mapper cgtm
-		WHERE cgtm.music_group_id_ = #{musicGroupId}
-		GROUP BY cgtm.user_id_
-	</select>
-	<select id="queryEducationalMusicGroupId" resultType="java.lang.String">
-		SELECT GROUP_CONCAT(mg.id_) FROM music_group mg WHERE mg.educational_teacher_id_ = #{userIds}
-	</select>
+        SELECT
+        id_ AS 'key',
+        settlement_type_ AS 'value'
+        FROM
+        music_group
+        WHERE
+        id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+    </select>
 
-	<select id="findUserMusicGroup" resultMap="MusicGroup">
-		SELECT mg.* FROM music_group mg
-		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{userId} ORDER BY sr.id_ ASC LIMIT 1
-	</select>
+    <select id="queryOrganMusicGroupNum" resultType="map">
+        select count(*) total,sum(case when status_ = 'PREPARE' then 1 else 0 end) prepare_num_,sum(case when status_ =
+        'PROGRESS' then 1 else 0 end) progress_num_,sum(case when status_ = 'PAUSE' then 1 else 0 end) pause_num_ from
+        music_group
+        where organ_id_ not in (36,38)
+        <if test="organId != null">
+            and FIND_IN_SET(organ_id_,#{organId})
+        </if>
+    </select>
 
-	<select id="findUserMusicGroups" resultMap="MusicGroup">
-		SELECT mg.* FROM music_group mg
-		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{userId}
-	</select>
+    <select id="queryCurrentMonthCoursesNum" resultType="int">
+        SELECT count(cs.id_) from course_schedule cs
+        left join class_group cg on cs.class_group_id_ = cg.id_
+        left join music_group mg on cg.music_group_id_ = mg.id_
+        where cs.group_type_ = 'MUSIC' AND cg.group_type_ = 'MUSIC'
+        and DATE_FORMAT(cs.class_date_, '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m') and (cs.del_flag_ = 0 or cs.del_flag_
+        is null) and mg.organ_id_ not in (36,38)
+        <if test="organId != null">
+            AND FIND_IN_SET(mg.organ_id_,#{organId})
+        </if>
+    </select>
+    <select id="queryTeacherMap" resultType="java.util.Map">
+        SELECT su.id_ 'key', su.phone_ 'value'
+        FROM class_group_teacher_mapper cgtm
+                 LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
+        WHERE cgtm.music_group_id_ = #{musicGroupId}
+          AND su.phone_ IS NOT NULL
+        GROUP BY su.id_
+    </select>
+    <select id="queryUserIdByRoleId" resultType="java.lang.Integer" parameterType="list">
+        SELECT DISTINCT sur.user_id_ FROM sys_user_role sur
+        LEFT JOIN employee e ON sur.user_id_ = e.user_id_
+        WHERE sur.role_id_ IN
+        <foreach collection="roleIds" open="(" separator="," close=")" item="item">
+            #{item}
+        </foreach>
+        <if test="organId != null">
+            AND FIND_IN_SET(#{organId},e.organ_id_list_)
+        </if>
+    </select>
+    <select id="queryTeacherIdMap" resultType="java.util.Map">
+        SELECT cgtm.user_id_ 'key', cgtm.user_id_ 'value'
+        FROM class_group_teacher_mapper cgtm
+        WHERE cgtm.music_group_id_ = #{musicGroupId}
+        GROUP BY cgtm.user_id_
+    </select>
+    <select id="queryEducationalMusicGroupId" resultType="java.lang.String">
+        SELECT GROUP_CONCAT(mg.id_)
+        FROM music_group mg
+        WHERE mg.educational_teacher_id_ = #{userIds}
+    </select>
+
+    <select id="findUserMusicGroup" resultMap="MusicGroup">
+        SELECT mg.*
+        FROM music_group mg
+                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+        WHERE sr.user_id_ = #{userId}
+        ORDER BY sr.id_ ASC
+        LIMIT 1
+    </select>
+
+    <select id="findUserMusicGroups" resultMap="MusicGroup">
+        SELECT mg.*
+        FROM music_group mg
+                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+        WHERE sr.user_id_ = #{userId}
+    </select>
 
     <select id="findMusicGroup" resultMap="MusicGroup">
-		SELECT mg.* FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE sr.id_ IN
-		<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
-			#{id}
-		</foreach>
-		AND mg.id_ IS NOT NULL LIMIT 1
-	</select>
-	<select id="queryMusicGroupNameMap" resultType="java.util.Map">
-		SELECT id_ 'key',name_ 'value' FROM music_group WHERE id_ IN
-		<foreach collection="musicGroupIds" open="(" close=")" item="item" separator=",">
-			#{item}
-		</foreach>
-		AND name_ IS NOT NULL
-	</select>
+        SELECT mg.* FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE sr.id_ IN
+        <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+        AND mg.id_ IS NOT NULL LIMIT 1
+    </select>
+    <select id="queryMusicGroupNameMap" resultType="java.util.Map">
+        SELECT id_ 'key',name_ 'value' FROM music_group WHERE id_ IN
+        <foreach collection="musicGroupIds" open="(" close=")" item="item" separator=",">
+            #{item}
+        </foreach>
+        AND name_ IS NOT NULL
+    </select>
 
-	<select id="findUserSchool" resultMap="com.ym.mec.biz.dal.dao.SchoolDao.School">
-		SELECT s.* FROM music_group mg
-		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-		LEFT JOIN school s on mg.school_id_ = s.id_
-		WHERE sr.user_id_ = #{userId} ORDER BY sr.id_ DESC LIMIT 1
-	</select>
-	<select id="findByClassId" resultMap="MusicGroup">
-		SELECT mg.* FROM class_group cg
-		LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
-		WHERE cg.id_ = #{groupId} AND cg.group_type_ = 'MUSIC'
-		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
-	</select>
+    <select id="findUserSchool" resultMap="com.ym.mec.biz.dal.dao.SchoolDao.School">
+        SELECT s.*
+        FROM music_group mg
+                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+                 LEFT JOIN school s on mg.school_id_ = s.id_
+        WHERE sr.user_id_ = #{userId}
+        ORDER BY sr.id_ DESC
+        LIMIT 1
+    </select>
+    <select id="findByClassId" resultMap="MusicGroup">
+        SELECT mg.*
+        FROM class_group cg
+                 LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
+        WHERE cg.id_ = #{groupId}
+          AND cg.group_type_ = 'MUSIC'
+          AND mg.status_ = 'PROGRESS'
+          AND cg.del_flag_ = 0
+    </select>
     <select id="queryUserMusicNames" resultType="java.util.Map">
-		SELECT sr.user_id_ 'key',GROUP_CONCAT(mg.name_) 'value' FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
-		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
-			#{userId}
-		</foreach>
-		GROUP BY sr.user_id_
-	</select>
-	<select id="queryUserMusicStatus" resultType="java.util.Map">
-		SELECT sr.user_id_ 'key',GROUP_CONCAT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN '在读'
-		WHEN sr.music_group_status_ = 'LEAVE' THEN '请假'
-		WHEN sr.music_group_status_ = 'QUIT' THEN '退班'
-		WHEN sr.music_group_status_ = 'APPLY' THEN '报名'
-		WHEN sr.music_group_status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
-		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
-			#{userId}
-		</foreach>
-		GROUP BY sr.user_id_
-	</select>
+        SELECT sr.user_id_ 'key',GROUP_CONCAT(mg.name_) 'value' FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY sr.user_id_
+    </select>
+    <select id="queryUserMusicStatus" resultType="java.util.Map">
+        SELECT sr.user_id_ 'key',GROUP_CONCAT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN '在读'
+        WHEN sr.music_group_status_ = 'LEAVE' THEN '请假'
+        WHEN sr.music_group_status_ = 'QUIT' THEN '退班'
+        WHEN sr.music_group_status_ = 'APPLY' THEN '报名'
+        WHEN sr.music_group_status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY sr.user_id_
+    </select>
 
-	<sql id="findMusicGroupsCondition">
-		<where>
-			<if test="educationalTeacherId!=null">
-				AND educational_teacher_id_=#{educationalTeacherId}
-			</if>
-			<if test="search!=null">
-				AND (id_=#{search} OR name_ LIKE CONCAT('%', #{search}, '%'))
-			</if>
-			<if test="status!=null">
-				AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-			</if>
-		</where>
-	</sql>
+    <sql id="findMusicGroupsCondition">
+        <where>
+            <if test="educationalTeacherId!=null">
+                AND educational_teacher_id_=#{educationalTeacherId}
+            </if>
+            <if test="search!=null">
+                AND (id_=#{search} OR name_ LIKE CONCAT('%', #{search}, '%'))
+            </if>
+            <if test="status!=null">
+                AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
+    </sql>
     <select id="findMusicGroups" resultMap="MusicGroup">
-		SELECT * FROM music_group
-		<include refid="findMusicGroupsCondition"/>
-		ORDER BY id_
-		<include refid="global.limit"/>
-	</select>
-	<select id="countMusicGroups" resultType="int">
-		SELECT COUNT(id_) FROM music_group
-		<include refid="findMusicGroupsCondition"/>
-	</select>
+        SELECT * FROM music_group
+        <include refid="findMusicGroupsCondition"/>
+        ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+    <select id="countMusicGroups" resultType="int">
+        SELECT COUNT(id_) FROM music_group
+        <include refid="findMusicGroupsCondition"/>
+    </select>
+
+    <select id="getMusicGroupRegister" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegisterDto">
+        SELECT mg.id_ musicGroupId ,o.name_ organName, mg.name_ musicGroupName, mg.status_ musicGroupStatus,
+        COUNT(sr.id_) registerNum
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        LEFT JOIN organization o on o.id_ = mg.organ_id_
+        WHERE mg.status_ IN ('APPLY', 'PAY')
+        <if test="organIds != null">
+            AND FIND_IN_SET (mg.organ_id_,#{organIds})
+        </if>
+        GROUP BY sr.music_group_id_
+    </select>
+
+    <select id="getRegisterSubjectNum" resultType="com.ym.mec.biz.dal.dto.RegisterSubjectDto">
+        SELECT sr.music_group_id_ musicGroupId,s.id_ subjectId,s.name_ subjectName,count(sr.actual_subject_id_) num FROM
+        student_registration sr
+        LEFT JOIN subject s ON s.id_ = sr.actual_subject_id_
+        WHERE sr.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        AND sr.payment_status_ = 2
+        GROUP BY sr.music_group_id_,sr.actual_subject_id_
+    </select>
+
+    <select id="getMusicGroupRegisterOrder" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegisterDto">
+        SELECT spo.music_group_id_ musicGroupId, COUNT(spod.id_) GroupBuyMusicalNum FROM student_payment_order spo
+        LEFT JOIN student_payment_order_detail spod ON spod.payment_order_id_ = spo.id_
+        WHERE spo.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        AND spo.status_ = 'SUCCESS'
+        AND spo.type_ = 'APPLY'
+        AND spod.kit_group_purchase_type_ = 'GROUP'
+        AND spod.type_='MUSICAL'
+        GROUP BY spo.music_group_id_
+    </select>
+
+    <select id="getMusicGroupRegisterTotalMoney" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegisterDto">
+        SELECT music_group_id_ musicGroupId, SUM(actual_amount_) totalMoney FROM student_payment_order WHERE
+        music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        AND status_ = 'SUCCESS'
+        AND type_ = 'APPLY'
+        GROUP BY music_group_id_
+    </select>
 </mapper>

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

@@ -103,15 +103,15 @@ public class ExportController extends BaseController {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        if(!sysUser.getIsSuperAdmin()){
+        if (!sysUser.getIsSuperAdmin()) {
             Employee employee = employeeDao.get(sysUser.getId());
             if (StringUtils.isEmpty(queryInfo.getOrganId())) {
                 queryInfo.setOrganId(employee.getOrganIdList());
-            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
                 throw new BizException("用户所在分部异常");
-            }else {
+            } else {
                 List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-                if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
                     throw new BizException("非法请求");
                 }
             }
@@ -120,7 +120,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "老师编号", "老师姓名", "课程编号", "课程名称", "上课日期",
-                    "课程开始时间","课程结束时间","课程类型","签到时间","签到状态","签退时间","签退状态","备注"}, new String[]{
+                    "课程开始时间", "课程结束时间", "课程类型", "签到时间", "签到状态", "签退时间", "签退状态", "备注"}, new String[]{
                     "organName", "teacherId", "teacherName", "courseScheduleId", "courseScheduleName", "classDate",
                     "startClassTime", "endClassTime", "courseScheduleType.msg", "signInTime", "signInStatus.msg", "signOutTime", "signOutStatus.msg",
                     "remark"}, rows);
@@ -325,7 +325,7 @@ public class ExportController extends BaseController {
             }
         }
         Date endTime = queryInfo.getEndTime();
-        if(endTime != null){
+        if (endTime != null) {
             queryInfo.setEndTime(DateUtil.addDays(endTime, 1));
         }
         List<TeacherCourseReward> rows = teacherCourseRewardService.queryPage(queryInfo).getRows();
@@ -383,10 +383,10 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
                     "家长联系电话", "是否激活", "是否有课", "是否有网管课", "课程余额(元)", "账户余额(元)",
-                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签","指导老师"}, new String[]{
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
                     "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg", "courseBalance", "balance", "musicGroupName",
-                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg","teacherName"}, rows);
+                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();
@@ -549,7 +549,7 @@ public class ExportController extends BaseController {
                     "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
                     "教学点", "课程状态", "指导老师", "学员编号", "是否点名"}, new String[]{
                     "organName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
-                    "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId","isCallNames.msg"}, rows);
+                    "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -887,9 +887,9 @@ public class ExportController extends BaseController {
         }
 
         try {
-            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户","应付金额", "现金支付","余额支付", "到账时间",
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "到账时间",
                     "关联乐团ID/VIP课ID", "课程形态", "课程费用", "减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
-            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos","expectAmount", "actualAmount","balancePaymentAmount", "payTime", "musicGroupId",
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "payTime", "musicGroupId",
                     "groupType.desc", "courseFee", "remitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
@@ -1040,9 +1040,9 @@ public class ExportController extends BaseController {
                 } else {
                     row.setAttendanceStr("否");
                 }
-                if(new Integer(1).equals(row.getAssignHomework())){
+                if (new Integer(1).equals(row.getAssignHomework())) {
                     row.setAssignHomeworkStr("是");
-                }else{
+                } else {
                     row.setAssignHomeworkStr("否");
                 }
             }
@@ -1250,13 +1250,13 @@ public class ExportController extends BaseController {
             row.setIsViewStr(Objects.isNull(row.getIsView()) || row.getIsView() == 0 ? "否" : "是");
             row.setIsRepliedStr(Objects.isNull(row.getIsReplied()) || row.getIsReplied() == 0 ? "否" : "是");
             row.setIsRepliedTimelyStr(Objects.isNull(row.getIsRepliedTimely()) || row.getIsRepliedTimely() == 0 ? "否" : "是");
-            row.setExistVipCourseStr(Objects.isNull(row.getExistVipCourse())|| row.getExistVipCourse()==0?"否":"是");
+            row.setExistVipCourseStr(Objects.isNull(row.getExistVipCourse()) || row.getExistVipCourse() == 0 ? "否" : "是");
         }
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
                     new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交作业", "提交作业时间", "是否评价", "是否有vip", "及时评价"},
-                    new String[]{"createTime", "expireDate", "title", "teacherName", "organName", "user.username","userId", "statusStr","submitTime", "isRepliedStr", "existVipCourseStr","isRepliedTimelyStr"}, rows);
+                    new String[]{"createTime", "expireDate", "title", "teacherName", "organName", "user.username", "userId", "statusStr", "submitTime", "isRepliedStr", "existVipCourseStr", "isRepliedTimelyStr"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -1309,8 +1309,8 @@ public class ExportController extends BaseController {
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
-                    new String[]{"学员编号", "学员姓名", "所属分部", "指导老师","教务老师", "预期安排", "实际安排", "提交次数", "评价次数", "及时评价次数", "付费网管课", "VIP课", "作业提交时间"},
-                    new String[]{"studentId", "studentName", "organName", "teacherName","educationalTeacherName", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum",
+                    new String[]{"学员编号", "学员姓名", "所属分部", "指导老师", "教务老师", "预期安排", "实际安排", "提交次数", "评价次数", "及时评价次数", "付费网管课", "VIP课", "作业提交时间"},
+                    new String[]{"studentId", "studentName", "organName", "teacherName", "educationalTeacherName", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum",
                             "exercisesMessageNum", "exercisesMessageTimelyNum", "existPracticeCourse", "existVipCourse", "lastSubmitTime"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1439,29 +1439,29 @@ public class ExportController extends BaseController {
         }
         List<Student4operating> rows = PageOperatingStudents.getRows();
         for (Student4operating row : rows) {
-            if(row.getOperatingTag() != null && row.getOperatingTag()==1){
+            if (row.getOperatingTag() != null && row.getOperatingTag() == 1) {
                 row.setOperatingTagStr("是");
-            }else {
+            } else {
                 row.setOperatingTagStr("否");
             }
-            if(row.getVipTimes() != null && row.getVipTimes() >0){
+            if (row.getVipTimes() != null && row.getVipTimes() > 0) {
                 row.setVipTimesStr("是");
-            }else {
+            } else {
                 row.setVipTimesStr("否");
             }
-            if(row.getMusicNetWorkTimes() != null && row.getMusicNetWorkTimes() >0){
+            if (row.getMusicNetWorkTimes() != null && row.getMusicNetWorkTimes() > 0) {
                 row.setMusicNetWorkTimesStr("是");
-            }else {
+            } else {
                 row.setMusicNetWorkTimesStr("否");
             }
-            if(row.getFreePracticeTimes() != null && row.getFreePracticeTimes() >0){
+            if (row.getFreePracticeTimes() != null && row.getFreePracticeTimes() > 0) {
                 row.setFreePracticeTimesStr("是");
-            }else {
+            } else {
                 row.setFreePracticeTimesStr("否");
             }
-            if(row.getBuyPracticeTimes() != null && row.getBuyPracticeTimes() >0){
+            if (row.getBuyPracticeTimes() != null && row.getBuyPracticeTimes() > 0) {
                 row.setBuyPracticeTimesStr("是");
-            }else {
+            } else {
                 row.setBuyPracticeTimesStr("否");
             }
         }
@@ -1469,8 +1469,8 @@ public class ExportController extends BaseController {
         try {
 
             HSSFWorkbook workbook = POIUtil.exportExcel(
-                    new String[]{"分部", "学生", "学生编号", "指导老师","指导老师id", "参与运营指标", "有线上VIP课", "参与免费网管课", "有付费网管课","有乐团网管课"},
-                    new String[]{"organName", "studentName", "studentId", "teacherName","teacherId", "operatingTagStr", "vipTimesStr", "freePracticeTimesStr", "buyPracticeTimesStr","musicNetWorkTimes"}, rows);
+                    new String[]{"分部", "学生", "学生编号", "指导老师", "指导老师id", "参与运营指标", "有线上VIP课", "参与免费网管课", "有付费网管课", "有乐团网管课"},
+                    new String[]{"organName", "studentName", "studentId", "teacherName", "teacherId", "operatingTagStr", "vipTimesStr", "freePracticeTimesStr", "buyPracticeTimesStr", "musicNetWorkTimes"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -1547,9 +1547,9 @@ public class ExportController extends BaseController {
                 } else {
                     row.setAttendanceStr("否");
                 }
-                if(new Integer(1).equals(row.getAssignHomework())){
+                if (new Integer(1).equals(row.getAssignHomework())) {
                     row.setAssignHomeworkStr("是");
-                }else{
+                } else {
                     row.setAssignHomeworkStr("否");
                 }
             }
@@ -1580,7 +1580,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "考级报名导出")
     @RequestMapping("export/degreeRegistration")
     @PreAuthorize("@pcs.hasPermissions('export/degreeRegistration')")
-    public void degreeRegistration(DegreeQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void degreeRegistration(DegreeQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         queryInfo.setSort("create_time_");
         queryInfo.setOrder("ASC");
         queryInfo.setRows(65000);
@@ -1595,20 +1595,20 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             for (DegreeRegistration row : pageList.getRows()) {
-                if(row.getGender().equals("1")){
+                if (row.getGender().equals("1")) {
                     row.setGender("男");
                 } else {
                     row.setGender("女");
                 }
-				if (row.getStatus().equals(2)) {
-					row.setStatusStr("已缴费");
-				} else {
-					row.setStatusStr("未缴费");
-				}
+                if (row.getStatus().equals(2)) {
+                    row.setStatusStr("已缴费");
+                } else {
+                    row.setStatusStr("未缴费");
+                }
             }
 
-            String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注","缴费状态","订单编号","商户订单号","报名时间"};
-            String[] body = {"name", "gender", "idcard", "city", "school", "subject", "level", "theoryLevel", "theoryCert", "mobile", "money", "theoryMoney", "memo","statusStr","orderNo","transNo","createTime"};
+            String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
+            String[] body = {"name", "gender", "idcard", "city", "school", "subject", "level", "theoryLevel", "theoryCert", "mobile", "money", "theoryMoney", "memo", "statusStr", "orderNo", "transNo", "createTime"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1633,24 +1633,24 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "合作单位导出")
     @RequestMapping("export/cooperationOrgan")
     @PreAuthorize("@pcs.hasPermissions('export/cooperationOrgan')")
-    public void cooperationOrgan(CooperationOrganQueryInfo queryInfo,HttpServletResponse response) throws IOException {
-    	SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			throw new IOException("用户信息获取失败");
-		}
-		if(!sysUser.getIsSuperAdmin()){
-			Employee employee = employeeDao.get(sysUser.getId());
-			if (StringUtils.isEmpty(queryInfo.getOrganId())) {
-				queryInfo.setOrganId(employee.getOrganIdList());
-			}else if(StringUtils.isEmpty(employee.getOrganIdList())){
-				throw new IOException("用户所在分部异常");
-			}else {
-				List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-				if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
-					throw new IOException("非法请求");
-				}
-			}
-		}
+    public void cooperationOrgan(CooperationOrganQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new IOException("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                throw new IOException("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                    throw new IOException("非法请求");
+                }
+            }
+        }
         queryInfo.setRows(65000);
         PageInfo<CooperationOrgan> pageList = cooperationOrganService.queryPage(queryInfo);
         if (pageList.getTotal() <= 0) {
@@ -1684,4 +1684,118 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "报名中缴费中乐团缴费情况导出")
+    @RequestMapping("export/musicGroupRegister")
+    @PreAuthorize("@pcs.hasPermissions('export/musicGroupRegister')")
+    public void musicGroupRegister(String organIds, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isBlank(organIds)) {
+                organIds = employee.getOrganIdList();
+            }
+        }
+        List<MusicGroupRegisterDto> musicGroupRegisters = musicGroupDao.getMusicGroupRegister(organIds);
+
+        if (musicGroupRegisters.size() <= 0) {
+            response.setStatus(200);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        List<String> musicGroupIds = musicGroupRegisters.stream().map(MusicGroupRegisterDto::getMusicGroupId).collect(Collectors.toList());
+
+        List<RegisterSubjectDto> registerSubjects = musicGroupDao.getRegisterSubjectNum(musicGroupIds);
+        List<MusicGroupRegisterDto> musicGroupRegisterOrders = musicGroupDao.getMusicGroupRegisterOrder(musicGroupIds);
+        List<MusicGroupRegisterDto> musicGroupRegisterTotalMoneys = musicGroupDao.getMusicGroupRegisterTotalMoney(musicGroupIds);
+
+        HashSet<Integer> added = new HashSet<>();
+        List<String> header = new ArrayList<>();
+        header.add("分部");
+        header.add("乐团名称");
+        header.add("乐团状态");
+        header.add("报名总数");
+        List<String> body = new ArrayList<>();
+        body.add("organName");
+        body.add("musicGroupName");
+        body.add("musicGroupStatus");
+        body.add("registerNum");
+        for (RegisterSubjectDto registerSubject : registerSubjects) {
+            if (!added.contains(registerSubject.getSubjectId())) {
+                added.add(registerSubject.getSubjectId());
+                header.add(registerSubject.getSubjectName());
+                body.add("subject" + registerSubject.getSubjectId());
+            }
+        }
+        header.add("团购数");
+        header.add("缴费总数");
+        header.add("回款总金额");
+
+        body.add("groupBuyMusicalNum");
+        body.add("registerPayNum");
+        body.add("totalMoney");
+
+
+        List<Map<String, Object>> data = new ArrayList<>();
+        for (MusicGroupRegisterDto musicGroupRegister : musicGroupRegisters) {
+            added.clear();
+            HashMap<String, Object> musicGroupRegisterMap = new HashMap<>();
+            int registerPayNum = 0;
+            musicGroupRegisterMap.put("organName", musicGroupRegister.getOrganName());
+            musicGroupRegisterMap.put("musicGroupName", musicGroupRegister.getMusicGroupName());
+            musicGroupRegisterMap.put("musicGroupStatus", musicGroupRegister.getMusicGroupStatus().getMsg());
+            musicGroupRegisterMap.put("registerNum", musicGroupRegister.getRegisterNum());
+            for (MusicGroupRegisterDto musicGroupRegisterOrder : musicGroupRegisterOrders) {
+                if (musicGroupRegisterOrder.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
+                    musicGroupRegister.setGroupBuyMusicalNum(musicGroupRegisterOrder.getGroupBuyMusicalNum());
+                }
+            }
+            for (MusicGroupRegisterDto musicGroupRegisterTotalMoney : musicGroupRegisterTotalMoneys) {
+                if (musicGroupRegisterTotalMoney.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
+                    musicGroupRegister.setTotalMoney(musicGroupRegisterTotalMoney.getTotalMoney());
+                }
+            }
+
+            for (RegisterSubjectDto registerSubject : registerSubjects) {
+                if (registerSubject.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
+                    added.add(registerSubject.getSubjectId());
+                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), registerSubject.getNum());
+                    registerPayNum += registerSubject.getNum();
+                }
+                if (!added.contains(registerSubject.getSubjectId())) {
+                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), 0);
+                }
+            }
+            musicGroupRegisterMap.put("groupBuyMusicalNum", musicGroupRegister.getGroupBuyMusicalNum());
+            musicGroupRegisterMap.put("registerPayNum", registerPayNum);
+            musicGroupRegisterMap.put("totalMoney", musicGroupRegister.getTotalMoney());
+            data.add(musicGroupRegisterMap);
+        }
+
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            String[] headerStr = header.toArray(new String[header.size()]);
+            String[] bodyStr = body.toArray(new String[body.size()]);
+
+            HSSFWorkbook workbook = POIUtil.exportExcel(headerStr, bodyStr, data);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }