ソースを参照

fix:修复邮件下载时附件分组逻辑异常问题

wangzaijun 2 週間 前
コミット
d8d6d40178

+ 10 - 3
mo-daq/src/main/java/com/smppw/modaq/application/api/ParseApi.java

@@ -3,12 +3,14 @@ package com.smppw.modaq.application.api;
 import cn.hutool.core.date.DateUtil;
 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 org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Date;
+import java.util.List;
 
 @RestController
 @RequestMapping("/v1/daq-parse")
@@ -37,4 +39,9 @@ public class ParseApi {
         this.service.reparseEmail(emailId);
         return ResponseEntity.ok("success");
     }
+
+    @PostMapping("upload-parse")
+    public ResponseEntity<List<UploadReportResult>> uploadReport(@RequestBody UploadReportParams params) {
+        return null;
+    }
 }

+ 6 - 2
mo-daq/src/main/java/com/smppw/modaq/domain/dto/EmailContentInfoDTO.java

@@ -74,6 +74,10 @@ public class EmailContentInfoDTO implements Serializable {
      */
     private int fileSize;
 
+    public String groupBy() {
+        return this.emailTitle + this.emailAddress + this.emailDate + this.senderEmail;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
@@ -84,13 +88,13 @@ public class EmailContentInfoDTO implements Serializable {
 //                && Objects.equals(fileName, that.fileName)
 //                && Objects.equals(filePath, that.filePath)
 //                && Objects.equals(fileSize, that.fileSize)
-                && Objects.equals(emailType, that.emailType)
+//                && Objects.equals(emailType, that.emailType)
                 && Objects.equals(senderEmail, that.senderEmail);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(emailAddress, emailTitle, emailDate, emailType, senderEmail);
+        return Objects.hash(emailAddress, emailTitle, emailDate, senderEmail);
     }
 
     @Override

+ 9 - 0
mo-daq/src/main/java/com/smppw/modaq/domain/dto/EmailZipFileDTO.java

@@ -45,6 +45,15 @@ public class EmailZipFileDTO {
         this.extName = FileUtil.extName(filepath);
     }
 
+    public EmailZipFileDTO(String emailTitle, UploadReportParams.ReportInfo uploadReportInfo) {
+        this.emailTitle = emailTitle;
+        this.filepath = uploadReportInfo.getReportPath();
+        this.emailType = uploadReportInfo.getReportType();
+        this.filename = uploadReportInfo.getReportName();
+        this.fileSize = FileUtil.size(FileUtil.file(this.filepath));
+        this.extName = FileUtil.extName(filepath);
+    }
+
     @Override
     public String toString() {
         return "EmailZipFileDTO{" +

+ 21 - 0
mo-daq/src/main/java/com/smppw/modaq/domain/dto/UploadReportParams.java

@@ -0,0 +1,21 @@
+package com.smppw.modaq.domain.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Setter
+@Getter
+public class UploadReportParams {
+    private String title;
+    private List<ReportInfo> reportInfos;
+
+    @Setter
+    @Getter
+    public static class ReportInfo {
+        private String reportName;
+        private Integer reportType;
+        private String reportPath;
+    }
+}

+ 24 - 0
mo-daq/src/main/java/com/smppw/modaq/domain/dto/UploadReportResult.java

@@ -0,0 +1,24 @@
+package com.smppw.modaq.domain.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+public class UploadReportResult {
+    private String reportName;
+    private Integer reportType;
+    private String reportPath;
+    private int status;
+    private String msg;
+
+    public UploadReportResult() {
+    }
+
+    public UploadReportResult(UploadReportParams.ReportInfo info) {
+        this.reportName = info.getReportName();
+        this.reportType = info.getReportType();
+        this.reportPath = info.getReportPath();
+        this.status = 0;
+    }
+}

+ 2 - 1
mo-daq/src/main/java/com/smppw/modaq/domain/service/EmailParseService.java

@@ -154,6 +154,7 @@ public class EmailParseService {
                     continue;
                 }
                 try {
+                    // 这里分组只用邮件的标题+发送人+接收人+发送时间
                     List<EmailZipFileDTO> tempList = emailZipFileMap.getOrDefault(emailDto, ListUtil.list(false));
                     tempList.addAll(this.parseZipEmail(emailDto));
                     emailZipFileMap.put(emailDto, tempList);
@@ -731,7 +732,7 @@ public class EmailParseService {
         emailParseInfoDO.setSenderEmail(emailDto.getSenderEmail());
         emailParseInfoDO.setEmail(emailAddress);
         emailParseInfoDO.setEmailDate(DateUtil.parse(emailDto.getEmailDate(), DateConst.YYYY_MM_DD_HH_MM_SS));
-        emailParseInfoDO.setParseDate(emailDto.getParseDate() == null ? null : DateUtil.parseDate(emailDto.getParseDate()));
+        emailParseInfoDO.setParseDate(emailDto.getParseDate() == null ? new Date() : DateUtil.parseDate(emailDto.getParseDate()));
         emailParseInfoDO.setEmailTitle(emailDto.getEmailTitle());
         emailParseInfoDO.setEmailType(emailDto.getEmailType());
         emailParseInfoDO.setParseStatus(EmailParseStatusConst.SUCCESS);

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

@@ -38,8 +38,8 @@ public class MoDaqApplicationTests {
     @Test
     public void reportTest() {
         MailboxInfoDTO emailInfoDTO = this.buildMailbox("*@simuwang.com", "*");
-        Date startDate = DateUtil.parse("2025-06-07 14:43:00", DateConst.YYYY_MM_DD_HH_MM_SS);
-        Date endDate = DateUtil.parse("2025-06-07 17:05:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+        Date startDate = DateUtil.parse("2025-06-09 10:20:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+        Date endDate = DateUtil.parse("2025-06-09 17:05:00", DateConst.YYYY_MM_DD_HH_MM_SS);
         try {
             List<String> folderNames = ListUtil.list(false);
 //            folderNames.add("其他文件夹/报告公告");