|
@@ -1,22 +1,26 @@
|
|
package com.qmth.cqb.paper.service;
|
|
package com.qmth.cqb.paper.service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Collection;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
|
|
|
|
+import com.qmth.cqb.paper.dao.PaperDetailUnitRepo;
|
|
|
|
+import com.qmth.cqb.paper.dao.QuesTypeNameRepo;
|
|
|
|
+import com.qmth.cqb.paper.dto.QuesNameDto;
|
|
|
|
+import com.qmth.cqb.paper.model.*;
|
|
|
|
+import com.qmth.cqb.utils.enums.PaperType;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
-import org.springframework.data.domain.Example;
|
|
|
|
-import org.springframework.data.domain.ExampleMatcher;
|
|
|
|
-import org.springframework.data.domain.Page;
|
|
|
|
-import org.springframework.data.domain.PageRequest;
|
|
|
|
|
|
+import org.springframework.data.domain.*;
|
|
|
|
+import org.springframework.data.mongodb.core.MongoTemplate;
|
|
|
|
+import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
|
+import org.springframework.data.mongodb.core.query.Query;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import com.qmth.cqb.paper.dao.PaperStructRepo;
|
|
import com.qmth.cqb.paper.dao.PaperStructRepo;
|
|
import com.qmth.cqb.paper.dto.PaperDetailUnitStructDto;
|
|
import com.qmth.cqb.paper.dto.PaperDetailUnitStructDto;
|
|
-import com.qmth.cqb.paper.model.PaperDetailStruct;
|
|
|
|
-import com.qmth.cqb.paper.model.PaperDetailUnitStruct;
|
|
|
|
-import com.qmth.cqb.paper.model.PaperStruct;
|
|
|
|
-import com.qmth.cqb.paper.model.PaperStructSearchInfo;
|
|
|
|
import com.qmth.cqb.utils.BeanCopierUtil;
|
|
import com.qmth.cqb.utils.BeanCopierUtil;
|
|
import com.qmth.cqb.utils.CommonUtils;
|
|
import com.qmth.cqb.utils.CommonUtils;
|
|
|
|
|
|
@@ -34,6 +38,12 @@ public class PaperStructService {
|
|
@Autowired
|
|
@Autowired
|
|
PaperStructRepo paperStructRepo;
|
|
PaperStructRepo paperStructRepo;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ QuesTypeNameRepo quesTypeNameRepo;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ MongoTemplate mongoTemplate;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 获取所有试卷结构(分页)
|
|
* 获取所有试卷结构(分页)
|
|
*
|
|
*
|
|
@@ -60,15 +70,15 @@ public class PaperStructService {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public List<PaperStruct> getPaperStructs(PaperStructSearchInfo searchInfo) {
|
|
public List<PaperStruct> getPaperStructs(PaperStructSearchInfo searchInfo) {
|
|
- formatSearchInfo(searchInfo);
|
|
|
|
- PaperStruct paperStruct = BeanCopierUtil.copyProperties(searchInfo, PaperStruct.class);
|
|
|
|
- formatPaperStruct(paperStruct);
|
|
|
|
- ExampleMatcher matcher = ExampleMatcher.matching()
|
|
|
|
- .withMatcher("name",contains())
|
|
|
|
- .withMatcher("creator",contains())
|
|
|
|
- .withMatcher("orgId",exact())
|
|
|
|
- .withIgnoreNullValues();
|
|
|
|
- return paperStructRepo.findAll(Example.of(paperStruct, matcher));
|
|
|
|
|
|
+ Query query = new Query();
|
|
|
|
+ if(StringUtils.isNotBlank(searchInfo.getCourseNo())){
|
|
|
|
+ query.addCriteria(Criteria.where("courseNo")
|
|
|
|
+ .in("",searchInfo.getCourseNo()));
|
|
|
|
+ }
|
|
|
|
+ query.addCriteria(Criteria.where("orgId").is(searchInfo.getOrgId()));
|
|
|
|
+ query.with(new Sort(new Sort.Order(Sort.Direction.DESC,"createTime")));
|
|
|
|
+ List<PaperStruct> paperList = this.mongoTemplate.find(query, PaperStruct.class);
|
|
|
|
+ return paperList;
|
|
}
|
|
}
|
|
|
|
|
|
public void formatSearchInfo(PaperStructSearchInfo searchInfo) {
|
|
public void formatSearchInfo(PaperStructSearchInfo searchInfo) {
|
|
@@ -118,6 +128,7 @@ public class PaperStructService {
|
|
unitStruct.setId(String.valueOf(number));
|
|
unitStruct.setId(String.valueOf(number));
|
|
unitStruct.setNumber(number);
|
|
unitStruct.setNumber(number);
|
|
unitStruct.setQuestionType(unitStructDto.getQuestionType());
|
|
unitStruct.setQuestionType(unitStructDto.getQuestionType());
|
|
|
|
+ unitStruct.setQuesNames(unitStructDto.getQuesNames());
|
|
unitStructs.add(unitStruct);
|
|
unitStructs.add(unitStruct);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -139,4 +150,28 @@ public class PaperStructService {
|
|
return paperStruct;
|
|
return paperStruct;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public List<QuesNameDto> getQuesNameList(String orgId,
|
|
|
|
+ String courseNo,
|
|
|
|
+ QuesStructType quesType) {
|
|
|
|
+ List<QuesNameDto> quesNameList = new ArrayList<>();
|
|
|
|
+ List<QuesTypeName> quesTypeNames = new ArrayList<>();
|
|
|
|
+ if (StringUtils.isEmpty(courseNo)) {
|
|
|
|
+ quesTypeNames = quesTypeNameRepo.findQuesName(orgId, quesType);
|
|
|
|
+ } else {
|
|
|
|
+ quesTypeNames = quesTypeNameRepo.findQuesName(orgId, courseNo, quesType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ quesNameList = quesTypeNames.stream()
|
|
|
|
+ .map(QuesTypeName::getQuesNames)
|
|
|
|
+ .flatMap(Collection::stream)
|
|
|
|
+ .distinct()
|
|
|
|
+ .map(this::getQuesName)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ return quesNameList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private QuesNameDto getQuesName(String name){
|
|
|
|
+ return new QuesNameDto(name,name);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|