|
@@ -18,15 +18,14 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.commons.lang3.time.DateUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Component
|
|
|
public class CreateRandomPaperTemplateTask {
|
|
@@ -57,11 +56,20 @@ public class CreateRandomPaperTemplateTask {
|
|
|
Long examId = jsonParams.get("examId").asLong(0L);
|
|
|
String questionPool = jsonParams.get("questionPool").asInt(1) == 1 ? "IMPORT" : "GENERATE";
|
|
|
String structType = jsonParams.get("structType").asInt(1) == 1 ? "EXACT" : "BLUEPRINT";
|
|
|
- String structName = jsonParams.get("structName").asText("");
|
|
|
- String paperKeywords = jsonParams.get("paperKeywords").asText("");
|
|
|
+ String structName = jsonParams.get("structName").asText("").trim();
|
|
|
+ String paperKeywords = jsonParams.get("paperKeywords").asText("").trim();
|
|
|
+ String paperStartTime = jsonParams.get("paperStartTime").asText("").trim();
|
|
|
+ Date startTime = null;
|
|
|
+ try {
|
|
|
+ if (StringUtils.isNotEmpty(paperStartTime)) {
|
|
|
+ startTime = DateUtils.parseDate(paperStartTime, "yyyy-MM-dd HH:mm:ss");
|
|
|
+ }
|
|
|
+ } catch (ParseException e) {
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
|
|
|
- log.info("examId:{} questionPool:{} structType:{} structName:{} paperKeywords:{}", examId, questionPool,
|
|
|
- structType, structName, paperKeywords);
|
|
|
+ log.info("examId:{} questionPool:{} structType:{} structName:{} paperKeywords:{} paperStartTime:{}", examId,
|
|
|
+ questionPool, structType, structName, paperKeywords, paperStartTime);
|
|
|
|
|
|
List<CourseVO> courses = commonService.getExamCourseList(user, examId);
|
|
|
log.info("待处理课程总数为:{} examId:{}", courses.size(), examId);
|
|
@@ -94,7 +102,8 @@ public class CreateRandomPaperTemplateTask {
|
|
|
}
|
|
|
|
|
|
// 获取试卷列表
|
|
|
- List<String> paperIds = this.getPapers(user, course.getCourseCode(), questionPool, paperKeywords);
|
|
|
+ List<String> paperIds = this.getPapers(user, course.getCourseCode(), questionPool, paperKeywords,
|
|
|
+ startTime);
|
|
|
if (paperIds.isEmpty()) {
|
|
|
String msg = String.format("【%s】 课程代码:%s 未找到相关试卷!", index, course.getCourseCode());
|
|
|
messages.add(msg);
|
|
@@ -170,7 +179,8 @@ public class CreateRandomPaperTemplateTask {
|
|
|
/**
|
|
|
* 获取试卷列表
|
|
|
*/
|
|
|
- private List<String> getPapers(User user, String courseCode, String questionPool, String paperKeywords) {
|
|
|
+ private List<String> getPapers(User user, String courseCode, String questionPool, String paperKeywords,
|
|
|
+ Date paperStartTime) {
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
headers.put("key", user.getKey());
|
|
|
headers.put("token", user.getToken());
|
|
@@ -209,19 +219,23 @@ public class CreateRandomPaperTemplateTask {
|
|
|
log.info("courseCode:{} 已获取试卷数:{} 进度:{}%", courseCode, total, rate);
|
|
|
|
|
|
for (PaperVO vo : page.getContent()) {
|
|
|
- boolean match = false;
|
|
|
+ boolean nameMatch = false, timeMatch = true;
|
|
|
for (String keyword : keywords) {
|
|
|
if (vo.getName().contains(keyword)) {
|
|
|
- match = true;
|
|
|
+ nameMatch = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (match) {
|
|
|
+ if (paperStartTime != null && vo.getCreateTime() != null) {
|
|
|
+ timeMatch = vo.getCreateTime().after(paperStartTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (nameMatch && timeMatch) {
|
|
|
paperIds.add(vo.getId());
|
|
|
}
|
|
|
- log.info("【{}】courseCode:{} paperId:{} paperName:{}", match ? "匹配" : "忽略", courseCode, vo.getId(),
|
|
|
- vo.getName());
|
|
|
+ log.info("【名称匹配:{} 时间匹配:{}】 courseCode:{} paperId:{} paperName:{}", nameMatch, timeMatch,
|
|
|
+ courseCode, vo.getId(), vo.getName());
|
|
|
}
|
|
|
}
|
|
|
|