Browse Source

feat:教务端学员云教练数据统计

Joburgess 3 years ago
parent
commit
679291f5fa

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

@@ -549,7 +549,7 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @param studentIds:
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
-    int getHasVPCourseStudentNum(@Param("studentId") Integer studentId);
-    List<Map<Integer, Integer>> getOrganHasVPCourseStudentNum(@Param("studentIds") List<Integer> studentIds);
+    int getHasVPCourseStudentNum(@Param("organId") Integer organId);
+    List<Map<Integer, Integer>> getOrganHasVPCourseStudentNum(@Param("organIds") List<Integer> organIds);
 
 }

+ 0 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -412,7 +412,6 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if(queryInfo.getPage()==1){
             EduOrganStudentDataDto organStudentVipData = new EduOrganStudentDataDto();
             organStudentVipData.setTotalStudentNum(studentDao.getOrganStudentNum(queryInfo.getOrganId()));
-            organStudentVipData.setTotalStudentNum(organStudentVipData.getTotalStudentNum()+courseScheduleStudentPaymentDao.getHasVPCourseStudentNum(queryInfo.getOrganId()));
             organStudentVipData.setVipStudentNum(cloudTeacherDao.getOrganVipStudentNum(queryInfo.getOrganId()));
             organStudentVipData.seteVipStudentNum(studentDao.getOrganEVipStudentNum(queryInfo.getOrganId()));
             organStudentVipData.setCloudStudyUseStudentNum(studentDao.getCloudStudyStudentNum(queryInfo.getOrganId()));
@@ -441,11 +440,6 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if(!CollectionUtils.isEmpty(organsStudentNumMapList)){
             organsStudentNumMap = MapUtil.convertIntegerMap(organsStudentNumMapList);
         }
-        List<Map<Integer, Integer>> organHasVPCourseStudentNumMapList = courseScheduleStudentPaymentDao.getOrganHasVPCourseStudentNum(organIds);
-        Map<String, Long> organHasVPCourseStudentNumMap = new HashMap<>();
-        if(!CollectionUtils.isEmpty(organHasVPCourseStudentNumMapList)){
-            organHasVPCourseStudentNumMap = MapUtil.convertIntegerMap(organHasVPCourseStudentNumMapList);
-        }
         List<Map<Integer, Integer>> organsVipStudentNumMapList = cloudTeacherDao.getOrgansVipStudentNum(organIds);
         Map<String, Long> organsVipStudentNumMap = new HashMap<>();
         if(!CollectionUtils.isEmpty(organsVipStudentNumMapList)){
@@ -481,9 +475,6 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             if(organsStudentNumMap.containsKey(organ.getId().toString())){
                 organStudentVipData.setTotalStudentNum(organsStudentNumMap.get(organ.getId().toString()).intValue());
             }
-            if(organHasVPCourseStudentNumMap.containsKey(organ.getId().toString())){
-                organStudentVipData.setTotalStudentNum(organStudentVipData.getTotalStudentNum() + organHasVPCourseStudentNumMap.get(organ.getId().toString()).intValue());
-            }
             if(organsVipStudentNumMap.containsKey(organ.getId().toString())){
                 organStudentVipData.setVipStudentNum(organsVipStudentNumMap.get(organ.getId().toString()).intValue());
             }

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

@@ -789,7 +789,7 @@
 			cssp.group_type_ IN ('VIP', 'PRACTICE')
 			AND cs.status_='NOT_START'
 			AND su.del_flag_ = 0
-			AND cssp.user_id_ = #{studentId}
+			AND su.organ_id_ = #{organId}
 	</select>
 
     <select id="getOrganHasVPCourseStudentNum" resultType="map">
@@ -805,9 +805,9 @@
 			  AND cs.status_='NOT_START'
 			  AND su.del_flag_ = 0
 			<if test="studentIds!=null and studentIds.size()>0">
-				AND cssp.user_id_ IN
-				<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
-					#{studentId}
+				AND su.organ_id_ IN
+				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+					#{organId}
 				</foreach>
 			</if>
 		GROUP BY

+ 41 - 14
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -763,31 +763,58 @@
     </select>
 
     <select id="getOrganStudentNum" resultType="int">
-        SELECT COUNT(sr.user_id_) totalStudentNum
-        FROM student_registration sr
-            LEFT JOIN sys_user su ON sr.user_id_=su.id_
-        WHERE su.del_flag_=0
-        AND sr.music_group_status_='NORMAL'
-        <if test="organId!=null">
-            AND su.organ_id_=#{organId}
-        </if>
+        SELECT COUNT(DISTINCT user_id_)
+        FROM ((SELECT sr.user_id_
+               FROM student_registration sr
+                        LEFT JOIN sys_user su ON sr.user_id_=su.id_
+               WHERE su.del_flag_=0
+                 AND sr.music_group_status_='NORMAL'
+                 AND su.organ_id_ = #{organId})
+              UNION ALL
+              (SELECT
+                   cssp.user_id_
+               FROM
+                   course_schedule_student_payment cssp
+                       LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+                       LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+               WHERE
+                   cssp.group_type_ IN ('VIP', 'PRACTICE')
+                 AND cs.status_='NOT_START'
+                 AND su.del_flag_ = 0
+                 AND su.organ_id_ = #{organId})) t
     </select>
 
     <select id="getOrgansStudentNum" resultType="map">
-        SELECT
-               su.organ_id_ 'key',
-               COUNT(DISTINCT sr.user_id_) 'value'
+        SELECT t.organ_id_ 'key',COUNT(DISTINCT user_id_) 'value'
+        FROM ((SELECT su.organ_id_,sr.user_id_
         FROM student_registration sr
         LEFT JOIN sys_user su ON sr.user_id_=su.id_
         WHERE su.del_flag_=0
-            AND sr.music_group_status_='NORMAL'
+        AND sr.music_group_status_='NORMAL'
         <if test="organIds!=null and organIds.size()>0">
             AND su.organ_id_ IN
             <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
                 #{organId}
             </foreach>
-        </if>
-        GROUP BY su.organ_id_
+        </if>)
+        UNION ALL
+        (SELECT
+        su.organ_id_,cssp.user_id_
+        FROM
+        course_schedule_student_payment cssp
+        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+        LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+        WHERE
+        cssp.group_type_ IN ('VIP', 'PRACTICE')
+        AND cs.status_='NOT_START'
+        AND su.del_flag_ = 0
+        <if test="organIds!=null and organIds.size()>0">
+            AND su.organ_id_ IN
+            <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+                #{organId}
+            </foreach>
+        </if>)) t
+        GROUP BY t.organ_id_
     </select>
 
     <select id="getCloudStudyStudentNum" resultType="int">