|
@@ -15,6 +15,7 @@ import cn.com.qmth.examcloud.tool.vo.Pager;
|
|
|
import cn.com.qmth.examcloud.tool.vo.user.User;
|
|
|
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.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -53,7 +54,7 @@ public class CreateRandomPaperTemplateTask {
|
|
|
|
|
|
private void execute(User user, JsonNode jsonParams, TaskEntity task) {
|
|
|
Long examId = jsonParams.get("examId").asLong(0L);
|
|
|
- Integer questionPool = jsonParams.get("questionPool").asInt(1);
|
|
|
+ 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("");
|
|
@@ -168,7 +169,7 @@ public class CreateRandomPaperTemplateTask {
|
|
|
/**
|
|
|
* 获取试卷列表
|
|
|
*/
|
|
|
- private List<String> getPapers(User user, String courseCode, Integer questionPool, String paperKeywords) {
|
|
|
+ private List<String> getPapers(User user, String courseCode, String questionPool, String paperKeywords) {
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
headers.put("key", user.getKey());
|
|
|
headers.put("token", user.getToken());
|
|
@@ -177,26 +178,49 @@ public class CreateRandomPaperTemplateTask {
|
|
|
params.put("courseNo", courseCode);
|
|
|
params.put("ids", "");
|
|
|
|
|
|
- String paperType = questionPool == 1 ? "importPaper" : "genPaper";
|
|
|
- String url = user.getServerUrl() + "/api/ecs_ques/" + paperType + "/huoge/1/10";
|
|
|
+ int pageNo = 0, pageSize = 100, total = 0;
|
|
|
|
|
|
- String json = HttpHelper.get(url, headers, params);
|
|
|
+ String url;
|
|
|
+ if ("IMPORT".equals(questionPool)) {
|
|
|
+ url = user.getServerUrl() + "/api/ecs_ques/importPaper/huoge/%s/" + pageSize;
|
|
|
+ } else {
|
|
|
+ url = user.getServerUrl() + "/api/ecs_ques/genPaper/huoge/%s/" + pageSize;
|
|
|
+ }
|
|
|
|
|
|
+ List<String> paperIds = new ArrayList<>();
|
|
|
JsonMapper jsonMapper = new JsonMapper();
|
|
|
- Pager<PaperVO> page = jsonMapper.parseJson(json, new TypeReference<Pager<PaperVO>>() {
|
|
|
+ String[] keywords = paperKeywords.split(",");
|
|
|
|
|
|
- });
|
|
|
+ while (true) {
|
|
|
+ pageNo++;
|
|
|
|
|
|
- String[] keywords = paperKeywords.split(",");
|
|
|
+ String json = HttpHelper.get(String.format(url, pageNo), headers, params);
|
|
|
+ Pager<PaperVO> page = jsonMapper.parseJson(json, new TypeReference<Pager<PaperVO>>() {
|
|
|
|
|
|
- List<String> paperIds = new ArrayList<>();
|
|
|
- for (PaperVO vo : page.getContent()) {
|
|
|
- log.info("courseCode:{} paperId:{} paperName:{}", courseCode, vo.getId(), vo.getName());
|
|
|
- for (String keyword : keywords) {
|
|
|
- if (vo.getName().contains(keyword)) {
|
|
|
+ });
|
|
|
+
|
|
|
+ if (page == null || CollectionUtils.isEmpty(page.getContent())) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ total += page.getContent().size();
|
|
|
+ float rate = total * 100f / page.getTotalElements();
|
|
|
+ log.info("courseCode:{} 已获取试卷数:{} 进度:{}%", courseCode, total, rate);
|
|
|
+
|
|
|
+ for (PaperVO vo : page.getContent()) {
|
|
|
+ boolean match = false;
|
|
|
+ for (String keyword : keywords) {
|
|
|
+ if (vo.getName().contains(keyword)) {
|
|
|
+ match = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (match) {
|
|
|
paperIds.add(vo.getId());
|
|
|
- break;
|
|
|
}
|
|
|
+ log.info("【{}】courseCode:{} paperId:{} paperName:{}", match ? "匹配" : "忽略", courseCode, vo.getId(),
|
|
|
+ vo.getName());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -207,24 +231,20 @@ public class CreateRandomPaperTemplateTask {
|
|
|
* 保存随机抽卷模板
|
|
|
*/
|
|
|
public void saveRandomPaperTemplate(User user, CourseVO course, String paperStructType, String paperStructId,
|
|
|
- Integer questionPool, List<String> paperIds) {
|
|
|
+ String paperType, List<String> paperIds) {
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
headers.put("key", user.getKey());
|
|
|
headers.put("token", user.getToken());
|
|
|
|
|
|
- String paperType = questionPool == 1 ? "IMPORT" : "GENERATE";
|
|
|
-
|
|
|
Map<String, String> params = new HashMap<>();
|
|
|
- params.put("name", course.getCourseName() + "抽卷模板");//todo
|
|
|
+ params.put("name", course.getCourseName() + "-模板");//todo
|
|
|
params.put("courseId", String.valueOf(course.getCourseId()));
|
|
|
params.put("paperStructType", paperStructType);
|
|
|
params.put("paperStructId", paperStructId);
|
|
|
params.put("paperType", paperType);
|
|
|
params.put("paperIds", StringUtils.join(paperIds, ","));
|
|
|
|
|
|
- String x = HttpHelper.toUrlParams(params);
|
|
|
-
|
|
|
- final String url = user.getServerUrl() + "/api/ecs_ques/randompaper/save?" + x;
|
|
|
+ final String url = user.getServerUrl() + "/api/ecs_ques/randompaper/save?" + HttpHelper.toUrlParams(params);
|
|
|
HttpHelper.post(url, headers, null);
|
|
|
}
|
|
|
|