mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-07 01:46:47 +08:00
feat:
1.添加根据课程id得到对应学习记录(包括考试记录)接口 2.修改学习记录中的分数根据考试设置为最新/最高分数
This commit is contained in:
@@ -173,10 +173,11 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
exportMap.put("学习进度", "学习进度");
|
||||
// 2.查询课程的所有考试答卷信息,拼接动态表头(XXX考试成绩)
|
||||
// 注意:这里的考试信息每个学生每门课程只有一条,实际数据可能多次考试,因此根据考试配置中的(最高分/最新数据)获取对应列表数据即可(本次新增接口)
|
||||
// TODO 这里回头要换成根据考试设置最新/最多的接口
|
||||
List<StudyExam> studyExams = studyExamService.getByCourseId(courseId);
|
||||
// courseExam和studyExam表都有testName字段,查看现有逻辑后,选择studyExam表的testName字段作为考试名称
|
||||
// 因为需求没提,因此查询按默认id排序
|
||||
// 查询学习记录接口,学习记录默认存储获取最高/最新的分数,备用
|
||||
List<StudyCourseItem> studyCourseItems = service.getStudyCourseItemByCourseId(courseId);
|
||||
// 判断非空则拼接表头
|
||||
// 用于处理考试名称重复的情况
|
||||
if (studyExams != null && !studyExams.isEmpty()) {
|
||||
@@ -297,16 +298,25 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
map.put("学习进度", studyCourse1.getProgress() != null ? studyCourse1.getProgress() + "%" : "");
|
||||
// 按考试顺序拼接考试信息
|
||||
if (studyExams != null && !studyExams.isEmpty()) {
|
||||
// 获取当前学生该课程的所有考试成绩 TODO 这里需要确认
|
||||
List<StudyExam> studentExams = studyExamService.getByStudyIdAndContentId(studyCourse1.getId(), null);
|
||||
// 获取当前学生该课程的所有考试成绩
|
||||
List<StudyExam> studentExams = studyExams.stream().filter(studyExam -> Objects.equals(studyExam.getStudyId(), studyCourse1.getId())).collect(Collectors.toList());
|
||||
// 修改为使用testId作为键而不是testName
|
||||
Map<String, StudyExam> examMap = studentExams.stream().collect(Collectors.toMap(StudyExam::getTestId, Function.identity(), (e1, e2) -> e1));
|
||||
// 按顺序添加考试成绩,使用testId匹配
|
||||
for (StudyExam studyExam : studyExams) {
|
||||
String testId = studyExam.getTestId();
|
||||
String examName = studyExam.getTestName();
|
||||
String contentId = studyExam.getContentId();
|
||||
if (examMap.containsKey(testId)) {
|
||||
map.put(examName, examMap.get(testId).getScore());
|
||||
// 这里不直接用考试成绩,因为有多次考试
|
||||
// 使用contentId+aid组合筛选学习记录数据获取成绩,因为学习记录中的成绩默认按考试设置最新/最高分的方式计算
|
||||
Optional<StudyCourseItem> studyCourseItemOptional = studyCourseItems.stream().filter(studyCourseItem -> Objects.equals(studyCourseItem.getContentId(), contentId) && Objects.equals(studyCourseItem.getAid(), studyCourse1.getAid())).findFirst();
|
||||
// 如果存在成绩,填写成绩,否则填入空值
|
||||
if (studyCourseItemOptional.isPresent()) {
|
||||
map.put(examName, studyCourseItemOptional.get().getScore());
|
||||
} else {
|
||||
map.put(examName, "");
|
||||
}
|
||||
} else {
|
||||
// 当前学生未进行的考试,填入空值
|
||||
map.put(examName, "");
|
||||
|
||||
@@ -116,4 +116,15 @@ public interface IStudyCourseService {
|
||||
List<CourseStudyItem> findByCourseAndUsers(String courseId,List<String> aids) throws Exception;
|
||||
|
||||
List<StudyCourse> getCourseId(String userId);
|
||||
|
||||
/**
|
||||
* 根据课程id得到对应课程学习记录(包括考试记录)
|
||||
* 这个接口从study_course_item表获取,这个表的score考试分数字段保存或更新时,是根据考试设置最新/最高分的
|
||||
* 25.11.24新增
|
||||
*
|
||||
* @param courseId 课程id
|
||||
* @return 考试记录集合
|
||||
*/
|
||||
List<StudyCourseItem> getStudyCourseItemByCourseId(String courseId);
|
||||
|
||||
}
|
||||
@@ -748,4 +748,17 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
|
||||
return studyCourseDao.findList(FieldFilters.in("id", ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据课程id得到对应考试记录
|
||||
* 这个接口从study_course_item表获取,这个表的score分数字段更新时,是根据考试设置最新/最高分的
|
||||
* 25.11.24新增
|
||||
*
|
||||
* @param courseId 课程id
|
||||
* @return 考试记录集合
|
||||
*/
|
||||
@Override
|
||||
public List<StudyCourseItem> getStudyCourseItemByCourseId(String courseId) {
|
||||
return studyCourseItemDao.findList(FieldFilters.eq("courseId", courseId));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user