Browse Source

教师端评测回访

zouxuan 3 years ago
parent
commit
5fb93b7775

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentVisitDao.java

@@ -64,4 +64,15 @@ public interface StudentVisitDao extends BaseDAO<Integer, StudentVisit> {
      * @return
      */
     List<TeacherVisitDto> getTeacherVisitCount(@Param("teacherIds") List<Integer> teacherIds, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 时间段内是否有训练统计的回访
+     * @param teacherId
+     * @param addDays1
+     * @param addDays3
+     * @return
+     */
+    List<Integer> queryRecordVisitStudentIds(@Param("teacherId") Integer teacherId,
+                                             @Param("addDays1") Date addDays1,
+                                             @Param("addDays3") Date addDays3);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CountStudentTrainDataDto.java

@@ -23,6 +23,16 @@ public class CountStudentTrainDataDto {
 
     private String musicGroupName;
 
+    private Integer visitFlag;
+
+    public Integer getVisitFlag() {
+        return visitFlag;
+    }
+
+    public void setVisitFlag(Integer visitFlag) {
+        this.visitFlag = visitFlag;
+    }
+
     public String getMusicGroupName() {
         return musicGroupName;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SysMusicCompareRecordQueryInfo.java

@@ -31,6 +31,16 @@ public class SysMusicCompareRecordQueryInfo extends QueryInfo {
 
     private HeardLevelEnum heardLevel;
 
+    private Boolean visitFlag;
+
+    public Boolean getVisitFlag() {
+        return visitFlag;
+    }
+
+    public void setVisitFlag(Boolean visitFlag) {
+        this.visitFlag = visitFlag;
+    }
+
     public FeatureType getFeatureType() {
         return featureType;
     }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java

@@ -1,13 +1,14 @@
 package com.ym.mec.biz.service;
 
-import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
+import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
+import com.ym.mec.biz.dal.dto.SoundCompareHelper;
+import com.ym.mec.biz.dal.dto.StatDto;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
-import java.util.List;
 import java.util.Map;
 
 public interface SysMusicCompareRecordService extends BaseService<Long, SysMusicCompareRecord> {

+ 32 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
 import com.ym.mec.biz.service.SysMusicCompareWeekDataService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
@@ -48,6 +49,8 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 	@Autowired
 	private StudentDao studentDao;
 	@Autowired
+	private StudentVisitDao studentVisitDao;
+	@Autowired
 	private SysMessageService sysMessageService;
 
 	@Autowired
@@ -327,16 +330,40 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 
     @Override
     public PageInfo<CountStudentTrainDataDto> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo) {
+		if(queryInfo.getStartTime() == null || queryInfo.getEndTime() == null){
+			throw new BizException("请选择训练时间");
+		}
 		PageInfo<CountStudentTrainDataDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
+		Integer visitFlag = 0;
+		if(queryInfo.getVisitFlag() != null && queryInfo.getVisitFlag()){
+			//获取所选时间段下一周的日期
+			Date addDays1 = DateUtil.addDays(DateUtil.toDate(queryInfo.getEndTime()), 1);
+			Date addDays3 = DateUtil.addDays(DateUtil.toDate(queryInfo.getEndTime()), 3);
+			//有回访过的学员列表
+			List<Integer> studentIds = studentVisitDao.queryRecordVisitStudentIds(queryInfo.getTeacherId(),addDays1,addDays3);
+			if(studentIds != null && studentIds.size() > 0){
+				params.put("visitStudents",studentIds);
+			}
+			Date date = DateUtil.toDate(DateUtil.format(new Date(),DateUtil.ISO_EXPANDED_DATE_FORMAT));
+			int daysBetween = DateUtil.daysBetween(addDays1, date);
+			//每周只有前三天可以回访
+			if(daysBetween >= 0 && daysBetween <= 2){
+				visitFlag = 1;
+			}
+			params.put("having",1);
+		}
 
-		List<CountStudentTrainDataDto> dataList = new ArrayList<>();
-		int count = sysMusicCompareRecordDao.countStudentTrain(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
+		List<CountStudentTrainDataDto> dataList = sysMusicCompareRecordDao.queryStudentTrain(params);
+		if(dataList != null && dataList.size() > 0){
+			pageInfo.setTotal(dataList.size());
 			params.put("offset", pageInfo.getOffset());
-			dataList =sysMusicCompareRecordDao.queryStudentTrain(params);
+			if(visitFlag == 1){
+				for (CountStudentTrainDataDto e : dataList) {
+					e.setVisitFlag(visitFlag);
+				}
+			}
 		}
 		pageInfo.setRows(dataList);
 		return pageInfo;

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml

@@ -195,4 +195,10 @@
         <![CDATA[ AND visit_time_ <= #{endTime} ]]>
         GROUP BY teacher_id_,date_format(visit_time_, '%Y-%m')
     </select>
+    <select id="queryRecordVisitStudentIds" resultType="java.lang.Integer">
+        SELECT DISTINCT st.user_id_ FROM student st
+        LEFT JOIN student_visit sv ON st.user_id_ = sv.student_id_
+        WHERE sv.type_ = '云教练' AND st.teacher_id_ = #{teacherId}
+        AND sv.visit_time_ BETWEEN DATE_FORMAT(#{addDays1}, '%Y%m%d') AND DATE_FORMAT(#{addDays3}, '%Y%m%d')
+    </select>
 </mapper>

+ 29 - 6
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -40,11 +40,6 @@
 
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysMusicCompareRecord" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
 		INSERT INTO sys_music_compare_record (id_,user_id_,sys_music_score_id_,heard_level_,behavior_id_,score_data_,score_,intonation_,cadence_,integrity_,
 		                                      record_file_path_,device_type_,client_id_,play_time_,monday_,
 											feature_,create_time_)
@@ -266,6 +261,15 @@
 		<if test="search != null and search != ''">
 			AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
 		</if>
+		<if test="visitStudents != null and visitStudents.size > 0">
+			AND s.user_id_ NOT IN
+			<foreach collection="visitStudents" open="(" close=")" item="userId" separator=",">
+				#{userId}
+			</foreach>
+		</if>
+		<if test="having == 1">
+			GROUP BY s.user_id_ HAVING total_play_time_ &lt; 80 OR train_day_ &lt; 4
+		</if>
 	</select>
 	<resultMap id="CountStudentTrainDataDto" type="com.ym.mec.biz.dal.dto.CountStudentTrainDataDto">
 		<result property="trainNum" column="train_num_"/>
@@ -299,8 +303,27 @@
 		<if test="search != null and search != ''">
 			AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
 		</if>
+		<if test="visitStudents != null and visitStudents.size > 0">
+			AND s.user_id_ NOT IN
+			<foreach collection="visitStudents" open="(" close=")" item="userId" separator=",">
+				#{userId}
+			</foreach>
+		</if>
 		GROUP BY s.user_id_
-		ORDER BY total_play_time_ DESC
+		<if test="having == 1">
+			HAVING total_play_time_ &lt; 80 OR train_day_ &lt; 4
+		</if>
+		ORDER BY
+		<if test="sort != null and sort != ''">
+			${sort}
+			<if test="order != null and order != ''">
+				${order}
+			</if>
+		</if>
+		<if test="sort == null or sort == ''">
+			total_play_time_ DESC
+		</if>
+		,s.user_id_
 		<include refid="global.limit"/>
 	</select>
 

+ 2 - 2
mec-common/common-core/src/main/java/com/ym/mec/common/page/QueryInfo.java

@@ -22,11 +22,11 @@ public class QueryInfo {
 	/**
 	 * 默认排序列
 	 */
-	private String sort = "create_time_";
+	private String sort;
 	/**
 	 * 默认排序方向
 	 */
-	private String order = "desc";
+	private String order = "DESC";
 	
 	private String search;