|
@@ -6,7 +6,6 @@ import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
-import java.util.Collections;
|
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
@@ -584,28 +583,47 @@ public class PaperService {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 填充大题小题数量与分数
|
|
|
|
- *
|
|
|
|
|
|
+ *1.重新设置小题number,并返回试卷总分
|
|
|
|
+ *2.重新计算大题的总分和小题总数
|
|
|
|
+ *3.重新保存试卷大题数量、小题数量、试卷总分等信息
|
|
* @param paper
|
|
* @param paper
|
|
*/
|
|
*/
|
|
public void formatPaper(Paper paper, AccessUser user) {
|
|
public void formatPaper(Paper paper, AccessUser user) {
|
|
- List<PaperDetail> paperDetails = paperDetailRepo.findByPaperOrderByNumber(paper);
|
|
|
|
- // 计算试卷总分
|
|
|
|
- List<PaperDetailUnit> paperDetailUnitAll = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
|
|
- int allQuesCount = 0;
|
|
|
|
|
|
+ double paperTotalScore = reSetPaperDetailUnit(paper);
|
|
|
|
+ Map<String,Object> paperInfoMap = reSetPaperDetail(paper);
|
|
|
|
+ reSetPaper(paper,user,paperInfoMap,paperTotalScore);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 重新设置小题number,并返回试卷总分
|
|
|
|
+ * @param paper
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private double reSetPaperDetailUnit(Paper paper) {
|
|
|
|
+ List<PaperDetailUnit> paperDetailUnitAll = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
double totalScore = 0;
|
|
double totalScore = 0;
|
|
for (int i = 0;i<paperDetailUnitAll.size();i++) {
|
|
for (int i = 0;i<paperDetailUnitAll.size();i++) {
|
|
PaperDetailUnit unit = paperDetailUnitAll.get(i);
|
|
PaperDetailUnit unit = paperDetailUnitAll.get(i);
|
|
if (unit.getScore() != null) {
|
|
if (unit.getScore() != null) {
|
|
totalScore += unit.getScore();
|
|
totalScore += unit.getScore();
|
|
}
|
|
}
|
|
- //重新设置序号
|
|
|
|
unit.setNumber(i+1);
|
|
unit.setNumber(i+1);
|
|
}
|
|
}
|
|
- // 计算各大题总分
|
|
|
|
|
|
+ paperDetailUnitRepo.save(paperDetailUnitAll);
|
|
|
|
+ return totalScore;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 重新计算大题的总分和小题总数
|
|
|
|
+ * @param paper
|
|
|
|
+ */
|
|
|
|
+ private Map<String,Object> reSetPaperDetail(Paper paper) {
|
|
|
|
+ Map<String,Object> paperInfoMap = new HashMap<String,Object>();
|
|
|
|
+ int allQuesCount = 0;
|
|
|
|
+ List<PaperDetail> paperDetails = paperDetailRepo.findByPaperOrderByNumber(paper);
|
|
|
|
+ // 计算各大题总分和小题数量
|
|
for (PaperDetail paperDetail : paperDetails) {
|
|
for (PaperDetail paperDetail : paperDetails) {
|
|
List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetailOrderByNumber(paperDetail);
|
|
List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetailOrderByNumber(paperDetail);
|
|
- Collections.sort(paperDetailUnits);
|
|
|
|
if (paperDetailUnits.size() > 0) {
|
|
if (paperDetailUnits.size() > 0) {
|
|
int count = 0;
|
|
int count = 0;
|
|
double score = 0;
|
|
double score = 0;
|
|
@@ -614,8 +632,9 @@ public class PaperService {
|
|
if (unit.getScore() != null) {
|
|
if (unit.getScore() != null) {
|
|
score += unit.getScore();
|
|
score += unit.getScore();
|
|
}
|
|
}
|
|
- if (unit.getQuestion() != null && unit.getQuestion().getSubQuestions() != null
|
|
|
|
- && unit.getQuestion().getSubQuestions().size() > 0) {
|
|
|
|
|
|
+ if (unit.getQuestion() != null
|
|
|
|
+ && unit.getQuestion().getSubQuestions() != null
|
|
|
|
+ && unit.getQuestion().getSubQuestions().size() > 0) {
|
|
nestQusNum += unit.getQuestion().getSubQuestions().size() - 1;
|
|
nestQusNum += unit.getQuestion().getSubQuestions().size() - 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -627,17 +646,31 @@ public class PaperService {
|
|
paperDetail.setScore(0d);
|
|
paperDetail.setScore(0d);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- paper.setUnitCount(allQuesCount);
|
|
|
|
- paper.setPaperDetailCount(paperDetails.size());
|
|
|
|
- paper.setTotalScore(totalScore);
|
|
|
|
|
|
+ paperDetailRepo.save(paperDetails);
|
|
|
|
+ paperInfoMap.put("allQuesCount", allQuesCount);
|
|
|
|
+ paperInfoMap.put("paperDetails", paperDetails);
|
|
|
|
+ return paperInfoMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 重新设置试卷大题数量、小题数量、试卷总分等属性
|
|
|
|
+ * @param paper
|
|
|
|
+ * @param user
|
|
|
|
+ * @param paperInfoMap
|
|
|
|
+ * @param paperTotalScore
|
|
|
|
+ */
|
|
|
|
+ private void reSetPaper(Paper paper, AccessUser user,Map<String, Object> paperInfoMap,double paperTotalScore) {
|
|
|
|
+ List<PaperDetail> paperDetails = (List<PaperDetail>) paperInfoMap.get("paperDetails");
|
|
|
|
+ paper.setPaperDetailCount(paperDetails.size());//设置大题数量
|
|
|
|
+ paper.setUnitCount(Integer.parseInt(paperInfoMap.get("allQuesCount")+""));//设置小题数量
|
|
|
|
+ paper.setTotalScore(paperTotalScore);//设置试卷总分
|
|
if (user != null) {
|
|
if (user != null) {
|
|
paper.setLastModifyName(user.getName());
|
|
paper.setLastModifyName(user.getName());
|
|
}
|
|
}
|
|
- paperDetailRepo.save(paperDetails);
|
|
|
|
paperRepo.save(paper);
|
|
paperRepo.save(paper);
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
|
|
|
+ /**
|
|
* 先备份准备删掉的试题,然后再删掉
|
|
* 先备份准备删掉的试题,然后再删掉
|
|
*
|
|
*
|
|
* @param questionId
|
|
* @param questionId
|
|
@@ -684,21 +717,13 @@ public class PaperService {
|
|
quesService.updateQuesWord(question);
|
|
quesService.updateQuesWord(question);
|
|
question = quesRepo.save(question);
|
|
question = quesRepo.save(question);
|
|
Paper paper = paperRepo.findOne(paperId);
|
|
Paper paper = paperRepo.findOne(paperId);
|
|
- PaperDetail pd = paperDetailRepo.findOne(paperDetailId);
|
|
|
|
- PaperDetailUnit pdu = new PaperDetailUnit();
|
|
|
|
- List<PaperDetailUnit> pdus = paperDetailUnitRepo.findByPaperDetailOrderByNumber(pd);
|
|
|
|
- pdu.setPaper(paper);
|
|
|
|
- pdu.setQuestionType(question.getQuestionType());
|
|
|
|
- pdu.setQuestion(question);
|
|
|
|
- pdu.setCreateTime(CommonUtils.getCurDateTime());
|
|
|
|
- pdu.setPaperDetail(pd);
|
|
|
|
- pdus.add(pdu);
|
|
|
|
- pdu.setNumber(pdus.size());
|
|
|
|
- pdu.setScore(0d);
|
|
|
|
- paperDetailUnitRepo.save(pdu);
|
|
|
|
- formatPaper(paper, user);
|
|
|
|
|
|
+ PaperDetail paperDetail = paperDetailRepo.findOne(paperDetailId);
|
|
|
|
+ PaperDetailUnit paperDetailUnit = new PaperDetailUnit(paper,paperDetail,question);
|
|
|
|
+ long paperDetailUnitCount = paperDetailUnitRepo.countByPaperDetail(paperDetail);
|
|
|
|
+ paperDetailUnit.setNumber(Integer.parseInt(paperDetailUnitCount+""));
|
|
|
|
+ paperDetailUnitRepo.save(paperDetailUnit);
|
|
|
|
+ formatPaper(paper,user);
|
|
return paper;
|
|
return paper;
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -717,32 +742,13 @@ public class PaperService {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- public Page<Question> listQuestionforSelect(String paperId,
|
|
|
|
- int curPage,
|
|
|
|
- int pageSize,
|
|
|
|
- QuesStructType quesType,
|
|
|
|
- AccessUser accessUser) {
|
|
|
|
|
|
+ public Page<Question> listQuestionforSelect(String paperId,int curPage,int pageSize,QuesStructType quesType,AccessUser accessUser) {
|
|
Set<String> selectedIds = new HashSet<>();
|
|
Set<String> selectedIds = new HashSet<>();
|
|
Paper paper = paperRepo.findOne(paperId);
|
|
Paper paper = paperRepo.findOne(paperId);
|
|
- // QuestionSearchCondition ques = new QuestionSearchCondition();
|
|
|
|
- // if (quesType != null) {
|
|
|
|
- // ques.setQuestionType(quesType);
|
|
|
|
- // }
|
|
|
|
- // Map<String, String> quesParams = new HashMap<String, String>();
|
|
|
|
- // quesParams.put("courseName", paper.getCourseName());
|
|
|
|
- // ques.setQuesParams(quesParams);
|
|
|
|
List<PaperDetailUnit> pdus = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
List<PaperDetailUnit> pdus = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
for (PaperDetailUnit pdu : pdus) {
|
|
for (PaperDetailUnit pdu : pdus) {
|
|
selectedIds.add(pdu.getQuestion().getId());
|
|
selectedIds.add(pdu.getQuestion().getId());
|
|
}
|
|
}
|
|
- // Page<Question> allQuestions = quesService.findAll(ques, curPage,
|
|
|
|
- // pageSize);
|
|
|
|
- // Iterator<Question> que = allQuestions.iterator();
|
|
|
|
- // while (que.hasNext()) {
|
|
|
|
- // if (selectedIds.contains(que.next().getId())) {
|
|
|
|
- // que.remove();
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
return quesService.findByIdExclude(selectedIds, paper.getCourseNo(), quesType, curPage, pageSize,accessUser.getRootOrgId());
|
|
return quesService.findByIdExclude(selectedIds, paper.getCourseNo(), quesType, curPage, pageSize,accessUser.getRootOrgId());
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1073,8 +1079,13 @@ public class PaperService {
|
|
if(quesOption.getNumber().equals(CommonUtils.characterToNumber(numbers[2]).toString())){
|
|
if(quesOption.getNumber().equals(CommonUtils.characterToNumber(numbers[2]).toString())){
|
|
String optionBody = quesOption.getOptionBody();
|
|
String optionBody = quesOption.getOptionBody();
|
|
if(!optionBody.contains(fileName)){
|
|
if(!optionBody.contains(fileName)){
|
|
- String optionBodyNew = optionBody.substring(0, optionBody.lastIndexOf("</p>"))
|
|
|
|
- + "<a id=\""+fileName+"\" name=\""+fileName+"\"></a></p>";
|
|
|
|
|
|
+ String optionBodyNew = "";
|
|
|
|
+ if(StringUtils.isBlank(optionBody)){
|
|
|
|
+ optionBodyNew = "<p><a id=\""+fileName+"\" name=\""+fileName+"\"></a></p>";
|
|
|
|
+ }else{
|
|
|
|
+ optionBodyNew = optionBody.substring(0, optionBody.lastIndexOf("</p>"))
|
|
|
|
+ + "<a id=\""+fileName+"\" name=\""+fileName+"\"></a></p>";
|
|
|
|
+ }
|
|
quesOption.setOptionBody(optionBodyNew);
|
|
quesOption.setOptionBody(optionBodyNew);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1087,8 +1098,4 @@ public class PaperService {
|
|
quesRepo.save(question);
|
|
quesRepo.save(question);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- public void checkPaperAudio(String paperId){
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
}
|
|
}
|