|
@@ -1,60 +1,59 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.time.LocalDate;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Comparator;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Optional;
|
|
|
-import java.util.Set;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-import com.google.common.collect.Lists;
|
|
|
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
-import com.yonge.cooleshow.biz.dal.service.MusicCompareRecordStatService;
|
|
|
-import com.yonge.cooleshow.biz.dal.service.SysConfigService;
|
|
|
-import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
|
|
|
-import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
|
|
|
-import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
|
-import com.yonge.toolset.base.util.ThreadPool;
|
|
|
-import org.apache.commons.collections.CollectionUtils;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.joda.time.DateTime;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.StudentDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.SysMusicCompareRecordDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
|
|
|
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.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.SysMessageService;
|
|
|
+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.wrapper.StatGroupWrapper;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
|
|
|
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
|
import com.yonge.toolset.base.page.PageInfo;
|
|
|
+import com.yonge.toolset.base.util.ThreadPool;
|
|
|
import com.yonge.toolset.mybatis.dal.BaseDAO;
|
|
|
import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
|
|
|
import com.yonge.toolset.utils.collection.MapUtil;
|
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.joda.time.DateTime;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysMusicCompareRecord> implements SysMusicCompareRecordService {
|
|
@@ -70,6 +69,10 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
private MusicSheetDao musicSheetDao;
|
|
|
@Autowired
|
|
|
private MusicCompareRecordStatService musicCompareRecordStatService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherService teacherService;
|
|
|
+ @Autowired
|
|
|
+ private StudentService studentService;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, SysMusicCompareRecord> getDAO() {
|
|
@@ -118,12 +121,16 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
.recentTime(DateTime.now().getMillis())
|
|
|
.build();
|
|
|
|
|
|
+ // 老师、学生练习、评测
|
|
|
+ MusicCompareWrapper.UserMusicCompareRecord compareRecord = MusicCompareWrapper.UserMusicCompareRecord
|
|
|
+ .builder().build();
|
|
|
+
|
|
|
// 按练习、评测分别进行统计
|
|
|
Lists.newArrayList(FeatureType.values()).parallelStream().forEach(dataType -> {
|
|
|
|
|
|
MusicCompareWrapper.RecordQueryInfo queryInfo = MusicCompareWrapper.RecordQueryInfo.builder()
|
|
|
.clientId(record.getClientId())
|
|
|
- .musicSheetId(record.getMusicSheetId())
|
|
|
+ //.musicSheetId(record.getMusicSheetId())
|
|
|
.feature(dataType)
|
|
|
.build();
|
|
|
|
|
@@ -132,6 +139,10 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
queryInfo.setScoreData(true);
|
|
|
}
|
|
|
|
|
|
+ // 老师、学生统计汇总时长
|
|
|
+ List<StatGroupWrapper> wrappers = sysMusicCompareRecordDao.selectMusicCompareRecordStatInfo(queryInfo);
|
|
|
+
|
|
|
+ queryInfo.setMusicSheetId(record.getMusicSheetId());
|
|
|
// 曲目统计
|
|
|
List<StatGroupWrapper> musicWrappers = sysMusicCompareRecordDao.selectMusicCompareRecordStatInfo(queryInfo);
|
|
|
|
|
@@ -143,6 +154,12 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
switch (dataType) {
|
|
|
case CLOUD_STUDY_TRAIN: // 练习
|
|
|
{
|
|
|
+ // 老师、学生统计汇总时长
|
|
|
+ if (CollectionUtils.isNotEmpty(wrappers)) {
|
|
|
+ StatGroupWrapper wrapper = wrappers.get(0);
|
|
|
+
|
|
|
+ compareRecord.setTrainTime(wrapper.getNumber().longValue());
|
|
|
+ }
|
|
|
// 先统计练习曲目
|
|
|
if (CollectionUtils.isNotEmpty(musicWrappers)) {
|
|
|
|
|
@@ -163,6 +180,12 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
break;
|
|
|
case CLOUD_STUDY_EVALUATION: // 评测
|
|
|
{
|
|
|
+ // 老师、学生统计汇总时长
|
|
|
+ if (CollectionUtils.isNotEmpty(wrappers)) {
|
|
|
+ StatGroupWrapper wrapper = wrappers.get(0);
|
|
|
+
|
|
|
+ compareRecord.setEvaluateTime(wrapper.getNumber().longValue());
|
|
|
+ }
|
|
|
// 先统计评测曲目
|
|
|
if (CollectionUtils.isNotEmpty(musicWrappers)) {
|
|
|
|
|
@@ -190,6 +213,27 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
|
|
|
musicCompareRecordStatService.batchUpdateMusicCompareRecordStat(recordInfos);
|
|
|
|
|
|
+ // 更新用户曲目统计
|
|
|
+ if (Objects.nonNull(compareRecord.getTrainTime())
|
|
|
+ || Objects.nonNull(compareRecord.getEvaluateTime())) {
|
|
|
+
|
|
|
+ switch (clientType) {
|
|
|
+ case TEACHER:
|
|
|
+ teacherService.lambdaUpdate()
|
|
|
+ .eq(Teacher::getUserId, record.getUserId())
|
|
|
+ .update(JSON.parseObject(compareRecord.jsonString(), Teacher.class));
|
|
|
+ break;
|
|
|
+ case STUDENT:
|
|
|
+ studentService.lambdaUpdate()
|
|
|
+ .eq(Student::getUserId, record.getUserId())
|
|
|
+ .update(JSON.parseObject(compareRecord.jsonString(), Student.class));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
log.error("MusicCompareRecordStat userId={}, musicId={}", record.getUserId(), record.getMusicSheetId(), e);
|
|
|
}
|