From 821be43cfd25239cf48e2c505888f84d38b611c9 Mon Sep 17 00:00:00 2001 From: Lqc Date: Tue, 14 Oct 2025 17:47:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AiolHomeworkController.java | 60 +++++++++++++------ .../modules/aiol/entity/MyHomeworkDTO.java | 26 ++++++++ 2 files changed, 67 insertions(+), 19 deletions(-) create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/MyHomeworkDTO.java diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java index e7a1eb69..2b98bc62 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java @@ -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 queryMyHomeworkList(HttpServletRequest request,@RequestParam(name = "type" , defaultValue = "4" , required = false) Integer type) { // 尝试获取token,判断用户id String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); - List homeworkList = new ArrayList<>(); + List 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 courseSignupList = aiolCourseSignupMapper.selectList( @@ -154,7 +148,7 @@ public class AiolHomeworkController extends JeecgController homeworkList = aiolHomeworkService.list(queryWrapper) .stream() .distinct() .collect(Collectors.toList()); @@ -163,31 +157,59 @@ public class AiolHomeworkController extends JeecgController submitRecords = aiolHomeworkSubmitService.list( + new QueryWrapper() + .in("homework_id", homeworkList.stream().map(AiolHomework::getId).collect(Collectors.toList())) + ); + // 按作业ID和学生ID分组存储提交记录 + Map>> userSubmitMap = submitRecords.stream() + .collect(Collectors.groupingBy( + AiolHomeworkSubmit::getHomeworkId, + Collectors.groupingBy( + AiolHomeworkSubmit::getStudentId + ) + )); + // 按作业ID分组统计提交人数 + Map submitCountMap = submitRecords.stream() + .collect(Collectors.groupingBy( + AiolHomeworkSubmit::getHomeworkId, + Collectors.counting() + )); // 查询创建人信息 List userList = sysUserService.list( new QueryWrapper() .in("username", creatorIds) ); // 创建ID到用户名的映射 - Map userMap = userList.stream() + Map userMap = userList.stream() .collect(Collectors.toMap( SysUser::getUsername, - SysUser::getRealname + SysUser -> SysUser )); // 替换作业中的创建人ID为用户名 homeworkList.forEach(homework -> { + MyHomeworkDTO myHomeworkDTO = new MyHomeworkDTO(); + myHomeworkDTO.setAiolHomework(homework); + // 获取当前用户的提交记录,如果没有则返回空列表 + List 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); } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/MyHomeworkDTO.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/MyHomeworkDTO.java new file mode 100644 index 00000000..6cda9c45 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/MyHomeworkDTO.java @@ -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 aiolHomeworkSubmits; + @Schema(description = "已提交数") + private Long submitCount; +}