From 8458e64aab474c0fc2f49ae4ff22fb11ce5cf6e2 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Mon, 11 Nov 2024 16:55:28 +0800
Subject: [PATCH] 批次新增学员查询条件,新增题目导入接口
---
exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamPaperServiceImpl.java | 107 ++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 89 insertions(+), 18 deletions(-)
diff --git a/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamPaperServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamPaperServiceImpl.java
index 5bd7e0d..0b7b717 100644
--- a/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamPaperServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamPaperServiceImpl.java
@@ -14,20 +14,15 @@
import com.gkhy.exam.system.domain.ExExamPaper;
import com.gkhy.exam.system.domain.ExPaperQuestion;
import com.gkhy.exam.system.domain.ExQuestion;
-import com.gkhy.exam.system.mapper.ExExamPaperMapper;
-import com.gkhy.exam.system.mapper.ExPaperQuestionMapper;
-import com.gkhy.exam.system.mapper.ExPaperStudentMapper;
-import com.gkhy.exam.system.mapper.ExQuestionMapper;
+import com.gkhy.exam.system.domain.ExQuestionBank;
+import com.gkhy.exam.system.mapper.*;
import com.gkhy.exam.system.service.ExExamPaperService;
import com.gkhy.exam.system.utils.SequenceUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Random;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -47,6 +42,8 @@
private ExPaperQuestionMapper paperQuestionMapper;
@Autowired
private ExQuestionMapper questionMapper;
+ @Autowired
+ private ExQuestionBankMapper questionBankMapper;
@Autowired
private SequenceUtils sequenceUtils;
@@ -65,6 +62,27 @@
@Override
public ExExamPaper selectExamPaperById(Long paperId) {
ExExamPaper examPaper= baseMapper.selectExamPaperById(paperId);
+ //获取题库名称
+ List<Long> bankIds=new ArrayList<>();
+ bankIds.add(examPaper.getSingleBankId());
+ bankIds.add(examPaper.getMultiBankId());
+ bankIds.add(examPaper.getJudgeBankId());
+ bankIds.add(examPaper.getEasyBankId());
+ List<ExQuestionBank> questionBanks=questionBankMapper.selectQuestionBankByIds(bankIds);
+ questionBanks.forEach(item -> {
+ if(Objects.equals(item.getId(), examPaper.getSingleBankId())){
+ examPaper.setSingleBankName(item.getName());
+ }
+ if(Objects.equals(item.getId(), examPaper.getMultiBankId())){
+ examPaper.setMultiBankName(item.getName());
+ }
+ if(Objects.equals(item.getId(), examPaper.getJudgeBankId())){
+ examPaper.setJudgeBankName(item.getName());
+ }
+ if(Objects.equals(item.getId(), examPaper.getEasyBankId())){
+ examPaper.setEasyBankName(item.getName());
+ }
+ });
SysUser currentUser= SecurityUtils.getLoginUser().getUser();
if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
return examPaper;
@@ -79,6 +97,7 @@
@Override
@Transactional(rollbackFor = RuntimeException.class)
public int insertExamPaper(ExExamPaper examPaper) {
+ validatedData(examPaper);
checkUserAllowed(examPaper);
if(!checkNameUnique(examPaper)){
throw new ApiException("试卷名称已存在");
@@ -87,18 +106,27 @@
examPaper.setCode(sequenceUtils.getNextSequence(CodeTypeEnum.EXAM_PAPER.getCode()));
examPaper.setCreateBy(SecurityUtils.getUsername());
if(examPaper.getLimitTime()>0){
- examPaper.setLimit(1);
+ examPaper.setLimited(1);
}else{
- examPaper.setLimit(0);
+ examPaper.setLimited(0);
}
int row=baseMapper.insert(examPaper);
if(row<1){
throw new ApiException("新增试卷失败");
}
//分配试题
- assignSingleQuestion(examPaper);
- assignMultiQuestion(examPaper);
- assignJudgeQuestion(examPaper);
+ if(Optional.ofNullable(examPaper.getSingleNum()).orElse(0)>0) {
+ assignSingleQuestion(examPaper);
+ }
+ if(Optional.ofNullable(examPaper.getMultiNum()).orElse(0)>0) {
+ assignMultiQuestion(examPaper);
+ }
+ if(Optional.ofNullable(examPaper.getJudgeNum()).orElse(0)>0) {
+ assignJudgeQuestion(examPaper);
+ }
+ if(Optional.ofNullable(examPaper.getEasyNum()).orElse(0)>0) {
+ assignEasyQuestion(examPaper);
+ }
return row;
}
@@ -110,8 +138,37 @@
if(currentUser.getUserType().equals(UserTypeEnum.STUDENT.getCode())){
throw new ApiException("没有权限操作");
}
- if(!currentUser.getCompanyId().equals(examPaper.getCompanyId())){
+ if(examPaper.getCompanyId()!=null&&!currentUser.getCompanyId().equals(examPaper.getCompanyId())){
throw new ApiException("没有权限操作其他企业试卷");
+ }
+ }
+
+ public void validatedData(ExExamPaper examPaper){
+ if(Optional.ofNullable(examPaper.getSingleNum()).orElse(0)<=0
+ &&Optional.ofNullable(examPaper.getMultiNum()).orElse(0)<=0
+ &&Optional.ofNullable(examPaper.getJudgeNum()).orElse(0)<=0
+ &&Optional.ofNullable(examPaper.getEasyNum()).orElse(0)<=0){
+ throw new ApiException("试卷题目数量不能为空");
+ }
+ if(Optional.ofNullable(examPaper.getSingleNum()).orElse(0)>0){
+ if(Optional.ofNullable(examPaper.getSingleScore()).orElse(0)<=0 || examPaper.getSingleMethod()==null||examPaper.getSingleBankId()==null){
+ throw new ApiException("单选题参数错误");
+ }
+ }
+ if(Optional.ofNullable(examPaper.getMultiNum()).orElse(0)>0){
+ if(Optional.ofNullable(examPaper.getMultiScore()).orElse(0)<=0 || examPaper.getMultiMethod()==null||examPaper.getMultiBankId()==null){
+ throw new ApiException("多选题参数错误");
+ }
+ }
+ if(Optional.ofNullable(examPaper.getJudgeNum()).orElse(0)>0){
+ if(Optional.ofNullable(examPaper.getJudgeScore()).orElse(0)<=0 || examPaper.getJudgeMethod()==null||examPaper.getJudgeBankId()==null){
+ throw new ApiException("判断题参数错误");
+ }
+ }
+ if(Optional.ofNullable(examPaper.getEasyNum()).orElse(0)>0){
+ if(Optional.ofNullable(examPaper.getEasyScore()).orElse(0)<=0 || examPaper.getEasyMethod()==null||examPaper.getEasyBankId()==null){
+ throw new ApiException("简答题参数错误");
+ }
}
}
@@ -136,6 +193,13 @@
paperQuestionMapper.batchInsert(paperQuestionList);
}
+ //分配简答题
+ public void assignEasyQuestion(ExExamPaper examPaper){
+ List<ExPaperQuestion> paperQuestionList = getPaperQuestions(examPaper.getId(), examPaper.getEasyBankId(),
+ examPaper.getEasyMethod(),examPaper.getEasyNum(), examPaper.getEasyScore(),QuestionTypeEnum.EASY);
+ paperQuestionMapper.batchInsert(paperQuestionList);
+ }
+
private List<ExPaperQuestion> getPaperQuestions(Long paperId,Long bankId,Integer questionMethod,Integer questionCount,Integer questionScore, QuestionTypeEnum questionTypeEnum) {
SysUser currentUser=SecurityUtils.getLoginUser().getUser();
Integer totalQuestionCount=questionMapper.selectCountByBankId(currentUser.getCompanyId(), bankId, questionTypeEnum.getCode());
@@ -146,7 +210,7 @@
if(Objects.equals(questionMethod, QuestionAssignEnum.RANDOM.getCode())){//随机分配
questions=questionMapper.selectRandomQuestion(currentUser.getCompanyId(), bankId,questionTypeEnum.getCode(), questionCount);
}else{//顺序分配
- int totalPage=questionCount/questionMethod;//不能整除,忽略最后一页
+ int totalPage=totalQuestionCount/questionCount;//不能整除,忽略最后一页
Random random=new Random();
int startIndex=random.nextInt(totalPage)+1;
questions=questionMapper.selectQuestionWithLimit(currentUser.getCompanyId(), bankId,questionTypeEnum.getCode(),startIndex, questionCount);
@@ -164,6 +228,7 @@
@Override
public int updateExamPaper(ExExamPaper examPaper) {
+ validatedData(examPaper);
checkUserAllowed(examPaper);
if(!checkNameUnique(examPaper)){
throw new ApiException("试卷名称已存在");
@@ -174,9 +239,10 @@
}
examPaper.setCode(null);//编号不能修改
if(examPaper.getLimitTime()>0){
- examPaper.setLimit(1);
+ examPaper.setLimited(1);
}else{
- examPaper.setLimit(0);
+ examPaper.setLimited(0);
+ examPaper.setLimitTime(0);
}
int row=baseMapper.updateById(examPaper);
if(row<1){
@@ -194,6 +260,10 @@
if(examPaper.getJudgeRebuild()==1) {
deletePaperQuestion(examPaper.getId(),QuestionTypeEnum.JUDGE);
assignJudgeQuestion(examPaper);
+ }
+ if(examPaper.getEasyRebuild()==1) {
+ deletePaperQuestion(examPaper.getId(),QuestionTypeEnum.EASY);
+ assignEasyQuestion(examPaper);
}
return row;
}
@@ -229,8 +299,9 @@
@Override
public boolean checkNameUnique(ExExamPaper examPaper) {
+ SysUser currentUser=SecurityUtils.getLoginUser().getUser();
Long paperId=examPaper.getId()==null?-1L:examPaper.getId();
- ExExamPaper paper= baseMapper.checkNameUnique(examPaper.getName());
+ ExExamPaper paper= baseMapper.checkNameUnique(examPaper.getName(),currentUser.getCompanyId());
if(paper!=null&&paper.getId().longValue()!=paperId.longValue()){
return UserConstant.NOT_UNIQUE;
}
--
Gitblit v1.9.2