作业查询修改

This commit is contained in:
Lqc 2025-10-14 17:47:33 +08:00
parent 1bd0490dd9
commit 821be43cfd
2 changed files with 67 additions and 19 deletions

View File

@ -1,10 +1,6 @@
package org.jeecg.modules.aiol.controller;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
@ -24,17 +20,11 @@ import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.aiol.dto.AiolHomeworkSaveDTO;
import org.jeecg.modules.aiol.dto.StudentSubmitHomework;
import org.jeecg.modules.aiol.dto.HomeworkWithDetailsDTO;
import org.jeecg.modules.aiol.entity.AiolHomework;
import org.jeecg.modules.aiol.entity.AiolHomeworkSubmit;
import org.jeecg.modules.aiol.entity.AiolClass;
import org.jeecg.modules.aiol.entity.AiolCourseSection;
import org.jeecg.modules.aiol.entity.*;
import org.jeecg.modules.aiol.service.*;
import org.jeecg.modules.aiol.constant.EntityLinkConst;
import org.jeecg.modules.aiol.mapper.AiolClassStudentMapper;
import org.jeecg.modules.aiol.mapper.AiolCourseSignupMapper;
import org.jeecg.modules.aiol.entity.AiolClassStudent;
import org.jeecg.modules.aiol.entity.AiolCourseSignup;
import org.jeecg.modules.aiol.entity.AiolEntityLink;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -82,6 +72,8 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
private ISysBaseAPI sysBaseApi;
@Autowired
private IAiolEntityLinkService aiolEntityLinkService;
@Autowired
private IAiolHomeworkSubmitService aiolHomeworkSubmitService;
/**
* 分页列表查询
@ -112,11 +104,13 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
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<AiolHomework> homeworkList = new ArrayList<>();
List<MyHomeworkDTO> homeworkDTOList = new ArrayList<>();
if (token != null && !token.trim().isEmpty()) {
try {
String username = JwtUtil.getUsername(token);
LoginUser sysUser = sysBaseApi.getUserByName(username);
// 获取当前用户ID
String currentUserId = sysUser.getId();
if (sysUser != null) {
//获取课程id列表
List<AiolCourseSignup> courseSignupList = aiolCourseSignupMapper.selectList(
@ -154,7 +148,7 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
queryWrapper.in("id", list);
}else return Result.ok();
// 查询作业列表并去重
homeworkList = aiolHomeworkService.list(queryWrapper)
List<AiolHomework> homeworkList = aiolHomeworkService.list(queryWrapper)
.stream()
.distinct()
.collect(Collectors.toList());
@ -163,31 +157,59 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
.map(AiolHomework::getCreateBy)
.distinct()
.collect(Collectors.toList());
if (creatorIds.isEmpty()) return Result.ok();
// 查询所有作业的提交记录
List<AiolHomeworkSubmit> submitRecords = aiolHomeworkSubmitService.list(
new QueryWrapper<AiolHomeworkSubmit>()
.in("homework_id", homeworkList.stream().map(AiolHomework::getId).collect(Collectors.toList()))
);
// 按作业ID和学生ID分组存储提交记录
Map<String, Map<String, List<AiolHomeworkSubmit>>> userSubmitMap = submitRecords.stream()
.collect(Collectors.groupingBy(
AiolHomeworkSubmit::getHomeworkId,
Collectors.groupingBy(
AiolHomeworkSubmit::getStudentId
)
));
// 按作业ID分组统计提交人数
Map<String, Long> submitCountMap = submitRecords.stream()
.collect(Collectors.groupingBy(
AiolHomeworkSubmit::getHomeworkId,
Collectors.counting()
));
// 查询创建人信息
List<SysUser> userList = sysUserService.list(
new QueryWrapper<SysUser>()
.in("username", creatorIds)
);
// 创建ID到用户名的映射
Map<String, String> userMap = userList.stream()
Map<String, SysUser> userMap = userList.stream()
.collect(Collectors.toMap(
SysUser::getUsername,
SysUser::getRealname
SysUser -> SysUser
));
// 替换作业中的创建人ID为用户名
homeworkList.forEach(homework -> {
MyHomeworkDTO myHomeworkDTO = new MyHomeworkDTO();
myHomeworkDTO.setAiolHomework(homework);
// 获取当前用户的提交记录如果没有则返回空列表
List<AiolHomeworkSubmit> userSubmits = userSubmitMap.getOrDefault(homework.getId(), Collections.emptyMap())
.getOrDefault(currentUserId, Collections.emptyList());
myHomeworkDTO.setAiolHomeworkSubmits(userSubmits);
myHomeworkDTO.setSubmitCount(submitCountMap.getOrDefault(homework.getId(), 0L));
String creatorId = homework.getCreateBy();
if (creatorId != null && userMap.containsKey(creatorId)) {
homework.setCreateBy(userMap.get(creatorId));
myHomeworkDTO.setRealName(userMap.get(creatorId).getRealname());
myHomeworkDTO.setAvatar(userMap.get(creatorId).getAvatar());
}
homeworkDTOList.add(myHomeworkDTO);
});
}
}catch (Exception e){
return Result.error(e.getMessage());
}
}
return Result.ok(homeworkList);
return Result.ok(homeworkDTOList);
}

View File

@ -0,0 +1,26 @@
package org.jeecg.modules.aiol.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.List;
@Data
public class MyHomeworkDTO {
@Schema(description = "作业")
private AiolHomework aiolHomework;
@Schema(description = "用户名")
private String realName;
@Schema(description = "头像")
private String avatar;
@Schema(description = "作业提交")
private List<AiolHomeworkSubmit> aiolHomeworkSubmits;
@Schema(description = "已提交数")
private Long submitCount;
}