|
@@ -394,25 +394,6 @@ public class HomeServiceImpl implements HomeService {
|
|
|
@Override
|
|
|
public TeacherIndexWrapper.TeacherPracticeHome getTeacherPracticeHome(TeacherIndexWrapper.SummarySearch summarySearch) {
|
|
|
TeacherIndexWrapper.TeacherPracticeHome teacherPracticeHome = new TeacherIndexWrapper.TeacherPracticeHome();
|
|
|
- //获取老师关联的学员
|
|
|
- List<Long> studentIds = teacherService.getDao().getStudentIds(summarySearch.getTeacherId(), summarySearch.getSubjectId(), summarySearch.getStartTime(), summarySearch.getEndTime());
|
|
|
- if(CollectionUtils.isEmpty(studentIds)){
|
|
|
- return teacherPracticeHome;
|
|
|
- }
|
|
|
- //获取学员练习汇总
|
|
|
- TeacherIndexWrapper.PracticeSummaryDto practiceSummary = sysMusicCompareRecordService.getDao().getStudentTrainOverView(studentIds,summarySearch);
|
|
|
- //计算平均练习时长
|
|
|
- if(Objects.nonNull(practiceSummary)
|
|
|
- && practiceSummary.getPracticeCount().compareTo(BigDecimal.ZERO) > 0
|
|
|
- && practiceSummary.getTotalPracticeTime().compareTo(BigDecimal.ZERO) > 0){
|
|
|
- //舍掉小数
|
|
|
- practiceSummary.setTotalPracticeTime(practiceSummary.getTotalPracticeTime().setScale(0, RoundingMode.DOWN));
|
|
|
- practiceSummary.setAveragePracticeTime(practiceSummary.getTotalPracticeTime()
|
|
|
- .divide(practiceSummary.getPracticeCount(), 0, RoundingMode.DOWN));
|
|
|
- }
|
|
|
- teacherPracticeHome.setPracticeSummary(practiceSummary);
|
|
|
-
|
|
|
- //获取学员练习时长
|
|
|
//获取分组条件,如果所选时间段只有一天,则按小时分组,超过一个月按天分组,超过一年按月分组
|
|
|
String groupBy;
|
|
|
List<String> dateList;
|
|
@@ -434,21 +415,42 @@ public class HomeServiceImpl implements HomeService {
|
|
|
dateList = DateUtil.getYearList(startDate,endDate);
|
|
|
}
|
|
|
}
|
|
|
- List<TeacherIndexWrapper.PracticeTimeDto> studentTrainTime = sysMusicCompareRecordService.getDao().getStudentTrainTime(studentIds, summarySearch, groupBy);
|
|
|
+ //获取老师关联的学员
|
|
|
+ List<Long> studentIds = teacherService.getDao().getStudentIds(summarySearch.getTeacherId(), summarySearch.getSubjectId(), summarySearch.getStartTime(), summarySearch.getEndTime());
|
|
|
+ List<TeacherIndexWrapper.PracticeTimeDto> studentTrainTime = new ArrayList<>();
|
|
|
+ List<TeacherIndexWrapper.PracticeTimeDto> studentTrainCount = new ArrayList<>();
|
|
|
+ if(CollectionUtils.isNotEmpty(studentIds)){
|
|
|
+ //获取学员练习汇总
|
|
|
+ TeacherIndexWrapper.PracticeSummaryDto practiceSummary = sysMusicCompareRecordService.getDao().getStudentTrainOverView(studentIds,summarySearch);
|
|
|
+ //计算平均练习时长
|
|
|
+ if(Objects.nonNull(practiceSummary)
|
|
|
+ && practiceSummary.getPracticeCount().compareTo(BigDecimal.ZERO) > 0
|
|
|
+ && practiceSummary.getTotalPracticeTime().compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ //舍掉小数
|
|
|
+ practiceSummary.setTotalPracticeTime(practiceSummary.getTotalPracticeTime().setScale(0, RoundingMode.DOWN));
|
|
|
+ practiceSummary.setAveragePracticeTime(practiceSummary.getTotalPracticeTime()
|
|
|
+ .divide(practiceSummary.getPracticeCount(), 0, RoundingMode.DOWN));
|
|
|
+ }
|
|
|
+ teacherPracticeHome.setPracticeSummary(practiceSummary);
|
|
|
+ //获取学员练习时长
|
|
|
+ studentTrainTime = sysMusicCompareRecordService.getDao().getStudentTrainTime(studentIds, summarySearch, groupBy);
|
|
|
+ //练习人数
|
|
|
+ studentTrainCount = sysMusicCompareRecordService.getDao().getStudentTrainCount(studentIds, summarySearch, groupBy);
|
|
|
+ }
|
|
|
+
|
|
|
//补全时间段
|
|
|
teacherPracticeHome.setPracticeTimes(fillData(studentTrainTime,dateList));
|
|
|
- //练习人数
|
|
|
- List<TeacherIndexWrapper.PracticeTimeDto> studentTrainCount = sysMusicCompareRecordService.getDao().getStudentTrainCount(studentIds, summarySearch, groupBy);
|
|
|
- //补全时间段
|
|
|
teacherPracticeHome.setPracticeCounts(fillData(studentTrainCount,dateList));
|
|
|
-
|
|
|
return teacherPracticeHome;
|
|
|
}
|
|
|
|
|
|
//数据补全,按时间顺序
|
|
|
private List<TeacherIndexWrapper.PracticeTimeDto> fillData(List<TeacherIndexWrapper.PracticeTimeDto> studentTrainTime, List<String> dateList) {
|
|
|
- Map<String,TeacherIndexWrapper.PracticeTimeDto> timeMap = studentTrainTime.stream()
|
|
|
- .collect(Collectors.toMap(TeacherIndexWrapper.PracticeTimeDto::getDate, o -> o));
|
|
|
+ Map<String,TeacherIndexWrapper.PracticeTimeDto> timeMap = new HashMap<>();
|
|
|
+ if(CollectionUtils.isNotEmpty(studentTrainTime)){
|
|
|
+ timeMap = studentTrainTime.stream()
|
|
|
+ .collect(Collectors.toMap(TeacherIndexWrapper.PracticeTimeDto::getDate, o -> o));
|
|
|
+ }
|
|
|
List<TeacherIndexWrapper.PracticeTimeDto> result = new ArrayList<>();
|
|
|
for (String s : dateList) {
|
|
|
TeacherIndexWrapper.PracticeTimeDto practiceTimeDto = timeMap.get(s);
|
|
@@ -490,7 +492,7 @@ public class HomeServiceImpl implements HomeService {
|
|
|
studentSearch.getSubjectId(),
|
|
|
studentSearch.getStartTime(),
|
|
|
studentSearch.getEndTime());
|
|
|
- if(CollectionUtils.isEmpty(studentIds)){
|
|
|
+ if(CollectionUtils.isNotEmpty(studentIds)){
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
//获取间隔天数
|