|
@@ -4,21 +4,25 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.SysMusicCompareRecordDao;
|
|
|
import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
-import com.ym.mec.biz.dal.dto.SoundCompareHelper;
|
|
|
+import com.ym.mec.biz.dal.dto.*;
|
|
|
import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
|
|
|
-import com.ym.mec.biz.dal.enums.FeatureType;
|
|
|
+import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
|
|
|
import com.ym.mec.biz.service.SysMusicCompareRecordService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
+import com.ym.mec.common.page.PageInfo;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
+import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
+import org.apache.poi.ss.formula.functions.T;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.DayOfWeek;
|
|
|
import java.time.LocalDate;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysMusicCompareRecord> implements SysMusicCompareRecordService {
|
|
@@ -56,7 +60,116 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
if(Objects.nonNull(soundCompareInfo.getFile())){
|
|
|
sysMusicCompareRecord.setPlayTime(soundCompareInfo.getFile().length()/(SoundCompareHandler.soundCompareConfig.audioFormat.getFrameSize()*SoundCompareHandler.soundCompareConfig.audioFormat.getFrameRate()));
|
|
|
}
|
|
|
- sysMusicCompareRecord.setFeature(FeatureType.CLOUD_STUDY_EVALUATION);
|
|
|
+ sysMusicCompareRecord.setMonday(LocalDate.now().with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()).toString());
|
|
|
sysMusicCompareRecordDao.insert(sysMusicCompareRecord);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public StatDto rankingList(Integer headUserId, String startDate, String endDate) {
|
|
|
+ SysUser user = teacherDao.getUser(headUserId);
|
|
|
+ StatDto result = new StatDto();
|
|
|
+ MusicCompareRankingDto head = new MusicCompareRankingDto();
|
|
|
+ head.setUserId(headUserId);
|
|
|
+ List<MusicCompareRankingDto> userTrainStat = sysMusicCompareRecordDao.getUserTrainStat(startDate, endDate);
|
|
|
+ List<MusicCompareRankingDto> detail = new ArrayList<>();
|
|
|
+ userTrainStat.sort(Comparator.comparing(m->m.getTrainDays()+m.getTrainNum()+m.getTrainTime()));
|
|
|
+ for (int i = 0; i < userTrainStat.size(); i++) {
|
|
|
+ userTrainStat.get(i).setRankNum(userTrainStat.size()-i);
|
|
|
+ userTrainStat.get(i).setTrainTime(userTrainStat.get(i).getTrainTime()/60);
|
|
|
+ if(userTrainStat.get(i).getUserId().equals(headUserId)){
|
|
|
+ head = userTrainStat.get(i);
|
|
|
+ }
|
|
|
+ if(userTrainStat.get(i).getRankNum()<=10){
|
|
|
+ detail.add(userTrainStat.get(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(Objects.isNull(head.getRankNum())&&Objects.nonNull(user)){
|
|
|
+ head.setAvatar(user.getAvatar());
|
|
|
+ head.setStudentName(user.getUsername());
|
|
|
+ }
|
|
|
+ result.setHead(head);
|
|
|
+ detail.sort(Comparator.comparing(MusicCompareRankingDto::getRankNum).thenComparing(MusicCompareRankingDto::getUserId));
|
|
|
+ result.setDetail(detail);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> studentTrainData(SysMusicCompareRecordQueryInfo queryInfo) {
|
|
|
+ StudentTrainOverviewDto userTrainOverView = new StudentTrainOverviewDto();
|
|
|
+
|
|
|
+ List<StudentTrainChartDto> userTrainChartData = new ArrayList<>();
|
|
|
+ if(queryInfo.getPage()==1){
|
|
|
+ userTrainOverView = sysMusicCompareRecordDao.getUserTrainOverView(queryInfo.getUserId());
|
|
|
+ userTrainChartData = sysMusicCompareRecordDao.getUserTrainChartData(queryInfo.getUserId(), queryInfo.getStartTime(), queryInfo.getEndTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(CollectionUtils.isEmpty(userTrainChartData)||userTrainChartData.size()!=7){
|
|
|
+ Set<LocalDate> trainDates = userTrainChartData.stream().map(StudentTrainChartDto::getTrainDate).collect(Collectors.toSet());
|
|
|
+ LocalDate startLocalDate = LocalDate.parse(queryInfo.getStartTime(), DateUtil.dateFormatter);
|
|
|
+ for (int i = 1; i <= 7; i++) {
|
|
|
+ if(!trainDates.contains(startLocalDate)){
|
|
|
+ userTrainChartData.add(new StudentTrainChartDto(0, 0, startLocalDate));
|
|
|
+ }
|
|
|
+ startLocalDate=startLocalDate.plusDays(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ PageInfo<SysMusicCompareRecord> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+
|
|
|
+ List<SysMusicCompareRecord> dataList = null;
|
|
|
+ int count = this.findCount(params);
|
|
|
+ if (count > 0) {
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ dataList = this.getDAO().queryPage(params);
|
|
|
+ }
|
|
|
+ if (count == 0) {
|
|
|
+ dataList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("userTrainOverView",userTrainOverView);
|
|
|
+ result.put("userTrainChartData",userTrainChartData);
|
|
|
+ result.put("detail",pageInfo);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo<MusicCompareRankingDto> queryMusicGroupStudentTrainData(SysMusicCompareRecordQueryInfo queryInfo) {
|
|
|
+ PageInfo<MusicCompareRankingDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<String, Object>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+
|
|
|
+ List<MusicCompareRankingDto> dataList = new ArrayList<>();
|
|
|
+ int count = sysMusicCompareRecordDao.countMusicGroupStudentTrainData(params);
|
|
|
+ if (count > 0) {
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ dataList =sysMusicCompareRecordDao.queryMusicGroupStudentTrainData(params);
|
|
|
+ }
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo<SysMusicCompareRecord> queryStudentTrainData(SysMusicCompareRecordQueryInfo queryInfo) {
|
|
|
+ PageInfo<SysMusicCompareRecord> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+
|
|
|
+ List<SysMusicCompareRecord> dataList = null;
|
|
|
+ int count = this.findCount(params);
|
|
|
+ if (count > 0) {
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ dataList = this.getDAO().queryPage(params);
|
|
|
+ }
|
|
|
+ if (count == 0) {
|
|
|
+ dataList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
}
|