Browse Source

小程序,首页机构人数统计、机构人数按天统计

zouxuan 2 năm trước cách đây
mục cha
commit
e2e6fcbec9

+ 14 - 46
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysMusicCompareRecordDao.java

@@ -16,69 +16,29 @@ import com.yonge.toolset.mybatis.dal.BaseDAO;
 
 public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareRecord> {
 
-	/**
-	 * @describe 获取用户最后一次评测数据
-	 * @author Joburgess
-	 * @date 2021/8/23 0023
-	 * @param userId:
-	 * @return com.ym.mec.biz.dal.entity.SysMusicCompareRecord
-	 */
+	//获取用户最后一次评测数据
 	SysMusicCompareRecord getUserLastEvaluationData(@Param("userId") Long userId);
 
-	/**
-	 * @param userId   :
-	 * @param clientId
-	 * @return com.ym.mec.biz.dal.dto.StudentTrainOverviewDto
-	 * @describe 获取用户训练总览
-	 * @author Joburgess
-	 * @date 2021/8/11 0011
-	 */
+	//获取用户训练总览
 	StudentTrainOverviewDto getUserTrainOverView(@Param("userId") Long userId, @Param("clientId") String clientId);
 
-	/**
-	 * @param userId    :
-	 * @param startTime :
-	 * @param endTime   :
-	 * @param clientId
-	 * @return java.util.List<com.ym.mec.biz.dal.dto.StudentTrainChartDto>
-	 * @describe 获取用户训练图表数据
-	 * @author Joburgess
-	 * @date 2021/8/12 0012
-	 */
+	//获取用户训练图表数据
 	List<StudentTrainChartDto> getUserTrainChartData(@Param("userId") Long userId, @Param(
 			"startTime") String startTime, @Param("endTime") String endTime, @Param("clientId") String clientId);
 
 	int countMusicGroupStudentTrainData(Map<String, Object> params);
 
-	/**
-	 * @describe 统计分部小酷Ai新增人数
-	 * @author Joburgess
-	 * @date 2021/8/18 0018
-	 * @param organId:
-	 * @return int
-	 */
+	//统计分部小酷Ai新增人数
 	int getOrganNewCloudStudyNum(@Param("organId") Integer organId);
 
 	int getOrgansTotalNewCloudStudyNum(@Param("organIds") List<Integer> organIds);
 
 	List<Map<Integer, Integer>> getOrgansNewCloudStudyNum(@Param("organIds") List<Integer> organIds);
 
-	/**
-	 * @describe 获取用户本周最高分对应曲目编号
-	 * @author Joburgess
-	 * @date 2021/8/30 0030
-	 * @param userId:
-	 * @param monday:
-	 * @param heardLevel:
-	 * @return java.lang.Integer
-	 */
+	//获取用户本周最高分对应曲目编号
 	Integer getUserWeekMaxMusicScoreId(@Param("userId") Long userId, @Param("monday") String monday, @Param("heardLevel") HeardLevelEnum heardLevel);
 
-	/**
-	 * 曲目练习记录统计
-	 * @param queryInfo MusicCompareWrapper.RecordQueryInfo
-	 * @return List<StatGroupWrapper>
-	 */
+	//曲目练习记录统计
 	List<StatGroupWrapper> selectMusicCompareRecordStatInfo(@Param("record") MusicCompareWrapper.RecordQueryInfo queryInfo);
 
 	//小程序学员训练统计列表
@@ -89,4 +49,12 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
 
 	//小程序学员训练统计
 	SysMusicCompareRecordQueryInfo.WechatCompareRecordSumDto wechatCompareRecordSum(@Param("queryInfo") SysMusicCompareRecordQueryInfo.WechatCompareRecordQueryInfo queryInfo);
+
+	//小程序学员评测列表
+    List<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord> queryStudentTrain(Map<String, Object> params);
+
+	//小程序学员评测列表
+	int countStudentTrain(Map<String, Object> params);
+
+	SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat studentMusicCompareRecordStat(@Param("query") SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);
 }

+ 70 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SysMusicCompareRecordQueryInfo.java

@@ -107,4 +107,74 @@ public class SysMusicCompareRecordQueryInfo {
         @ApiModelProperty(name = "平均训练时长")
         private Integer avgTrainTimes;
     }
+
+    @Data
+    public static class StudentMusicCompareRecordQuery extends QueryInfo{
+        @ApiModelProperty("月份")
+        private String month;
+
+        @ApiModelProperty("用户ID")
+        private Long userId;
+
+        private Long tenantId;
+    }
+
+    @Data
+    public static class StudentMusicCompareRecord{
+        @ApiModelProperty("乐谱名称")
+        private String musicSheetName;
+
+        @ApiModelProperty("ID")
+        private Long id;
+
+        @ApiModelProperty("用户ID")
+        private Long userId;
+
+        @ApiModelProperty("得分数据")
+        private String scoreData;
+
+        @ApiModelProperty("得分")
+        private int score;
+
+        @ApiModelProperty("音准")
+        private int intonation;
+
+        @ApiModelProperty("节奏")
+        private int cadence;
+
+        @ApiModelProperty("完整性")
+        private int integrity;
+
+        @ApiModelProperty("录音文件地址")
+        private String recordFilePath;
+
+        @ApiModelProperty("视频文件地址")
+        private String videoFilePath;
+
+        @ApiModelProperty("难度")
+        private HeardLevelEnum heardLevel;
+
+        @ApiModelProperty("创建时间")
+        private String createTime;
+    }
+    @Data
+    public static class StudentMusicCompareRecordStat{
+        @ApiModelProperty("头像")
+        private String avatar;
+
+        @ApiModelProperty("用户编号")
+        private Long userId;
+
+        @ApiModelProperty("用户姓名")
+        private String username;
+
+        @ApiModelProperty("声部")
+        private String subjectName;
+
+        @ApiModelProperty("练习时长(秒)")
+        private int trainTime;
+
+        @ApiModelProperty("练习天数")
+        private int trainDays;
+    }
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysMusicCompareRecordService.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import java.util.List;
 import java.util.Map;
 
 import com.yonge.cooleshow.biz.dal.dao.SysMusicCompareRecordDao;
@@ -49,4 +50,9 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
      */
     PageInfo<SysMusicCompareRecord> queryStudentTrainData(SysMusicCompareRecordQueryInfo.TeacherCompareRecordQueryInfo queryInfo);
 
+    //小程序学员评测列表
+    PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord> queryStudentTrain(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);
+
+    //学员训练统计以及基本信息查询
+    SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat studentMusicCompareRecordStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);
 }

+ 34 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -9,19 +9,12 @@ import com.yonge.cooleshow.biz.dal.dto.IndexBaseDto;
 import com.yonge.cooleshow.biz.dal.dto.IndexBaseMonthData;
 import com.yonge.cooleshow.biz.dal.dto.StudentTrainChartDto;
 import com.yonge.cooleshow.biz.dal.dto.StudentTrainOverviewDto;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
-import com.yonge.cooleshow.biz.dal.entity.Student;
-import com.yonge.cooleshow.biz.dal.entity.SysMusicCompareRecord;
-import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.FeatureType;
 import com.yonge.cooleshow.biz.dal.enums.IndexDataType;
 import com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo;
-import com.yonge.cooleshow.biz.dal.service.MusicCompareRecordStatService;
-import com.yonge.cooleshow.biz.dal.service.StudentService;
-import com.yonge.cooleshow.biz.dal.service.SysConfigService;
-import com.yonge.cooleshow.biz.dal.service.SysMusicCompareRecordService;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
@@ -411,6 +404,38 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		return pageInfo;
 	}
 
+    @Override
+    public PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord> queryStudentTrain(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query) {
+		PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord> pageInfo = new PageInfo<>(query.getPage(), query.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, query);
+
+		List<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord> dataList = null;
+		int count = sysMusicCompareRecordDao.countStudentTrain(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = sysMusicCompareRecordDao.queryStudentTrain(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+    }
+
+	@Override
+	public SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat studentMusicCompareRecordStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query) {
+		//统计训练时长
+		SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat vo = sysMusicCompareRecordDao.studentMusicCompareRecordStat(query);
+		//获取学员声部
+		List<Subject> subjects = studentService.querySubject(query.getUserId());
+		if(CollectionUtils.isNotEmpty(subjects)){
+			vo.setSubjectName(subjects.stream().map(e->e.getName()).collect(Collectors.joining()));
+		}
+		return vo;
+	}
+
 
 	private String getExpireTime() {
 

+ 34 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -398,6 +398,40 @@
 			AND smcr.tenant_id_ = #{queryInfo.tenantId}
 		</if>
 	</select>
+    <select id="queryStudentTrain"
+            resultType="com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo$StudentMusicCompareRecord">
+		select
+			ms.music_sheet_name_ as musicSheetName,
+			smcr.id_ as id,
+			smcr.user_id_ as userId,
+			smcr.score_data_ as scoreData,
+			smcr.score_ as score,
+			smcr.intonation_ as intonation,
+			smcr.cadence_ as cadence,
+			smcr.integrity_ as integrity,
+			smcr.record_file_path_ as recordFilePath,
+			smcr.video_file_path_ as videoFilePath,
+			smcr.heard_level_ as heardLevel,
+			smcr.create_time_ as createTime
+		from sys_music_compare_record smcr
+		left join music_sheet ms ON ms.id_ = smcr.music_sheet_id_
+		where smcr.user_id_ = #{userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{month} AND smcr.tenant_id_ = #{tenantId} AND smcr.score IS NOT NULL
+		order by smcr.id_ DESC
+	</select>
+	<select id="countStudentTrain" resultType="java.lang.Integer">
+		select COUNT(smcr.id_)
+		from sys_music_compare_record smcr
+		where smcr.user_id_ = #{userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{month} AND smcr.tenant_id_ = #{tenantId} AND smcr.score IS NOT NULL
+	</select>
+	<select id="studentMusicCompareRecordStat"
+			resultType="com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo$StudentMusicCompareRecordStat">
+		select smcr.user_id_ userId,su.avatar_ avatar,su.username_ username,SUM(smcr.play_time_) trainTime,
+		       COUNT(DISTINCT DATE_FORMAT(smcr.create_time_,'%Y-%m-%d')) trainDays
+		from sys_music_compare_record smcr
+				 left join sys_user su ON su.id_ = smcr.user_id_
+		where smcr.user_id_ = #{query.userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{query.month} AND smcr.tenant_id_ = #{query.tenantId}
+		group by smcr.user_id_
+	</select>
 	<!--曲目练习统计-->
 
 </mapper>

+ 27 - 2
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/IndexController.java

@@ -14,6 +14,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 @Api(tags = "首页统计")
 @RequestMapping("index")
 @RestController
@@ -56,7 +58,7 @@ public class IndexController extends BaseController {
         return succeed(result);
     }
 
-    @ApiOperation("学员训练数据统计列表")
+    @ApiOperation("机构人数统计列表")
     @PostMapping("tenantPersonStatSum")
     public HttpResponseResult<TenantPersonStatWrapper.TenantPersonStatSum> tenantPersonStatSum
             (@RequestBody TenantPersonStatWrapper.TenantPersonStatQuery query){
@@ -65,8 +67,31 @@ public class IndexController extends BaseController {
             return failed("获取用户信息失败");
         }
         query.setTenantId(sysUser.getTenantId());
-        tenantPersonStatService.indexSum(query);
         return succeed(tenantPersonStatService.indexSum(query));
     }
 
+    @ApiOperation("学员练习记录")
+    @PostMapping("queryStudentTrain")
+    public HttpResponseResult<PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord>>
+    queryStudentTrain(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        query.setTenantId(sysUser.getTenantId());
+        return succeed(sysMusicCompareRecordService.queryStudentTrain(query));
+    }
+
+    @ApiOperation("学员训练统计以及基本信息查询")
+    @PostMapping("studentTrainStat")
+    public HttpResponseResult<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat>
+    studentMusicCompareRecordStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        query.setTenantId(sysUser.getTenantId());
+        return succeed(sysMusicCompareRecordService.studentMusicCompareRecordStat(query));
+    }
+
 }