Переглянути джерело

fix:上传接口返回结构调整

wangzaijun 1 тиждень тому
батько
коміт
d2d5d5249c

+ 13 - 11
mo-daq/src/main/java/com/smppw/modaq/application/api/ParseApi.java

@@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil;
 import com.smppw.modaq.application.service.EmailParseApiService;
 import com.smppw.modaq.domain.dto.UploadReportParams;
 import com.smppw.modaq.domain.dto.UploadReportResult;
+import com.smppw.modaq.domain.dto.report.ParseResult;
+import com.smppw.modaq.domain.dto.report.ReportData;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -39,16 +41,16 @@ public class ParseApi {
         return ResponseEntity.ok("success");
     }
 
-    /**
-     * 批量解析(文件路径)
-     *
-     * @param params 参数
-     * @return 解析结果
-     */
-    @PostMapping("upload-parse")
-    public ResponseEntity<List<UploadReportResult>> uploadReport(@RequestBody UploadReportParams params) {
-        return ResponseEntity.ok(this.service.uploadReport(params));
-    }
+//    /**
+//     * 批量解析(文件路径)
+//     *
+//     * @param params 参数
+//     * @return 解析结果
+//     */
+//    @PostMapping("upload-parse")
+//    public ResponseEntity<List<UploadReportResult>> uploadReport(@RequestBody UploadReportParams params) {
+//        return ResponseEntity.ok(this.service.uploadReport(params));
+//    }
 
     /**
      * 批量上传文件流并解析
@@ -57,7 +59,7 @@ public class ParseApi {
      * @return /
      */
     @PostMapping("upload-file-parse")
-    public ResponseEntity<List<UploadReportResult>> batchUploadReport(@RequestParam("files") MultipartFile[] files) {
+    public ResponseEntity<List<ParseResult<ReportData>>> batchUploadReport(@RequestParam("files") MultipartFile[] files) {
         return ResponseEntity.ok(this.service.batchUploadReport(files));
     }
 }

+ 10 - 10
mo-daq/src/main/java/com/smppw/modaq/application/service/EmailParseApiService.java

@@ -1,8 +1,8 @@
 package com.smppw.modaq.application.service;
 
 import com.smppw.modaq.domain.dto.MailboxInfoDTO;
-import com.smppw.modaq.domain.dto.UploadReportParams;
-import com.smppw.modaq.domain.dto.UploadReportResult;
+import com.smppw.modaq.domain.dto.report.ParseResult;
+import com.smppw.modaq.domain.dto.report.ReportData;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Date;
@@ -28,13 +28,13 @@ public interface EmailParseApiService {
      */
     void parseEmail(MailboxInfoDTO mailboxInfoDTO, Date startDate, Date endDate, List<String> folderNames, List<Integer> emailTypes);
 
-    /**
-     * 批量文件解析(文件路径)
-     *
-     * @param params 上传参数
-     * @return /
-     */
-    List<UploadReportResult> uploadReport(UploadReportParams params);
+//    /**
+//     * 批量文件解析(文件路径)
+//     *
+//     * @param params 上传参数
+//     * @return /
+//     */
+//    List<UploadReportResult> uploadReport(UploadReportParams params);
 
     /**
      * 批量上传文件解析
@@ -42,7 +42,7 @@ public interface EmailParseApiService {
      * @param files 文件流对象
      * @return /
      */
-    List<UploadReportResult> batchUploadReport(MultipartFile[] files);
+    List<ParseResult<ReportData>> batchUploadReport(MultipartFile[] files);
 
 //    /**
 //     * 重新解析指定邮件

+ 10 - 9
mo-daq/src/main/java/com/smppw/modaq/application/service/EmailParseApiServiceImpl.java

@@ -11,7 +11,8 @@ 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.UploadReportParams;
-import com.smppw.modaq.domain.dto.UploadReportResult;
+import com.smppw.modaq.domain.dto.report.ParseResult;
+import com.smppw.modaq.domain.dto.report.ReportData;
 import com.smppw.modaq.domain.entity.EmailFileInfoDO;
 import com.smppw.modaq.domain.entity.EmailParseInfoDO;
 import com.smppw.modaq.domain.entity.MailboxInfoDO;
@@ -94,14 +95,14 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
         emailParseService.parseEmail(mailboxInfoDTO, startDate, endDate, folderNames, emailTypes);
     }
 
-    @Override
-    public List<UploadReportResult> uploadReport(UploadReportParams params) {
-        return this.emailParseService.uploadReportResults(params);
-    }
+//    @Override
+//    public List<UploadReportResult> uploadReport(UploadReportParams params) {
+//        return this.emailParseService.uploadReportResults(params);
+//    }
 
     @Override
-    public List<UploadReportResult> batchUploadReport(MultipartFile[] files) {
-        List<UploadReportResult> dataList = ListUtil.list(false);
+    public List<ParseResult<ReportData>> batchUploadReport(MultipartFile[] files) {
+        List<ParseResult<ReportData>> dataList = ListUtil.list(false);
         UploadReportParams params = new UploadReportParams();
         for (MultipartFile file : files) {
             String filename = file.getOriginalFilename();
@@ -111,11 +112,11 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
                 Files.copy(is, saveFile.toPath());
             } catch (IOException e) {
                 log.warn("文件{} 上传失败:{}", filename, ExceptionUtil.stacktraceToString(e));
-                dataList.add(new UploadReportResult(filepath, ReportParseStatus.FILE_UPLOAD_FAIL));
+                dataList.add(new ParseResult<>(ReportParseStatus.FILE_UPLOAD_FAIL, null));
             }
             params.getReportInfos().add(new UploadReportParams.ReportInfo(filepath));
         }
-        List<UploadReportResult> tempList = this.emailParseService.uploadReportResults(params);
+        List<ParseResult<ReportData>> tempList = this.emailParseService.uploadReportResults(params);
         dataList.addAll(tempList);
         return dataList;
     }

+ 32 - 39
mo-daq/src/main/java/com/smppw/modaq/common/conts/EmailTypeConst.java

@@ -11,53 +11,46 @@ public class EmailTypeConst {
      */
     public final static Integer NAV_EMAIL_TYPE = 1;
 
-    /**
-     * 估值表邮件类型
-     */
-    public final static Integer VALUATION_EMAIL_TYPE = 2;
-
-    /**
-     * 定期报告邮件类型
-     */
-    public final static Integer REPORT_EMAIL_TYPE = 3;
+//    /**
+//     * 估值表邮件类型
+//     */
+//    public final static Integer VALUATION_EMAIL_TYPE = 2;
+//
+//    /**
+//     * 定期报告邮件类型
+//     */
+//    public final static Integer REPORT_EMAIL_TYPE = 3;
 
     /**
      * 确认函
      */
     public final static Integer REPORT_LETTER_EMAIL_TYPE = 4;
 
-    /**
-     * 除定期报告和确认函的其他类型的报告
-     */
-    public final static Integer REPORT_OTHER_TYPE = 5;
-
-    /**
-     * 管理人周报(区别于定期报告)
-     */
-    public final static Integer REPORT_WEEKLY_TYPE = 6;
+//    /**
+//     * 除定期报告和确认函的其他类型的报告
+//     */
+//    public final static Integer REPORT_OTHER_TYPE = 5;
+//
+//    /**
+//     * 管理人周报(区别于定期报告)
+//     */
+//    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);
-
-    /**
-     * 所有非其他公告的报告
-     */
-    public final static List<Integer> SUPPORT_NO_OTHER_TYPES = ListUtil.of(
-            REPORT_EMAIL_TYPE,
-            REPORT_LETTER_EMAIL_TYPE,
-            REPORT_WEEKLY_TYPE);
-
-    /**
-     * 所有除确认单的报告
-     */
-    public final static List<Integer> REPORT_EMAIL_TYPES = ListUtil.of(
-            REPORT_EMAIL_TYPE,
-            REPORT_OTHER_TYPE,
-            REPORT_WEEKLY_TYPE);
+    public final static List<Integer> SUPPORT_EMAIL_TYPES = ListUtil.of(REPORT_LETTER_EMAIL_TYPE);
+
+//    /**
+//     * 所有非其他公告的报告
+//     */
+//    public final static List<Integer> SUPPORT_NO_OTHER_TYPES = ListUtil.of(REPORT_LETTER_EMAIL_TYPE);
+//
+//    /**
+//     * 所有除确认单的报告
+//     */
+//    public final static List<Integer> REPORT_EMAIL_TYPES = ListUtil.of(
+//            REPORT_EMAIL_TYPE,
+//            REPORT_OTHER_TYPE,
+//            REPORT_WEEKLY_TYPE);
 }

+ 18 - 29
mo-daq/src/main/java/com/smppw/modaq/domain/service/EmailParseService.java

@@ -168,21 +168,10 @@ public class EmailParseService {
             }
             // 重新判断类型
             for (EmailZipFileDTO emailFile : emailFileList) {
-                if (EmailTypeConst.SUPPORT_NO_OTHER_TYPES.contains(emailFile.getEmailType())) {
+                if (EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(emailFile.getEmailType())) {
                     continue;
                 }
                 Integer type = EmailUtil.getEmailTypeBySubject(emailTitle + emailFile.getFilename());
-                // 特殊月报
-                if ((Objects.equals(EmailTypeConst.NAV_EMAIL_TYPE, type)
-                        || Objects.equals(EmailTypeConst.REPORT_OTHER_TYPE, type))
-                        && (ReportParseUtils.containsAny(emailTitle, ReportParseUtils.MANAGER_KEYWORDS)
-                        || emailTitle.contains("定期报告"))) {
-                    type = EmailTypeConst.REPORT_EMAIL_TYPE;
-                }
-                // 其他报告
-                if (Objects.equals(EmailTypeConst.NAV_EMAIL_TYPE, type)) {
-                    type = EmailTypeConst.REPORT_OTHER_TYPE;
-                }
                 emailFile.setEmailType(type);
             }
 
@@ -225,7 +214,7 @@ public class EmailParseService {
         }
 
         // 文件中的类型判断
-        if (emailType == null || !EmailTypeConst.SUPPORT_NO_OTHER_TYPES.contains(emailType)) {
+        if (emailType == null || !EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(emailType)) {
             emailType = EmailUtil.getEmailTypeBySubject(emailContentInfoDTO.getFileName());
             emailContentInfoDTO.setEmailType(emailType);
         }
@@ -334,7 +323,7 @@ public class EmailParseService {
      * @param params 上传文件路径
      * @return /
      */
-    public List<UploadReportResult> uploadReportResults(UploadReportParams params) {
+    public List<ParseResult<ReportData>> uploadReportResults(UploadReportParams params) {
         List<ParseResult<ReportData>> dataList = ListUtil.list(false);
         List<UploadReportParams.ReportInfo> reportInfos = params.getReportInfos();
         List<EmailZipFileDTO> dtos = ListUtil.list(false);
@@ -360,12 +349,12 @@ public class EmailParseService {
             return null;
         }
         this.parseResults(-1, null, null, totalSize, emailInfo, dataList);
-        List<UploadReportResult> resultList = ListUtil.list(false);
-        for (ParseResult<ReportData> result : dataList) {
-            ReportData data = result.getData();
-            resultList.add(new UploadReportResult(data.getReportPath(), result.getStatus(), result.getMsg()));
-        }
-        return resultList;
+//        List<UploadReportResult> resultList = ListUtil.list(false);
+//        for (ParseResult<ReportData> result : dataList) {
+//            ReportData data = result.getData();
+//            resultList.add(new UploadReportResult(data.getReportPath(), result.getStatus(), result.getMsg()));
+//        }
+        return dataList;
     }
 
     /**
@@ -410,15 +399,15 @@ public class EmailParseService {
             if (Objects.equals(type, EmailTypeConst.REPORT_LETTER_EMAIL_TYPE)) {
                 // 确认单
                 count = this.emailFileInfoMapper.getLetterFilenameSuccessCount(emailTitle, filename);
-            } else if (Objects.equals(type, EmailTypeConst.REPORT_EMAIL_TYPE)) {
-                // 定期报告
-                count = this.emailFileInfoMapper.getAmacFilenameSuccessCount(emailTitle, filename, totalSize);
-            } else if (Objects.equals(type, EmailTypeConst.REPORT_WEEKLY_TYPE)) {
-                // 管理人周报
-                count = this.emailFileInfoMapper.getWeeklyFilenameSuccessCount(emailTitle, filename, totalSize);
-            } else if (Objects.equals(type, EmailTypeConst.REPORT_OTHER_TYPE)) {
-                // 其他报告
-                count = this.emailFileInfoMapper.getOtherFilenameSuccessCount(emailTitle, filename, totalSize);
+//            } else if (Objects.equals(type, EmailTypeConst.REPORT_EMAIL_TYPE)) {
+//                // 定期报告
+//                count = this.emailFileInfoMapper.getAmacFilenameSuccessCount(emailTitle, filename, totalSize);
+//            } else if (Objects.equals(type, EmailTypeConst.REPORT_WEEKLY_TYPE)) {
+//                // 管理人周报
+//                count = this.emailFileInfoMapper.getWeeklyFilenameSuccessCount(emailTitle, filename, totalSize);
+//            } else if (Objects.equals(type, EmailTypeConst.REPORT_OTHER_TYPE)) {
+//                // 其他报告
+//                count = this.emailFileInfoMapper.getOtherFilenameSuccessCount(emailTitle, filename, totalSize);
             }
             if (count > 0) {
                 iterator.remove();

+ 15 - 15
mo-daq/src/test/java/com/smppw/modaq/MoDaqApplicationTests.java

@@ -39,21 +39,21 @@ public class MoDaqApplicationTests {
         }
     }
 
-    @Test
-    public void reportTest() {
-        MailboxInfoDTO emailInfoDTO = this.buildMailbox("**@simuwang.com", "**");
-        Date startDate = DateUtil.parse("2025-06-18 08:47:00", DateConst.YYYY_MM_DD_HH_MM_SS);
-        Date endDate = DateUtil.parse("2025-06-18 13:57:00", DateConst.YYYY_MM_DD_HH_MM_SS);
-        try {
-            List<String> folderNames = ListUtil.list(false);
-//            folderNames.add("其他文件夹/报告公告");
-            folderNames.add("INBOX");
-            emailParseService.parseEmail(emailInfoDTO, startDate, endDate,
-                    folderNames, EmailTypeConst.REPORT_EMAIL_TYPES);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
+//    @Test
+//    public void reportTest() {
+//        MailboxInfoDTO emailInfoDTO = this.buildMailbox("**@simuwang.com", "**");
+//        Date startDate = DateUtil.parse("2025-06-18 08:47:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+//        Date endDate = DateUtil.parse("2025-06-18 13:57:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+//        try {
+//            List<String> folderNames = ListUtil.list(false);
+////            folderNames.add("其他文件夹/报告公告");
+//            folderNames.add("INBOX");
+//            emailParseService.parseEmail(emailInfoDTO, startDate, endDate,
+//                    folderNames, EmailTypeConst.REPORT_EMAIL_TYPES);
+//        } catch (Exception e) {
+//            throw new RuntimeException(e);
+//        }
+//    }
 
 //    @Test
 //    public void testReparseEmail() {