Selaa lähdekoodia

fix cqdx import xml paper.

deason 6 vuotta sitten
vanhempi
commit
20008e6793

+ 25 - 9
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/CqdxService.java

@@ -11,6 +11,8 @@ import cn.com.qmth.examcloud.core.questions.service.impl.CourseService;
 import org.apache.commons.collections4.map.HashedMap;
 import org.apache.commons.lang3.StringUtils;
 import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.w3c.dom.Document;
@@ -29,6 +31,9 @@ import java.util.regex.Pattern;
 
 @Component
 public class CqdxService {
+    private static final Logger log = LoggerFactory.getLogger(CqdxService.class);
+    final Long rootOrgId = 1407L;
+    final String rootDir = "D:/paper";
 
     @Autowired
     CourseService courseService;
@@ -58,10 +63,11 @@ public class CqdxService {
         List<String> files = filePath();
         int i = 1;
         System.out.println("总文件个数:" + files.size());
-        for (String file : files) {
-            Map<Object, Object> paperInfoMap = readXml(file);
+        for (String filePath : files) {
+            System.out.println("第" + i + "个xml文件开始处理,文件名为:" + filePath);
+            Map<Object, Object> paperInfoMap = readXml(filePath);
             // 查询课程
-            Course course = courseService.getCourse(1407l, paperInfoMap.get("courseCode").toString());
+            Course course = courseService.getCourse(rootOrgId, paperInfoMap.get("courseCode").toString());
             // 初始化试卷
             Paper paper = initPaper(paperInfoMap, course);
             // 大题集合
@@ -81,6 +87,7 @@ public class CqdxService {
 				System.out.println("有问题的xml:"+file);
 				continue;
 			}*/
+
             // 保存试题资源
             quesPkgPathRepo.save(map2.values());
             for (Map.Entry<Question, QuestionPkgPath> entry : map2.entrySet()) {
@@ -90,7 +97,14 @@ public class CqdxService {
             paperRepo.save(paper);
             paperDetailRepo.save(paperDetails);
             paperDetailUnitRepo.save(paperDetailUnits);
-            System.out.println("第" + i + "个xml文件已经处理完,文件名为:" + file);
+
+            // 将正常文件移动到新目录
+            /*File okFile = new File(rootDir + "/" + filePath);
+            String newFilePath = rootDir + "/ok/" + okFile.getName();
+            File newFile = new File(newFilePath);
+            okFile.renameTo(newFile);*/
+
+            System.out.println("第" + i + "个xml文件已经处理完,文件名为:" + filePath);
             i++;
         }
         System.out.println("保存成功...");
@@ -134,7 +148,7 @@ public class CqdxService {
             paperDetail.setName(detailInfo.getName());
             paperDetail.setScore(Double.valueOf(detailInfo.getTotalScore()));
             paperDetail.setUnitCount(Integer.valueOf(detailInfo.getCount()));
-            paperDetail.setCreator("wei");
+            paperDetail.setCreator("feng");
             paperDetail.setCreateTime(CommonUtils.getCurDateTime());
             paperDetails.add(paperDetail);
         }
@@ -362,6 +376,7 @@ public class CqdxService {
                     question.setQuesBodyWord(DocxProcessUtil.html2Docx(wordMLPackage, CommonUtils.formatHtml(question.getQuesBody())));
                 } catch (Exception e) {
                     System.out.println("错误题干信息:" + question.getQuesBody());
+                    throw new IllegalArgumentException("题干信息错误!");
                 }
                 if (question.getQuestionType() == QuesStructType.BOOL_ANSWER_QUESTION) {
                     question.setQuesAnswer(quesTemp.getAnswer());
@@ -372,7 +387,7 @@ public class CqdxService {
                         question.setQuesAnswerWord(DocxProcessUtil.html2Docx(wordMLPackage, CommonUtils.formatHtml(question.getQuesAnswer())));
                     } catch (Exception e) {
                         System.out.println("错误题干信息:" + question.getQuesAnswer());
-                        return null;
+                        throw new IllegalArgumentException("题干信息错误!");
                     }
                 }
                 // 存在选项
@@ -483,7 +498,7 @@ public class CqdxService {
                 paperDetailUnit.setScore(question.getScore());
                 paperDetailUnit.setPaperDetail(detail);
                 paperDetailUnit.setQuestionType(question.getQuestionType());
-                paperDetailUnit.setCreator("wei");
+                paperDetailUnit.setCreator("feng");
                 paperDetailUnit.setCreateTime(CommonUtils.getCurDateTime());
                 paperDetailUnit.setQuestion(question);
                 paperDetailUnits.add(paperDetailUnit);
@@ -521,6 +536,7 @@ public class CqdxService {
                     String src = parseImageSrc.get(0).replace("{ResourcePath}",
                             "http://file.5any.com/UniversityV4.0");
                     String url = regexCH(src);
+                    log.info("img url:" + url);
                     String base64 = ImgDataUtils.loadImageToBase64(url);
                     if (base64 == null) {
                         throw new Exception("图片下载失败" + url);
@@ -562,12 +578,12 @@ public class CqdxService {
     // 获取所有xml的路径
     public List<String> filePath() {
         List<String> files = new ArrayList<String>();
-        File file = new File("D:\\paper");
+        File file = new File(rootDir);
         File[] fileList = file.listFiles();
         for (int i = 0; i < fileList.length; i++) {
             if (fileList[i].isFile()) {
                 String fileName = fileList[i].getName();
-                files.add("file:///D:\\paper\\" + fileName);
+                files.add(rootDir + "/" + fileName);
             }
         }
         return files;

+ 2 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/ImgDataUtils.java

@@ -121,7 +121,8 @@ public class ImgDataUtils {
             URL url = new URL(imgUrl);
             conn = (HttpURLConnection) url.openConnection();
             conn.setRequestMethod("GET");
-            conn.setConnectTimeout(10 * 1000);//超时响应时间为10秒
+            conn.setConnectTimeout(15 * 1000);//超时响应时间为15秒
+            conn.setReadTimeout(15 * 1000);//超时响应时间为15秒
             InputStream inStream = conn.getInputStream();
             return readInputStream(inStream);//得到图片的二进制数据
         } catch (Exception e) {

+ 0 - 11
examcloud-core-questions-starter/src/main/java/cn/com/qmth/examcloud/core/questions/starter/Application.java

@@ -49,7 +49,6 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 @EnableFeignClients(basePackages = {"cn.com.qmth.examcloud.core.questions.service.rpc"})
 @EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
 public class Application {
-
     private static final ExamCloudLog LOG = ExamCloudLogFactory.getLog(Application.class);
     @Autowired
     GridFSUtil gridFSUtil;
@@ -90,16 +89,6 @@ public class Application {
         } catch (Exception e) {
             e.printStackTrace();
         }*/
-
-
-        /** 重庆大学xml转paper对象入库*/
-        /*CqdxService cqdxService = SpringContextHolder.getBean(CqdxService.class);
-        try {
-            cqdxService.bulidPaper();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }*/
-
     }
 
     @Bean

+ 37 - 0
examcloud-core-questions-starter/src/main/java/cn/com/qmth/examcloud/core/questions/starter/IndexController.java

@@ -0,0 +1,37 @@
+/*
+ * *************************************************
+ * Copyright (c) 2019 QMTH. All Rights Reserved.
+ * Created by Deason on 2019-03-07 13:53:38.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.core.questions.starter;
+
+import cn.com.qmth.examcloud.commons.web.support.SpringContextHolder;
+import cn.com.qmth.examcloud.core.questions.service.temp.CqdxService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("${api_cqb}/")
+public class IndexController {
+    private static final Logger log = LoggerFactory.getLogger(IndexController.class);
+
+    @ResponseBody
+    @RequestMapping(value = "/paper/init", method = RequestMethod.GET)
+    public String init() {
+        /* 重庆大学xml转paper对象入库 */
+        CqdxService cqdxService = SpringContextHolder.getBean(CqdxService.class);
+        try {
+            cqdxService.bulidPaper();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return "ok";
+    }
+
+}

+ 1 - 0
examcloud-core-questions-starter/src/main/resources/security-exclusions.conf

@@ -14,6 +14,7 @@ regexp:.*webjars.*
 [][/doc.html][GET]
 [][/swagger-ui.html][GET]
 [][/docs.html][GET]
+[${api_cqb}/][/paper/init][GET]
 
 [${api_cqb}/][/paper/{paperId}][GET]
 [${api_cqb}/][/questionAudio/{questionAudioId}][GET]