|
@@ -15,6 +15,7 @@ import com.qmth.distributed.print.business.enums.ExamCardStatusEnum;
|
|
import com.qmth.distributed.print.business.mapper.ExamCardModelFourMapper;
|
|
import com.qmth.distributed.print.business.mapper.ExamCardModelFourMapper;
|
|
import com.qmth.distributed.print.business.service.BasicCardRuleService;
|
|
import com.qmth.distributed.print.business.service.BasicCardRuleService;
|
|
import com.qmth.distributed.print.business.service.ExamCardModelFourService;
|
|
import com.qmth.distributed.print.business.service.ExamCardModelFourService;
|
|
|
|
+import com.qmth.distributed.print.business.service.ExamCardService;
|
|
import com.qmth.distributed.print.business.util.CreatePdfUtil;
|
|
import com.qmth.distributed.print.business.util.CreatePdfUtil;
|
|
import com.qmth.distributed.print.business.util.HtmlToJpgUtil;
|
|
import com.qmth.distributed.print.business.util.HtmlToJpgUtil;
|
|
import com.qmth.distributed.print.business.util.PdfUtil;
|
|
import com.qmth.distributed.print.business.util.PdfUtil;
|
|
@@ -27,10 +28,7 @@ import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.PageSizeEnum;
|
|
import com.qmth.teachcloud.common.enums.PageSizeEnum;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
-import com.qmth.teachcloud.common.util.Base64Util;
|
|
|
|
-import com.qmth.teachcloud.common.util.FileUtil;
|
|
|
|
-import com.qmth.teachcloud.common.util.HtmlToPdfUtil;
|
|
|
|
-import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
|
|
|
+import com.qmth.teachcloud.common.util.*;
|
|
import com.qmth.teachcloud.mark.enums.LockType;
|
|
import com.qmth.teachcloud.mark.enums.LockType;
|
|
import org.apache.commons.codec.digest.DigestUtils;
|
|
import org.apache.commons.codec.digest.DigestUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
@@ -273,6 +271,9 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ ExamCardService examCardService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 导出题卡文件
|
|
* 导出题卡文件
|
|
*
|
|
*
|
|
@@ -280,13 +281,72 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public void downloadCard(Long id) {
|
|
public void downloadCard(Long id) {
|
|
|
|
+ Map<String, Object> map = this.createZipFile(id, true);
|
|
String rootPath = null;
|
|
String rootPath = null;
|
|
|
|
+ try {
|
|
|
|
+ if (!org.springframework.util.CollectionUtils.isEmpty(map)) {
|
|
|
|
+ rootPath = (String) map.get("rootPath");
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } finally {
|
|
|
|
+ if (Objects.nonNull(rootPath)) {
|
|
|
|
+ FileUtil.deleteDirectory(rootPath);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 批量导出题卡文件
|
|
|
|
+ *
|
|
|
|
+ * @param ids
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void batchDownloadCard(List<Long> ids) {
|
|
|
|
+ List<String> rootPathList = new ArrayList<>(ids.size());
|
|
|
|
+ List<File> zipFileList = new ArrayList<>(ids.size());
|
|
|
|
+ try {
|
|
|
|
+ for (Long l : ids) {
|
|
|
|
+ Map<String, Object> map = this.createZipFile(l, false);
|
|
|
|
+ if (!org.springframework.util.CollectionUtils.isEmpty(map)) {
|
|
|
|
+ rootPathList.add((String) map.get("rootPath"));
|
|
|
|
+ zipFileList.add(new File((String) map.get("zipFilePath")));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (CollectionUtils.isNotEmpty(zipFileList)) {
|
|
|
|
+ String zipFileRootPath = FileUtil.getFileTempDirPath(true);
|
|
|
|
+ String zipFileName = zipFileRootPath + File.separator + "批量下载" + SystemConstant.ZIP_PREFIX;
|
|
|
|
+ Zip4jUtil.zipFile(zipFileName, zipFileList);
|
|
|
|
+ File zipFile = new File(zipFileName);
|
|
|
|
+ rootPathList.add(zipFileRootPath);
|
|
|
|
+ FileUtil.outputFile(ServletUtil.getResponse(), zipFile, zipFile.getName());
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } finally {
|
|
|
|
+ if (CollectionUtils.isNotEmpty(rootPathList)) {
|
|
|
|
+ for (String s : rootPathList) {
|
|
|
|
+ FileUtil.deleteDirectory(s);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 创建zip
|
|
|
|
+ *
|
|
|
|
+ * @param id
|
|
|
|
+ * @param output
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ protected Map<String, Object> createZipFile(Long id, boolean output) {
|
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
try {
|
|
try {
|
|
ExamCardModelFour examCardModelFour = this.getById(id);
|
|
ExamCardModelFour examCardModelFour = this.getById(id);
|
|
// 去掉题卡名称中的空格,否则创建目录报错
|
|
// 去掉题卡名称中的空格,否则创建目录报错
|
|
String title = StringUtils.deleteWhitespace(examCardModelFour.getTitle());
|
|
String title = StringUtils.deleteWhitespace(examCardModelFour.getTitle());
|
|
// 本地保存目录
|
|
// 本地保存目录
|
|
- rootPath = FileUtil.getFileTempDirPath(true);
|
|
|
|
|
|
+ String rootPath = FileUtil.getFileTempDirPath(true);
|
|
// 下载文件保存路径(以题卡名称命名)
|
|
// 下载文件保存路径(以题卡名称命名)
|
|
String downloadFilePath = rootPath + File.separator + title;
|
|
String downloadFilePath = rootPath + File.separator + title;
|
|
File downloadPathFile = new File(downloadFilePath);
|
|
File downloadPathFile = new File(downloadFilePath);
|
|
@@ -320,7 +380,11 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
BasicAttachment attachment = basicAttachmentService.getById(jpgAttachmentId);
|
|
BasicAttachment attachment = basicAttachmentService.getById(jpgAttachmentId);
|
|
if (attachment != null) {
|
|
if (attachment != null) {
|
|
String fileName = downloadFilePath + File.separator + title + SystemConstant.HYPHEN + index + attachment.getType();
|
|
String fileName = downloadFilePath + File.separator + title + SystemConstant.HYPHEN + index + attachment.getType();
|
|
- fileUploadService.downloadFile(attachment.getPath(), fileName);
|
|
|
|
|
|
+ try {
|
|
|
|
+ fileUploadService.downloadFile(attachment.getPath(), fileName);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -335,25 +399,16 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
|
|
|
|
String zipFileName = title + SystemConstant.ZIP_PREFIX;
|
|
String zipFileName = title + SystemConstant.ZIP_PREFIX;
|
|
SysUser sysUser = sysUserService.getById(ServletUtil.getRequestUserId());
|
|
SysUser sysUser = sysUserService.getById(ServletUtil.getRequestUserId());
|
|
- FileUtil.downloadEncryptZip(ServletUtil.getResponse(), downloadPathFile, zipFileName, new String(Base64Util.decode(sysUser.getPassword())));
|
|
|
|
|
|
+ if (output) {
|
|
|
|
+ FileUtil.downloadEncryptZip(ServletUtil.getResponse(), downloadPathFile, zipFileName, new String(Base64Util.decode(sysUser.getPassword())));
|
|
|
|
+ } else {
|
|
|
|
+ FileUtil.downloadEncryptZip(downloadPathFile, zipFileName, new String(Base64Util.decode(sysUser.getPassword())));
|
|
|
|
+ }
|
|
|
|
+ map.put("rootPath", rootPath);
|
|
|
|
+ map.put("zipFilePath", rootPath + File.separator + zipFileName);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
- } finally {
|
|
|
|
- if (Objects.nonNull(rootPath)) {
|
|
|
|
- FileUtil.deleteDirectory(rootPath);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 批量导出题卡文件
|
|
|
|
- *
|
|
|
|
- * @param ids
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- public void batchDownloadCard(List<Long> ids) {
|
|
|
|
- for (Long l : ids) {
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
+ return map;
|
|
}
|
|
}
|
|
}
|
|
}
|