lideyin 5 lat temu
rodzic
commit
ac5d22249d

+ 34 - 5
src/main/java/cn/com/qmth/examcloud/bridge/modules/cloudmarking/controller/CloudMarkingClientController.java

@@ -4,10 +4,7 @@ import cn.com.qmth.examcloud.bridge.modules.cloudmarking.bean.Block;
 import cn.com.qmth.examcloud.bridge.modules.cloudmarking.bean.Section;
 import cn.com.qmth.examcloud.bridge.modules.cloudmarking.bean.Sections;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
-import cn.com.qmth.examcloud.commons.util.HttpClientUtil;
-import cn.com.qmth.examcloud.commons.util.IOUtil;
-import cn.com.qmth.examcloud.commons.util.JsonUtil;
-import cn.com.qmth.examcloud.commons.util.RegExpUtil;
+import cn.com.qmth.examcloud.commons.util.*;
 import cn.com.qmth.examcloud.core.oe.admin.api.ExamRecordCloudService;
 import cn.com.qmth.examcloud.core.oe.admin.api.ExamRecordQuestionsCloudService;
 import cn.com.qmth.examcloud.core.oe.admin.api.OeExamStudentCloudService;
@@ -21,6 +18,7 @@ import cn.com.qmth.examcloud.core.oe.admin.api.response.GetToBeMarkExamStudentRe
 import cn.com.qmth.examcloud.web.config.SystemProperties;
 import com.google.common.collect.Maps;
 import com.mysql.cj.util.StringUtils;
+import org.apache.commons.io.FileUtils;
 import org.apache.http.HttpStatus;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
@@ -29,12 +27,14 @@ import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.File;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.*;
@@ -97,7 +97,36 @@ public class CloudMarkingClientController {
             saveDataToLocal(getExamRecordResp,examId);
         }
 
-        return ResponseEntity.ok().body("数据生成完毕.");
+        //最终文件的生成目录
+        final String tempAnswerDir = systemConfig.getTempDataDir() + "/exam-" + examId;
+        String zipPath = tempAnswerDir + "-" + System.currentTimeMillis() + ".zip";
+        File zipFile = new File(zipPath);
+        ZipUtil.zip(new File(tempAnswerDir), zipFile);
+
+        byte[] bytes = IOUtil.toByteArray(zipFile);
+
+        String downLoadFileName = "exam-" + examId + ".zip";
+        ResponseEntity<byte[]> responseEntity = ResponseEntity.ok().
+                header("Content-Disposition", "attachment; filename=" + downLoadFileName).
+                contentType(MediaType.APPLICATION_OCTET_STREAM).body(bytes);
+
+        clearTempAnswerFile(tempAnswerDir);
+        return responseEntity;
+
+
+//        return ResponseEntity.ok().body("数据生成完毕.");
+    }
+
+    /**
+     * 清空临时目录中的文件
+     *
+     * @param tempAnswerDir
+     */
+    private void clearTempAnswerFile(String tempAnswerDir) {
+        File t1 = new File(tempAnswerDir);
+        for (File f : t1.listFiles()) {
+            FileUtils.deleteQuietly(f);
+        }
     }
 
     private void saveDataToLocal(GetToBeMarkExamRecordResp resp, Long examId) {