فهرست منبع

fix:修复确认单解析时文件重命名导致的404问题

wangzaijun 6 روز پیش
والد
کامیت
94b9c36150

+ 10 - 1
mo-daq/src/main/java/com/smppw/modaq/common/conts/EmailTypeConst.java

@@ -1,5 +1,9 @@
 package com.smppw.modaq.common.conts;
 
+import cn.hutool.core.collection.ListUtil;
+
+import java.util.List;
+
 public class EmailTypeConst {
 
     /**
@@ -30,5 +34,10 @@ public class EmailTypeConst {
     /**
      * 管理人周报(区别于定期报告)
      */
-    public final static Integer REPORT_WEEKLy_TYPE = 6;
+    public final static Integer REPORT_WEEKLY_TYPE = 6;
+
+    /**
+     * 所有支持解析的类型
+     */
+    public final static List<Integer> SUPPORT_EMAIL_TYPES = ListUtil.of(REPORT_EMAIL_TYPE, REPORT_LETTER_EMAIL_TYPE, REPORT_OTHER_TYPE, REPORT_WEEKLY_TYPE);
 }

+ 9 - 7
mo-daq/src/main/java/com/smppw/modaq/domain/service/EmailParseService.java

@@ -161,6 +161,12 @@ public class EmailParseService {
             handleCompressedFiles(filepath, ".rar", emailType, resultList);
         }
 
+        // 文件中的类型判断
+        if (emailType == null || !EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(emailType)) {
+            emailType = EmailUtil.getEmailTypeBySubject(emailContentInfoDTO.getFileName(), this.getEmailType());
+            emailContentInfoDTO.setEmailType(emailType);
+        }
+
         return resultList;
     }
 
@@ -185,8 +191,7 @@ public class EmailParseService {
         }
         for (String dir : extractedDirs) {
             // 如果邮件类型不满足解析条件则重新根据文件名判断
-            if (!Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType)
-                    && !Objects.equals(EmailTypeConst.REPORT_LETTER_EMAIL_TYPE, emailType)) {
+            if (emailType == null || !EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(emailType)) {
                 emailType = EmailUtil.getEmailTypeBySubject(dir, this.getEmailType());
             }
             File file = new File(dir);
@@ -273,10 +278,7 @@ public class EmailParseService {
     private ParseResult<ReportData> parseReportAndHandleResult(int fileId, String fileName,
                                                                String filepath, Integer emailType, String aiFileId) {
         ParseResult<ReportData> result = new ParseResult<>();
-        boolean reportFlag = !Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType)
-                && !Objects.equals(EmailTypeConst.REPORT_LETTER_EMAIL_TYPE, emailType)
-                && !Objects.equals(EmailTypeConst.REPORT_WEEKLy_TYPE, emailType)
-                && !Objects.equals(EmailTypeConst.REPORT_OTHER_TYPE, emailType);
+        boolean reportFlag = emailType == null || !EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(emailType);
         if (reportFlag || StrUtil.isBlank(fileName) || fileName.endsWith(".html")) {
             result.setStatus(ReportParseStatus.NOT_A_REPORT.getCode());
             result.setMsg(StrUtil.format(ReportParseStatus.NOT_A_REPORT.getMsg(), fileName));
@@ -467,7 +469,7 @@ public class EmailParseService {
                 ListUtil.toList(ReportType.LETTER.getPatterns()));
         emailTypeMap.put(EmailTypeConst.REPORT_OTHER_TYPE,
                 ListUtil.toList(ReportType.OTHER.getPatterns()));
-        emailTypeMap.put(EmailTypeConst.REPORT_WEEKLy_TYPE,
+        emailTypeMap.put(EmailTypeConst.REPORT_WEEKLY_TYPE,
                 ListUtil.toList(ReportType.WEEKLY.getPatterns()));
         return emailTypeMap;
     }

+ 4 - 2
mo-daq/src/main/java/com/smppw/modaq/infrastructure/util/ExcelUtil.java

@@ -83,8 +83,10 @@ public class ExcelUtil {
                         continue;
                     }
                     String zipFilename = FileUtil.getName(destFilePath);
-                    if (zipFilename.contains("确认")) {
-                        name = "确认单_" + name;
+                    if (zipFilename.contains("确认") && !name.contains("确认")) {
+                        String ext = FileUtil.extName(name);
+                        name = StrUtil.subBefore(name, ".", true);
+                        name = name + "_确认单." + ext;
                     }
                     File entryFile = FileUtil.file(destFilePath, name);
                     try (FileOutputStream fos = new FileOutputStream(entryFile)) {