|
|
@@ -42,9 +42,9 @@ public class PaperService {
|
|
|
private final LearnDirectedKnowledgeMapper learnDirectedKnowledgeMapper;
|
|
|
private final IBBusiWishUniversitiesService wishUniversitiesService;
|
|
|
private final BBusiWishUniversitiesMapper bBusiWishUniversitiesMapper;
|
|
|
+ private final LearnKnowledgeTreeMapper learnKnowledgeTreeMapper;
|
|
|
|
|
|
-
|
|
|
- PaperService(LearnPaperMapper paperMapper, LearnPaperQuestionMapper paperQuestionMapper, LearnQuestionsMapper questionsMapper, ILearnQuestionsService learnQuestionsService, LearnDirectedKnowledgeMapper learnDirectedKnowledgeMapper, IBBusiWishUniversitiesService wishUniversitiesService, BBusiWishUniversitiesMapper bBusiWishUniversitiesMapper) {
|
|
|
+ PaperService(LearnPaperMapper paperMapper, LearnPaperQuestionMapper paperQuestionMapper, LearnQuestionsMapper questionsMapper, ILearnQuestionsService learnQuestionsService, LearnDirectedKnowledgeMapper learnDirectedKnowledgeMapper, IBBusiWishUniversitiesService wishUniversitiesService, BBusiWishUniversitiesMapper bBusiWishUniversitiesMapper, LearnKnowledgeTreeMapper learnKnowledgeTreeMapper) {
|
|
|
this.paperMapper = paperMapper;
|
|
|
this.paperQuestionMapper = paperQuestionMapper;
|
|
|
this.questionsMapper = questionsMapper;
|
|
|
@@ -52,10 +52,12 @@ public class PaperService {
|
|
|
this.learnDirectedKnowledgeMapper = learnDirectedKnowledgeMapper;
|
|
|
this.wishUniversitiesService = wishUniversitiesService;
|
|
|
this.bBusiWishUniversitiesMapper = bBusiWishUniversitiesMapper;
|
|
|
+ this.learnKnowledgeTreeMapper = learnKnowledgeTreeMapper;
|
|
|
// buildAllPapers(0);
|
|
|
// buildSimulatedPaper(20154L, 1001L);
|
|
|
// buildSimulatedPaper(20950L, 1001L);
|
|
|
// test2();
|
|
|
+ // testCulture();
|
|
|
}
|
|
|
|
|
|
public void buildAllPapers(Integer seq) {
|
|
|
@@ -75,6 +77,49 @@ public class PaperService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testCulture() {
|
|
|
+ LearnPaper paper = new LearnPaper();
|
|
|
+
|
|
|
+// TestPaperVO.PaperDef2 paperDef = new TestPaperVO.PaperDef2("", "[{\"score\":40,\"knowledges\":[2001,2002,2003,2004,2005,2006,2007,2010,2013],\"types\":{\"judgment\":\"0\",\"single\":\"10/4\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}},{\"score\":20,\"knowledges\":[2012],\"types\":{\"judgment\":\"0\",\"single\":\"5/4\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}},{\"score\":40,\"knowledges\":[2011],\"types\":{\"judgment\":\"0\",\"single\":\"8/5\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}}]");
|
|
|
+// paperDef.setFillExclude(false);
|
|
|
+// paper.setSubjectId(1010L);
|
|
|
+// paper.setRelateId(1010L); // 定向ID
|
|
|
+// paper.setPaperName("语文");
|
|
|
+
|
|
|
+// TestPaperVO.PaperDef2 paperDef = new TestPaperVO.PaperDef2("", "[{\"score\":80,\"knowledges\":[1005,1006,1007,1008,1009,1010,1011,1013,1015,2044,2043],\"types\":{\"judgment\":\"10/2\",\"single\":\"15/4\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}},{\"score\":10,\"knowledges\":[2043],\"types\":{\"judgment\":\"0\",\"single\":\"1/10\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}},{\"score\":10,\"knowledges\":[2043],\"types\":{\"judgment\":\"0\",\"single\":\"1/10\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}}]");
|
|
|
+// paperDef.setFillExclude(false);
|
|
|
+// paper.setSubjectId(1011L);
|
|
|
+// paper.setRelateId(1011L);
|
|
|
+// paper.setPaperName("数学");
|
|
|
+
|
|
|
+ TestPaperVO.PaperDef2 paperDef = new TestPaperVO.PaperDef2("", "[{\"score\":60,\"knowledges\":[1022,1193,1023],\"types\":{\"judgment\":\"0\",\"single\":\"15/4\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}},{\"score\":20,\"knowledges\":[1022,1193,1023],\"types\":{\"judgment\":\"0\",\"single\":\"5/4\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}},{\"score\":20,\"knowledges\":[1022,1193,1023],\"types\":{\"judgment\":\"0\",\"single\":\"10/2\",\"multiple\":\"0\",\"subjective\":\"0\",\"fill\":\"0\",\"essay\":\"0\",\"short\":\"0\"}}]");
|
|
|
+ paperDef.setFillExclude(false);
|
|
|
+ paper.setSubjectId(1012L);
|
|
|
+ paper.setRelateId(1012L);
|
|
|
+ paper.setPaperName("英语");
|
|
|
+
|
|
|
+ paper.setPaperType(PaperType.Simulated.name());
|
|
|
+ paper.setYear(2025);
|
|
|
+ paper.setPaperSource(1);
|
|
|
+ paper.setDirectKey("");
|
|
|
+ paper.setStatus(PaperStatus.Valid.getVal());
|
|
|
+ paper.setNumber(paperDef.getTotal());
|
|
|
+ paper.setFenshu(paperDef.getScore().intValue());
|
|
|
+ AnswerSheet.PaperCond info = new AnswerSheet.PaperCond();
|
|
|
+ info.setScore(paper.getFenshu());
|
|
|
+ info.setTime(60 * 60);
|
|
|
+ info.setTypes(paperDef.getTypes().stream().map(t -> new AnswerSheet.PaperCondType(t.getType().getTitle(), t.getCount(), t.getScore())).collect(Collectors.toList()));
|
|
|
+ paper.setPaperInfo(JSONObject.toJSONString(info));
|
|
|
+ try {
|
|
|
+ Pair<LearnPaper, List<LearnPaperQuestion>> paperResult = buildPaper2(null, paper, paperDef);
|
|
|
+ savePaper(paperResult.getKey(), paperResult.getValue());
|
|
|
+ return;
|
|
|
+ } catch(Exception e) {
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
public void test2() {
|
|
|
TestPaperVO.PaperDef paperDef = new TestPaperVO.PaperDef();
|
|
|
paperDef.setFillExclude(true);
|
|
|
@@ -308,9 +353,14 @@ public class PaperService {
|
|
|
List<LearnPaperQuestion> pqList = Lists.newArrayList();
|
|
|
Set<Long> existQuestionIdSet = Sets.newHashSet();
|
|
|
for(TestPaperVO.KnowledgeTypeDef2 ktd : paperDef.getKnowTypes()) {
|
|
|
- Map<String, KnowTypeAssign> knowTypeAssignMap = buildKnowTypeAssignMap(studentId, ktd.getTypes().stream().map(t -> t.getType().getTitle()).collect(Collectors.toList()), ktd.getKnowledges(), paperDef.getFillExclude());
|
|
|
+ Set<Long> knownIdSet = Sets.newHashSet(ktd.getKnowledges());
|
|
|
+ for(LearnKnowledgeTree kt : learnKnowledgeTreeMapper.selectLearnKnowledgeTreeByParentIds(ktd.getKnowledges())) {
|
|
|
+ knownIdSet.remove(kt.getPid());
|
|
|
+ knownIdSet.add(kt.getId());
|
|
|
+ }
|
|
|
+ Map<String, KnowTypeAssign> knowTypeAssignMap = buildKnowTypeAssignMap(studentId, ktd.getTypes().stream().map(t -> t.getType().getTitle()).collect(Collectors.toList()), knownIdSet, paperDef.getFillExclude());
|
|
|
assignTypeFirst(paperDef.getFillExclude(), ktd, knowTypeAssignMap);
|
|
|
- pqList.addAll(getQuestions2(studentId, ktd.getCount(), ktd, knowTypeAssignMap, existQuestionIdSet));
|
|
|
+ pqList.addAll(getQuestions2(studentId, ktd.getCount(), knownIdSet, ktd.getTypes(), knowTypeAssignMap, existQuestionIdSet));
|
|
|
}
|
|
|
return pqList;
|
|
|
}
|
|
|
@@ -639,14 +689,14 @@ public class PaperService {
|
|
|
return pqList;
|
|
|
}
|
|
|
|
|
|
- public List<LearnPaperQuestion> getQuestions2(Long studentId, Integer total, TestPaperVO.KnowledgeTypeDef2 knowledgeTypeDef2, Map<String, KnowTypeAssign> knowTypeAssignMap, Set<Long> existQuestionIdSet) {
|
|
|
+ public List<LearnPaperQuestion> getQuestions2(Long studentId, Integer total, Collection<Long> knownIds, List<TestPaperVO.TypeDef2> types, Map<String, KnowTypeAssign> knowTypeAssignMap, Set<Long> existQuestionIdSet) {
|
|
|
// 知识点已经分配,准备题型分配
|
|
|
LearnQuestions qCond = new LearnQuestions();
|
|
|
Random random = new Random();
|
|
|
List<LearnPaperQuestion> pqList = Lists.newArrayList();
|
|
|
- for (TestPaperVO.TypeDef2 typeDef : knowledgeTypeDef2.getTypes()) {
|
|
|
+ for (TestPaperVO.TypeDef2 typeDef : types) {
|
|
|
String typeTitle = typeDef.getType().getTitle();
|
|
|
- for (Long knowId : knowledgeTypeDef2.getKnowledges()) {
|
|
|
+ for (Long knowId : knownIds) {
|
|
|
String key = knowId + "_" + typeTitle;
|
|
|
KnowTypeAssign ktc = knowTypeAssignMap.get(key);
|
|
|
if(null == ktc) {
|
|
|
@@ -702,7 +752,7 @@ public class PaperService {
|
|
|
* @param fillExclude
|
|
|
* @return
|
|
|
*/
|
|
|
- private Map<String, KnowTypeAssign> buildKnowTypeAssignMap(Long studentId, List<String> types, List<Long> knownIds, Boolean fillExclude) {
|
|
|
+ private Map<String, KnowTypeAssign> buildKnowTypeAssignMap(Long studentId, List<String> types, Collection<Long> knownIds, Boolean fillExclude) {
|
|
|
Map<String, KnowTypeAssign> knowTypeAssignMap = Maps.newHashMap();
|
|
|
Map cond = Maps.newHashMap();
|
|
|
cond.put("studentId", studentId);
|