zouxuan 3 лет назад
Родитель
Сommit
ff815e4f24

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -80,4 +81,11 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
                                                  @Param("remark") String remark);
 
     List<Integer> getStudentIds();
+
+    /**
+     * 获取学员云教练活动金额
+     * @param studentIds
+     * @return
+     */
+    List<Map<Integer, BigDecimal>> queryActiveAmountMap(@Param("studentIds") List<Integer> studentIds);
 }

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

@@ -404,5 +404,5 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     /**
      * 标记进行中乐团在读学员+VIP、网管有课的学员
      */
-    void remarkCountFlag(@Param("studentIds") List<Integer> studentIds);
+    void remarkCountFlag();
 }

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

@@ -675,6 +675,9 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.String>>
      */
     List<Map<Integer, String>> queryStudentMusicGroupNamesMap(@Param("studentIds") List<Integer> studentIds);
+
+    List<Map<Integer, String>> queryStudentMusicGroupEduMap(@Param("studentIds") List<Integer> studentIds);
+
     List<Map<Integer, String>> queryStudentSchoolNamesMap(@Param("studentIds") List<Integer> studentIds);
 
     /**

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EduOrganStudentListDto.java

@@ -52,6 +52,36 @@ public class EduOrganStudentListDto {
     @ApiModelProperty("会员有效期")
     private String membershipEndTime;
 
+    private String currentGradeNum;
+
+    private String currentClass;
+
+    private Integer countFlag;
+
+    public String getCurrentGradeNum() {
+        return currentGradeNum;
+    }
+
+    public void setCurrentGradeNum(String currentGradeNum) {
+        this.currentGradeNum = currentGradeNum;
+    }
+
+    public String getCurrentClass() {
+        return currentClass;
+    }
+
+    public void setCurrentClass(String currentClass) {
+        this.currentClass = currentClass;
+    }
+
+    public Integer getCountFlag() {
+        return countFlag;
+    }
+
+    public void setCountFlag(Integer countFlag) {
+        this.countFlag = countFlag;
+    }
+
     public Integer getStudentId() {
         return studentId;
     }

+ 45 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EduOrganStudentListExportDto.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
+
 /**
  * @Author Joburgess
  * @Date 2021/8/17 0017
@@ -29,9 +31,20 @@ public class EduOrganStudentListExportDto {
     @ApiModelProperty("声部名称")
     private String subjectName;
 
+    private String currentGradeNum;
+
     @ApiModelProperty("乐团名称")
     private String musicGroupNames;
 
+    @ApiModelProperty("乐团主管")
+    private String educationName;
+
+    @ApiModelProperty("活动金额")
+    private BigDecimal activeAmount;
+
+    @ApiModelProperty("是否目标学员")
+    private Integer countFlag;
+
     @ApiModelProperty("所属学校")
     private String schoolNames;
 
@@ -77,6 +90,38 @@ public class EduOrganStudentListExportDto {
     @ApiModelProperty("会员有效期")
     private String membershipEndTime;
 
+    public String getCurrentGradeNum() {
+        return currentGradeNum;
+    }
+
+    public void setCurrentGradeNum(String currentGradeNum) {
+        this.currentGradeNum = currentGradeNum;
+    }
+
+    public String getEducationName() {
+        return educationName;
+    }
+
+    public void setEducationName(String educationName) {
+        this.educationName = educationName;
+    }
+
+    public BigDecimal getActiveAmount() {
+        return activeAmount;
+    }
+
+    public void setActiveAmount(BigDecimal activeAmount) {
+        this.activeAmount = activeAmount;
+    }
+
+    public Integer getCountFlag() {
+        return countFlag;
+    }
+
+    public void setCountFlag(Integer countFlag) {
+        this.countFlag = countFlag;
+    }
+
     public Integer getStudentId() {
         return studentId;
     }

+ 27 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CloudTeacherActiveQueryInfo;
 import com.ym.mec.biz.dal.page.OrganCloudStudyStudentDataQueryInfo;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
+import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
@@ -68,9 +69,10 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     private OrganizationDao organizationDao;
     @Autowired
     private IndexBaseMonthDataDao indexBaseMonthDataDao;
-
     @Autowired
     private EmployeeDao employeeDao;
+    @Autowired
+    private OrganizationService organizationService;
 
     @Override
     public BaseDAO<Integer, Student> getDAO() {
@@ -526,6 +528,13 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
 
             List<Map<Integer, String>> studentGroupNamesMapList = studentRegistrationDao.queryStudentMusicGroupNamesMap(studentIds);
             Map<Integer, String> studentGroupNamesMap = MapUtil.convertIntegerMap(studentGroupNamesMapList);
+
+            List<Map<Integer, String>> studentGroupEduMapList = studentRegistrationDao.queryStudentMusicGroupEduMap(studentIds);
+            Map<Integer, String> studentGroupEduMap = MapUtil.convertIntegerMap(studentGroupEduMapList);
+
+            List<Map<Integer, BigDecimal>> activeAmountMapList = cloudTeacherOrderDao.queryActiveAmountMap(studentIds);
+            Map<Integer, BigDecimal> activeAmountMap = MapUtil.convertIntegerMap(activeAmountMapList);
+
             Set<Integer> hasVipCourseStudentIds = courseScheduleStudentPaymentDao.getHasVipCourseStudentIds(studentIds);
 
             List<Map<Integer, String>> studentSchoolNamesMapList = studentDao.getStudentCooperationNameMap(studentIds);
@@ -558,10 +567,23 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             if(!CollectionUtils.isEmpty(studentNotStartPracticeCourseNumMapList)){
                 studentNotStartPracticeCourseNumMap = MapUtil.convertIntegerMap(studentNotStartPracticeCourseNumMapList);
             }
-
+            //获取分部年级列表
+            Map<Integer, String> gradeList = organizationService.getGradeList(1);
             for (EduOrganStudentListDto eduOrganStudentListDto : dataList1) {
                 EduOrganStudentListExportDto data = new EduOrganStudentListExportDto();
                 BeanUtils.copyProperties(eduOrganStudentListDto, data);
+                if (StringUtils.isNotEmpty(eduOrganStudentListDto.getCurrentGradeNum())) {
+                    String grade = gradeList.get(Integer.parseInt(eduOrganStudentListDto.getCurrentGradeNum()));
+                    if (StringUtils.isNotEmpty(grade)) {
+                        data.setCurrentGradeNum(grade);
+                    }
+                }
+                if(activeAmountMap.containsKey(data.getStudentId())){
+                    data.setActiveAmount(activeAmountMap.get(data.getStudentId()));
+                }
+                if(studentGroupEduMap.containsKey(data.getStudentId())){
+                    data.setEducationName(studentGroupEduMap.get(data.getStudentId()));
+                }
                 if(studentGroupNamesMap.containsKey(data.getStudentId())){
                     data.setMusicGroupNames(studentGroupNamesMap.get(data.getStudentId()));
                 }
@@ -914,14 +936,15 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     public void remarkCountFlag() {
         //清除标记
-//        studentDao.cleanCountFlag();
+        studentDao.cleanCountFlag();
         //打标记
 //        List<Integer> studentIds = new ArrayList<>();
         //获取在会员团的学员
 //        studentIds.addAll(studentRegistrationDao.queryHasMemberGroupStudent());
         //获取购买过云教练(非活动)的学员
 //        studentIds.addAll(cloudTeacherOrderDao.getStudentIds());
-//        studentDao.remarkCountFlag(studentIds);
+        //标记目标学员
+        studentDao.remarkCountFlag();
         //更新目标学员、目标金额
         SysConfig config = sysConfigDao.findByParamName("cloud_teacher_active_target");
         config.setParanValue(JSON.toJSONString(studentRegistrationDao.queryOrganTarget()));

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -261,6 +261,17 @@
     <select id="getStudentIds" resultType="java.lang.Integer">
         SELECT DISTINCT student_id_ FROM cloud_teacher_order WHERE active_remark_ IS NULL AND status_ != 0
     </select>
+    <select id="queryActiveAmountMap" resultType="java.util.Map">
+        SELECT student_id_ 'key',SUM(amount_) 'value' FROM cloud_teacher_order
+        WHERE status_ != 0 AND active_remark_ = '202109'
+        <if test="studentIds != null and studentIds.size > 0">
+            AND student_id_ IN
+            <foreach collection="studentIds" separator="," item="userId" open="(" close=")">
+                #{userId}
+            </foreach>
+        </if>
+        GROUP BY student_id_
+    </select>
     <sql id="queryCloudTeacherActiveDetailSql">
         <where>
             cto.status_ != 0 AND cto.active_remark_ = '202109'

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

@@ -1048,7 +1048,8 @@
             COUNT(DISTINCT smcr.behavior_id_) cloudStudyUseNum,
             SUM(CASE WHEN smcr.play_time_ IS NULL THEN 0 ELSE play_time_ END) cloudStudyUseTime,
             COUNT(DISTINCT DATE(smcr.create_time_)) cloudStudyUseDays,
-            stu.membership_end_time_ membershipEndTime
+            stu.membership_end_time_ membershipEndTime,
+            stu.current_grade_num_,stu.current_class_,stu.count_flag_
         FROM (SELECT DISTINCT t1.user_id_ FROM ((
                 SELECT
                 sr.user_id_
@@ -1318,29 +1319,28 @@
     </update>
     <update id="remarkCountFlag">
         UPDATE student SET count_flag_ = 1 WHERE user_id_ IN (
-        SELECT * FROM (
-        SELECT DISTINCT user_id_
-        FROM ((SELECT sr.user_id_
-        FROM student_registration sr
-        LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
-        WHERE mg.status_='PROGRESS'
-        AND sr.music_group_status_='NORMAL')
-        UNION ALL
-        (SELECT
-        cssp.user_id_
-        FROM
-        course_schedule_student_payment cssp
-        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
-        WHERE
-        cssp.group_type_ IN ('VIP', 'PRACTICE')
-        AND cs.status_='NOT_START')) t
-        LEFT JOIN sys_user su ON t.user_id_=su.id_
-        WHERE su.del_flag_=0 AND t.user_id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29'))c)
-        <if test="studentIds != null and studentIds.size > 0">
-            AND user_id_ NOT IN
-            <foreach collection="studentIds" separator="," item="userId" open="(" close=")">
-                #{userId}
-            </foreach>
-        </if>
+
+        SELECT t.user_id_ FROM (SELECT DISTINCT sr.user_id_ FROM student_registration sr
+        LEFT JOIN sys_user su  ON sr.user_id_ = su.id_
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        -- 新用户
+        WHERE su.id_ NOT IN (SELECT DISTINCT(cssp.`user_id_`)  FROM `course_schedule_student_payment` cssp
+        LEFT JOIN course_schedule cs on cssp.`course_schedule_id_` = cs.`id_`
+        LEFT JOIN `music_group` mg on mg.`id_` = cssp.`music_group_id_`
+        WHERE cs.`group_type_` = 'MUSIC' AND cs.`status_` = 'OVER' AND mg.`status_` = 'PROGRESS'
+        GROUP BY cssp.`user_id_` HAVING COUNT(cs.`id_`) <= 4)
+        -- 			非管乐
+        AND su.id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29')
+        -- 			声部排除
+        AND su.organ_id_ NOT IN (36,38,39,41,42,43,44,45,46,47,48,49,50,52,54,55,56,63)
+        -- 			购买了云教练
+        AND su.id_ NOT IN (SELECT DISTINCT student_id_ FROM cloud_teacher_order WHERE active_remark_ IS NULL AND status_ != 0)
+        -- 			未退团,不是会员团
+        AND su.id_ NOT IN (SELECT DISTINCT sr.user_id_ FROM student_registration sr
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        WHERE sr.music_group_status_ != 'QUIT' AND mg.course_view_type_ = 2)
+
+        AND sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ != 2 AND mg.`status_` = 'PROGRESS'
+        GROUP BY sr.user_id_)t)
     </update>
 </mapper>

+ 17 - 2
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1678,8 +1678,23 @@
     <select id="queryStudentMusicGroupNamesMap" 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'
+        LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
+        WHERE mg.status_='PROGRESS' AND sr.music_group_status_ != 'QUIT'
+        <if test="studentIds!=null and studentIds.size()>0">
+            AND sr.user_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
+        </if>
+        GROUP BY sr.user_id_
+    </select>
+
+    <select id="queryStudentMusicGroupEduMap" resultType="java.util.Map">
+        SELECT sr.user_id_ 'key',GROUP_CONCAT(DISTINCT su.real_name_) 'value'
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
+        LEFT JOIN sys_user su ON mg.educational_teacher_id_ = su.id_
+        WHERE mg.status_='PROGRESS' AND sr.music_group_status_ != 'QUIT'  AND mg.educational_teacher_id_ IS NOT NULL
         <if test="studentIds!=null and studentIds.size()>0">
             AND sr.user_id_ IN
             <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">