Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
6e03163ee8

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

@@ -27,6 +27,7 @@ public class Practice4OrganDto {
     private Integer change4MonthNum = 0;
     @ApiModelProperty(value = "当月回款金额",required = false)
     private BigDecimal totalMoney = BigDecimal.ZERO;
+    private Double scale =  0.00;
 
     private String studentIds;
     public String getOrganName() {
@@ -124,4 +125,12 @@ public class Practice4OrganDto {
     public void setTotalNum(Integer totalNum) {
         this.totalNum = totalNum;
     }
+
+    public Double getScale() {
+        return scale;
+    }
+
+    public void setScale(Double scale) {
+        this.scale = scale;
+    }
 }

+ 15 - 9
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -348,7 +348,9 @@
                  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
+        WHERE vg.organ_id_ >= 1
+          AND s.operating_tag_ = 0
+          AND cs.is_lock_ != 1
           AND cs.teach_mode_ = 'ONLINE'
         GROUP BY vg.organ_id_
     </select>
@@ -356,29 +358,33 @@
     <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}
+        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 vg.organ_id_ >= 1
+        AND 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'
+        AND cs.is_lock_ != 1
+        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}
+        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 pg.organ_id_ >= 1
+        AND 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
+        AND pg.buy_months_ >= 1
+        AND cs.is_lock_ != 1
         GROUP BY pg.organ_id_
     </select>
 </mapper>

+ 20 - 11
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -503,11 +503,14 @@ public class StudentOrderController extends BaseController {
         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(","));
+
+        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+        if (!studentIds.isEmpty()) {
             practiceAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(new Date(), null, studentIds);
         }
         Date startTime = DateUtil.getFirstDayOfMonth(new Date());
+        Date endTime = DateUtil.addMonths(startTime, 1);
+
 
         //当月新增网管课人数
         List<PracticeGroupsDto> monthOrganPracticeBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY, startTime);
@@ -517,12 +520,13 @@ public class StudentOrderController extends BaseController {
         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> nowMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime, null);
+        List<Practice4OrganDto> nowMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(startTime, endTime);
         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);
+
+        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+        if (!studentIds.isEmpty()) {
+            nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime, studentIds);
         }
 
         //上月总人数
@@ -530,8 +534,9 @@ public class StudentOrderController extends BaseController {
         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(","));
+
+        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+        if (!studentIds.isEmpty()) {
             lastMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, studentIds);
         }
 
@@ -573,8 +578,8 @@ public class StudentOrderController extends BaseController {
                 if (organ.getId().equals(practiceBuyNum.getOrganId())) {
                     practice4OrganDto.setPracticeNum(practiceBuyNum.getPracticeNum());
                     practice4OrganDto.setTotalNum(practice4OrganDto.getTotalNum() + practiceBuyNum.getPracticeNum());
+                    break;
                 }
-                break;
             }
             //VIP课转化人数
             for (Practice4OrganDto vipBuyNum : vipBuyNums) {
@@ -656,11 +661,15 @@ public class StudentOrderController extends BaseController {
                 }
             }
 
+            if (practice4OrganDto.getTryNum() > 0) {
+                double scale = new BigDecimal(practice4OrganDto.getTotalNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(practice4OrganDto.getTryNum()), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                practice4OrganDto.setScale(scale);
+            }
 
             practice4Organs.add(practice4OrganDto);
         }
 
-        practice4Organs = practice4Organs.stream().sorted(Comparator.comparing(Practice4OrganDto::getTotalNum).reversed()).collect(Collectors.toList());
+        practice4Organs = practice4Organs.stream().sorted(Comparator.comparingDouble(Practice4OrganDto::getScale).reversed()).collect(Collectors.toList());
         return succeed(practice4Organs);
     }
 }