|
@@ -22,6 +22,7 @@ import org.apache.commons.codec.digest.DigestUtils;
|
|
|
import org.apache.commons.io.IOUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
@@ -63,13 +64,13 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
|
|
|
*/
|
|
|
@Override
|
|
|
public IPage<TSyncExamStudentScoreResult> list(IPage<Map> iPage, Long semesterId, Long examId, Long clazzId, String courseCode) {
|
|
|
- if(semesterId == null){
|
|
|
+ if (semesterId == null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("请选择学期");
|
|
|
}
|
|
|
- if(examId == null){
|
|
|
+ if (examId == null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("请选择考试");
|
|
|
}
|
|
|
- if(StringUtils.isBlank(courseCode)){
|
|
|
+ if (StringUtils.isBlank(courseCode)) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("请选择课程");
|
|
|
}
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
@@ -171,7 +172,7 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
|
|
|
sheetObject.put(SystemConstant.PATH, dirJpgName.toString());
|
|
|
String jpgFileMd5 = DigestUtils.md5Hex(new FileInputStream(fileSource));
|
|
|
if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith(SystemConstant.START_PARENT))) {
|
|
|
- fileStoreUtil.ossUpload(dirJpgName.toString(), fileSource, DigestUtils.md5Hex(new FileInputStream(fileSource)), UploadFileEnum.FILE.getFssType());
|
|
|
+ fileStoreUtil.ossUpload(dirJpgName.toString(), fileSource, jpgFileMd5, UploadFileEnum.FILE.getFssType());
|
|
|
sheetObject.put(SystemConstant.TYPE, oss ? SystemConstant.OSS : SystemConstant.LOCAL);
|
|
|
} else {
|
|
|
fileStoreUtil.localUpload(dirJpgName.toString(), new FileInputStream(fileSource), jpgFileMd5, LocalCatalogEnum.LOCAL_FILE);
|
|
@@ -196,11 +197,18 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
|
|
|
String jpgTargetFileMd5 = DigestUtils.md5Hex(new FileInputStream(fileTarget));
|
|
|
jsonImageTrajectoryPathArray.add(dirTargetName);
|
|
|
if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith(SystemConstant.START_PARENT))) {
|
|
|
- fileStoreUtil.ossUpload(dirTargetName, fileTarget, DigestUtils.md5Hex(new FileInputStream(fileTarget)), UploadFileEnum.FILE.getFssType());
|
|
|
+ fileStoreUtil.ossUpload(dirTargetName, fileTarget, jpgTargetFileMd5, UploadFileEnum.FILE.getFssType());
|
|
|
+ trailUrlsList.add(fileStoreUtil.getPrivateUrl(dirTargetName, UploadFileEnum.FILE.getFssType()));
|
|
|
} else {
|
|
|
fileStoreUtil.localUpload(dirTargetName, new FileInputStream(fileTarget), jpgTargetFileMd5, LocalCatalogEnum.LOCAL_FILE);
|
|
|
+ String finalUrl = null;
|
|
|
+ if (dirTargetName.contains(dictionaryConfig.fssPrivateDomain().getServer())) {
|
|
|
+ finalUrl = dirTargetName.substring(dirTargetName.indexOf(dictionaryConfig.fssPrivateDomain().getServer()), dirTargetName.length());
|
|
|
+ } else if (dirTargetName.contains(dictionaryConfig.fssPublicDomain().getServer())) {
|
|
|
+ finalUrl = dirTargetName.substring(dirTargetName.indexOf(dictionaryConfig.fssPublicDomain().getServer()), dirTargetName.length());
|
|
|
+ }
|
|
|
+ trailUrlsList.add(finalUrl);
|
|
|
}
|
|
|
- trailUrlsList.add(dirTargetName);
|
|
|
}
|
|
|
if (!jsonImageSourcePathArray.isEmpty()) {
|
|
|
tSyncExamStudentScore.setLocalSheetUrls(jsonImageSourcePathArray.toJSONString());
|
|
@@ -219,7 +227,9 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
|
|
|
for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
String url = (String) jsonArray.get(i);
|
|
|
if (imageTrajectoryEnum == ImageTrajectoryEnum.DOWNLOAD) {
|
|
|
- fileTargetList.add(fileStoreUtil.ossDownload(url, stringJoiner.toString() + url, UploadFileEnum.FILE.getFssType()));
|
|
|
+ String sheetName = url.substring(url.lastIndexOf(SystemConstant.ORG_SPLIT) + 1);
|
|
|
+ File fileSource = SystemConstant.getFileTempDirVar(stringJoiner.toString() + sheetName, null);
|
|
|
+ fileTargetList.add(fileStoreUtil.ossDownload(url, fileSource, UploadFileEnum.FILE.getFssType()));
|
|
|
} else {
|
|
|
trailUrlsList.add(fileStoreUtil.getPrivateUrl(url, UploadFileEnum.convertToFssType((String) jsonObject.get(SystemConstant.UPLOAD_TYPE))));
|
|
|
}
|
|
@@ -230,27 +240,41 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
|
|
|
if (imageTrajectoryEnum == ImageTrajectoryEnum.DOWNLOAD) {
|
|
|
fileTargetList.add(new File(url));
|
|
|
} else {
|
|
|
- trailUrlsList.add(fileStoreUtil.getPrivateUrl(url, UploadFileEnum.FILE.getFssType()));
|
|
|
+ String finalUrl = null;
|
|
|
+ if (url.contains(dictionaryConfig.fssPrivateDomain().getServer())) {
|
|
|
+ finalUrl = url.substring(url.indexOf(dictionaryConfig.fssPrivateDomain().getServer()), url.length());
|
|
|
+ } else if (url.contains(dictionaryConfig.fssPublicDomain().getServer())) {
|
|
|
+ finalUrl = url.substring(url.indexOf(dictionaryConfig.fssPublicDomain().getServer()), url.length());
|
|
|
+ }
|
|
|
+ trailUrlsList.add(finalUrl);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
tSyncExamStudentScore.setTrailUrls(trailUrlsList);
|
|
|
- if (!fileTargetList.isEmpty()) {
|
|
|
+ if (!CollectionUtils.isEmpty(fileTargetList)) {
|
|
|
tSyncExamStudentScore.setTrajectoryFileList(fileTargetList);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error(SystemConstant.LOG_ERROR, e);
|
|
|
tSyncExamStudentScore.setErrorInfo();
|
|
|
- if (Objects.nonNull(fileTargetList)) {
|
|
|
- for (File f : fileTargetList) {
|
|
|
- f.delete();
|
|
|
- }
|
|
|
- }
|
|
|
} finally {
|
|
|
- if (oss && Objects.nonNull(fileSourceList)) {
|
|
|
- for (File f : fileSourceList) {
|
|
|
- f.delete();
|
|
|
+ if (oss && imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
|
|
|
+ if (!CollectionUtils.isEmpty(fileSourceList)) {
|
|
|
+ for (File f : fileSourceList) {
|
|
|
+ f.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(fileTargetList)) {
|
|
|
+ for (File f : fileTargetList) {
|
|
|
+ f.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (oss && !CollectionUtils.isEmpty(fileSourceList)) {
|
|
|
+ for (File f : fileSourceList) {
|
|
|
+ f.delete();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -267,24 +291,18 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
|
|
|
public void createZipFile(TSyncExamStudentScore tSyncExamStudentScore) throws IOException {
|
|
|
File zipFile = null;
|
|
|
OutputStream outputStream = null;
|
|
|
+ List<File> fileList = null;
|
|
|
+ boolean oss = dictionaryConfig.sysDomain().isOss();
|
|
|
try {
|
|
|
if (Objects.nonNull(tSyncExamStudentScore.getTrajectoryFileList())) {
|
|
|
- StringJoiner dirZipName = SystemConstant.getDirName(UploadFileEnum.FILE, true);
|
|
|
- dirZipName.add(SystemConstant.getNanoId()).add(SystemConstant.ZIP_PREFIX);
|
|
|
- zipFile = SystemConstant.getFileTempDirVar(dirZipName.toString(), null);
|
|
|
+ zipFile = SystemConstant.getFileTempDirVar(SystemConstant.ZIP_PREFIX);
|
|
|
|
|
|
- List<File> fileList = tSyncExamStudentScore.getTrajectoryFileList();
|
|
|
+ fileList = tSyncExamStudentScore.getTrajectoryFileList();
|
|
|
if (fileList.isEmpty()) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("没有可下载文件");
|
|
|
}
|
|
|
|
|
|
- FileUtil.doZip(zipFile, fileList);
|
|
|
-
|
|
|
- if (Objects.nonNull(dictionaryConfig.sysDomain()) && dictionaryConfig.sysDomain().isOss()) {
|
|
|
- for (File file : fileList) {
|
|
|
- file.delete();
|
|
|
- }
|
|
|
- }
|
|
|
+ Zip4jUtil.zipEncryptFile(zipFile.getPath(), fileList, SystemConstant.ZIP_ENCRYPT_PWD);
|
|
|
|
|
|
HttpServletResponse response = ServletUtil.getResponse();
|
|
|
response.reset();
|
|
@@ -305,6 +323,11 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
|
|
|
if (Objects.nonNull(zipFile)) {
|
|
|
zipFile.delete();
|
|
|
}
|
|
|
+ if (oss && !CollectionUtils.isEmpty(fileList)) {
|
|
|
+ for (File file : fileList) {
|
|
|
+ file.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|