作业查询逻辑修改

This commit is contained in:
Lqc 2025-10-15 17:15:02 +08:00
parent 821be43cfd
commit b077443687
2 changed files with 74 additions and 64 deletions

View File

@ -1381,7 +1381,8 @@ public class AiolExamController extends JeecgController<AiolExam, IAiolExamServi
}
if(paper.getRequireReview()==1){
updateWrapper
.set(AiolExamRecord::getStatus, 1);
.set(AiolExamRecord::getStatus, 1)
.set(AiolExamRecord::getTotalScore, totalPoint);
}else {
updateWrapper
.set(AiolExamRecord::getStatus, 2)

View File

@ -101,7 +101,7 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
@Operation(summary = "我的作业-作业查询")
@GetMapping(value = "/myHomeworkList")
public Result<?> queryMyHomeworkList(HttpServletRequest request,@RequestParam(name = "type" , defaultValue = "4" , required = false) Integer type) {
public Result<?> queryMyHomeworkList(HttpServletRequest request, @RequestParam(name = "type", defaultValue = "4", required = false) Integer type) {
// 尝试获取token判断用户id
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
List<MyHomeworkDTO> homeworkDTOList = new ArrayList<>();
@ -136,17 +136,14 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
.in("source_id", courseIdList)
.eq("target_type", "homework")
.select("target_id")).stream().map(AiolEntityLink::getTargetId).collect(Collectors.toList());
}else return Result.ok();
} else return Result.ok();
log.info("查询到作业关联数量: {}", list.size());
// 查询作业
QueryWrapper<AiolHomework> queryWrapper = new QueryWrapper<>();
if(type != 4){
queryWrapper.eq("status", type);
}
if (!list.isEmpty()) {
queryWrapper.in("id", list);
}else return Result.ok();
} else return Result.ok();
// 查询作业列表并去重
List<AiolHomework> homeworkList = aiolHomeworkService.list(queryWrapper)
.stream()
@ -189,12 +186,22 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
SysUser -> SysUser
));
// 替换作业中的创建人ID为用户名
homeworkList.forEach(homework -> {
for (AiolHomework homework : homeworkList) {
MyHomeworkDTO myHomeworkDTO = new MyHomeworkDTO();
myHomeworkDTO.setAiolHomework(homework);
// 获取当前用户的提交记录如果没有则返回空列表
List<AiolHomeworkSubmit> userSubmits = userSubmitMap.getOrDefault(homework.getId(), Collections.emptyMap())
.getOrDefault(currentUserId, Collections.emptyList());
if (type == 1 || type == 2) {
if (userSubmits.isEmpty() || !userSubmits.get(0).getStatus().equals(type)) {
continue;
}
} else if (type == 0) {
if (!userSubmits.isEmpty() && !userSubmits.get(0).getStatus().equals(type)) {
continue;
}
}
myHomeworkDTO.setAiolHomeworkSubmits(userSubmits);
myHomeworkDTO.setSubmitCount(submitCountMap.getOrDefault(homework.getId(), 0L));
String creatorId = homework.getCreateBy();
@ -203,9 +210,9 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
myHomeworkDTO.setAvatar(userMap.get(creatorId).getAvatar());
}
homeworkDTOList.add(myHomeworkDTO);
});
}
}
}catch (Exception e){
} catch (Exception e) {
return Result.error(e.getMessage());
}
}
@ -288,7 +295,7 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
if (aiolHomework == null) {
return Result.error("未找到对应数据");
}
// 转换为包含详情的DTO
HomeworkWithDetailsDTO result = convertToHomeworkWithDetails(aiolHomework);
return Result.OK(result);
@ -321,16 +328,15 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
@Autowired
private IAiolHomeworkSubmitService homeworkSubmitService;
@Autowired
private IAiolEntityLinkService entityLinkBizService;
@Autowired
private AiolClassStudentMapper aiolClassStudentMapper;
@Autowired
private AiolCourseSignupMapper aiolCourseSignupMapper;
@Autowired
@ -352,17 +358,17 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
try {
QueryWrapper<AiolHomework> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("course_id", courseId)
.orderByDesc("create_time");
.orderByDesc("create_time");
List<AiolHomework> homeworkList = aiolHomeworkService.list(queryWrapper);
// 转换为包含详情的DTO列表
List<HomeworkWithDetailsDTO> resultList = homeworkList.stream()
.map(this::convertToHomeworkWithDetails)
.collect(Collectors.toList());
return Result.OK(resultList);
} catch (Exception e) {
log.error("查询教师作业列表失败: error={}", e.getMessage(), e);
return Result.error("查询教师作业列表失败: " + e.getMessage());
@ -398,7 +404,7 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
QueryWrapper<AiolHomeworkSubmit> submitWrapper = new QueryWrapper<>();
submitWrapper.eq("homework_id", homeworkId);
List<AiolHomeworkSubmit> submitList = homeworkSubmitService.list(submitWrapper);
if (!submitList.isEmpty()) {
List<String> submitIds = submitList.stream()
.map(AiolHomeworkSubmit::getId)
@ -406,16 +412,16 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
homeworkSubmitService.removeByIds(submitIds);
log.info("删除作业提交记录成功: homeworkId={}, 删除数量={}", homeworkId, submitIds.size());
}
// 2. 删除作业记录
boolean deleted = aiolHomeworkService.removeById(homeworkId);
if (!deleted) {
return Result.error("删除作业失败,作业不存在");
}
log.info("教师删除作业成功: homeworkId={}", homeworkId);
return Result.OK("删除成功!");
} catch (Exception e) {
log.error("教师删除作业失败: homeworkId={}, error={}", homeworkId, e.getMessage(), e);
return Result.error("删除作业失败: " + e.getMessage());
@ -433,15 +439,15 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
// 复制DTO中的作业字段到实体
BeanUtils.copyProperties(homeworkSaveDTO, aiolHomework);
aiolHomeworkService.save(aiolHomework);
String homeworkId = aiolHomework.getId();
String classId = homeworkSaveDTO.getClassId();
String courseId = homeworkSaveDTO.getCourseId();
String sectionId = homeworkSaveDTO.getSectionId();
// 2. 为学生创建作业提交记录
List<String> studentIds = new ArrayList<>();
if (classId != null && !classId.trim().isEmpty()) {
// 如果传递了班级ID查询指定班级的学生
String[] classIds = classId.split(",");
@ -451,7 +457,7 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
QueryWrapper<AiolClassStudent> classStudentWrapper = new QueryWrapper<>();
classStudentWrapper.eq("class_id", singleClassId);
List<AiolClassStudent> classStudents = aiolClassStudentMapper.selectList(classStudentWrapper);
for (AiolClassStudent classStudent : classStudents) {
String studentId = classStudent.getStudentId();
if (!studentIds.contains(studentId)) {
@ -465,7 +471,7 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
QueryWrapper<AiolCourseSignup> courseSignupWrapper = new QueryWrapper<>();
courseSignupWrapper.eq("course_id", courseId);
List<AiolCourseSignup> courseSignups = aiolCourseSignupMapper.selectList(courseSignupWrapper);
for (AiolCourseSignup courseSignup : courseSignups) {
String studentId = courseSignup.getUserId();
if (!studentIds.contains(studentId)) {
@ -473,28 +479,28 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
}
}
}
// 为每个学生创建空的作业提交记录
for (String studentId : studentIds) {
homeworkSubmitService.createEmptySubmit(homeworkId, studentId);
}
// 3. 如果传递了章节ID创建章节与作业的关联关系
if (sectionId != null && !sectionId.trim().isEmpty()) {
entityLinkBizService.save(
EntityLinkConst.SourceType.COURSE_SECTION,
sectionId.trim(),
EntityLinkConst.TargetType.HOMEWORK,
homeworkId
EntityLinkConst.SourceType.COURSE_SECTION,
sectionId.trim(),
EntityLinkConst.TargetType.HOMEWORK,
homeworkId
);
log.info("作业 {} 成功关联到章节 {}", homeworkId, sectionId);
}
log.info("教师添加作业成功: homeworkId={}, courseId={}, classId={}, sectionId={}, 学生数量={}",
log.info("教师添加作业成功: homeworkId={}, courseId={}, classId={}, sectionId={}, 学生数量={}",
homeworkId, courseId, classId, sectionId, studentIds.size());
return Result.OK("添加成功!");
} catch (Exception e) {
log.error("教师添加作业失败: homeworkSaveDTO={}, error={}", homeworkSaveDTO, e.getMessage(), e);
return Result.error("添加作业失败: " + e.getMessage());
@ -533,16 +539,16 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
try {
QueryWrapper<AiolEntityLink> delWrapper = new QueryWrapper<>();
delWrapper.eq("target_type", EntityLinkConst.TargetType.HOMEWORK)
.eq("target_id", homeworkId)
.eq("source_type", EntityLinkConst.SourceType.COURSE_SECTION);
.eq("target_id", homeworkId)
.eq("source_type", EntityLinkConst.SourceType.COURSE_SECTION);
entityLinkBizService.remove(delWrapper);
if (sectionId != null && !sectionId.trim().isEmpty()) {
entityLinkBizService.save(
EntityLinkConst.SourceType.COURSE_SECTION,
sectionId.trim(),
EntityLinkConst.TargetType.HOMEWORK,
homeworkId
EntityLinkConst.SourceType.COURSE_SECTION,
sectionId.trim(),
EntityLinkConst.TargetType.HOMEWORK,
homeworkId
);
}
} catch (Exception e) {
@ -555,7 +561,9 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
if (classId != null && !classId.trim().isEmpty()) {
String[] classIds = classId.split(",");
for (String singleClassId : classIds) {
if (singleClassId == null || singleClassId.trim().isEmpty()) { continue; }
if (singleClassId == null || singleClassId.trim().isEmpty()) {
continue;
}
QueryWrapper<AiolClassStudent> csWrapper = new QueryWrapper<>();
csWrapper.eq("class_id", singleClassId.trim());
List<AiolClassStudent> classStudents = aiolClassStudentMapper.selectList(csWrapper);
@ -611,44 +619,44 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
String submitId = (String) reviewParams.get("submitId");
Integer score = (Integer) reviewParams.get("score");
String comment = (String) reviewParams.get("comment");
// 验证必填参数
if (submitId == null || submitId.trim().isEmpty()) {
return Result.error("submitId不能为空");
}
// 2. 查询作业提交记录
AiolHomeworkSubmit submit = homeworkSubmitService.getById(submitId);
if (submit == null) {
return Result.error("作业提交记录不存在");
}
// 3. 更新作业提交记录
AiolHomeworkSubmit updateSubmit = new AiolHomeworkSubmit();
updateSubmit.setId(submitId);
// 设置分数如果提供
if (score != null) {
updateSubmit.setScore(score);
}
// 设置评语如果提供
if (comment != null && !comment.trim().isEmpty()) {
updateSubmit.setComment(comment.trim());
}
// 更新状态为已批阅3
updateSubmit.setStatus(3);
// 4. 保存更新
boolean updated = homeworkSubmitService.updateById(updateSubmit);
if (!updated) {
return Result.error("批阅失败,更新作业提交记录失败");
}
log.info("作业批阅成功: submitId={}, score={}, status=3", submitId, score);
return Result.OK("批阅成功!");
} catch (Exception e) {
log.error("作业批阅失败: reviewParams={}, error={}", reviewParams, e.getMessage(), e);
return Result.error("批阅失败: " + e.getMessage());
@ -657,13 +665,14 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
/**
* 将AiolHomework转换为包含详情的DTO
*
* @param homework 作业实体
* @return 包含班级名和章节信息的DTO
*/
private HomeworkWithDetailsDTO convertToHomeworkWithDetails(AiolHomework homework) {
HomeworkWithDetailsDTO dto = new HomeworkWithDetailsDTO();
BeanUtils.copyProperties(homework, dto);
try {
// 1. 查询班级信息
List<String> classNames = new ArrayList<>();
@ -681,29 +690,29 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
}
}
dto.setClassNames(classNames);
// 2. 查询章节信息
List<String> sectionIds = entityLinkBizService.listSourceIds(
EntityLinkConst.TargetType.HOMEWORK,
homework.getId(),
EntityLinkConst.SourceType.COURSE_SECTION
EntityLinkConst.TargetType.HOMEWORK,
homework.getId(),
EntityLinkConst.SourceType.COURSE_SECTION
);
if (!sectionIds.isEmpty()) {
String sectionId = sectionIds.get(0); // 取第一个章节ID
dto.setSectionId(sectionId);
AiolCourseSection section = aiolCourseSectionService.getById(sectionId);
if (section != null && section.getName() != null) {
dto.setSectionTitle(section.getName());
}
}
} catch (Exception e) {
log.error("转换作业详情失败: homeworkId={}, error={}", homework.getId(), e.getMessage(), e);
// 即使转换失败也返回基本的作业信息
}
return dto;
}
}