教学统计
This commit is contained in:
parent
6f0aa02eb6
commit
b808c220a8
@ -5,7 +5,6 @@ import club.joylink.rtss.controller.advice.Role;
|
||||
import club.joylink.rtss.services.IUserExamService;
|
||||
import club.joylink.rtss.vo.AccountVO;
|
||||
import club.joylink.rtss.vo.client.*;
|
||||
import club.joylink.rtss.vo.client.userExam.PersonalUserExamResultCurveQueryVO;
|
||||
import club.joylink.rtss.vo.client.userExam.WholeOrgUserExamResult;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -101,9 +100,9 @@ public class UserExamController {
|
||||
/**
|
||||
* 查询个人考试成绩曲线
|
||||
*/
|
||||
@GetMapping("/curve/personal")
|
||||
public List<UserExamVO> getPersonalUserExamResults(PersonalUserExamResultCurveQueryVO queryVO) {
|
||||
return iUserExamService.getPersonalUserExamResults(queryVO);
|
||||
@GetMapping("/curve/{userId}")
|
||||
public List<UserExamVO> getPersonalUserExamResults(@PathVariable Long userId) {
|
||||
return iUserExamService.getPersonalUserExamResults(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,7 +3,6 @@ package club.joylink.rtss.services;
|
||||
|
||||
import club.joylink.rtss.vo.AccountVO;
|
||||
import club.joylink.rtss.vo.client.*;
|
||||
import club.joylink.rtss.vo.client.userExam.PersonalUserExamResultCurveQueryVO;
|
||||
import club.joylink.rtss.vo.client.userExam.WholeOrgUserExamResult;
|
||||
|
||||
import java.util.List;
|
||||
@ -83,9 +82,9 @@ public interface IUserExamService {
|
||||
|
||||
/***
|
||||
* 获取组织中一个人的考试成绩
|
||||
* @param queryVO
|
||||
* @param userId
|
||||
*/
|
||||
List<UserExamVO> getPersonalUserExamResults(PersonalUserExamResultCurveQueryVO queryVO);
|
||||
List<UserExamVO> getPersonalUserExamResults(Long userId);
|
||||
|
||||
/**
|
||||
* 获取某一次考试的全组织的用户考试成绩
|
||||
|
@ -1,7 +1,6 @@
|
||||
package club.joylink.rtss.services;
|
||||
|
||||
import club.joylink.rtss.constants.BusinessConsts;
|
||||
import club.joylink.rtss.constants.StatusEnum;
|
||||
import club.joylink.rtss.dao.*;
|
||||
import club.joylink.rtss.entity.*;
|
||||
import club.joylink.rtss.event.UserExamRecordEvent;
|
||||
@ -14,7 +13,6 @@ import club.joylink.rtss.simulation.cbtc.GroupSimulationService;
|
||||
import club.joylink.rtss.vo.AccountVO;
|
||||
import club.joylink.rtss.vo.client.*;
|
||||
import club.joylink.rtss.vo.client.training.TrainingResultVO;
|
||||
import club.joylink.rtss.vo.client.userExam.PersonalUserExamResultCurveQueryVO;
|
||||
import club.joylink.rtss.vo.client.userExam.WholeOrgUserExamResult;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
@ -360,38 +358,15 @@ public class UserExamService implements IUserExamService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserExamVO> getPersonalUserExamResults(PersonalUserExamResultCurveQueryVO queryVO) {
|
||||
BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertNotNull(queryVO.getOrgId());
|
||||
BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertNotNull(queryVO.getUserId());
|
||||
List<OrgExam> orgExams = iOrgExamService.findEntities(queryVO.getOrgId(), queryVO.getCreatorId());
|
||||
//该组织下由指定用户创建的所有考试
|
||||
List<Long> examIds = orgExams.stream().map(OrgExam::getExamId).collect(Collectors.toList());
|
||||
List<ExamDefinition> exams = iExamService.findEntities(examIds, StatusEnum.Valid.getCode());
|
||||
//该用户对这些考试的成绩
|
||||
public List<UserExamVO> getPersonalUserExamResults(Long userId) {
|
||||
UserExamExample example = new UserExamExample();
|
||||
example.createCriteria()
|
||||
.andUserIdEqualTo(queryVO.getUserId())
|
||||
.andExamIdIn(examIds);
|
||||
example.createCriteria().andUserIdEqualTo(userId);
|
||||
List<UserExam> userExams = userExamMapper.selectByExample(example);
|
||||
|
||||
Map<Long, UserExam> examId_userExam_map = userExams.stream()
|
||||
.collect(Collectors.toMap(UserExam::getExamId,
|
||||
Collection<UserExam> maxScoreUserExams = userExams.stream().collect(Collectors.toMap(UserExam::getExamId,
|
||||
Function.identity(),
|
||||
BinaryOperator.maxBy(Comparator.comparing(UserExam::getScore))));
|
||||
return exams.stream().map(exam -> {
|
||||
UserExam userExam = examId_userExam_map.get(exam.getId());
|
||||
UserExamVO vo;
|
||||
if (userExam != null) {
|
||||
vo = new UserExamVO(userExam);
|
||||
} else { //该用户没有考这门试的记录
|
||||
vo = new UserExamVO();
|
||||
vo.setUserId(queryVO.getUserId().toString());
|
||||
vo.setExamId(exam.getId().toString());
|
||||
vo.setExamName(exam.getName());
|
||||
vo.setScore(0f);
|
||||
}
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
BinaryOperator.maxBy(Comparator.comparing(UserExam::getScore))))
|
||||
.values();
|
||||
return UserExamVO.convert(maxScoreUserExams);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,6 +1,5 @@
|
||||
package club.joylink.rtss.vo.client;
|
||||
|
||||
import club.joylink.rtss.entity.SysAccount;
|
||||
import club.joylink.rtss.entity.UserExam;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -8,9 +7,8 @@ import lombok.Setter;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -83,21 +81,10 @@ public class UserExamVO {
|
||||
this.id = id.toString();
|
||||
}
|
||||
|
||||
public static List<UserExamVO> convert(List<UserExam> entities, List<SysAccount> accounts) {
|
||||
public static List<UserExamVO> convert(Collection<UserExam> entities) {
|
||||
if (CollectionUtils.isEmpty(entities))
|
||||
return new ArrayList<>();
|
||||
Map<Long, String> userId_userName_map;
|
||||
if (CollectionUtils.isEmpty(accounts)) {
|
||||
userId_userName_map = new HashMap<>();
|
||||
} else {
|
||||
userId_userName_map = accounts.stream()
|
||||
.collect(Collectors.toMap(SysAccount::getId, SysAccount::getName));
|
||||
}
|
||||
return entities.stream().map(userExam -> {
|
||||
UserExamVO vo = new UserExamVO(userExam);
|
||||
vo.setUsername(userId_userName_map.get(userExam.getUserId()));
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
return entities.stream().map(UserExamVO::new).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user