Ver código fonte

fix:修复报告会重复解析的问题

wangzaijun 1 mês atrás
pai
commit
f749c07095

+ 6 - 0
mo-daq/src/main/java/com/smppw/modaq/domain/mapper/EmailFileInfoMapper.java

@@ -37,4 +37,10 @@ public interface EmailFileInfoMapper {
                               @Param("aiFileId") String aiFileId);
 
     int getLetterFilenameSuccessCount(@Param("filename") String filename);
+
+    int getAmacFilenameSuccessCount(@Param("filename") String filename);
+
+    int getWeeklyFilenameSuccessCount(@Param("filename") String filename);
+
+    int getOtherFilenameSuccessCount(@Param("filename") String filename);
 }

+ 23 - 16
mo-daq/src/main/java/com/smppw/modaq/domain/service/EmailParseService.java

@@ -271,24 +271,31 @@ public class EmailParseService {
                 EmailZipFileDTO dto = iterator.next();
                 Integer emailType = dto.getEmailType();
                 String filename = dto.getFilename();
+                int count = 0;
                 if (Objects.equals(emailType, EmailTypeConst.REPORT_LETTER_EMAIL_TYPE)) {
-                    int count = this.emailFileInfoMapper.getLetterFilenameSuccessCount(filename);
-                    if (count > 0) {
-                        iterator.remove();
-                        log.info("邮件{} 附件{} 已存在解析成功的记录,不用重新解析。", emailTitle, filename);
-                    }
+                    // 确认单
+                    count = this.emailFileInfoMapper.getLetterFilenameSuccessCount(filename);
                 } else if (Objects.equals(emailType, EmailTypeConst.REPORT_EMAIL_TYPE)) {
-                    // todo 定期报告
-                } else if (EmailTypeConst.REPORT_EMAIL_TYPES.contains(emailType)) {
-                    // todo 其他报告
+                    // 定期报告
+                    count = this.emailFileInfoMapper.getAmacFilenameSuccessCount(filename);
+                } else if (Objects.equals(emailType, EmailTypeConst.REPORT_WEEKLY_TYPE)) {
+                    // 管理人周报
+                    count = this.emailFileInfoMapper.getWeeklyFilenameSuccessCount(filename);
+                } else if (Objects.equals(emailType, EmailTypeConst.REPORT_OTHER_TYPE)) {
+                    // 其他报告
+                    count = this.emailFileInfoMapper.getOtherFilenameSuccessCount(filename);
                 } else {
                     log.info("邮件{} 类型{} 不支持解析。", emailTitle, emailType);
                     iterator.remove();
                 }
+                if (count > 0) {
+                    iterator.remove();
+                    log.info("邮件{} 附件{} 已存在解析成功的记录,不用重新解析。", emailTitle, filename);
+                }
             }
 
             if (CollUtil.isEmpty(dtos)) {
-                log.warn("邮件{} 所有文件都已经解析成功过,不能重复解析了", emailTitle);
+                log.info("邮件{} 所有文件都已经解析成功过,不能重复解析了", emailTitle);
                 continue;
             }
 
@@ -301,7 +308,7 @@ public class EmailParseService {
             }
 
             for (EmailZipFileDTO zipFile : dtos) {
-                EmailFileInfoDO emailFile = saveEmailFileInfo(emailId, null, zipFile.getFilename(), zipFile.getFilepath(), null);
+                EmailFileInfoDO emailFile = saveEmailFileInfo(emailId, zipFile.getFilename(), zipFile.getFilepath());
                 // 解析并保存报告
                 ParseResult<ReportData> parseResult = this.parseReportAndHandleResult(emailFile.getId(), zipFile.getFilename(),
                         zipFile.getFilepath(), zipFile.getEmailType(), emailFile.getAiFileId());
@@ -454,20 +461,20 @@ public class EmailParseService {
         return result;
     }
 
-    private EmailFileInfoDO saveEmailFileInfo(Integer emailId, Integer fileId, String fileName, String filePath, String aiFileId) {
-        EmailFileInfoDO emailFileInfoDO = buildEmailFileInfoDO(emailId, fileId, fileName, filePath);
-        emailFileInfoDO.setAiFileId(aiFileId);
+    private EmailFileInfoDO saveEmailFileInfo(Integer emailId, String fileName, String filePath) {
+        EmailFileInfoDO emailFileInfoDO = buildEmailFileInfoDO(emailId, fileName, filePath);
+        emailFileInfoDO.setAiFileId(null);
         if (emailFileInfoDO.getId() != null) {
-            emailFileInfoMapper.updateTimeById(fileId, new Date());
+            emailFileInfoMapper.updateTimeById(null, new Date());
             return emailFileInfoDO;
         }
         emailFileInfoMapper.insert(emailFileInfoDO);
         return emailFileInfoDO;
     }
 
-    private EmailFileInfoDO buildEmailFileInfoDO(Integer emailId, Integer fileId, String fileName, String filePath) {
+    private EmailFileInfoDO buildEmailFileInfoDO(Integer emailId, String fileName, String filePath) {
         EmailFileInfoDO emailFileInfoDO = new EmailFileInfoDO();
-        emailFileInfoDO.setId(fileId);
+        emailFileInfoDO.setId(null);
         emailFileInfoDO.setEmailId(emailId);
         emailFileInfoDO.setFileName(fileName);
         emailFileInfoDO.setFilePath(filePath);

+ 23 - 0
mo-daq/src/main/resources/mapper/EmailFileInfoMapper.xml

@@ -243,4 +243,27 @@
                  join mo_report_investor_info d on a.id = d.file_id and d.investor_name is not null
         where a.file_name = #{filename}
     </select>
+
+    <select id="getAmacFilenameSuccessCount" resultType="int">
+        select count(1)
+        from mo_email_file_info a
+                 join mo_report_base_info b on b.file_id = a.id and b.report_type in ('MONTHLY', 'QUARTERLY', 'ANNUALLY')
+                 join mo_report_fund_info c on a.id = c.file_id and c.fund_name is not null
+        where a.file_name = #{filename}
+    </select>
+
+    <select id="getWeeklyFilenameSuccessCount" resultType="int">
+        select count(1)
+        from mo_email_file_info a
+                 join mo_report_base_info b on b.file_id = a.id and b.report_type = 'WEEKLY'
+                 join mo_report_fund_info c on a.id = c.file_id and c.fund_name is not null
+        where a.file_name = #{filename}
+    </select>
+
+    <select id="getOtherFilenameSuccessCount" resultType="int">
+        select count(1)
+        from mo_email_file_info a
+                 join mo_report_base_info b on b.file_id = a.id and b.report_type = 'OTHER'
+        where a.file_name = #{filename}
+    </select>
 </mapper>