|
@@ -360,7 +360,7 @@ public class PaperService {
|
|
|
if (papers.get(0).getPaperType() == PaperType.IMPORT) {
|
|
|
List<Question> quesList = new ArrayList<Question>();
|
|
|
for (Paper paper : papers) {
|
|
|
- List<PaperDetailUnit> paperUnits = paperDetailUnitRepo.findByPaper(paper);
|
|
|
+ List<PaperDetailUnit> paperUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
|
for (PaperDetailUnit pdu : paperUnits) {
|
|
|
if (pdu.getQuestion() != null) {
|
|
|
quesList.add(pdu.getQuestion());
|
|
@@ -446,34 +446,34 @@ public class PaperService {
|
|
|
* @return
|
|
|
*/
|
|
|
public PaperExp getPaperDto(String id) {
|
|
|
-
|
|
|
- // 获取paper
|
|
|
Paper paper = paperRepo.findOne(id);
|
|
|
+ List<PaperDetailUnit> paperDetailUnitsByPaper = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
|
+ for(int i = 0;i<paperDetailUnitsByPaper.size();i++){
|
|
|
+ PaperDetailUnit unit = paperDetailUnitsByPaper.get(i);
|
|
|
+ unit.setNumber(i+1);
|
|
|
+ }
|
|
|
+ paperDetailUnitRepo.save(paperDetailUnitsByPaper);
|
|
|
// 创建paperDto
|
|
|
- PaperExp paperExp = BeanCopierUtil.copyProperties(paper, PaperExp.class);
|
|
|
+ PaperExp paperExp = BeanCopierUtil.copyProperties(paper,PaperExp.class);
|
|
|
paperExp.setCourse(paper.getCourse());
|
|
|
// 获取大题
|
|
|
List<PaperDetail> paperDetails = paperDetailRepo.findByPaperOrderByNumber(paper);
|
|
|
List<PaperDetailExp> paperDetailExps = BeanCopierUtil.copyPropertiesOfList(paperDetails, PaperDetailExp.class);
|
|
|
- paperExp.setPaperDetails(paperDetailExps);
|
|
|
-
|
|
|
// 封装小题
|
|
|
for (int i = 0; i < paperDetailExps.size(); i++) {
|
|
|
List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetailOrderByNumber(paperDetails.get(i));
|
|
|
if (paperDetailUnits != null && paperDetailUnits.size() > 0) {
|
|
|
- List<PaperDetailUnitExp> paperDetailUnitExps = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,
|
|
|
- PaperDetailUnitExp.class);
|
|
|
+ List<PaperDetailUnitExp> paperDetailUnitExps = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,PaperDetailUnitExp.class);
|
|
|
// 选择题,套题下选择题 选项顺序重新排列
|
|
|
reorderChoicequestionOption(paperDetailUnitExps);
|
|
|
paperDetailExps.get(i).setPaperDetailUnits(paperDetailUnitExps);
|
|
|
} else {
|
|
|
paperDetailExps.get(i).setUnitCount(0);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+ paperExp.setPaperDetails(paperDetailExps);
|
|
|
// 初始化试卷内容
|
|
|
initPaper(paperExp);
|
|
|
-
|
|
|
return paperExp;
|
|
|
}
|
|
|
|
|
@@ -533,14 +533,11 @@ public class PaperService {
|
|
|
return;
|
|
|
}
|
|
|
int mainNum = 0;
|
|
|
- int subNum = 0;
|
|
|
- Collections.sort(paperExp.getPaperDetails());
|
|
|
List<PaperDetailExp> paperDetailExpList = paperExp.getPaperDetails();
|
|
|
for (PaperDetailExp paperDetail : paperDetailExpList) {
|
|
|
// 大题序号
|
|
|
paperDetail.setNumber(++mainNum);
|
|
|
paperDetail.setCnNum(CommonUtils.toCHNum(paperDetail.getNumber()));
|
|
|
- // 小题序号
|
|
|
if (paperDetail != null && paperDetail.getPaperDetailUnits() != null
|
|
|
&& paperDetail.getPaperDetailUnits().size() > 0) {
|
|
|
for (PaperDetailUnitExp paperDetailUnit : paperDetail.getPaperDetailUnits()) {
|
|
@@ -549,21 +546,17 @@ public class PaperService {
|
|
|
List<Question> subQuesList = paperDetailUnit.getQuestion().getSubQuestions();
|
|
|
// 套题序号
|
|
|
if (subQuesList != null && subQuesList.size() > 0) {
|
|
|
- int index = subNum;
|
|
|
+ int index = 0;
|
|
|
for (Question subQues : subQuesList) {
|
|
|
Map<String, String> params = new HashMap<String, String>();
|
|
|
- params.put("number", String.valueOf(++subNum));
|
|
|
+ params.put("number", String.valueOf(++index));
|
|
|
subQues.setQuesParams(params);
|
|
|
quesService.formatQuesUnit(subQues);
|
|
|
}
|
|
|
String quesBodyHtml = relaceQuestionIdx(paperDetailUnit.getQuestion().getQuesBody(), index);
|
|
|
paperDetailUnit.getQuestion().setQuesBody(quesBodyHtml);
|
|
|
- } else {
|
|
|
- paperDetailUnit.setNumber(++subNum);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -597,14 +590,15 @@ public class PaperService {
|
|
|
public void formatPaper(Paper paper, AccessUser user) {
|
|
|
List<PaperDetail> paperDetails = paperDetailRepo.findByPaperOrderByNumber(paper);
|
|
|
// 计算试卷总分
|
|
|
- List<PaperDetailUnit> paperDetailUnitAll = paperDetailUnitRepo.findByPaper(paper);
|
|
|
+ List<PaperDetailUnit> paperDetailUnitAll = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
|
int allQuesCount = 0;
|
|
|
double totalScore = 0;
|
|
|
- for (PaperDetailUnit unit : paperDetailUnitAll) {
|
|
|
+ for (int i = 0;i<paperDetailUnitAll.size();i++) {
|
|
|
+ PaperDetailUnit unit = paperDetailUnitAll.get(i);
|
|
|
if (unit.getScore() != null) {
|
|
|
totalScore += unit.getScore();
|
|
|
}
|
|
|
-
|
|
|
+ unit.setNumber(i+1);
|
|
|
}
|
|
|
// 计算各大题总分
|
|
|
for (PaperDetail paperDetail : paperDetails) {
|
|
@@ -622,7 +616,6 @@ public class PaperService {
|
|
|
&& unit.getQuestion().getSubQuestions().size() > 0) {
|
|
|
nestQusNum += unit.getQuestion().getSubQuestions().size() - 1;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
count = paperDetailUnits.size() + nestQusNum;
|
|
|
paperDetail.setScore(score);
|
|
@@ -739,7 +732,7 @@ public class PaperService {
|
|
|
// Map<String, String> quesParams = new HashMap<String, String>();
|
|
|
// quesParams.put("courseName", paper.getCourseName());
|
|
|
// ques.setQuesParams(quesParams);
|
|
|
- List<PaperDetailUnit> pdus = paperDetailUnitRepo.findByPaper(paper);
|
|
|
+ List<PaperDetailUnit> pdus = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
|
for (PaperDetailUnit pdu : pdus) {
|
|
|
selectedIds.add(pdu.getQuestion().getId());
|
|
|
}
|
|
@@ -904,17 +897,24 @@ public class PaperService {
|
|
|
Map<String, String> messageMap = new HashMap<String, String>();
|
|
|
//判断文件名中格式是否正确
|
|
|
for(String fileName: filesName){
|
|
|
- String fileTpye[] = fileName.split("\\.");
|
|
|
- String fileType = fileTpye[fileTpye.length-1];
|
|
|
+ String[] fileNames = fileName.split("\\.");
|
|
|
+ String fileType = fileNames[fileNames.length-1];
|
|
|
if(radioType.indexOf(fileType)<0){
|
|
|
- messageMap.put("errorMsg", fileName+"文件格式不对");
|
|
|
+ messageMap.put("errorMsg", fileName+"文件格式不正确,当前支持格式:"+radioType);
|
|
|
+ return messageMap;
|
|
|
+ }
|
|
|
+ String pattern_01 = "\\d+_[1|2]_\\d{1,2}"; //题干正则
|
|
|
+ String pattern_02 = "\\d+_[1|2]_[A-Z|a-z]_\\d{1,2}"; //选项正则
|
|
|
+ if(!(Pattern.matches(pattern_01,fileNames[0])||
|
|
|
+ Pattern.matches(pattern_02,fileNames[0]))){
|
|
|
+ messageMap.put("errorMsg", fileName+"文件名格式不正确,请检查");
|
|
|
return messageMap;
|
|
|
}
|
|
|
}
|
|
|
//根据试卷id,查询该试卷
|
|
|
Paper paper = paperRepo.findOne(paperId);
|
|
|
//根据试卷查询所有的小题
|
|
|
- List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaper(paper);
|
|
|
+ List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
|
String names = "";
|
|
|
for(PaperDetailUnit paperDetailUnit:paperDetailUnits){
|
|
|
names = names + paperDetailUnit.getNumber().toString() + ",";
|
|
@@ -1006,7 +1006,7 @@ public class PaperService {
|
|
|
//根据试卷查询所有的小题,根据文件名匹配出当前小题ID
|
|
|
String questionId = "";
|
|
|
String numbers[] = file.getOriginalFilename().split("_");
|
|
|
- List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaper(paper);
|
|
|
+ List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
|
for(PaperDetailUnit paperDetailUnit:paperDetailUnits){
|
|
|
if(paperDetailUnit.getNumber().toString().equals(numbers[0])){
|
|
|
questionId = paperDetailUnit.getQuestion().getId();
|