作业查询修改
This commit is contained in:
parent
1bd0490dd9
commit
821be43cfd
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user