|
@@ -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);
|
|
|
+ }
|
|
|
}
|