|
|
|
|
@ -4,19 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import org.qinan.cedu.convertor.ClassCourseConvertor;
|
|
|
|
|
import org.qinan.cedu.convertor.ClassStudentExamRecordConvertor;
|
|
|
|
|
import org.qinan.cedu.convertor.CourseRelCoursewareConvertor;
|
|
|
|
|
import org.qinan.cedu.convertor.CoursewareManagementConvertor;
|
|
|
|
|
import org.qinan.cedu.convertor.*;
|
|
|
|
|
import org.qinan.cedu.enums.DeleteEnum;
|
|
|
|
|
import org.qinan.cedu.mapper.*;
|
|
|
|
|
import org.qinan.cedu.model.dto.ClassCourseDTO;
|
|
|
|
|
import org.qinan.cedu.model.entity.*;
|
|
|
|
|
import org.qinan.cedu.model.query.ClassCoursePageQuery;
|
|
|
|
|
import org.qinan.cedu.model.vo.ClassCourseVO;
|
|
|
|
|
import org.qinan.cedu.model.vo.ClassStudentExamRecordVO;
|
|
|
|
|
import org.qinan.cedu.model.vo.CourseStudentStatVO;
|
|
|
|
|
import org.qinan.cedu.model.vo.ExamStatisticsAndRecordVO;
|
|
|
|
|
import org.qinan.cedu.model.vo.*;
|
|
|
|
|
import org.qinan.cedu.service.ClassCourseService;
|
|
|
|
|
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
|
|
|
|
|
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
|
|
|
|
@ -63,6 +57,8 @@ public class ClassCourseServiceImpl extends ServiceImpl<ClassCourseMapper, Class
|
|
|
|
|
private ClassStudentExamRecordMapper classStudentExamRecordMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ClassStudentExamRecordConvertor classStudentExamRecordConvertor;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ClassManagementConvertor classManagementConvertor;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public IPage<ClassCourseVO> pageQuery(ClassCoursePageQuery query) {
|
|
|
|
|
@ -201,46 +197,54 @@ public class ClassCourseServiceImpl extends ServiceImpl<ClassCourseMapper, Class
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<ClassCourseVO> myCoursePage() {
|
|
|
|
|
public List<ClassManagementVO> myCoursePage() {
|
|
|
|
|
List<Long> classId = classStudentMapper.selectList(new LambdaQueryWrapper<ClassStudentDO>()
|
|
|
|
|
.eq(ClassStudentDO::getStudentId, AuthUserContextAdapter.getCurrentUserId()))
|
|
|
|
|
.stream().map(ClassStudentDO::getClassId).distinct().collect(Collectors.toList());
|
|
|
|
|
List<ClassCourseDO> classCourseDOS = baseMapper.selectList(new LambdaQueryWrapper<ClassCourseDO>()
|
|
|
|
|
.eq(ClassCourseDO::getClassId, CollectionUtils.isEmpty(classId) ? Collections.singletonList(0L) : classId)
|
|
|
|
|
.eq(ClassCourseDO::getDeleteEnum, DeleteEnum.FALSE.getCode()));
|
|
|
|
|
//查询班级
|
|
|
|
|
Map<Long, ClassManagementDO> collectClassMap = classManagementMapper.selectList(new LambdaQueryWrapper<ClassManagementDO>()
|
|
|
|
|
.in(ClassManagementDO::getId, CollectionUtils.isEmpty(classId) ? Collections.singletonList(0L) : classId))
|
|
|
|
|
.stream().collect(Collectors.toMap(ClassManagementDO::getId, Function.identity()));
|
|
|
|
|
return classCourseDOS.stream().map(item -> {
|
|
|
|
|
ClassCourseVO classCourseVO = classCourseConvertor.convertEToVo(item);
|
|
|
|
|
List<ClassStudentLearningRecordDO> classStudentLearningRecordDOS = learningRecordMapper.selectList(new LambdaQueryWrapper<ClassStudentLearningRecordDO>()
|
|
|
|
|
.eq(ClassStudentLearningRecordDO::getStudentId, AuthUserContextAdapter.getCurrentUserId())
|
|
|
|
|
.eq(ClassStudentLearningRecordDO::getCourseId, item.getId())
|
|
|
|
|
.eq(ClassStudentLearningRecordDO::getClassId, item.getClassId()));
|
|
|
|
|
// getStudyStatus()都为2就是完成, 否则为未完成
|
|
|
|
|
int completed = classStudentLearningRecordDOS.stream().allMatch(record -> record.getStudyStatus() != null && record.getStudyStatus() == 2) ? 2 : 0;
|
|
|
|
|
ClassManagementDO classManagementDO = collectClassMap.get(item.getClassId());
|
|
|
|
|
if (classManagementDO != null) {
|
|
|
|
|
classCourseVO.setClassName(classManagementDO.getClassName());
|
|
|
|
|
LocalDateTime endDate = classManagementDO.getEndDate();
|
|
|
|
|
if (classManagementDO.getDelayTime() != null && classManagementDO.getDelayTime().isAfter(endDate)) {
|
|
|
|
|
endDate = classManagementDO.getDelayTime();
|
|
|
|
|
if (!CollectionUtils.isEmpty(classId)) {
|
|
|
|
|
List<ClassCourseDO> classCourseDOS = baseMapper.selectList(new LambdaQueryWrapper<ClassCourseDO>()
|
|
|
|
|
.eq(ClassCourseDO::getClassId, classId)
|
|
|
|
|
.eq(ClassCourseDO::getDeleteEnum, DeleteEnum.FALSE.getCode()));
|
|
|
|
|
//查询班级
|
|
|
|
|
Map<Long, ClassManagementDO> collectClassMap = classManagementMapper.selectList(new LambdaQueryWrapper<ClassManagementDO>()
|
|
|
|
|
.in(ClassManagementDO::getId, classId))
|
|
|
|
|
.stream().collect(Collectors.toMap(ClassManagementDO::getId, Function.identity()));
|
|
|
|
|
List<ClassCourseVO> classCourseVOS = classCourseDOS.stream().map(item -> {
|
|
|
|
|
ClassCourseVO classCourseVO = classCourseConvertor.convertEToVo(item);
|
|
|
|
|
List<ClassStudentLearningRecordDO> classStudentLearningRecordDOS = learningRecordMapper.selectList(new LambdaQueryWrapper<ClassStudentLearningRecordDO>()
|
|
|
|
|
.eq(ClassStudentLearningRecordDO::getStudentId, AuthUserContextAdapter.getCurrentUserId())
|
|
|
|
|
.eq(ClassStudentLearningRecordDO::getCourseId, item.getId())
|
|
|
|
|
.eq(ClassStudentLearningRecordDO::getClassId, item.getClassId()));
|
|
|
|
|
// getStudyStatus()都为2就是完成, 否则为未完成
|
|
|
|
|
int completed = classStudentLearningRecordDOS.stream().allMatch(record -> record.getStudyStatus() != null && record.getStudyStatus() == 2) ? 2 : 0;
|
|
|
|
|
ClassManagementDO classManagementDO = collectClassMap.get(item.getClassId());
|
|
|
|
|
if (classManagementDO != null) {
|
|
|
|
|
classCourseVO.setClassName(classManagementDO.getClassName());
|
|
|
|
|
LocalDateTime endDate = classManagementDO.getEndDate();
|
|
|
|
|
if (classManagementDO.getDelayTime() != null && classManagementDO.getDelayTime().isAfter(endDate)) {
|
|
|
|
|
endDate = classManagementDO.getDelayTime();
|
|
|
|
|
}
|
|
|
|
|
classCourseVO.setEndDate(endDate);
|
|
|
|
|
}
|
|
|
|
|
classCourseVO.setEndDate(endDate);
|
|
|
|
|
}
|
|
|
|
|
if (completed == 0) {
|
|
|
|
|
LocalDateTime endDate = classCourseVO.getEndDate();
|
|
|
|
|
if (LocalDateTime.now().isBefore(endDate)) {
|
|
|
|
|
classCourseVO.setCompleted(1);
|
|
|
|
|
if (completed == 0) {
|
|
|
|
|
LocalDateTime endDate = classCourseVO.getEndDate();
|
|
|
|
|
if (LocalDateTime.now().isBefore(endDate)) {
|
|
|
|
|
classCourseVO.setCompleted(1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
classCourseVO.setCompleted(completed);
|
|
|
|
|
// 查询课件
|
|
|
|
|
classCourseVO.setCoursewareList(coursewareManagementMapper.selectBatchIds(item.getCoursewareId())
|
|
|
|
|
.stream().map(coursewareManagementConvertor::convertEToVo).collect(Collectors.toList()));
|
|
|
|
|
return classCourseVO;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
classCourseVO.setCompleted(completed);
|
|
|
|
|
// 查询课件
|
|
|
|
|
classCourseVO.setCoursewareList(coursewareManagementMapper.selectBatchIds(item.getCoursewareId())
|
|
|
|
|
.stream().map(coursewareManagementConvertor::convertEToVo).collect(Collectors.toList()));
|
|
|
|
|
return classCourseVO;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
return classManagementMapper.selectBatchIds(classId).stream().map(item -> {
|
|
|
|
|
ClassManagementVO classManagementVO = classManagementConvertor.convertEToVo(item);
|
|
|
|
|
classManagementVO.setClassCourseList(classCourseVOS.stream().filter(f -> f.getClassId().equals(String.valueOf(item.getId()))).collect(Collectors.toList()));
|
|
|
|
|
return classManagementVO;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|