|
@@ -8,19 +8,22 @@ import com.yonge.cooleshow.biz.dal.dao.CourseHomeworkDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.CourseHomeworkReviewDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.CourseHomeworkSaveDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.CourseHomeworkSubmitDto;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.CourseScheduleHomeworkSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.HomeworkAdminSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.CourseHomework;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.SysMessageConfig;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkDetailVo;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.CourseScheduleHomeworkVo;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.StudentHomeworkVo;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
|
|
|
import org.slf4j.Logger;
|
|
@@ -31,10 +34,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -57,9 +57,6 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
private SysUserFeignService sysUserFeignService;
|
|
|
|
|
|
@Autowired
|
|
|
- private SysMessageConfigService sysMessageConfigService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
|
|
|
|
|
|
@Override
|
|
@@ -75,36 +72,98 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
if (CollectionUtils.isEmpty(records)) {
|
|
|
return courseHomeworkVoIPage;
|
|
|
}
|
|
|
- // 学生信息
|
|
|
- List<CourseHomeworkVo> studentInfoList = baseMapper.selectStudentInfo(records);
|
|
|
+ List<CourseHomeworkVo> practiceRecord = records.stream()
|
|
|
+ .filter(courseHomeworkVo -> courseHomeworkVo.getType().getCode().equals(CourseScheduleEnum.PRACTICE.getCode()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 学生信息 陪练课展示
|
|
|
+ List<CourseHomeworkVo> studentInfoList = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isEmpty(practiceRecord)) {
|
|
|
+ studentInfoList = new ArrayList<>();
|
|
|
+ } else{
|
|
|
+ baseMapper.selectStudentInfo(practiceRecord);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(studentInfoList)) {
|
|
|
+ studentInfoList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ Map<Long, List<CourseHomeworkVo>> studentCollect = studentInfoList.stream()
|
|
|
+ .collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
|
|
|
|
|
|
- // 旷课状态 和老师信息
|
|
|
+ // 老师信息
|
|
|
List<CourseHomeworkVo> teacherInfoList = baseMapper.selectTeacherInfo(records);
|
|
|
+ if (CollectionUtils.isEmpty(teacherInfoList)) {
|
|
|
+ teacherInfoList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ Map<Long, List<CourseHomeworkVo>> teacherCollect = teacherInfoList.stream()
|
|
|
+ .collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
|
|
|
+
|
|
|
+ // 旷课状态 学生端展示
|
|
|
+ Map<Long, List<CourseHomeworkVo>> absenteeismCollect = new HashMap<>();
|
|
|
+ if (query.getStudentId() != null) {
|
|
|
+ List<CourseHomeworkVo> absenteeismList = baseMapper.selectAbsenteeism(records,query.getStudentId());
|
|
|
+ if (CollectionUtils.isEmpty(absenteeismList)) {
|
|
|
+ absenteeismList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ absenteeismCollect = absenteeismList.stream().collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
// 声部信息
|
|
|
- List<CourseHomeworkVo> subjectList = baseMapper.selectSubjectInfoList(records);
|
|
|
- for (int i = 0; i < records.size(); i++) {
|
|
|
- records.get(i).setStudentId(studentInfoList.get(i).getStudentId());
|
|
|
- records.get(i).setStudentAvatar(studentInfoList.get(i).getStudentAvatar());
|
|
|
- records.get(i).setStudentName(studentInfoList.get(i).getStudentName());
|
|
|
- records.get(i).setSubjectName(subjectList.get(i).getSubjectName());
|
|
|
- records.get(i).setTeacherAvatar(teacherInfoList.get(i).getTeacherAvatar());
|
|
|
- records.get(i).setTeacherId(teacherInfoList.get(i).getTeacherId());
|
|
|
- records.get(i).setTeacherName(teacherInfoList.get(i).getTeacherName());
|
|
|
- records.get(i).setAbsenteeism(teacherInfoList.get(i).getAbsenteeism());
|
|
|
+ List<CourseHomeworkVo> subjectList = baseMapper.selectSubjectAndGroupInfoList(records);
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(subjectList)) {
|
|
|
+ subjectList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ Map<Long, List<CourseHomeworkVo>>subjectCollect = subjectList.stream()
|
|
|
+ .collect(Collectors.groupingBy( CourseHomeworkVo::getCourseId));
|
|
|
+
|
|
|
+ for (CourseHomeworkVo record : records) {
|
|
|
+ List<CourseHomeworkVo> courseHomeworkVoList = studentCollect.get(record.getCourseId());
|
|
|
+ CourseHomeworkVo courseHomeworkVo;
|
|
|
+ if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
|
|
|
+ courseHomeworkVo = courseHomeworkVoList.get(0);
|
|
|
+ record.setStudentId(courseHomeworkVo.getStudentId());
|
|
|
+ record.setStudentAvatar(courseHomeworkVo.getStudentAvatar());
|
|
|
+ record.setStudentName(courseHomeworkVo.getStudentName());
|
|
|
+ }
|
|
|
+ courseHomeworkVoList = teacherCollect.get(record.getCourseId());
|
|
|
+ if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
|
|
|
+ courseHomeworkVo = courseHomeworkVoList.get(0);
|
|
|
+ record.setTeacherId(courseHomeworkVo.getTeacherId());
|
|
|
+ record.setTeacherName(courseHomeworkVo.getTeacherName());
|
|
|
+ record.setTeacherAvatar(courseHomeworkVo.getTeacherAvatar());
|
|
|
+ }
|
|
|
+ courseHomeworkVoList = absenteeismCollect.get(record.getCourseId());
|
|
|
+ if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
|
|
|
+ courseHomeworkVo = courseHomeworkVoList.get(0);
|
|
|
+ record.setAbsenteeism(courseHomeworkVo.getAbsenteeism());
|
|
|
+ } else {
|
|
|
+ record.setAbsenteeism(YesOrNoEnum.NO);
|
|
|
+ }
|
|
|
+ courseHomeworkVoList = subjectCollect.get(record.getCourseId());
|
|
|
+ if (!CollectionUtils.isEmpty(courseHomeworkVoList)) {
|
|
|
+ courseHomeworkVo = courseHomeworkVoList.get(0);
|
|
|
+ record.setCourseGroupName(courseHomeworkVo.getCourseGroupName());
|
|
|
+ record.setSubjectName(courseHomeworkVo.getSubjectName());
|
|
|
+ record.setClassNum(courseHomeworkVo.getClassNum());
|
|
|
+ }
|
|
|
}
|
|
|
return courseHomeworkVoIPage;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public CourseHomeworkDetailVo getCourseHomeworkDetailByCourseId(Long courseId) {
|
|
|
+ public CourseHomeworkDetailVo getCourseHomeworkDetailByCourseId(Long courseId, Long studentId) {
|
|
|
|
|
|
// 课程基本信息
|
|
|
- CourseHomeworkDetailVo courseHomeworkDetailVo = baseMapper.selectCourseHomeworkDetailByCourseId(courseId);
|
|
|
+ CourseHomeworkDetailVo courseHomeworkDetailVo = baseMapper.selectCourseHomeworkDetailByCourseId(courseId,studentId);
|
|
|
+
|
|
|
+ if (courseHomeworkDetailVo == null) {
|
|
|
+ throw new BizException("未找到作业信息");
|
|
|
+ }
|
|
|
|
|
|
// 学生信息
|
|
|
CourseHomeworkDetailVo studentInfoDetailVo = baseMapper
|
|
|
- .selectPaymentStudentInfo(courseHomeworkDetailVo.getCourseScheduleId());
|
|
|
+ .selectPaymentStudentInfo(courseHomeworkDetailVo.getCourseScheduleId(),studentId);
|
|
|
|
|
|
// 声部信息
|
|
|
CourseHomeworkDetailVo subjectAndTeacherInfoVo = baseMapper
|
|
@@ -158,17 +217,26 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
* @param teacherId 老师id
|
|
|
*/
|
|
|
private void sendDecorateHomework(Long courseScheduleId,Long teacherId) {
|
|
|
- CourseScheduleStudentPayment courseScheduleStudentPayment = courseScheduleStudentPaymentService.getByCourseId(
|
|
|
+ List<CourseScheduleStudentPayment> paymentList = courseScheduleStudentPaymentService.getByCourseId(
|
|
|
courseScheduleId);
|
|
|
- SysUser student = sysUserFeignService.queryUserById(courseScheduleStudentPayment.getUserId());
|
|
|
+ if (paymentList.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
SysUser teacher = sysUserFeignService.queryUserById(teacherId);
|
|
|
- Map<Long,String> studentReceivers = new HashMap<>();
|
|
|
- studentReceivers.put(student.getId(), student.getPhone());
|
|
|
-
|
|
|
String url = sysMessageService.selectConfigUrl(MessageTypeEnum.TEACHER_DECORATE_HOMEWORK.getCode());
|
|
|
+ for (CourseScheduleStudentPayment courseScheduleStudentPayment : paymentList) {
|
|
|
+ SysUser student = sysUserFeignService.queryUserById(courseScheduleStudentPayment.getUserId());
|
|
|
+ Map<Long,String> studentReceivers = new HashMap<>();
|
|
|
+ studentReceivers.put(student.getId(), student.getPhone());
|
|
|
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_DECORATE_HOMEWORK,
|
|
|
- studentReceivers, null, 0,url + courseScheduleId , ClientEnum.STUDENT.getCode(),teacher.getUsername());
|
|
|
+ try {
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum
|
|
|
+ .TEACHER_DECORATE_HOMEWORK,studentReceivers, null, 0,url + courseScheduleId ,
|
|
|
+ ClientEnum.STUDENT.getCode(),teacher.getUsername());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("老师布置作业消息发送失败 学生id:{}",student.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -180,7 +248,6 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
private CourseHomework checkHasHomework(Long courseScheduleId) {
|
|
|
List<CourseHomework> list = this.lambdaQuery()
|
|
|
.eq(CourseHomework::getCourseScheduleId, courseScheduleId)
|
|
|
- .eq(CourseHomework::getCourseGroupType, CourseScheduleEnum.PRACTICE.getCode())
|
|
|
.list();
|
|
|
if (CollectionUtils.isEmpty(list)) {
|
|
|
return null;
|
|
@@ -201,7 +268,7 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
|
|
|
// 课程基本信息
|
|
|
CourseHomeworkDetailVo courseHomeworkDetailVo = baseMapper
|
|
|
- .selectCourseHomeworkDetailByCourseId(reviewDto.getCourseScheduleId());
|
|
|
+ .selectCourseHomeworkDetailByCourseId(reviewDto.getCourseScheduleId(), reviewDto.getStudentId());
|
|
|
|
|
|
// 检查学生是否提交作业
|
|
|
if (!YesOrNoEnum.YES.getCode().equals(courseHomeworkDetailVo.getSubmitHomework().getCode())) {
|
|
@@ -242,7 +309,7 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
}
|
|
|
// 课程基本信息
|
|
|
CourseHomeworkDetailVo courseHomeworkDetailVo = baseMapper
|
|
|
- .selectCourseHomeworkDetailByCourseId(submitDto.getCourseScheduleId());
|
|
|
+ .selectCourseHomeworkDetailByCourseId(submitDto.getCourseScheduleId(), submitDto.getStudentId());
|
|
|
|
|
|
// 检查老师是否评价作业
|
|
|
if (YesOrNoEnum.YES.getCode().equals(courseHomeworkDetailVo.getReviewHomework().getCode())) {
|
|
@@ -287,22 +354,25 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
|
|
|
@Override
|
|
|
public IPage<CourseHomeworkVo> selectAdminPage(IPage<CourseHomeworkVo> page, HomeworkAdminSearch query) {
|
|
|
- IPage<CourseHomeworkVo> courseHomeworkVoIPage = page.setRecords(baseMapper.selectAdminPage(page, query));
|
|
|
+ return page.setRecords(baseMapper.selectAdminPage(page, query));
|
|
|
+ }
|
|
|
|
|
|
- List<CourseHomeworkVo> records = courseHomeworkVoIPage.getRecords();
|
|
|
- List<Long> courseIdList = records
|
|
|
- .stream()
|
|
|
- .map(CourseHomeworkVo::getCourseId)
|
|
|
- .collect(Collectors.toList());
|
|
|
- if (CollectionUtils.isEmpty(courseIdList)) {
|
|
|
- return courseHomeworkVoIPage;
|
|
|
- }
|
|
|
- // 查询提交时间
|
|
|
- List<CourseHomeworkVo> courseHomeworkVoList = baseMapper.selectSubmitTime(courseIdList);
|
|
|
- for (int i = 0; i < records.size(); i++) {
|
|
|
- records.get(i).setSubmitTime(courseHomeworkVoList.get(i).getSubmitTime());
|
|
|
+ @Override
|
|
|
+ public CourseScheduleHomeworkVo getCourseHomeworkDetailByCourseId(CourseScheduleHomeworkSearch query) {
|
|
|
+ // 查询课程作业信息
|
|
|
+ CourseScheduleHomeworkVo courseScheduleHomeworkVo = baseMapper
|
|
|
+ .selectCourseHomeworkByCourseId(query.getCourseId());
|
|
|
+ if (courseScheduleHomeworkVo == null) {
|
|
|
+ return courseScheduleHomeworkVo;
|
|
|
}
|
|
|
- return courseHomeworkVoIPage;
|
|
|
+
|
|
|
+ // 课程人员作业
|
|
|
+ IPage<StudentHomeworkVo> studentHomeworkList = baseMapper
|
|
|
+ .selectStudentHomeworkByCourseId(PageUtil.getPage(query),query.getCourseId());
|
|
|
+
|
|
|
+ courseScheduleHomeworkVo.setStudentHomeworkList(studentHomeworkList);
|
|
|
+ return courseScheduleHomeworkVo;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -313,8 +383,9 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
private void checkCourseSchedule(Long courseScheduleId) {
|
|
|
// 1. 检查课程类型
|
|
|
CourseSchedule courseSchedule = courseScheduleService.getById(courseScheduleId);
|
|
|
- if (!CourseScheduleEnum.PRACTICE.getCode().equals(courseSchedule.getType())) {
|
|
|
- throw new BizException("非陪练课,不能布置课后作业");
|
|
|
+ if (!CourseScheduleEnum.PRACTICE.getCode().equals(courseSchedule.getType())
|
|
|
+ && !CourseScheduleEnum.PIANO_ROOM_CLASS.getCode().equals(courseSchedule.getType())) {
|
|
|
+ throw new BizException("不能布置课后作业");
|
|
|
}
|
|
|
// 2. 检查课程结束
|
|
|
if (!CourseScheduleEnum.COMPLETE.getCode().equals(courseSchedule.getStatus())) {
|
|
@@ -333,7 +404,7 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
|
|
|
CourseHomework courseHomework = new CourseHomework();
|
|
|
courseHomework.setId(saveDto.getCourseHomeworkId());
|
|
|
courseHomework.setCourseGroupId(courseSchedule.getCourseGroupId());
|
|
|
- courseHomework.setCourseGroupType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
+ courseHomework.setCourseGroupType(courseSchedule.getType());
|
|
|
courseHomework.setCourseScheduleId(saveDto.getCourseScheduleId());
|
|
|
courseHomework.setTitle(saveDto.getTitle());
|
|
|
courseHomework.setContent(saveDto.getContent());
|