Ver Fonte

fix:优化报告中无法解析基金代码时从文件名中解析

wangzaijun há 1 mês atrás
pai
commit
be6f943352

+ 18 - 0
mo-daq/src/main/java/com/smppw/modaq/application/components/ReportParseUtils.java

@@ -304,6 +304,24 @@ public final class ReportParseUtils {
     }
 
     /**
+     * 匹配基金代码
+     *
+     * @param text 字符串
+     * @return /
+     */
+    public static String matchFundCode(String text) {
+        if (StrUtil.isBlank(text)) {
+            return null;
+        }
+        Pattern pattern = Pattern.compile("^S\\d{5,6}$");
+        Matcher matcher = pattern.matcher(text);
+        if (matcher.find()) {
+            return matcher.group();
+        }
+        return null;
+    }
+
+    /**
      * 匹配报告日期
      *
      * @param string 文本内容

+ 3 - 0
mo-daq/src/main/java/com/smppw/modaq/application/components/report/parser/AbstractReportParser.java

@@ -91,6 +91,9 @@ public abstract class AbstractReportParser<T extends ReportData> implements Repo
             ReportBaseInfoDTO reportInfo = this.buildReportInfo(params);
             // 解析报告中主体基金的基本信息
             ReportFundInfoDTO reportFundInfo = this.buildFundInfo(params);
+            if (StrUtil.isBlank(reportFundInfo.getFundCode())) {
+                reportFundInfo.setFundCode(ReportParseUtils.matchFundCode(params.getFilename()));
+            }
             // 解析其他表格信息并且设置结果字段
             T reportData = this.parseExtInfoAndSetData(reportInfo, reportFundInfo);
             // 数据清洗后返回

+ 5 - 1
mo-daq/src/main/java/com/smppw/modaq/application/components/report/parser/ai/AIWeeklyReportParser.java

@@ -20,7 +20,11 @@ public class AIWeeklyReportParser extends AbstractAIReportParser<WeeklyReportDat
 
     @Override
     protected String prompt() {
-        return "识别文件中的基金名称、基金管理人和报告日期,如果日期是区间段则取截止日期,如果无法识别就返回空字符串,结果用json返回";
+        return """
+                识别文件中的基金名称、基金编码、基金管理人和报告日期,
+                基金编码的正则表达式是`^S\\d{5,6}$`,
+                如果日期是区间段则取截止日期,如果无法识别就返回空字符串,结果用json返回
+                """;
     }
 
     @Override

+ 1 - 4
mo-daq/src/main/java/com/smppw/modaq/domain/dto/report/ReportFundInfoDTO.java

@@ -135,12 +135,9 @@ public class ReportFundInfoDTO extends BaseReportDTO<ReportFundInfoDO> {
     public String toString() {
         return "{" +
                 super.toString() +
-                ", advisorName='" + advisorName + '\'' +
                 ", fundName='" + fundName + '\'' +
-                ", inceptionDate='" + inceptionDate + '\'' +
-                ", registerNumber='" + registerNumber + '\'' +
+                ", fundCode='" + fundCode + '\'' +
                 ", companyName='" + companyName + '\'' +
-                ", dueDate='" + dueDate + '\'' +
                 '}';
     }
 }