瀏覽代碼

fix:修复上传文件时解析错误问题

wangzaijun 1 周之前
父節點
當前提交
788de329a9

+ 15 - 8
mo-daq/src/main/java/com/smppw/modaq/application/service/EmailParseApiServiceImpl.java

@@ -107,17 +107,24 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
         for (MultipartFile file : files) {
             String filename = file.getOriginalFilename();
             File saveFile = this.emailParseService.generateSavePath("upload", new Date(), filename);
-            String filepath = saveFile.getPath();
-            try (InputStream is = file.getInputStream()) {
-                Files.copy(is, saveFile.toPath());
-            } catch (IOException e) {
-                log.warn("文件{} 上传失败:{}", filename, ExceptionUtil.stacktraceToString(e));
-                dataList.add(new ParseResult<>(ReportParseStatus.FILE_UPLOAD_FAIL, null));
+            if (!saveFile.exists()) {
+                if (!saveFile.getParentFile().exists()) {
+                    saveFile.getParentFile().mkdirs();
+                }
+                try (InputStream is = file.getInputStream()) {
+                    Files.copy(is, saveFile.toPath());
+                } catch (IOException e) {
+                    log.warn("文件{} 上传失败:{}", filename, ExceptionUtil.stacktraceToString(e));
+                    dataList.add(new ParseResult<>(ReportParseStatus.FILE_UPLOAD_FAIL, null));
+                }
             }
-            params.getReportInfos().add(new UploadReportParams.ReportInfo(filepath));
+            params.getReportInfos().add(new UploadReportParams.ReportInfo(saveFile.getAbsolutePath()));
         }
+        params.setTitle("确认单上传解析");
         List<ParseResult<ReportData>> tempList = this.emailParseService.uploadReportResults(params);
-        dataList.addAll(tempList);
+        if (CollUtil.isNotEmpty(tempList)) {
+            dataList.addAll(tempList);
+        }
         return dataList;
     }
 

+ 8 - 0
mo-daq/src/main/java/com/smppw/modaq/domain/service/EmailParseService.java

@@ -342,6 +342,14 @@ public class EmailParseService {
                 dtos.add(new EmailZipFileDTO(params.getTitle(), reportPath, e.getReportType()));
             }
         }
+        // 重新判断类型
+        for (EmailZipFileDTO emailFile : dtos) {
+            if (EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(emailFile.getEmailType())) {
+                continue;
+            }
+            Integer type = EmailUtil.getEmailTypeBySubject(params.getTitle() + emailFile.getFilename());
+            emailFile.setEmailType(type);
+        }
         EmailInfoDTO emailInfo = new EmailInfoDTO(params.getTitle(), dtos);
         // 附件文件检查
         Long totalSize = this.checkEmailFileInfo(emailInfo);