Browse Source

Merge remote-tracking branch 'origin/master'

zouxuan 4 years ago
parent
commit
9b5ca774e4

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

@@ -75,7 +75,9 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
      * @date 2021/1/11 0011
      * @return java.util.List<com.ym.mec.biz.dal.entity.IndexBaseMonthData>
      */
-    List<IndexBaseMonthData> getMusicStudentData();
+    List<IndexBaseMonthData> getMusicStudentData(@Param("type") String type);
+
+    List<IndexBaseMonthData> getStudentConversionData();
 
     List<IndexBaseMonthData> getOtherStudentData();
 

+ 13 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.IndexDataType;
 import com.ym.mec.biz.dal.enums.JobNatureEnum;
+import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
@@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -69,6 +71,13 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 
 		Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = indexBaseDatas.stream().collect(Collectors.groupingBy(IndexBaseMonthData::getDataType));
 		for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
+			if(IndexDataType.ACTIVATION_RATE.equals(typeDateMapEntry.getKey())||IndexDataType.HOMEWORK_CREATE_RATE.equals(typeDateMapEntry.getKey())
+					||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())
+					||IndexDataType.STUDENT_CONVERSION.equals(typeDateMapEntry.getKey())){
+				for (IndexBaseMonthData indexBaseMonthData : typeDateMapEntry.getValue()) {
+					indexBaseMonthData.setPercent(indexBaseMonthData.getActivateNum().divide(indexBaseMonthData.getTotalNum(), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
+				}
+			}
 			IndexBaseDto indexBaseData = new IndexBaseDto(typeDateMapEntry.getKey(),typeDateMapEntry.getKey().getMsg());
 			indexBaseData.setIndexMonthData(typeDateMapEntry.getValue());
 			result.add(indexBaseData);
@@ -96,7 +105,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		//运营数据
 		saveData(indexBaseMonthDataDao.getSchoolData(), startMonth, IndexDataType.SCHOOL);
 		saveData(indexBaseMonthDataDao.getMusicData(), startMonth, IndexDataType.MUSIC_GROUP_NUM);
-		saveData(indexBaseMonthDataDao.getMusicStudentData(), startMonth, IndexDataType.MUSIC_GROUP_STUDENT);
+		saveData(indexBaseMonthDataDao.getMusicStudentData(null), startMonth, IndexDataType.MUSIC_GROUP_STUDENT);
 		saveData(indexBaseMonthDataDao.getOtherStudentData(), startMonth, IndexDataType.OTHER_STUDENT);
 
 		//业务数据
@@ -119,9 +128,9 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		saveData(indexBaseMonthDataDao.getTeacherData(null, true), startMonth, IndexDataType.DIMISSION_NUM);
 
 		//学员变动
-		saveData(null, startMonth, IndexDataType.NEWLY_STUDENT_NUM);
-		saveData(null, startMonth, IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
-		saveData(null, startMonth, IndexDataType.STUDENT_CONVERSION);
+		saveData(indexBaseMonthDataDao.getMusicStudentData("ALL"), startMonth, IndexDataType.NEWLY_STUDENT_NUM);
+		saveData(indexBaseMonthDataDao.getMusicStudentData("QUIT"), startMonth, IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
+		saveData(indexBaseMonthDataDao.getStudentConversionData(), startMonth, IndexDataType.STUDENT_CONVERSION);
 
 		//课程数据
 		saveData(indexBaseMonthDataDao.getGroupCourseData(GroupType.MUSIC), startMonth, IndexDataType.MUSIC_GROUP_COURSE);

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

@@ -112,7 +112,8 @@
 	</select>
 
     <select id="getIndexBaseData" resultMap="IndexBaseMonthData">
-		SELECT *
+		SELECT
+			month_,data_type_,SUM(total_num_) total_num_,SUM(activate_num_) activate_num_,SUM(percent_) percent_
 		FROM index_base_month_data
 		<where>
 			<if test="dataTypes!=null and dataTypes.size()>0">
@@ -134,6 +135,7 @@
 				AND DATE_FORMAT(month_, '%Y-%m')&lt;=#{endMonth}
 			</if>
 		</where>
+		GROUP BY month_,data_type_
 	</select>
 
 	<select id="getStudentSignUpData" resultMap="IndexBaseMonthData">
@@ -229,9 +231,14 @@
 			LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
 		WHERE
 			mg.del_flag_ = 0
-			AND mg.status_ = 'PROGRESS'
-			AND mg.organ_id_ IS NOT NULL
-			AND sr.music_group_status_='NORMAL'
+		  	AND mg.organ_id_ IS NOT NULL
+			<if test="type==null">
+				AND mg.status_ = 'PROGRESS'
+				AND sr.music_group_status_='NORMAL'
+			</if>
+			<if test="type!=null and type=='QUIT'">
+				AND sr.music_group_status_='QUIT'
+			</if>
 		GROUP BY
 			mg.organ_id_
 		ORDER BY
@@ -308,4 +315,25 @@
 		ORDER BY
 			m.organ_id_;
 	</select>
+
+	<select id="getStudentConversionData" resultMap="IndexBaseMonthData">
+		SELECT
+			mg.organ_id_,
+			CONCAT( DATE_FORMAT( NOW(), '%Y-%m' ), '-01' ) month_,
+			COUNT( DISTINCT sr.user_id_ ) total_num_,
+			COUNT( DISTINCT IF((cssp.group_type_='PRACTICE' AND pg.type_='CHARGE') OR cssp.group_type_='VIP', cssp.user_id_, NULL) ) activate_num_,
+			TRUNCATE(COUNT( DISTINCT IF((cssp.group_type_='PRACTICE' AND pg.type_='CHARGE') OR cssp.group_type_='VIP', cssp.user_id_, NULL) )/COUNT( DISTINCT sr.user_id_ )*100, 2) percent_
+		FROM
+			student_registration sr
+				LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+				LEFT JOIN course_schedule_student_payment cssp ON sr.user_id_=cssp.user_id_
+				LEFT JOIN practice_group pg ON cssp.music_group_id_=pg.id_
+		WHERE
+			mg.del_flag_ = 0
+		  AND mg.organ_id_ IS NOT NULL
+		GROUP BY
+			mg.organ_id_
+		ORDER BY
+			mg.organ_id_;
+	</select>
 </mapper>