Ver Fonte

学员小课统计

zouxuan há 3 anos atrás
pai
commit
a51ed8f21c

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ManagerDownload.java

@@ -40,7 +40,7 @@ public class ManagerDownload extends BaseEntity {
     /**
      * 状态
      */
-    @ApiModelProperty(value = "状态")
+    @ApiModelProperty(value = "状态0下载中、1成功、2失败")
     private Integer status=0;
 
     /**

+ 25 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentBasicInfo.java

@@ -3,6 +3,8 @@ package com.ym.mec.biz.dal.entity;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.math.BigDecimal;
+
 /**
  * 对应数据库表(student_basic_info):
  */
@@ -55,7 +57,29 @@ public class StudentBasicInfo {
 	/** 声部课老师(学员所在乐团声部班老师) */
 	@ApiModelProperty(value = "声部课老师",required = false)
 	private String subjectTeacherName;
-	
+
+	@ApiModelProperty(value = "课程余额",required = false)
+	private BigDecimal courseBalance = BigDecimal.ZERO;
+
+	@ApiModelProperty(value = "学员状态",required = false)
+	private String studentStatus;
+
+	public String getStudentStatus() {
+		return studentStatus;
+	}
+
+	public void setStudentStatus(String studentStatus) {
+		this.studentStatus = studentStatus;
+	}
+
+	public BigDecimal getCourseBalance() {
+		return courseBalance;
+	}
+
+	public void setCourseBalance(BigDecimal courseBalance) {
+		this.courseBalance = courseBalance;
+	}
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentStatisticsQueryInfo.java

@@ -15,7 +15,7 @@ public class StudentStatisticsQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "声部编号",required = false)
     private Integer subjectId;
 
-    @ApiModelProperty(value = "学员状态,在读(NORMAL)、沉睡(SLEEPY)、流失(LOST)",required = false)
+    @ApiModelProperty(value = "学员状态,在读(NORMAL)、沉睡(SLEEPY)、流失(LOST), PAUSE(暂停)",required = false)
     private String studentStatus;
 
     @ApiModelProperty(value = "回访状态,THINKING(考虑中), PENDING_PAYMENT(确认缴费待缴费),LOST(流失), PAUSE(暂停),OTHER(其他)",required = false)

+ 5 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -2718,9 +2718,12 @@ public class ExportServiceImpl implements ExportService {
                     "回访状态","原因","回访日期"},
             new String[]{"studentBasicInfo.organName", "studentBasicInfo.userName", "studentBasicInfo.userId",
                     "studentBasicInfo.phone","studentBasicInfo.subjectName", "studentBasicInfo.cooperationOrganName", "studentBasicInfo.grade",
-                    "overCourseNum > 0 && subCourseNum > 0 && latelyYearCourseConsumer < 1 ? '沉睡' : (noScheduleNum > 0 || subCourseNum > 0) && (latelyYearCourseConsumer > 0 || overCourseNum <= 0) ? '在读':''",
+                    "studentBasicInfo.studentStatus",
                     "noScheduleNum","totalCourseNum", "overCourseNum", "subCourseNum","preCourseFee","firstCourseTime","lastCourseTime","teacherId","teacherName","musicDirectorId","musicDirectorName",
-                    "studentBasicInfo.subjectTeacherId","studentBasicInfo.subjectTeacherName","latelyCourseConsumer","visitNum","lastVisitStatus","visitReason","lastVisitTime"}, rows);
+                    "studentBasicInfo.subjectTeacherId","studentBasicInfo.subjectTeacherName","latelyCourseConsumer","visitNum",
+                    "lastVisitStatus == null?'':lastVisitStatus == 'LOST' ? '流失':lastVisitStatus == 'THINKING' ? '考虑中':" +
+                    "lastVisitStatus == 'PENDING_PAYMENT' ? '确认缴费待缴费':lastVisitStatus == 'PAUSE' ? '暂停':lastVisitStatus == 'OTHER' ? '其他':''"
+                    ,"visitReason","lastVisitTime"}, rows);
 
             workbook.write(fileOutputStream);
             fileOutputStream.getFD().sync();

+ 33 - 3
mec-biz/src/main/resources/config/mybatis/StudentStatisticsMapper.xml

@@ -175,6 +175,8 @@
 			<result column="cooperation_organ_name_" property="cooperationOrganName" />
 			<result column="subject_teacher_id_" property="subjectTeacherId" />
 			<result column="subject_teacher_name_" property="subjectTeacherName" />
+			<result column="course_balance_" property="courseBalance" />
+			<result column="student_status_" property="studentStatus" />
 		</association>
 	</resultMap>
 	<sql id="queryStatisticsSql">
@@ -195,9 +197,17 @@
 				<if test="studentStatus == 'LOST'">
 					AND ss.over_course_num_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0
 				</if>
+				<if test="studentStatus == 'PAUSE'">
+					AND suca.course_balance_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0
+				</if>
 			</if>
 			<if test="studentStatus == null or studentStatus == ''">
-				AND (ss.over_course_num_ > 0 OR ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0)
+				<if test="groupType == 'PRACTICE'">
+					AND (ss.over_course_num_ > 0 OR ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0 OR suca.course_balance_ > 0)
+				</if>
+				<if test="groupType != 'PRACTICE'">
+					AND (ss.over_course_num_ > 0 OR ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0)
+				</if>
 			</if>
 			<if test="feedbackType != null and feedbackType != ''">
 				AND ss.last_visit_status_ = #{feedbackType}
@@ -243,11 +253,25 @@
 	<select id="countStatistics" resultType="java.lang.Integer">
 		SELECT COUNT(sbi.id_) FROM student_basic_info sbi
 		LEFT JOIN student_statistics ss ON ss.user_id_ = sbi.user_id_
+		<if test="groupType != 'PRACTICE'">
+			LEFT JOIN sys_user_cash_account suca ON sbi.user_id_ = suca.user_id_
+		</if>
 		<include refid="queryStatisticsSql"/>
 	</select>
 	<select id="queryStatistics" resultMap="StudentStatisticsDto">
-		SELECT *,ss.not_start_course_fee_ + ss.no_course_fee_ preCourseFee FROM student_basic_info sbi
+		SELECT *,ss.not_start_course_fee_ + ss.no_course_fee_ preCourseFee,
+		CASE WHEN (ss.no_schedule_num_ > 0 OR ss.sub_course_num_ > 0) AND (ss.lately_year_course_consumer_ > 0 OR ss.over_course_num_ &lt;= 0) THEN '在读'
+		WHEN ss.over_course_num_ > 0 AND (ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0) AND ss.lately_year_course_consumer_ &lt;= 0 THEN '沉睡'
+		WHEN ss.over_course_num_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 THEN '流失'
+		WHEN suca.course_balance_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 THEN '暂停' ELSE '其他' END student_status_
+		<if test="groupType != 'PRACTICE'">
+			,suca.course_balance_
+		</if>
+		FROM student_basic_info sbi
 		LEFT JOIN student_statistics ss ON ss.user_id_ = sbi.user_id_
+		<if test="groupType != 'PRACTICE'">
+			LEFT JOIN sys_user_cash_account suca ON sbi.user_id_ = suca.user_id_
+		</if>
 		<include refid="queryStatisticsSql"/>
 		<include refid="global.limit"/>
 	</select>
@@ -283,7 +307,13 @@
 		FROM student_statistics ss
 		LEFT JOIN sys_user_cash_account suca ON ss.user_id_ = suca.user_id_
 		LEFT JOIN student_basic_info sbi ON ss.user_id_ = sbi.user_id_
-		WHERE ss.group_type_ = #{groupType} AND (ss.over_course_num_ > 0 OR ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0)
+		WHERE ss.group_type_ = #{groupType}
+		<if test="groupType != 'PRACTICE'">
+			AND (ss.over_course_num_ > 0 OR ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0 OR suca.course_balance_ > 0)
+		</if>
+		<if test="groupType == 'PRACTICE'">
+			AND (ss.over_course_num_ > 0 OR ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0)
+		</if>
 		<if test="organIdList != null and organIdList.size > 0">
 			AND sbi.organ_id_ IN
 			<foreach collection="organIdList" item="organId" open="(" close=")" separator=",">