作业查询修改
This commit is contained in:
parent
1bd0490dd9
commit
821be43cfd
@ -1,10 +1,6 @@
|
|||||||
package org.jeecg.modules.aiol.controller;
|
package org.jeecg.modules.aiol.controller;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.UnsupportedEncodingException;
|
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.AiolHomeworkSaveDTO;
|
||||||
import org.jeecg.modules.aiol.dto.StudentSubmitHomework;
|
import org.jeecg.modules.aiol.dto.StudentSubmitHomework;
|
||||||
import org.jeecg.modules.aiol.dto.HomeworkWithDetailsDTO;
|
import org.jeecg.modules.aiol.dto.HomeworkWithDetailsDTO;
|
||||||
import org.jeecg.modules.aiol.entity.AiolHomework;
|
import org.jeecg.modules.aiol.entity.*;
|
||||||
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.service.*;
|
import org.jeecg.modules.aiol.service.*;
|
||||||
import org.jeecg.modules.aiol.constant.EntityLinkConst;
|
import org.jeecg.modules.aiol.constant.EntityLinkConst;
|
||||||
import org.jeecg.modules.aiol.mapper.AiolClassStudentMapper;
|
import org.jeecg.modules.aiol.mapper.AiolClassStudentMapper;
|
||||||
import org.jeecg.modules.aiol.mapper.AiolCourseSignupMapper;
|
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.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
@ -82,6 +72,8 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
|
|||||||
private ISysBaseAPI sysBaseApi;
|
private ISysBaseAPI sysBaseApi;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IAiolEntityLinkService aiolEntityLinkService;
|
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) {
|
public Result<?> queryMyHomeworkList(HttpServletRequest request,@RequestParam(name = "type" , defaultValue = "4" , required = false) Integer type) {
|
||||||
// 尝试获取token,判断用户id
|
// 尝试获取token,判断用户id
|
||||||
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
|
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
|
||||||
List<AiolHomework> homeworkList = new ArrayList<>();
|
List<MyHomeworkDTO> homeworkDTOList = new ArrayList<>();
|
||||||
if (token != null && !token.trim().isEmpty()) {
|
if (token != null && !token.trim().isEmpty()) {
|
||||||
try {
|
try {
|
||||||
String username = JwtUtil.getUsername(token);
|
String username = JwtUtil.getUsername(token);
|
||||||
LoginUser sysUser = sysBaseApi.getUserByName(username);
|
LoginUser sysUser = sysBaseApi.getUserByName(username);
|
||||||
|
// 获取当前用户ID
|
||||||
|
String currentUserId = sysUser.getId();
|
||||||
if (sysUser != null) {
|
if (sysUser != null) {
|
||||||
//获取课程id列表
|
//获取课程id列表
|
||||||
List<AiolCourseSignup> courseSignupList = aiolCourseSignupMapper.selectList(
|
List<AiolCourseSignup> courseSignupList = aiolCourseSignupMapper.selectList(
|
||||||
@ -154,7 +148,7 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
|
|||||||
queryWrapper.in("id", list);
|
queryWrapper.in("id", list);
|
||||||
}else return Result.ok();
|
}else return Result.ok();
|
||||||
// 查询作业列表并去重
|
// 查询作业列表并去重
|
||||||
homeworkList = aiolHomeworkService.list(queryWrapper)
|
List<AiolHomework> homeworkList = aiolHomeworkService.list(queryWrapper)
|
||||||
.stream()
|
.stream()
|
||||||
.distinct()
|
.distinct()
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@ -163,31 +157,59 @@ public class AiolHomeworkController extends JeecgController<AiolHomework, IAiolH
|
|||||||
.map(AiolHomework::getCreateBy)
|
.map(AiolHomework::getCreateBy)
|
||||||
.distinct()
|
.distinct()
|
||||||
.collect(Collectors.toList());
|
.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(
|
List<SysUser> userList = sysUserService.list(
|
||||||
new QueryWrapper<SysUser>()
|
new QueryWrapper<SysUser>()
|
||||||
.in("username", creatorIds)
|
.in("username", creatorIds)
|
||||||
);
|
);
|
||||||
// 创建ID到用户名的映射
|
// 创建ID到用户名的映射
|
||||||
Map<String, String> userMap = userList.stream()
|
Map<String, SysUser> userMap = userList.stream()
|
||||||
.collect(Collectors.toMap(
|
.collect(Collectors.toMap(
|
||||||
SysUser::getUsername,
|
SysUser::getUsername,
|
||||||
SysUser::getRealname
|
SysUser -> SysUser
|
||||||
));
|
));
|
||||||
// 替换作业中的创建人ID为用户名
|
// 替换作业中的创建人ID为用户名
|
||||||
homeworkList.forEach(homework -> {
|
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();
|
String creatorId = homework.getCreateBy();
|
||||||
if (creatorId != null && userMap.containsKey(creatorId)) {
|
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){
|
}catch (Exception e){
|
||||||
return Result.error(e.getMessage());
|
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