|
@@ -1,19 +1,14 @@
|
|
package com.smppw.modaq.application.service;
|
|
package com.smppw.modaq.application.service;
|
|
|
|
|
|
-import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
import cn.hutool.core.collection.ListUtil;
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
-import com.smppw.modaq.application.util.EmailUtil;
|
|
|
|
-import com.smppw.modaq.common.conts.DateConst;
|
|
|
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
import com.smppw.modaq.common.enums.ReportParseStatus;
|
|
import com.smppw.modaq.common.enums.ReportParseStatus;
|
|
-import com.smppw.modaq.domain.dto.EmailContentInfoDTO;
|
|
|
|
import com.smppw.modaq.domain.dto.MailboxInfoDTO;
|
|
import com.smppw.modaq.domain.dto.MailboxInfoDTO;
|
|
import com.smppw.modaq.domain.dto.UploadReportParams;
|
|
import com.smppw.modaq.domain.dto.UploadReportParams;
|
|
import com.smppw.modaq.domain.dto.UploadReportResult;
|
|
import com.smppw.modaq.domain.dto.UploadReportResult;
|
|
-import com.smppw.modaq.domain.entity.EmailFileInfoDO;
|
|
|
|
-import com.smppw.modaq.domain.entity.EmailParseInfoDO;
|
|
|
|
|
|
+import com.smppw.modaq.domain.dto.UploadUrlReportParams;
|
|
import com.smppw.modaq.domain.entity.MailboxInfoDO;
|
|
import com.smppw.modaq.domain.entity.MailboxInfoDO;
|
|
import com.smppw.modaq.domain.mapper.MailboxInfoMapper;
|
|
import com.smppw.modaq.domain.mapper.MailboxInfoMapper;
|
|
import com.smppw.modaq.domain.service.EmailParseService;
|
|
import com.smppw.modaq.domain.service.EmailParseService;
|
|
@@ -22,7 +17,9 @@ import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
-import java.io.*;
|
|
|
|
|
|
+import java.io.File;
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.io.InputStream;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Path;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
@@ -101,6 +98,41 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ public List<UploadReportResult> uploadUrlReport(UploadUrlReportParams params) {
|
|
|
|
+ List<UploadReportParams.ReportInfo> reportInfos = ListUtil.list(false);
|
|
|
|
+ List<UploadUrlReportParams.UrlReportInfo> urlReportInfos = params.getReportInfos();
|
|
|
|
+ for (UploadUrlReportParams.UrlReportInfo urlReportInfo : urlReportInfos) {
|
|
|
|
+ String reportUrl = urlReportInfo.getReportUrl();
|
|
|
|
+ String filename;
|
|
|
|
+ if (StrUtil.isNotBlank(getFileExtension(urlReportInfo.getReportName()))) {
|
|
|
|
+ filename = reportUrl;
|
|
|
|
+ } else {
|
|
|
|
+ filename = urlReportInfo.getReportName() + "." + getFileExtension(reportUrl);
|
|
|
|
+ }
|
|
|
|
+ File saveFile = this.emailParseService.generateSavePath("upload", new Date(), filename);
|
|
|
|
+ if (!saveFile.exists()) {
|
|
|
|
+ if (!saveFile.getParentFile().exists()) {
|
|
|
|
+ saveFile.getParentFile().mkdirs();
|
|
|
|
+ }
|
|
|
|
+ HttpUtil.downloadFile(reportUrl, saveFile);
|
|
|
|
+ }
|
|
|
|
+ UploadReportParams.ReportInfo reportInfo = new UploadReportParams.ReportInfo(saveFile.getAbsolutePath());
|
|
|
|
+ reportInfo.setReportName(filename);
|
|
|
|
+ reportInfo.setReportType(urlReportInfo.getReportType());
|
|
|
|
+ reportInfo.setPdfPwd(urlReportInfo.getPdfPwd());
|
|
|
|
+ reportInfos.add(reportInfo);
|
|
|
|
+ }
|
|
|
|
+ UploadReportParams req = new UploadReportParams();
|
|
|
|
+ req.setReportInfos(reportInfos);
|
|
|
|
+ if (StrUtil.isBlank(params.getTitle())) {
|
|
|
|
+ req.setTitle("报告上传解析-url");
|
|
|
|
+ } else {
|
|
|
|
+ req.setTitle(params.getTitle());
|
|
|
|
+ }
|
|
|
|
+ return this.emailParseService.uploadReportResults(req);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
public List<UploadReportResult> batchUploadReport(MultipartFile[] files) {
|
|
public List<UploadReportResult> batchUploadReport(MultipartFile[] files) {
|
|
List<UploadReportResult> dataList = ListUtil.list(false);
|
|
List<UploadReportResult> dataList = ListUtil.list(false);
|
|
UploadReportParams params = new UploadReportParams();
|
|
UploadReportParams params = new UploadReportParams();
|
|
@@ -298,4 +330,15 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
|
|
// return null;
|
|
// return null;
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
+ private static String getFileExtension(String fileName) {
|
|
|
|
+ if (fileName == null || fileName.isEmpty()) {
|
|
|
|
+ return "";
|
|
|
|
+ }
|
|
|
|
+ int lastDotIndex = fileName.lastIndexOf('.');
|
|
|
|
+ // 后缀不存在的情况:无点、点在开头(隐藏文件无后缀)、点在末尾
|
|
|
|
+ if (lastDotIndex == -1 || lastDotIndex == 0 || lastDotIndex == fileName.length() - 1) {
|
|
|
|
+ return "";
|
|
|
|
+ }
|
|
|
|
+ return fileName.substring(lastDotIndex + 1);
|
|
|
|
+ }
|
|
}
|
|
}
|