Browse Source

update 学生增加服务指标,运营指标标记

周箭河 5 years ago
parent
commit
94af63b5a5

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.Practice4OrganDto;
 import com.ym.mec.biz.dal.dto.PracticeGroupsDto;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
@@ -99,12 +100,51 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
      * @param type
      * @return
      */
-    List<PracticeGroupsDto> getMonthOrganMoney(@Param("type") OrderTypeEnum type,@Param("startTime") Date startTime);
+    List<PracticeGroupsDto> getMonthOrganMoney(@Param("type") OrderTypeEnum type, @Param("startTime") Date startTime);
 
     /**
      * 获取当月新成交金额,人数
      *
      * @return
      */
-    List<PracticeGroupsDto> getOrganNewPracticeGroupsOfMonth(@Param("type") OrderTypeEnum type,@Param("startTime") Date startTime);
+    List<PracticeGroupsDto> getOrganNewPracticeGroupsOfMonth(@Param("type") OrderTypeEnum type, @Param("startTime") Date startTime);
+
+    /**
+     * 获取分部体验人数(去除禁止)
+     *
+     * @return
+     */
+    List<Practice4OrganDto> getTryNums();
+
+    /**
+     * 网管课体验人数
+     *
+     * @param studentIds
+     * @return
+     */
+    List<Practice4OrganDto> getPracticeTryNums(@Param("studentIds") String studentIds);
+
+    /**
+     * vip课体验人数
+     *
+     * @return
+     */
+    List<Practice4OrganDto> getVipTryNums();
+
+    /**
+     * 网管课转化人数
+     *
+     * @param classDate
+     * @param studentIds
+     * @return
+     */
+    List<Practice4OrganDto> getPracticeBuyNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate, @Param("studentIds") String studentIds);
+
+    /**
+     * VIP课转化人数
+     *
+     * @param classDate
+     * @return
+     */
+    List<Practice4OrganDto> getVipBuyNums(@Param("classDate") Date classDate,@Param("endDate") Date endDate);
 }

+ 127 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/Practice4OrganDto.java

@@ -0,0 +1,127 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class Practice4OrganDto {
+    @ApiModelProperty(value = "分部名称",required = false)
+    private String organName;
+    @ApiModelProperty(value = "分部编号",required = false)
+    private Integer organId;
+    @ApiModelProperty(value = "体验人数",required = false)
+    private Integer tryNum = 0;
+    @ApiModelProperty(value = "vip转化人数",required = false)
+    private Integer vipNum = 0;
+    @ApiModelProperty(value = "网管课转化人数",required = false)
+    private Integer practiceNum = 0;
+    @ApiModelProperty(value = "总转化人数",required = false)
+    private Integer totalNum = 0;
+    @ApiModelProperty(value = "当月新增Vip人数",required = false)
+    private Integer vip4MonthNum = 0;
+    @ApiModelProperty(value = "当月新增网管课人数",required = false)
+    private Integer practice4MonthNum = 0;
+    @ApiModelProperty(value = "当月续费",required = false)
+    private Integer renew4MonthNum = 0;
+    @ApiModelProperty(value = "同比上月增减人数",required = false)
+    private Integer change4MonthNum = 0;
+    @ApiModelProperty(value = "当月回款金额",required = false)
+    private BigDecimal totalMoney = BigDecimal.ZERO;
+
+    private String studentIds;
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Integer getTryNum() {
+        return tryNum;
+    }
+
+    public void setTryNum(Integer tryNum) {
+        this.tryNum = tryNum;
+    }
+
+    public Integer getVipNum() {
+        return vipNum;
+    }
+
+    public void setVipNum(Integer vipNum) {
+        this.vipNum = vipNum;
+    }
+
+    public Integer getPracticeNum() {
+        return practiceNum;
+    }
+
+    public void setPracticeNum(Integer practiceNum) {
+        this.practiceNum = practiceNum;
+    }
+
+    public Integer getVip4MonthNum() {
+        return vip4MonthNum;
+    }
+
+    public void setVip4MonthNum(Integer vip4MonthNum) {
+        this.vip4MonthNum = vip4MonthNum;
+    }
+
+    public Integer getPractice4MonthNum() {
+        return practice4MonthNum;
+    }
+
+    public void setPractice4MonthNum(Integer practice4MonthNum) {
+        this.practice4MonthNum = practice4MonthNum;
+    }
+
+    public Integer getRenew4MonthNum() {
+        return renew4MonthNum;
+    }
+
+    public void setRenew4MonthNum(Integer renew4MonthNum) {
+        this.renew4MonthNum = renew4MonthNum;
+    }
+
+    public Integer getChange4MonthNum() {
+        return change4MonthNum;
+    }
+
+    public void setChange4MonthNum(Integer change4MonthNum) {
+        this.change4MonthNum = change4MonthNum;
+    }
+
+    public BigDecimal getTotalMoney() {
+        return totalMoney;
+    }
+
+    public void setTotalMoney(BigDecimal totalMoney) {
+        this.totalMoney = totalMoney;
+    }
+
+    public String getStudentIds() {
+        return studentIds;
+    }
+
+    public void setStudentIds(String studentIds) {
+        this.studentIds = studentIds;
+    }
+
+    public Integer getTotalNum() {
+        return totalNum;
+    }
+
+    public void setTotalNum(Integer totalNum) {
+        this.totalNum = totalNum;
+    }
+}

+ 99 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/practiceStatisDto.java

@@ -0,0 +1,99 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class practiceStatisDto {
+    @ApiModelProperty(value = "个分部数据", required = false)
+    private List<Practice4OrganDto> practice4OrganDtoList;
+    @ApiModelProperty(value = "体验人数", required = false)
+    private Integer tryNum = 0;
+    @ApiModelProperty(value = "vip转化人数", required = false)
+    private Integer vipNum = 0;
+    @ApiModelProperty(value = "网管课转化人数", required = false)
+    private Integer practiceNum = 0;
+    @ApiModelProperty(value = "当月新增Vip人数", required = false)
+    private Integer vip4MonthNum = 0;
+    @ApiModelProperty(value = "当月新增网管课人数", required = false)
+    private Integer practice4MonthNum = 0;
+    @ApiModelProperty(value = "当月续费", required = false)
+    private Integer renew4MonthNum = 0;
+    @ApiModelProperty(value = "同比上月增减人数", required = false)
+    private Integer change4MonthNum = 0;
+    @ApiModelProperty(value = "当月回款金额", required = false)
+    private BigDecimal totalMoney = BigDecimal.ZERO;
+
+    public Integer getTryNum() {
+        return tryNum;
+    }
+
+    public void setTryNum(Integer tryNum) {
+        this.tryNum = tryNum;
+    }
+
+    public Integer getVipNum() {
+        return vipNum;
+    }
+
+    public void setVipNum(Integer vipNum) {
+        this.vipNum = vipNum;
+    }
+
+    public Integer getPracticeNum() {
+        return practiceNum;
+    }
+
+    public void setPracticeNum(Integer practiceNum) {
+        this.practiceNum = practiceNum;
+    }
+
+    public Integer getVip4MonthNum() {
+        return vip4MonthNum;
+    }
+
+    public void setVip4MonthNum(Integer vip4MonthNum) {
+        this.vip4MonthNum = vip4MonthNum;
+    }
+
+    public Integer getPractice4MonthNum() {
+        return practice4MonthNum;
+    }
+
+    public void setPractice4MonthNum(Integer practice4MonthNum) {
+        this.practice4MonthNum = practice4MonthNum;
+    }
+
+    public Integer getRenew4MonthNum() {
+        return renew4MonthNum;
+    }
+
+    public void setRenew4MonthNum(Integer renew4MonthNum) {
+        this.renew4MonthNum = renew4MonthNum;
+    }
+
+    public Integer getChange4MonthNum() {
+        return change4MonthNum;
+    }
+
+    public void setChange4MonthNum(Integer change4MonthNum) {
+        this.change4MonthNum = change4MonthNum;
+    }
+
+    public BigDecimal getTotalMoney() {
+        return totalMoney;
+    }
+
+    public void setTotalMoney(BigDecimal totalMoney) {
+        this.totalMoney = totalMoney;
+    }
+
+    public List<Practice4OrganDto> getPractice4OrganDtoList() {
+        return practice4OrganDtoList;
+    }
+
+    public void setPractice4OrganDtoList(List<Practice4OrganDto> practice4OrganDtoList) {
+        this.practice4OrganDtoList = practice4OrganDtoList;
+    }
+}

+ 80 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -301,4 +301,84 @@
         )
         GROUP BY organ_id_
     </select>
+
+    <resultMap id="practice4Organ" type="com.ym.mec.biz.dal.dto.Practice4OrganDto">
+        <result column="organ_name_" property="organName"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="try_num_" property="tryNum"/>
+        <result column="vip_num_" property="vipNum"/>
+        <result column="practice_num_" property="practiceNum"/>
+        <result column="vip4_month_num_" property="vip4MonthNum"/>
+        <result column="practice4_month_num_" property="practice4MonthNum"/>
+        <result column="renew4_month_num_" property="renew4MonthNum"/>
+        <result column="change4_month_num_" property="change4MonthNum"/>
+        <result column="total_money_" property="totalMoney"/>
+        <result column="student_ids_" property="studentIds"/>
+    </resultMap>
+
+    <!-- 体验人数(除去禁止的) -->
+    <select id="getTryNums" resultMap="practice4Organ">
+        SELECT pg.organ_id_, count(distinct pg.student_id_) try_num_
+        FROM practice_group pg
+                 LEFT JOIN student s ON s.user_id_ = pg.student_id_
+        WHERE pg.group_status_ IN ('NORMAL', 'FINISH')
+          AND s.operating_tag_ = 1
+          AND pg.buy_months_ IS NULL
+        GROUP BY pg.organ_id_
+    </select>
+
+    <!-- 网管课体验人数(禁止的) -->
+    <select id="getPracticeTryNums" resultMap="practice4Organ">
+        SELECT pg.organ_id_, count(distinct pg.student_id_) try_num_
+        FROM practice_group pg
+        LEFT JOIN student s ON s.user_id_ = pg.student_id_
+        WHERE pg.group_status_ IN ('NORMAL', 'FINISH')
+        <if test="studentIds != null">
+            AND FIND_IN_SET(pg.student_id_,#{studentIds})
+        </if>
+        AND pg.buy_months_ >=1
+        AND s.operating_tag_ = 0
+        GROUP BY pg.organ_id_
+    </select>
+
+    <!-- vip体验人数(禁止的) -->
+    <select id="getVipTryNums" resultMap="practice4Organ">
+        SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) try_num_, GROUP_CONCAT(distinct cssp.user_id_) student_ids_
+        FROM course_schedule_student_payment cssp
+                 LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
+                 LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+                 LEFT JOIN student s ON s.user_id_ = cssp.user_id_
+        WHERE s.operating_tag_ = 0
+          AND cs.teach_mode_ = 'ONLINE'
+        GROUP BY vg.organ_id_
+    </select>
+
+    <select id="getVipBuyNums" resultMap="practice4Organ">
+        SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) vip_num_, GROUP_CONCAT(DISTINCT cssp.user_id_) student_ids_
+        FROM course_schedule_student_payment cssp
+                 LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
+                 LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+        WHERE CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
+        <if test="endDate != null">
+            <![CDATA[AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) < #{endDate}]]>
+        </if>
+          AND cs.teach_mode_ = 'ONLINE'
+        GROUP BY vg.organ_id_
+    </select>
+
+    <select id="getPracticeBuyNums" resultMap="practice4Organ">
+        SELECT pg.organ_id_, COUNT(DISTINCT cssp.user_id_) practice_num_
+        FROM course_schedule_student_payment cssp
+                 LEFT JOIN practice_group pg ON cssp.music_group_id_ = pg.id_ AND cssp.group_type_ = 'PRACTICE'
+                 LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+        WHERE CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
+        <if test="endDate != null">
+            <![CDATA[AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) < #{endDate}]]>
+        </if>
+        <if test="studentIds != null">
+            AND FIND_IN_SET(cssp.user_id_,#{studentIds})
+        </if>
+          AND pg.buy_months_ >= 1
+        GROUP BY pg.organ_id_
+    </select>
 </mapper>

+ 183 - 17
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
@@ -35,16 +37,6 @@ import com.ym.mec.biz.dal.dao.OrganizationDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.TeacherCourseStatisticsDao;
-import com.ym.mec.biz.dal.dto.LuckStatisDto;
-import com.ym.mec.biz.dal.dto.OrderStatisDto;
-import com.ym.mec.biz.dal.dto.PracticeGroupsDto;
-import com.ym.mec.biz.dal.dto.VipBuyResultDto;
-import com.ym.mec.biz.dal.dto.practiceGroupStatisDto;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.MusicGroupService;
@@ -367,8 +359,8 @@ public class StudentOrderController extends BaseController {
 
         Date startTime = DateUtil.getFirstDayOfMonth(new Date());
 
-        List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY,startTime);
-        List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW,startTime);
+        List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY, startTime);
+        List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW, startTime);
 
         //List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getOrganNewPracticeGroupsOfMonth(OrderTypeEnum.PRACTICE_GROUP_BUY,startTime);
         //List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getOrganNewPracticeGroupsOfMonth(OrderTypeEnum.PRACTICE_GROUP_RENEW,startTime);
@@ -438,8 +430,8 @@ public class StudentOrderController extends BaseController {
                 }
             }
 
-            if(practiceGroupsDto.getTotalNums() >0 ){
-                double scale = new BigDecimal(practiceGroupsDto.getBuyNums()).multiply(new BigDecimal(100)).divide(new BigDecimal(practiceGroupsDto.getTotalNums()),2, BigDecimal.ROUND_HALF_UP).doubleValue();
+            if (practiceGroupsDto.getTotalNums() > 0) {
+                double scale = new BigDecimal(practiceGroupsDto.getBuyNums()).multiply(new BigDecimal(100)).divide(new BigDecimal(practiceGroupsDto.getTotalNums()), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
                 practiceGroupsDto.setBuyScale(scale);
             }
 
@@ -455,7 +447,7 @@ public class StudentOrderController extends BaseController {
         Integer monthBuyNums = 0;
         Integer monthRenewNums = 0;
         BigDecimal monthBuyMoney = BigDecimal.ZERO;
-        BigDecimal monthRenewMoney= BigDecimal.ZERO;
+        BigDecimal monthRenewMoney = BigDecimal.ZERO;
 
         Iterator<PracticeGroupsDto> iterator = practiceGroups.iterator();
         while (iterator.hasNext()) {
@@ -472,7 +464,7 @@ public class StudentOrderController extends BaseController {
             renewNum += next.getRenewNums();
             monthBuyNums += next.getMonthBuyNums();
             monthRenewNums += next.getMonthRenewNums();
-            monthBuyMoney  = monthBuyMoney.add(next.getMonthBuyMoney());
+            monthBuyMoney = monthBuyMoney.add(next.getMonthBuyMoney());
             monthRenewMoney = monthRenewMoney.add(next.getMonthRenewMoney());
         }
         practiceGroups = practiceGroups.stream().sorted(Comparator.comparingDouble(PracticeGroupsDto::getBuyScale).reversed()).collect(Collectors.toList());
@@ -490,11 +482,185 @@ public class StudentOrderController extends BaseController {
         practiceGroupStatisDto.setMonthRenewNums(monthRenewNums);
         practiceGroupStatisDto.setMonthRenewMoney(monthRenewMoney);
 
-        if(totalNum >0 ){
+        if (totalNum > 0) {
             BigDecimal scale = new BigDecimal(buyNum).multiply(new BigDecimal(100)).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP);
             practiceGroupStatisDto.setBuyScale(scale);
         }
 
         return succeed(practiceGroupStatisDto);
     }
+
+    @GetMapping("/getPracticeStatis")
+    public HttpResponseResult getPracticeStatis() {
+        List<Organization> organs = organizationDao.findAllOrgans();
+        //除去禁止的体验人数
+        List<Practice4OrganDto> organTryNums = courseScheduleEvaluateDao.getTryNums();
+        List<Practice4OrganDto> organPracticeTryNums = courseScheduleEvaluateDao.getPracticeTryNums(null);
+        List<Practice4OrganDto> organVipTryNums = courseScheduleEvaluateDao.getVipTryNums();
+        String studentIds = organVipTryNums.stream().map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+        List<Practice4OrganDto> organPracticeAndVipTryNums = courseScheduleEvaluateDao.getPracticeTryNums(studentIds);
+        List<Practice4OrganDto> practiceBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(new Date(), null, null);
+        List<Practice4OrganDto> vipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(new Date(), null);
+
+        List<Practice4OrganDto> practiceAndVipBuyNums = new ArrayList<>();
+        if(vipBuyNums.size() >0 ) {
+            studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+            practiceAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(new Date(), null, studentIds);
+        }
+        Date startTime = DateUtil.getFirstDayOfMonth(new Date());
+
+        //当月新增网管课人数
+        List<PracticeGroupsDto> monthOrganPracticeBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY, startTime);
+        //当月新增VIP人数
+        List<PracticeGroupsDto> monthOrganVipBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.SMALL_CLASS_TO_BUY, startTime);
+        //当月续费人数
+        List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW, startTime);
+
+        //本月总人数
+        List<Practice4OrganDto> nowMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, null, null);
+        List<Practice4OrganDto> nowMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(startTime, null);
+        List<Practice4OrganDto> nowMonthPracticeAndVipBuyNums = new ArrayList<>();
+        if(nowMonthVipBuyNums.size()>0) {
+            studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+            nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, null, studentIds);
+        }
+
+        //上月总人数
+        Date lastMonthStartTime = DateUtil.addMonths(startTime, -1);
+        List<Practice4OrganDto> lastMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, null);
+        List<Practice4OrganDto> lastMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(lastMonthStartTime, startTime);
+        List<Practice4OrganDto> lastMonthPracticeAndVipBuyNums = new ArrayList<>();
+        if(lastMonthVipBuyNums.size() >0) {
+            studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+            lastMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, studentIds);
+        }
+
+        List<Practice4OrganDto> practice4Organs = new ArrayList<>();
+        for (Organization organ : organs) {
+            Practice4OrganDto practice4OrganDto = new Practice4OrganDto();
+            practice4OrganDto.setOrganName(organ.getName());
+            practice4OrganDto.setOrganId(organ.getId());
+            //体验人数(除去禁止)
+            for (Practice4OrganDto organTryNum : organTryNums) {
+                if (organ.getId().equals(organTryNum.getOrganId())) {
+                    practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() + organTryNum.getTryNum());
+                    break;
+                }
+            }
+            //网管课体验人数(禁止)
+            for (Practice4OrganDto organPracticeTryNum : organPracticeTryNums) {
+                if (organ.getId().equals(organPracticeTryNum.getOrganId())) {
+                    practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() + organPracticeTryNum.getTryNum());
+                    break;
+                }
+            }
+            //vip课体验人数(禁止)
+            for (Practice4OrganDto organVipTryNum : organVipTryNums) {
+                if (organ.getId().equals(organVipTryNum.getOrganId())) {
+                    practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() + organVipTryNum.getTryNum());
+                    break;
+                }
+            }
+            //减去vip中在网管课的人数
+            for (Practice4OrganDto organPracticeAndVipTryNum : organPracticeAndVipTryNums) {
+                if (organ.getId().equals(organPracticeAndVipTryNum.getOrganId())) {
+                    practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() - organPracticeAndVipTryNum.getTryNum());
+                    break;
+                }
+            }
+            //网管课转化人数
+            for (Practice4OrganDto practiceBuyNum : practiceBuyNums) {
+                if (organ.getId().equals(practiceBuyNum.getOrganId())) {
+                    practice4OrganDto.setPracticeNum(practiceBuyNum.getPracticeNum());
+                    practice4OrganDto.setTotalNum(practice4OrganDto.getTotalNum() + practiceBuyNum.getPracticeNum());
+                }
+                break;
+            }
+            //VIP课转化人数
+            for (Practice4OrganDto vipBuyNum : vipBuyNums) {
+                if (organ.getId().equals(vipBuyNum.getOrganId())) {
+                    practice4OrganDto.setVipNum(vipBuyNum.getVipNum());
+                    practice4OrganDto.setTotalNum(practice4OrganDto.getTotalNum() + vipBuyNum.getVipNum());
+                    break;
+                }
+            }
+            for (Practice4OrganDto practiceAndVipBuyNum : practiceAndVipBuyNums) {
+                if (organ.getId().equals(practiceAndVipBuyNum.getOrganId())) {
+                    practice4OrganDto.setVipNum(practice4OrganDto.getVipNum() - practiceAndVipBuyNum.getPracticeNum());
+                    practice4OrganDto.setTotalNum(practice4OrganDto.getTotalNum() - practiceAndVipBuyNum.getVipNum());
+                    break;
+                }
+            }
+
+            //当月新增网管课人数
+            for (PracticeGroupsDto monthOrganPracticeBuyMoney : monthOrganPracticeBuyMoneys) {
+                if (organ.getId().equals(monthOrganPracticeBuyMoney.getOrganId())) {
+                    practice4OrganDto.setPractice4MonthNum(monthOrganPracticeBuyMoney.getBuyNums());
+                    practice4OrganDto.setTotalMoney(practice4OrganDto.getTotalMoney().add(monthOrganPracticeBuyMoney.getTotalMoney()));
+                    break;
+                }
+            }
+            //当月新增VIP课人数
+            for (PracticeGroupsDto monthOrganVipBuyMoney : monthOrganVipBuyMoneys) {
+                if (organ.getId().equals(monthOrganVipBuyMoney.getOrganId())) {
+                    practice4OrganDto.setVip4MonthNum(monthOrganVipBuyMoney.getBuyNums());
+                    practice4OrganDto.setTotalMoney(practice4OrganDto.getTotalMoney().add(monthOrganVipBuyMoney.getTotalMoney()));
+                    break;
+                }
+            }
+            //当月续费人数
+            for (PracticeGroupsDto monthOrganRenewMoney : monthOrganRenewMoneys) {
+                if (organ.getId().equals(monthOrganRenewMoney.getOrganId())) {
+                    practice4OrganDto.setRenew4MonthNum(monthOrganRenewMoney.getBuyNums());
+                    practice4OrganDto.setTotalMoney(practice4OrganDto.getTotalMoney().add(monthOrganRenewMoney.getTotalMoney()));
+                    break;
+                }
+            }
+            //同比上月增减人数
+            for (Practice4OrganDto nowMonthPracticeBuyNum : nowMonthPracticeBuyNums) {
+                if (organ.getId().equals(nowMonthPracticeBuyNum.getOrganId())) {
+                    practice4OrganDto.setChange4MonthNum(nowMonthPracticeBuyNum.getPracticeNum());
+                    break;
+                }
+            }
+            for (Practice4OrganDto nowMonthVipBuyNum : nowMonthVipBuyNums) {
+                if (organ.getId().equals(nowMonthVipBuyNum.getOrganId())) {
+                    practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() + nowMonthVipBuyNum.getVipNum());
+                    break;
+                }
+            }
+            for (Practice4OrganDto nowMonthPracticeAndVipBuyNum : nowMonthPracticeAndVipBuyNums) {
+                if (organ.getId().equals(nowMonthPracticeAndVipBuyNum.getOrganId())) {
+                    practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() - nowMonthPracticeAndVipBuyNum.getPracticeNum());
+                    break;
+                }
+            }
+
+            //上月人数
+            for (Practice4OrganDto lastMonthPracticeBuyNum : lastMonthPracticeBuyNums) {
+                if (organ.getId().equals(lastMonthPracticeBuyNum.getOrganId())) {
+                    practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() - lastMonthPracticeBuyNum.getPracticeNum());
+                    break;
+                }
+            }
+            for (Practice4OrganDto lastMonthVipBuyNum : lastMonthVipBuyNums) {
+                if (organ.getId().equals(lastMonthVipBuyNum.getOrganId())) {
+                    practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() - lastMonthVipBuyNum.getVipNum());
+                    break;
+                }
+            }
+            for (Practice4OrganDto lastMonthPracticeAndVipBuyNum : lastMonthPracticeAndVipBuyNums) {
+                if (organ.getId().equals(lastMonthPracticeAndVipBuyNum.getOrganId())) {
+                    practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() + lastMonthPracticeAndVipBuyNum.getPracticeNum());
+                    break;
+                }
+            }
+
+
+            practice4Organs.add(practice4OrganDto);
+        }
+
+        practice4Organs = practice4Organs.stream().sorted(Comparator.comparing(Practice4OrganDto::getTotalNum).reversed()).collect(Collectors.toList());
+        return succeed(practice4Organs);
+    }
 }