|
@@ -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) {
|