deason 1 năm trước cách đây
mục cha
commit
c98c86e96c

+ 29 - 15
src/main/java/cn/com/qmth/examcloud/tool/service/create_random_paper_template/CreateRandomPaperTemplateTask.java

@@ -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());
             }
         }
 

+ 1 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/create_random_paper_template/vo/PaperVO.java

@@ -16,6 +16,6 @@ public class PaperVO implements Serializable {
 
     private String name;
 
-    private Date updateDate;
+    private Date createTime;
 
 }

+ 7 - 1
src/main/resources/templates/admin/createRandomPaperTemplate.ftlh

@@ -15,7 +15,7 @@
                 <el-col :span="8" :offset="8">
                     <h3 style="text-align: center">创建随机抽卷模板</h3>
 
-                    <el-form label-position="right" label-width="120px" :model="curForm" ref="curForm" :rules="rules">
+                    <el-form label-position="right" label-width="130px" :model="curForm" ref="curForm" :rules="rules">
                         <el-form-item label="考试ID" prop="examId">
                             <el-input v-model="curForm.examId"></el-input>
                         </el-form-item>
@@ -42,6 +42,11 @@
                             <el-input v-model="curForm.paperKeywords" placeholder="多个值逗号分隔"></el-input>
                         </el-form-item>
 
+                        <el-form-item label="试卷创建时间起点" prop="paperStartTime">
+                            <el-input v-model="curForm.paperStartTime"
+                                      placeholder="格式:2023-12-01 00:00:00"></el-input>
+                        </el-form-item>
+
                         <el-form-item>
                             <el-button type="primary" @click="doSubmit" round>确 认</el-button>
                         </el-form-item>
@@ -62,6 +67,7 @@
                 structName: "",
                 questionPool: "1",
                 paperKeywords: "",
+                paperStartTime: "",
             },
             rules: {
                 examId: [

+ 1 - 0
src/test/java/cn/com/qmth/examcloud/tool/ToolTest.java

@@ -53,6 +53,7 @@ public class ToolTest {
         params.put("structType", 1);
         params.put("structName", "精确结构2023");
         params.put("paperKeywords", "_2,_3");
+        params.put("paperStartTime", "2023-12-01 00:00:00");
 
         TaskEntity task = new TaskEntity();
         task.setUserToken(user.getToken());