|
@@ -5,15 +5,15 @@ import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
|
import com.ym.mec.biz.dal.dto.*;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
-import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
|
|
|
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
|
|
|
+import com.ym.mec.biz.dal.enums.*;
|
|
|
import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
|
|
|
import com.ym.mec.biz.service.CourseHomeworkService;
|
|
|
import com.ym.mec.biz.service.StudentCourseHomeworkService;
|
|
|
import com.ym.mec.biz.service.StudentServeService;
|
|
|
import com.ym.mec.biz.service.SysMessageService;
|
|
|
+import com.ym.mec.common.constant.CommonConstants;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.time.DayOfWeek;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
@@ -37,8 +38,6 @@ import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
|
|
|
-
|
|
|
@Service
|
|
|
public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, StudentCourseHomework> implements StudentCourseHomeworkService {
|
|
|
|
|
@@ -71,9 +70,13 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
|
|
|
@Autowired
|
|
|
private MusicGroupDao musicGroupDao;
|
|
|
@Autowired
|
|
|
+ private StudentRegistrationDao studentRegistrationDao;
|
|
|
+ @Autowired
|
|
|
private VipGroupDao vipGroupDao;
|
|
|
@Autowired
|
|
|
private PracticeGroupDao practiceGroupDao;
|
|
|
+ @Autowired
|
|
|
+ private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, StudentCourseHomework> getDAO() {
|
|
@@ -277,11 +280,8 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<StudentCourseHomework> findStudentCourseHomeworkByCourse(Long courseSchedule, String userName) {
|
|
|
- if (Objects.isNull(courseSchedule)) {
|
|
|
- throw new BizException("请指定课程");
|
|
|
- }
|
|
|
- return studentCourseHomeworkDao.findByCourseSchedule(courseSchedule, userName);
|
|
|
+ public List<StudentCourseHomework> findStudentCourseHomeworkByCourse(Long courseSchedule, Long homeworkId, String userName) {
|
|
|
+ return studentCourseHomeworkDao.findByCourseSchedule(courseSchedule, homeworkId, userName);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -479,4 +479,127 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
|
|
|
pageInfo.setRows(dataList);
|
|
|
return pageInfo;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo<EduHomeworkCardDto> getEduCourseHomeworkList(StudentCourseHomeWorkQueryInfo queryInfo) {
|
|
|
+ PageInfo<EduHomeworkCardDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<String, Object>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+
|
|
|
+ int count = studentCourseHomeworkDao.countEduCourseHomeworkList(params);
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ List<EduHomeworkCardDto> dataList = studentCourseHomeworkDao.getEduCourseHomeworkList(params);
|
|
|
+
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo<EduHomeworkStatDto> queryEduHomeworkStatList(StudentCourseHomeWorkQueryInfo queryInfo) {
|
|
|
+ PageInfo<EduHomeworkStatDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<String, Object>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+ params.put("musicGroupStatus", MusicGroupStatusEnum.PROGRESS.getCode());
|
|
|
+
|
|
|
+ int count = musicGroupDao.queryCount(params);
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ List<MusicGroup> musicGroups = musicGroupDao.queryPage(params);
|
|
|
+
|
|
|
+ List<EduHomeworkStatDto> dataList = new ArrayList<>();
|
|
|
+ if(!CollectionUtils.isEmpty(musicGroups)){
|
|
|
+ List<String> groupIds = musicGroups.stream().map(MusicGroup::getId).collect(Collectors.toList());
|
|
|
+ List<StudentRegistration> studentRegistrations = studentRegistrationDao.findByMusicGroupIds(groupIds, StudentMusicGroupStatusEnum.NORMAL);
|
|
|
+ Map<String, Long> groupStudentNumMap = studentRegistrations.stream().collect(Collectors.groupingBy(StudentRegistration::getMusicGroupId, Collectors.counting()));
|
|
|
+
|
|
|
+ List<EduHomeworkCardDto> courseHomeworkStudentNumList = studentCourseHomeworkDao.countHomeworkStudentInfoWithMusicGroup(groupIds, queryInfo.getStartTime(), queryInfo.getEndTime());
|
|
|
+ List<EduHomeworkCardDto> homeworkStudentNumList = extracurricularExercisesReplyDao.countEduHomeworkStudentNumWithMusicGroup(groupIds, queryInfo.getStartTime(), queryInfo.getEndTime());
|
|
|
+ homeworkStudentNumList.addAll(courseHomeworkStudentNumList);
|
|
|
+ Map<String, List<EduHomeworkCardDto>> groupStudentListMap = homeworkStudentNumList.stream().collect(Collectors.groupingBy(EduHomeworkCardDto::getGroupId));
|
|
|
+ for (MusicGroup mg : musicGroups) {
|
|
|
+ EduHomeworkStatDto ehs = new EduHomeworkStatDto();
|
|
|
+ ehs.setGroupId(mg.getId());
|
|
|
+ ehs.setGroupName(mg.getName());
|
|
|
+ if(groupStudentNumMap.containsKey(mg.getId())){
|
|
|
+ ehs.setGroupStudentNum(Math.toIntExact(groupStudentNumMap.get(mg.getId())));
|
|
|
+ }else{
|
|
|
+ ehs.setGroupStudentNum(0);
|
|
|
+ }
|
|
|
+ int exceptStudentNum = 0;
|
|
|
+ int submitStudentNum = 0;
|
|
|
+ if(groupStudentListMap.containsKey(mg.getId())){
|
|
|
+ List<EduHomeworkCardDto> eduHomeworkCardDtos = groupStudentListMap.get(mg.getId());
|
|
|
+ for (EduHomeworkCardDto eduHomeworkCardDto : eduHomeworkCardDtos) {
|
|
|
+ exceptStudentNum += eduHomeworkCardDto.getExceptStudentNum();
|
|
|
+ submitStudentNum += eduHomeworkCardDto.getSubmitStudentNum();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ehs.setExceptStudentNum(exceptStudentNum);
|
|
|
+ ehs.setSubmitStudentNum(submitStudentNum);
|
|
|
+ if(exceptStudentNum<=0){
|
|
|
+ ehs.setSubmitRate(BigDecimal.ZERO);
|
|
|
+ }else{
|
|
|
+ ehs.setSubmitRate(new BigDecimal(submitStudentNum).divide(new BigDecimal(exceptStudentNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ dataList.add(ehs);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<EduHomeworkStatDto> queryEduHomeworkStatDetail(StudentCourseHomeWorkQueryInfo queryInfo) {
|
|
|
+ List<EduHomeworkStatDto> dataList = new ArrayList<>();
|
|
|
+ MusicGroup musicGroup = musicGroupDao.get(queryInfo.getGroupId());
|
|
|
+ if(Objects.isNull(musicGroup)){
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
+ List<StudentRegistration> studentRegistrations = studentRegistrationDao.findByMusicGroupIds(Arrays.asList(queryInfo.getGroupId()), StudentMusicGroupStatusEnum.NORMAL);
|
|
|
+ Map<Integer, Long> subjectStudentNumMap = studentRegistrations.stream().collect(Collectors.groupingBy(StudentRegistration::getActualSubjectId, Collectors.counting()));
|
|
|
+
|
|
|
+ Map<Integer, Subject> idSubjectMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(subjectStudentNumMap)){
|
|
|
+ List<Subject> subjects = subjectDao.findBySubjectIds(new ArrayList<>(subjectStudentNumMap.keySet()));
|
|
|
+ idSubjectMap = subjects.stream().collect(Collectors.toMap(Subject::getId, s -> s, (s1, s2) -> s1));
|
|
|
+ }
|
|
|
+
|
|
|
+ List<EduHomeworkCardDto> courseHomeworkStudentNumList = studentCourseHomeworkDao.countHomeworkSubjectStudentInfoWithMusicGroup(queryInfo.getGroupId(), queryInfo.getStartTime(), queryInfo.getEndTime());
|
|
|
+ List<EduHomeworkCardDto> homeworkStudentNumList = extracurricularExercisesReplyDao.countEduHomeworkSubjectStudentNumWithMusicGroup(queryInfo.getGroupId(), queryInfo.getStartTime(), queryInfo.getEndTime());
|
|
|
+ homeworkStudentNumList.addAll(courseHomeworkStudentNumList);
|
|
|
+ Map<Integer, List<EduHomeworkCardDto>> subjectStudentListMap = homeworkStudentNumList.stream().collect(Collectors.groupingBy(EduHomeworkCardDto::getSubjectId));
|
|
|
+ for (Map.Entry<Integer, Long> subjectStudentNumEntry : subjectStudentNumMap.entrySet()) {
|
|
|
+ EduHomeworkStatDto ehs = new EduHomeworkStatDto();
|
|
|
+ if(idSubjectMap.containsKey(subjectStudentNumEntry.getKey())){
|
|
|
+ ehs.setSubjectName(idSubjectMap.get(subjectStudentNumEntry.getKey()).getName());
|
|
|
+ }
|
|
|
+ ehs.setGroupId(queryInfo.getGroupId());
|
|
|
+ ehs.setGroupName(musicGroup.getName());
|
|
|
+ if(subjectStudentNumMap.containsKey(subjectStudentNumEntry.getKey())){
|
|
|
+ ehs.setGroupStudentNum(Math.toIntExact(subjectStudentNumMap.get(subjectStudentNumEntry.getKey())));
|
|
|
+ }else{
|
|
|
+ ehs.setGroupStudentNum(0);
|
|
|
+ }
|
|
|
+ int exceptStudentNum = 0;
|
|
|
+ int submitStudentNum = 0;
|
|
|
+ if(subjectStudentListMap.containsKey(subjectStudentNumEntry.getKey())){
|
|
|
+ List<EduHomeworkCardDto> eduHomeworkCardDtos = subjectStudentListMap.get(subjectStudentNumEntry.getKey());
|
|
|
+ for (EduHomeworkCardDto eduHomeworkCardDto : eduHomeworkCardDtos) {
|
|
|
+ exceptStudentNum += eduHomeworkCardDto.getExceptStudentNum();
|
|
|
+ submitStudentNum += eduHomeworkCardDto.getSubmitStudentNum();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ehs.setExceptStudentNum(exceptStudentNum);
|
|
|
+ ehs.setSubmitStudentNum(submitStudentNum);
|
|
|
+ if(exceptStudentNum<=0){
|
|
|
+ ehs.setSubmitRate(BigDecimal.ZERO);
|
|
|
+ }else{
|
|
|
+ ehs.setSubmitRate(new BigDecimal(submitStudentNum).divide(new BigDecimal(exceptStudentNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ dataList.add(ehs);
|
|
|
+ }
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
}
|