浏览代码

Merge branch 'edu_reg_statis' into online1

river 4 年之前
父节点
当前提交
d51513f6a5

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

@@ -50,6 +50,7 @@ public interface CooperationOrganDao extends BaseDAO<Integer, CooperationOrgan>
 
     /**
      * 根据合作单位ids获取合作单位
+     *
      * @param ids
      * @return
      */
@@ -57,9 +58,17 @@ public interface CooperationOrganDao extends BaseDAO<Integer, CooperationOrgan>
 
     /**
      * 修改合作单位乐团主管
+     *
      * @param transferUserId
      * @param levelUserId
      * @param organId
      */
     void batchUpdateEduId(@Param("transferUserId") Integer transferUserId, @Param("levelUserId") Integer levelUserId, @Param("organId") Integer organId);
-}
+
+    /**
+     * 获取乐团主管的合作单位
+     *
+     * @return
+     */
+    List<CooperationOrgan> getCooperationOrganByEduTeacherId(@Param("userId") Integer userId);
+}

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

@@ -1,10 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.CalenderPushDto;
-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.dto.*;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.School;
@@ -400,6 +397,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据合作单位获取乐团列表
+     *
      * @param cooperationOrganId
      * @return
      */
@@ -407,6 +405,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据合作单位获取乐团列表
+     *
      * @param cooperationOrganId
      * @return
      */
@@ -414,6 +413,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 批量修改乐团主管
+     *
      * @param cooperationOrganId
      * @param educationUserId
      */
@@ -427,4 +427,13 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      */
     MusicGroup getStudentLastMusicGroup(@Param("userId") Integer userId);
 
+
+    /**
+     * 获取回款统计的乐团
+     *
+     * @param organId
+     * @param cooperationOrganIds
+     * @return
+     */
+    List<MusicGroupRegAndMoneyDto> getMusicGroupByStatus(@Param("organId") String organId, @Param("cooperationOrganIds") List<Integer> cooperationOrganIds, @Param("musicGroupName") String musicGroupName);
 }

+ 14 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPreRegistrationDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.dto.MusicGroupRegAndMoneyDto;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.StudentPreRegistrationDto;
@@ -15,13 +16,20 @@ public interface StudentPreRegistrationDao extends BaseDAO<Long, StudentPreRegis
 	StudentPreRegistration queryByMusicGroupIdAndUserId(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 
 	StudentPreRegistration queryByMusicGroupIdAndPhone(@Param("phone") String phone, @Param("musicGroupId") String musicGroupId);
-	
+
 	List<StudentPreRegistration> queryByMusicGroupId(String musicGroupId);
-	
-	List<StudentPreRegistrationDto> queryListForPage(Map<String,Object> params);
-	
+
+	List<StudentPreRegistrationDto> queryListForPage(Map<String, Object> params);
+
 	//统计第一专业
 	List<Mapper> queryFirstSubjectNum(String musicGroupId);
-	
+
 	List<Mapper> querySecondSubjectNum(String musicGroupId);
-}
+
+	/**
+	 * 获取乐团预报名人数
+	 * @param musicGroupIds
+	 * @return
+	 */
+	List<MusicGroupRegAndMoneyDto> getPreRegisterNum(@Param("musicGroupIds") List<String> musicGroupIds);
+}

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -585,4 +585,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     int getFirstPayNum(@Param("musicGroupId") String musicGroupId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 获取报名缴费的相关人数
+     * @param musicGroupIds
+     * @return
+     */
+    List<MusicGroupRegAndMoneyDto> getRegisters(@Param("musicGroupIds") List<String> musicGroupIds);
 }

+ 143 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupRegAndMoneyDto.java

@@ -0,0 +1,143 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * 乐团预报名、报名、及回款统计
+ */
+public class MusicGroupRegAndMoneyDto {
+
+    @ApiModelProperty(value = "乐团id", required = false)
+    private String musicGroupId;
+
+    @ApiModelProperty(value = "乐团名称", required = false)
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "分部名称", required = false)
+    private String organName;
+
+    @ApiModelProperty(value = "乐团状态", required = false)
+    private String musicGroupStatus;
+
+    @ApiModelProperty(value = "预报名人数", required = false)
+    private Integer preRegNum = 0;
+
+    @ApiModelProperty(value = "报名人数", required = false)
+    private Integer regNum = 0;
+
+    @ApiModelProperty(value = "缴费人数", required = false)
+    private Integer payNum = 0;
+
+    @ApiModelProperty(value = "缴费中人数", required = false)
+    private Integer payingNum = 0;
+
+    @ApiModelProperty(value = "审核中人数", required = false)
+    private Integer checkNum = 0;
+
+    @ApiModelProperty(value = "购买云教练人数", required = false)
+    private Integer buyCloudTeacherNum = 0;
+
+    @ApiModelProperty(value = "购买乐器人数", required = false)
+    private Integer buyInstrumentNum = 0;
+
+    @ApiModelProperty(value = "回款金额", required = false)
+    private BigDecimal money = BigDecimal.ZERO;
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getMusicGroupStatus() {
+        return musicGroupStatus;
+    }
+
+    public void setMusicGroupStatus(String musicGroupStatus) {
+        this.musicGroupStatus = musicGroupStatus;
+    }
+
+    public Integer getPreRegNum() {
+        return preRegNum;
+    }
+
+    public void setPreRegNum(Integer preRegNum) {
+        this.preRegNum = preRegNum;
+    }
+
+    public Integer getRegNum() {
+        return regNum;
+    }
+
+    public void setRegNum(Integer regNum) {
+        this.regNum = regNum;
+    }
+
+    public Integer getPayNum() {
+        return payNum;
+    }
+
+    public void setPayNum(Integer payNum) {
+        this.payNum = payNum;
+    }
+
+    public Integer getPayingNum() {
+        return payingNum;
+    }
+
+    public void setPayingNum(Integer payingNum) {
+        this.payingNum = payingNum;
+    }
+
+    public Integer getCheckNum() {
+        return checkNum;
+    }
+
+    public void setCheckNum(Integer checkNum) {
+        this.checkNum = checkNum;
+    }
+
+    public Integer getBuyCloudTeacherNum() {
+        return buyCloudTeacherNum;
+    }
+
+    public void setBuyCloudTeacherNum(Integer buyCloudTeacherNum) {
+        this.buyCloudTeacherNum = buyCloudTeacherNum;
+    }
+
+    public Integer getBuyInstrumentNum() {
+        return buyInstrumentNum;
+    }
+
+    public void setBuyInstrumentNum(Integer buyInstrumentNum) {
+        this.buyInstrumentNum = buyInstrumentNum;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public BigDecimal getMoney() {
+        return money;
+    }
+
+    public void setMoney(BigDecimal money) {
+        this.money = money;
+    }
+}

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1838,7 +1838,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         int registerNum = studentRegistrationDao.getRegisterNum(queryInfo.getMusicGroupId());
         pageInfo.setRegNum(registerNum);
         RegisterDto registerOrPreMinTime = studentRegistrationDao.getRegisterOrPreMinTime(queryInfo.getMusicGroupId());
-        if(registerOrPreMinTime.getMinPayTime() != null){
+        if(registerOrPreMinTime != null && registerOrPreMinTime.getMinPayTime() != null){
             Date startTime = DateUtil.trunc(registerOrPreMinTime.getMinPayTime());
             Date endTime = DateUtil.getLastTimeWithDay(startTime);
             int firstPayNum = studentRegistrationDao.getFirstPayNum(queryInfo.getMusicGroupId(), startTime, endTime);
@@ -1851,8 +1851,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         pageInfo.setTotal(count);
         params.put("offset", pageInfo.getOffset());
         if (queryInfo.getPage() <= pageInfo.getTotalPage()) {
-            Date firstPreTime = registerOrPreMinTime.getMinPerRegisterTime();
-            Date firstPayTime = registerOrPreMinTime.getMinPayTime();
+            Date firstPreTime = registerOrPreMinTime != null ?registerOrPreMinTime.getMinPerRegisterTime():null;
+            Date firstPayTime = registerOrPreMinTime != null ?registerOrPreMinTime.getMinPayTime():null;
             dataList = studentRegistrationDao.getRegisterOrPreList(params);
             for (RegisterDto registerDto : dataList) {
                 if (DateUtil.dateToString(registerDto.getPerRegisterTime()).equals("2099-12-31") ||
@@ -1866,13 +1866,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 ) {
                     registerDto.setPayTime(null);
                 }
-                if (registerDto.getPerRegisterTime() != null) {
+                if (firstPreTime != null && registerDto.getPerRegisterTime() != null) {
                     int perRegInterval = DateUtil.secondsBetween(firstPreTime, registerDto.getPerRegisterTime());
                     registerDto.setPerRegInterval(perRegInterval);
                     registerDto.setPerRegIntervalStr(DateUtil.secondsFormat(perRegInterval));
                 }
 
-                if (registerDto.getPayTime() != null) {
+                if (firstPayTime != null && registerDto.getPayTime() != null) {
                     int payTimeInterval = DateUtil.secondsBetween(firstPayTime, registerDto.getPayTime());
                     registerDto.setPayInterval(payTimeInterval);
                     registerDto.setPayIntervalStr(DateUtil.secondsFormat(payTimeInterval));

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -190,4 +190,8 @@
             #{id}
         </foreach>
     </select>
+
+    <select id="getCooperationOrganByEduTeacherId" resultMap="CooperationOrgan">
+        SELECT * FROM cooperation_organ WHERE education_user_id_ = #{userId} and is_enable_ =1 and del_flag_ =0
+    </select>
 </mapper>

+ 143 - 86
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -2,7 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
 <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"/>
@@ -41,7 +40,8 @@
         <result column="payment_valid_end_date_" property="paymentValidEndDate"/>
         <result column="payment_pattern_" property="paymentPattern"/>
         <result column="is_classroom_lessons_" property="isClassroomLessons"/>
-        <result column="course_view_type_" property="courseViewType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="course_view_type_" property="courseViewType"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -69,13 +69,16 @@
     <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_,pre_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_, del_flag_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,course_view_type_,transaction_teacher_id_)
-        VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate},#{preApplyExpireDate}, #{teamTeacherId}, #{educationalTeacherId},
+                (id_, name_, organ_id_, school_id_, apply_expire_date_, pre_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_, del_flag_, payment_valid_start_date_, payment_valid_end_date_,
+                 payment_pattern_, course_view_type_, transaction_teacher_id_)
+        VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate}, #{preApplyExpireDate}, #{teamTeacherId},
+                #{educationalTeacherId},
                 #{chargeTypeId}, #{courseForm}, now(), now(),
                 #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{billStartDate},
                 #{improventClassesNum}, #{enrollClasses}, #{paymentExpireDate},
@@ -84,8 +87,8 @@
                 #{cooperationOrganId}, #{enlightenmentCourseTime}, #{parentMeetingTime}, #{img}, #{directorUserId},
                 #{isClassroomLessons}, #{memo}, #{expectStartGroupDate},
                 #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{repairUserId},
-                #{delFlag},#{paymentValidStartDate},#{paymentValidEndDate},#{paymentPattern},
-                #{courseViewType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{transactionTeacherId})
+                #{delFlag}, #{paymentValidStartDate}, #{paymentValidEndDate}, #{paymentPattern},
+                #{courseViewType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{transactionTeacherId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -189,7 +192,9 @@
         WHERE id_ = #{id}
     </update>
     <update id="batchUpdateEdu">
-        UPDATE music_group SET educational_teacher_id_ = #{educationUserId} WHERE cooperation_organ_id_ = #{cooperationOrganId}
+        UPDATE music_group
+        SET educational_teacher_id_ = #{educationUserId}
+        WHERE cooperation_organ_id_ = #{cooperationOrganId}
     </update>
 
     <!-- 根据主键删除一条记录 -->
@@ -253,7 +258,8 @@
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="vip_class_num_" property="vipClassNum"/>
         <result column="music_group_num_" property="musicGroupNum"/>
-        <result column="music_group_status_" property="musicGroupStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="music_group_status_" property="musicGroupStatus"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
@@ -264,12 +270,12 @@
              , mg.name_     music_group_name_
              , s.name_      subject_name_
              , s.id_        subject_id_
-             , mg.id_       music_group_id_,
-    		 mg.status_ music_group_status_
+             , mg.id_       music_group_id_
+             , mg.status_   music_group_status_
         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_
+                     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'
@@ -279,8 +285,8 @@
     <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_
+                     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
@@ -290,14 +296,14 @@
     <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_
+                     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_
+                     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
@@ -362,7 +368,7 @@
     <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_
+                     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'
@@ -412,7 +418,7 @@
     <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_
+                     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_
@@ -443,7 +449,7 @@
     <select id="findUserMusicGroup" resultMap="MusicGroup">
         SELECT mg.*
         FROM music_group mg
-                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+                     LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
         WHERE sr.user_id_ = #{userId}
         ORDER BY sr.id_ ASC
         LIMIT 1
@@ -452,7 +458,7 @@
     <select id="findUserMusicGroups" resultMap="MusicGroup">
         SELECT mg.*
         FROM music_group mg
-                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+                     LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
         WHERE sr.user_id_ = #{userId}
     </select>
 
@@ -476,8 +482,8 @@
     <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_
+                     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
@@ -485,10 +491,10 @@
     <select id="findByClassId" resultMap="MusicGroup">
         SELECT mg.*
         FROM class_group cg
-                 LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
+                     LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
         WHERE cg.id_ = #{groupId}
           AND cg.group_type_ = 'MUSIC'
-          AND mg.status_ IN ('PROGRESS','PAUSE')
+          AND mg.status_ IN ('PROGRESS', 'PAUSE')
           AND cg.del_flag_ = 0
     </select>
     <select id="queryUserMusicNames" resultType="java.util.Map">
@@ -606,17 +612,20 @@
     </select>
 
     <select id="getTeacherMusicGroup" resultMap="MusicGroup">
-        SELECT mg.* FROM course_schedule cs
-        LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
-        WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY mg.id_
+        SELECT mg.*
+        FROM course_schedule cs
+                     LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
+        WHERE cs.actual_teacher_id_ = #{teacherId}
+          AND cs.group_type_ = 'MUSIC'
+        GROUP BY mg.id_
     </select>
     <select id="queryUserMusicInfos" resultMap="queryUserMusicGroupsMap">
-        SELECT mg.name_ music_group_name_,mg.id_ music_group_id_
+        SELECT mg.name_ music_group_name_, mg.id_ music_group_id_
         FROM student_registration sr
-        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+                     LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
         WHERE sr.user_id_ = #{userId}
-        AND mg.status_ IN ('APPLY','PAY','PREPARE','PROGRESS')
-        AND sr.music_group_status_ != 'QUIT'
+          AND mg.status_ IN ('APPLY', 'PAY', 'PREPARE', 'PROGRESS')
+          AND sr.music_group_status_ != 'QUIT'
         GROUP BY mg.id_
         ORDER BY mg.create_time_ DESC
     </select>
@@ -632,25 +641,40 @@
         ORDER BY mg.create_time_ DESC
     </select>
     <select id="getFirstEduTeacherId" resultType="java.lang.Integer">
-        SELECT mg.educational_teacher_id_ FROM student_registration sr
-        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
-        WHERE user_id_ = #{userId} AND mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT' AND mg.educational_teacher_id_ IS NOT NULL LIMIT 1
+        SELECT mg.educational_teacher_id_
+        FROM student_registration sr
+                     LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        WHERE user_id_ = #{userId}
+          AND mg.status_ != 'CANCELED'
+          AND sr.music_group_status_ != 'QUIT'
+          AND mg.educational_teacher_id_ IS NOT NULL
+        LIMIT 1
     </select>
     <select id="getStuMusic" resultMap="MusicGroup">
-        SELECT mg.* FROM music_group mg
-        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
-        WHERE mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT' AND sr.user_id_ = #{studentId} LIMIT 1
+        SELECT mg.*
+        FROM music_group mg
+                     LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ != 'CANCELED'
+          AND sr.music_group_status_ != 'QUIT'
+          AND sr.user_id_ = #{studentId}
+        LIMIT 1
     </select>
     <select id="getStuEduMusic" resultMap="MusicGroup">
-        SELECT mg.* FROM music_group mg
-        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
-        WHERE mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT'
-        AND sr.user_id_ = #{studentId} AND mg.educational_teacher_id_ = #{educationalTeacherId} LIMIT 1
+        SELECT mg.*
+        FROM music_group mg
+                     LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ != 'CANCELED'
+          AND sr.music_group_status_ != 'QUIT'
+          AND sr.user_id_ = #{studentId}
+          AND mg.educational_teacher_id_ = #{educationalTeacherId}
+        LIMIT 1
     </select>
     <select id="findByClassGroupId" resultMap="MusicGroup">
-        SELECT mg.* FROM music_group mg
-		LEFT JOIN class_group cg ON cg.music_group_id_ = mg.id_
-		WHERE cg.id_ = #{classGroupId} LIMIT 1
+        SELECT mg.*
+        FROM music_group mg
+                     LEFT JOIN class_group cg ON cg.music_group_id_ = mg.id_
+        WHERE cg.id_ = #{classGroupId}
+        LIMIT 1
     </select>
     <select id="queryIdsByEduIdAndOrganIds" resultType="java.lang.String">
         SELECT DISTINCT id_ FROM music_group
@@ -665,8 +689,9 @@
         </where>
     </select>
     <select id="getMusicGroupSchool" resultMap="com.ym.mec.biz.dal.dao.SchoolDao.School">
-        SELECT s.* FROM music_group mg
-        LEFT JOIN school s ON s.id_=mg.school_id_
+        SELECT s.*
+        FROM music_group mg
+                     LEFT JOIN school s ON s.id_ = mg.school_id_
         WHERE mg.id_ = #{id}
     </select>
     <select id="getByEduTeacher" resultMap="MusicGroup">
@@ -678,21 +703,25 @@
     </select>
 
     <select id="getMusicGroupEduTeacher" resultMap="com.ym.mec.biz.dal.dao.TeacherDao.SysUser">
-        SELECT su.* FROM music_group mg
-        LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
-        WHERE mg.organ_id_ = #{organId} AND status_ = 'PROGRESS' AND mg.educational_teacher_id_ >0
+        SELECT su.*
+        FROM music_group mg
+                     LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
+        WHERE mg.organ_id_ = #{organId}
+          AND status_ = 'PROGRESS'
+          AND mg.educational_teacher_id_ > 0
         GROUP BY su.id_
     </select>
 
-    <select id="findUserMusicGroupCooperationOrgan" resultMap="com.ym.mec.biz.dal.dao.CooperationOrganDao.CooperationOrgan">
-        SELECT co.name_,su.real_name_ linkman_
+    <select id="findUserMusicGroupCooperationOrgan"
+            resultMap="com.ym.mec.biz.dal.dao.CooperationOrganDao.CooperationOrgan">
+        SELECT co.name_, su.real_name_ linkman_
         FROM music_group mg
-        LEFT JOIN student_registration sr ON sr.music_group_id_ = mg.id_
-        LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
-        LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
+                     LEFT JOIN student_registration sr ON sr.music_group_id_ = mg.id_
+                     LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+                     LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
         WHERE sr.user_id_ = #{userId}
-        AND mg.status_ IN ('PREPARE','PROGRESS','PAUSE','CLOSE')
-        AND sr.payment_status_ = 2
+          AND mg.status_ IN ('PREPARE', 'PROGRESS', 'PAUSE', 'CLOSE')
+          AND sr.payment_status_ = 2
         ORDER BY sr.id_ DESC
         LIMIT 1
     </select>
@@ -706,36 +735,39 @@
 
     <select id="getNoClassStudentMusicGroupIds" resultType="java.lang.String">
         SELECT
-            DISTINCT sr.music_group_id_
+        DISTINCT sr.music_group_id_
         FROM
-            student_registration sr
-            LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-            LEFT JOIN class_group_student_mapper cgsm ON cgsm.group_type_='MUSIC' AND cgsm.music_group_id_=sr.music_group_id_ AND cgsm.user_id_=sr.user_id_
+        student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cgsm.group_type_='MUSIC' AND
+        cgsm.music_group_id_=sr.music_group_id_ AND cgsm.user_id_=sr.user_id_
         WHERE
-            sr.music_group_status_ = 'NORMAL'
-            AND mg.status_ = 'PROGRESS'
-            AND cgsm.id_ IS NULL
-            <if test="organIds!=null and organIds.size()>0">
-                AND mg.organ_id_ IN
-                <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
-                    #{organId}
-                </foreach>
-            </if>
+        sr.music_group_status_ = 'NORMAL'
+        AND mg.status_ = 'PROGRESS'
+        AND cgsm.id_ IS NULL
+        <if test="organIds!=null and organIds.size()>0">
+            AND mg.organ_id_ IN
+            <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+                #{organId}
+            </foreach>
+        </if>
     </select>
 
     <select id="getCooperationMusicGroupNum" resultType="java.lang.Integer">
-        SELECT COUNT(*) FROM  music_group
-        WHERE cooperation_organ_id_ = #{cooperationOrganId} AND status_ IN ('PROGRESS','PAUSE','CLOSE')
-        AND id_ != #{musicGroupId}
+        SELECT COUNT(*)
+        FROM music_group
+        WHERE cooperation_organ_id_ = #{cooperationOrganId}
+          AND status_ IN ('PROGRESS', 'PAUSE', 'CLOSE')
+          AND id_ != #{musicGroupId}
     </select>
 
     <select id="findCooperationOrganEduTeacher" resultMap="com.ym.mec.biz.dal.dao.CooperationOrganDao.CooperationOrgan">
-        SELECT co.name_,su.real_name_ linkman_
+        SELECT co.name_, su.real_name_ linkman_
         FROM music_group mg
-        LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
-        LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
+                     LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+                     LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
         WHERE co.id_ = #{id}
-        AND mg.status_ IN ('PREPARE','PROGRESS','PAUSE','CLOSE')
+          AND mg.status_ IN ('PREPARE', 'PROGRESS', 'PAUSE', 'CLOSE')
         ORDER BY mg.create_time_ DESC
         LIMIT 1
     </select>
@@ -750,19 +782,44 @@
         AND mg.educational_teacher_id_ IS NOT NULL
     </select>
     <select id="findByCooperationIdAndStatus" resultMap="MusicGroup">
-        SELECT * FROM music_group WHERE cooperation_organ_id_ = #{cooperationOrganId} AND status_ IN ('PROGRESS','PAUSE','PREPARE')
+        SELECT *
+        FROM music_group
+        WHERE cooperation_organ_id_ = #{cooperationOrganId}
+          AND status_ IN ('PROGRESS', 'PAUSE', 'PREPARE')
     </select>
     <select id="findByCooperationId" resultMap="MusicGroup">
-        SELECT * FROM music_group WHERE cooperation_organ_id_ = #{cooperationId} AND del_flag_ = 0
+        SELECT *
+        FROM music_group
+        WHERE cooperation_organ_id_ = #{cooperationId}
+          AND del_flag_ = 0
     </select>
 
     <select id="getStudentLastMusicGroup" resultMap="MusicGroup">
         SELECT mg.*
         FROM music_group mg
-        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+                     LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
         WHERE sr.user_id_ = #{userId}
-        AND mg.status_ IN ('PREPARE', 'PROGRESS', 'PAUSE', 'CLOSE')
+          AND mg.status_ IN ('PREPARE', 'PROGRESS', 'PAUSE', 'CLOSE')
         ORDER BY mg.create_time_ DESC
         LIMIT 1
     </select>
+
+    <select id="getMusicGroupByStatus" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegAndMoneyDto">
+        SELECT mg.id_ musicGroupId,o.name_ organName,mg.name_ musicGroupName,mg.status_ musicGroupStatus FROM
+        music_group mg
+        LEFT JOIN organization o ON mg.organ_id_ = o.id_
+        WHERE status_ IN ('PRE_APPLY','PRE_BUILD_FEE','FEE_AUDIT','APPLY','PAY')
+        <if test="organId != null">
+            AND FIND_IN_SET(mg.organ_id_,#{organId})
+        </if>
+        <if test="cooperationOrganIds != null">
+            AND mg.cooperation_organ_id_ IN
+            <foreach collection="cooperationOrganIds" item="cooperationOrganId" open="(" close=")" separator=",">
+                #{cooperationOrganId}
+            </foreach>
+        </if>
+        <if test="musicGroupName != null">
+           AND mg.name_ LIKE CONCAT('%',#{musicGroupName},'%')
+        </if>
+    </select>
 </mapper>

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/StudentPreRegistrationMapper.xml

@@ -247,4 +247,12 @@
         FROM student_pre_registration
         WHERE music_group_id_ = #{musicGroupId}
     </select>
+
+    <select id="getPreRegisterNum" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegAndMoneyDto">
+        SELECT music_group_id_ musicGroupId, COUNT(*) preRegNum FROM student_pre_registration WHERE music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        GROUP BY music_group_id_
+    </select>
 </mapper>

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

@@ -1486,4 +1486,17 @@
         </if>
         AND sr.music_group_status_ != 'QUIT'
     </select>
+
+    <!-- 获取报名相关数据 -->
+    <select id="getRegisters" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegAndMoneyDto">
+        SELECT music_group_id_ musicGroupId, COUNT(*) regNum,SUM(IF(payment_status_ = '2',1,0)) payNum,
+        SUM(IF(paying_status_='2',1,0)) checkNum,SUM(IF((music_group_status_= 'NORMAL' and has_cloud_teacher_=1),1,0)) buyCloudTeacherNum
+        FROM student_registration
+        WHERE music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        AND music_group_status_ != 'QUIT'
+        GROUP BY music_group_id_
+    </select>
 </mapper>

+ 117 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduRegisterController.java

@@ -0,0 +1,117 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.MusicGroupRegAndMoneyDto;
+import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RequestMapping("eduRegister")
+@Api(tags = "乐团报名回款统计(教务端)")
+@RestController
+public class EduRegisterController extends BaseController {
+
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private StudentPreRegistrationDao studentPreRegistrationDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
+    @Autowired
+    private EmployeeDao employeeDao;
+    @Autowired
+    private CooperationOrganDao cooperationOrganDao;
+
+    @ApiOperation(value = "获取分部报名、回款统计")
+    @GetMapping("/getRegAndMoney")
+    public HttpResponseResult<List<MusicGroupRegAndMoneyDto>> getRegAndMoney(String organId, String musicGroupName) {
+        String organIds = null;
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        Employee employee = employeeDao.get(sysUser.getId());
+        if (StringUtils.isEmpty(organId)) {
+            organIds = employee.getOrganIdList();
+        } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+            return failed("用户所在分部异常");
+        } else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if (!list.containsAll(Arrays.asList(organId.split(",")))) {
+                return failed("非法请求");
+            }
+            organIds = organId;
+        }
+        //是乐团主管,不是分部经理
+        List<Integer> cooperationOrganIds = null;
+        List<Integer> userRole = employeeDao.queryUserRole(sysUser.getId());
+        if (!sysUser.getIsSuperAdmin() && !userRole.contains(SysUserRole.ADMINISTRATOR) && !userRole.contains(SysUserRole.SECTION_MANAGER)) {
+            List<CooperationOrgan> cooperationOrgans = cooperationOrganDao.getCooperationOrganByEduTeacherId(sysUser.getId());
+            if (cooperationOrgans.size() > 0) {
+                cooperationOrganIds = cooperationOrgans.stream().map(CooperationOrgan::getId).collect(Collectors.toList());
+            }else {
+                return succeed();
+            }
+        }
+
+        List<MusicGroupRegAndMoneyDto> musicGroups = musicGroupDao.getMusicGroupByStatus(organIds, cooperationOrganIds, musicGroupName);
+        if (musicGroups.size() <= 0) {
+            return succeed();
+        }
+        List<String> musicGroupIds = musicGroups.stream().map(MusicGroupRegAndMoneyDto::getMusicGroupId).collect(Collectors.toList());
+
+        //预报名人数
+        List<MusicGroupRegAndMoneyDto> preRegisters = studentPreRegistrationDao.getPreRegisterNum(musicGroupIds);
+        List<MusicGroupRegAndMoneyDto> registers = studentRegistrationDao.getRegisters(musicGroupIds);
+
+        for (MusicGroupRegAndMoneyDto musicGroup : musicGroups) {
+            List<MusicalListDetailDto> musicalList = studentPaymentOrderDetailService.getMusicalListDetail(musicGroup.getMusicGroupId(), null);
+            if (musicalList != null && musicalList.size() > 0) {
+                Long instrumentNum = musicalList.stream().filter(e -> KitGroupPurchaseTypeEnum.GROUP.equals(e.getKitGroupPurchaseTypeEnum())).count();
+                BigDecimal money = musicalList.stream().filter(e -> e.getOrderAmount() != null).map(MusicalListDetailDto::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+                musicGroup.setBuyInstrumentNum(instrumentNum.intValue());
+                musicGroup.setMoney(money == null ? BigDecimal.ZERO : money);
+            }
+
+            for (MusicGroupRegAndMoneyDto preRegister : preRegisters) {
+                if (!musicGroup.getMusicGroupId().equals(preRegister.getMusicGroupId())) continue;
+                musicGroup.setPreRegNum(preRegister.getPreRegNum());
+            }
+            for (MusicGroupRegAndMoneyDto register : registers) {
+                if (!musicGroup.getMusicGroupId().equals(register.getMusicGroupId())) continue;
+                musicGroup.setRegNum(register.getRegNum());
+                musicGroup.setPayNum(register.getPayNum());
+                musicGroup.setCheckNum(register.getCheckNum());
+                musicGroup.setBuyCloudTeacherNum(register.getBuyCloudTeacherNum());
+            }
+        }
+        return succeed(musicGroups);
+    }
+}