瀏覽代碼

试卷结构上传-同步优化

xiaof 3 年之前
父節點
當前提交
91104ceb7d

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -177,7 +177,7 @@ public class DataSyncServiceImpl implements DataSyncService {
             AtomicInteger atomicInteger = new AtomicInteger(0);
             // 同步试卷
             List<JSONObject> paperAnswerJsons = JSONObject.parseArray(paperAnswer, JSONObject.class);
-            for (JSONObject paperAnswerJson : paperAnswerJsons) {
+            /*for (JSONObject paperAnswerJson : paperAnswerJsons) {
                 if (!paperAnswerJson.containsKey("paperType") || !paperAnswerJson.containsKey("paper")) {
                     throw ExceptionResultEnum.ERROR.exception("没有找到试卷文件");
                 }
@@ -233,7 +233,7 @@ public class DataSyncServiceImpl implements DataSyncService {
             if (atomicInteger.intValue() - paperAnswerJsons.size() == 0) {
                 status = ExamPaperStructureStatusEnum.ANSWER_FINISH;
                 examPaperStructure.setPaperAnswer(JSONObject.toJSONString(paperAnswerJsons));
-            }
+            }*/
 
             // 同步客观题
             atomicInteger.set(0);

+ 8 - 10
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/StmmsUtils.java

@@ -62,7 +62,7 @@ public class StmmsUtils {
         validUrl(hostUrl, examSaveUrl);
         String postUrl = hostUrl.concat(examSaveUrl);
         //参数
-        Map<String, String> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
         map.put("code", validParam(code, null, true, "唯一标识"));
         map.put("name", validParam(name, null, true, "考试名称"));
         map.put("examTime", validParam(examTime, null, true, "考试时间"));
@@ -104,7 +104,7 @@ public class StmmsUtils {
         String postUrl = hostUrl.concat(studentSaveUrl);
         try {
             //参数
-            Map<String, String> map = new HashMap<>();
+            Map<String, Object> map = new HashMap<>();
             map.put("examId", validParam(examId, null, true, "考试ID"));
             map.put("examNumber", validParam(examNumber, null, true, "准考证号"));
             map.put("studentCode", validParam(studentCode, null, true, "学号"));
@@ -152,7 +152,7 @@ public class StmmsUtils {
                 files.put(file.getName(), file.getPath());
             }
             //表单数据
-            Map<String, String> formText = new HashMap<>();
+            Map<String, Object> formText = new HashMap<>();
             formText.put("examId", validParam(examId, null, true, "考试ID"));
             formText.put("subjectCode", validParam(subjectCode, null, true, "科目代码"));
             String fileName = file.getName();
@@ -212,14 +212,12 @@ public class StmmsUtils {
             map.put("subjectCode", validParam(subjectCode, null, true, "科目代码")); // 取试卷编号
             map.put("objective", validParam(objective, true, true, "是否客观题"));
             map.put("paperType", validParam(paperType, "", false, "试卷类型"));
-            map.put("questions", validParam(objective, questions));
+            SyncStructureData[] syncStructureData = questions.toArray(new SyncStructureData[questions.size()]);
+            map.put("questions", validParam(objective, syncStructureData));
 
             String jsonData = JSONObject.toJSONString(map);
 
             String result = HttpKit.sendPost(postUrl, jsonData, getHeaders(schoolId, structureUrl));
-            if (StringUtils.isBlank(result)) {
-                return false;
-            }
             JSONObject jsonObject = JSONObject.parseObject(result);
             if (jsonObject.containsKey("updateTime")) {
                 return true;
@@ -376,7 +374,7 @@ public class StmmsUtils {
      * @param objective 是否客观题
      * @param questions 试卷结构JSON
      */
-    private Object validParam(Boolean objective, List<SyncStructureData> questions) {
+    private Object validParam(Boolean objective, SyncStructureData[] questions) {
         for (SyncStructureData question : questions) {
             validParam(String.valueOf(question.getMainNumber()), null, true, "大题号");
             validParam(question.getSubNumber(), null, true, "小题号");
@@ -415,7 +413,7 @@ public class StmmsUtils {
      * @return
      */
     public int getStudentCount(Long schoolId, Integer examId, String examCode, String examNumber, String studentCode, String subjectCode, String college, String className, String teacher) {
-        Map<String, String> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
         map.put("examId", validParam(String.valueOf(examId), null, true, "考试ID"));
         map.put("examCode", validParam(examCode, null, false, "考试编码"));
         map.put("examNumber", validParam(examNumber, null, false, "准考证号"));
@@ -463,7 +461,7 @@ public class StmmsUtils {
      * @return
      */
     public List<Map> getStudentScore(Long schoolId, Integer examId, String examCode, String examNumber, String studentCode, String subjectCode, String college, String className, String teacher, int pageNo, int pageSize) {
-        Map<String, String> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
         map.put("examId", validParam(String.valueOf(examId), null, true, "考试ID"));
         map.put("examCode", validParam(examCode, null, false, "考试编码"));
         map.put("examNumber", validParam(examNumber, null, false, "准考证号"));

+ 8 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/HttpKit.java

@@ -107,11 +107,12 @@ public class HttpKit {
             conn.setDoInput(true);
             // POST方法
             conn.setRequestMethod("POST");
+            conn.setUseCaches(false);
+            conn.setInstanceFollowRedirects(true);
             // 设置通用的请求属性
-//            conn.setRequestProperty("accept", "*/*");
+//            conn.setRequestProperty("accept", "application/json, text/plain, */*");
 //            conn.setRequestProperty("connection", "Keep-Alive");
-//            conn.setRequestProperty("user-agent",
-//                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+//            conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.9 Safari/537.36");
             conn.setRequestProperty("Content-Type", "application/json");
             if (requestHeader != null && requestHeader.size() > 0) {
                 for (Map.Entry<String, String> entry : requestHeader.entrySet()) {
@@ -123,8 +124,7 @@ public class HttpKit {
             out = new DataOutputStream(conn.getOutputStream());
             // 发送请求参数
             if (StringUtils.isNotBlank(jsonData)) {
-                String json = java.net.URLEncoder.encode(jsonData, "utf-8");
-                out.writeBytes(json);
+                out.writeChars(jsonData);
             }
             // flush输出流的缓冲
             out.flush();
@@ -165,7 +165,7 @@ public class HttpKit {
      * @param responseEncoding 响应编码
      * @return 页面响应html
      */
-    public static String sendPost(String requestUrl, Map<String, String> requestHeader, Map<String, String> formTexts, Map<String, String> files, String requestEncoding, String responseEncoding) {
+    public static String sendPost(String requestUrl, Map<String, String> requestHeader, Map<String, Object> formTexts, Map<String, String> files, String requestEncoding, String responseEncoding) {
         OutputStream out = null;
         BufferedReader reader = null;
         String result = "";
@@ -196,7 +196,7 @@ public class HttpKit {
                 out = new DataOutputStream(connection.getOutputStream());
                 if (formTexts != null && formTexts.size() > 0) {
                     String formData = "";
-                    for (Map.Entry<String, String> entry : formTexts.entrySet()) {
+                    for (Map.Entry<String, Object> entry : formTexts.entrySet()) {
                         formData += entry.getKey() + "=" + entry.getValue() + "&";
                     }
                     formData = formData.substring(0, formData.length() - 1);
@@ -208,7 +208,7 @@ public class HttpKit {
                 out = new DataOutputStream(connection.getOutputStream());
                 if (formTexts != null && formTexts.size() > 0) {
                     StringBuilder sbFormData = new StringBuilder();
-                    for (Map.Entry<String, String> entry : formTexts.entrySet()) {
+                    for (Map.Entry<String, Object> entry : formTexts.entrySet()) {
                         sbFormData.append("--" + boundary + "\r\n");
                         sbFormData.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"\r\n\r\n");
                         sbFormData.append(entry.getValue() + "\r\n");