|
@@ -1,6 +1,7 @@
|
|
package com.smppw.modaq.application.components;
|
|
package com.smppw.modaq.application.components;
|
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.smppw.modaq.common.conts.Constants;
|
|
import com.smppw.modaq.common.conts.Constants;
|
|
import com.smppw.modaq.common.enums.ReportParseStatus;
|
|
import com.smppw.modaq.common.enums.ReportParseStatus;
|
|
@@ -18,143 +19,145 @@ import technology.tabula.extractors.SpreadsheetExtractionAlgorithm;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.util.Calendar;
|
|
import java.util.Calendar;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
public final class ReportParseUtils {
|
|
public final class ReportParseUtils {
|
|
-// /**
|
|
|
|
-// * 行业配置的表格列名称
|
|
|
|
-// */
|
|
|
|
-// public static final List<String> INDUSTRY_COLUMN_NAMES = ListUtil.list(false);
|
|
|
|
-// /**
|
|
|
|
-// * 份额变动的表格列名称
|
|
|
|
-// */
|
|
|
|
-// public static final List<String> SHARE_CHANGE_COLUMN_NAMES = ListUtil.list(false);
|
|
|
|
-// /**
|
|
|
|
-// * 主要财务指标识别列名称
|
|
|
|
-// */
|
|
|
|
-// public static final List<String> FINANCIAL_INDICATORS_COLUMN_NAMES = ListUtil.list(false);
|
|
|
|
-// /**
|
|
|
|
-// * 资产配置明细和大类关系映射
|
|
|
|
-// */
|
|
|
|
-// public static final Map<String, String> ASSET_ALLOCATION_TYPE_MAPPER = MapUtil.newHashMap(32, true);
|
|
|
|
-//
|
|
|
|
-// static {
|
|
|
|
-// // 财务指标
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末基金净资产");
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末基金资产净值");
|
|
|
|
-//
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("报告期期末单位净值");
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末基金份额净值");
|
|
|
|
-//
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("本期利润");
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("本期已实现收益");
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末可供分配利润");
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末可供分配基金份额利润");
|
|
|
|
-// FINANCIAL_INDICATORS_COLUMN_NAMES.add("基金份额累计净值增长率");
|
|
|
|
-//
|
|
|
|
-// // 中国证监会行业标准
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("农、林、牧、渔业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("采矿业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("制造业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("电力、热力、燃气及水生产和供应业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("建筑业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("批发和零售业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("交通运输、仓储和邮政业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("住宿和餐饮业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("信息传输、软件和信息技术服务业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("金融业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("房地产业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("租赁和商务服务业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("科学研究和技术服务业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("水利、环境和公共设施管理业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("居民服务、修理和其他服务业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("教育");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("卫生和社会工作");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("文化、体育和娱乐业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("综合");
|
|
|
|
-//
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("港股通");
|
|
|
|
-//
|
|
|
|
-// // 以下为国际标准
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("能源");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("原材料");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("材料");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("工业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("可选消费品");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("非日常生活消费品");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("必须消费品");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("日常消费品");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("医疗保健");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("金融");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("信息技术");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("通讯服务");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("电信服务");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("公用事业");
|
|
|
|
-// INDUSTRY_COLUMN_NAMES.add("房地产");
|
|
|
|
-//
|
|
|
|
-// // 份额变动表格识别列
|
|
|
|
-// SHARE_CHANGE_COLUMN_NAMES.add("报告期期初基金份额总额");
|
|
|
|
-// SHARE_CHANGE_COLUMN_NAMES.add("减:报告期期间基金总赎回份额");
|
|
|
|
-// SHARE_CHANGE_COLUMN_NAMES.add("期末基金总份额/期末基金实缴总额");
|
|
|
|
-// SHARE_CHANGE_COLUMN_NAMES.add("报告期期间基金拆分变动份额");
|
|
|
|
-// SHARE_CHANGE_COLUMN_NAMES.add("报告期期间基金总申购份额");
|
|
|
|
-//
|
|
|
|
-// // 资产配置
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("银行存款", "现金类资产");
|
|
|
|
-// // 境内未上市、未挂牌公司股权投资
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("股权投资", "境内未上市、未挂牌公司股权投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其中:优先股", "境内未上市、未挂牌公司股权投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其他股权类投资", "境内未上市、未挂牌公司股权投资");
|
|
|
|
-// // 上市公司定向增发投资
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("上市公司定向增发股票投资", "上市公司定向增发投资");
|
|
|
|
-// // 新三板投资
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("新三板挂牌企业投资", "新三板投资");
|
|
|
|
-// // 境内证券投资规模
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("结算备付金", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("存出保证金", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("股票投资", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("债券投资", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其中:银行间市场债券", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其中:利率债", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其中:信用债", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("资产支持证券", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("基金投资(公募基金)", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其中:货币基金", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("期货及衍生品交易保证金", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("买入返售金融资产", "境内证券投资规模");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其他证券类标的", "境内证券投资规模");
|
|
|
|
-// // 资管计划投资
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("商业银行理财产品投资", "资管计划投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("信托计划投资", "资管计划投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("基金公司及其子公司资产管理计划投资", "资管计划投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("保险资产管理计划投资", "资管计划投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("证券公司及其子公司资产管理计划投资", "资管计划投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("期货公司及其子公司资产管理计划投资", "资管计划投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("私募基金产品投资", "资管计划投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("未在协会备案的合伙企业份额", "资管计划投资");
|
|
|
|
-// // 另类投资
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("另类投资", "另类投资");
|
|
|
|
-// // 境内债权类投资
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("银行委托贷款规模", "境内债权类投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("信托贷款", "境内债权类投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("应收账款投资", "境内债权类投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("各类受(收)益权投资", "境内债权类投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("票据(承兑汇票等)投资", "境内债权类投资");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其他债权投资", "境内债权类投资");
|
|
|
|
-// // 境外投资
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("境外投资", "境外投资");
|
|
|
|
-// // 其他资产
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其他资产", "其他资产");
|
|
|
|
-// // 基金负债情况
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("债券回购总额", "基金负债情况");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("融资、融券总额", "基金负债情况");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其中:融券总额", "基金负债情况");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("银行借款总额", "基金负债情况");
|
|
|
|
-// ASSET_ALLOCATION_TYPE_MAPPER.put("其他融资总额", "基金负债情况");
|
|
|
|
-// }
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 行业配置的表格列名称
|
|
|
|
+ */
|
|
|
|
+ public static final List<String> INDUSTRY_COLUMN_NAMES = ListUtil.list(false);
|
|
|
|
+ /**
|
|
|
|
+ * 份额变动的表格列名称
|
|
|
|
+ */
|
|
|
|
+ public static final List<String> SHARE_CHANGE_COLUMN_NAMES = ListUtil.list(false);
|
|
|
|
+ /**
|
|
|
|
+ * 主要财务指标识别列名称
|
|
|
|
+ */
|
|
|
|
+ public static final List<String> FINANCIAL_INDICATORS_COLUMN_NAMES = ListUtil.list(false);
|
|
|
|
+ /**
|
|
|
|
+ * 资产配置明细和大类关系映射
|
|
|
|
+ */
|
|
|
|
+ public static final Map<String, String> ASSET_ALLOCATION_TYPE_MAPPER = MapUtil.newHashMap(32, true);
|
|
|
|
+
|
|
|
|
+ static {
|
|
|
|
+ // 财务指标
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末基金净资产");
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末基金资产净值");
|
|
|
|
+
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("报告期期末单位净值");
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末基金份额净值");
|
|
|
|
+
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("本期利润");
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("本期已实现收益");
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末可供分配利润");
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("期末可供分配基金份额利润");
|
|
|
|
+ FINANCIAL_INDICATORS_COLUMN_NAMES.add("基金份额累计净值增长率");
|
|
|
|
+
|
|
|
|
+ // 中国证监会行业标准
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("农、林、牧、渔业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("采矿业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("制造业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("电力、热力、燃气及水生产和供应业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("建筑业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("批发和零售业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("交通运输、仓储和邮政业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("住宿和餐饮业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("信息传输、软件和信息技术服务业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("金融业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("房地产业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("租赁和商务服务业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("科学研究和技术服务业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("水利、环境和公共设施管理业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("居民服务、修理和其他服务业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("教育");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("卫生和社会工作");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("文化、体育和娱乐业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("综合");
|
|
|
|
+
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("港股通");
|
|
|
|
+
|
|
|
|
+ // 以下为国际标准
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("能源");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("原材料");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("材料");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("工业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("可选消费品");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("非日常生活消费品");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("必须消费品");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("日常消费品");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("医疗保健");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("金融");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("信息技术");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("通讯服务");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("电信服务");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("公用事业");
|
|
|
|
+ INDUSTRY_COLUMN_NAMES.add("房地产");
|
|
|
|
+
|
|
|
|
+ // 份额变动表格识别列
|
|
|
|
+ SHARE_CHANGE_COLUMN_NAMES.add("报告期期初基金份额总额");
|
|
|
|
+ SHARE_CHANGE_COLUMN_NAMES.add("减:报告期期间基金总赎回份额");
|
|
|
|
+ SHARE_CHANGE_COLUMN_NAMES.add("期末基金总份额/期末基金实缴总额");
|
|
|
|
+ SHARE_CHANGE_COLUMN_NAMES.add("报告期期间基金拆分变动份额");
|
|
|
|
+ SHARE_CHANGE_COLUMN_NAMES.add("报告期期间基金总申购份额");
|
|
|
|
+
|
|
|
|
+ // 资产配置
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("银行存款", "现金类资产");
|
|
|
|
+ // 境内未上市、未挂牌公司股权投资
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("股权投资", "境内未上市、未挂牌公司股权投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其中:优先股", "境内未上市、未挂牌公司股权投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其他股权类投资", "境内未上市、未挂牌公司股权投资");
|
|
|
|
+ // 上市公司定向增发投资
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("上市公司定向增发股票投资", "上市公司定向增发投资");
|
|
|
|
+ // 新三板投资
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("新三板挂牌企业投资", "新三板投资");
|
|
|
|
+ // 境内证券投资规模
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("结算备付金", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("存出保证金", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("股票投资", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("债券投资", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其中:银行间市场债券", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其中:利率债", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其中:信用债", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("资产支持证券", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("基金投资(公募基金)", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其中:货币基金", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("期货及衍生品交易保证金", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("买入返售金融资产", "境内证券投资规模");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其他证券类标的", "境内证券投资规模");
|
|
|
|
+ // 资管计划投资
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("商业银行理财产品投资", "资管计划投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("信托计划投资", "资管计划投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("基金公司及其子公司资产管理计划投资", "资管计划投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("保险资产管理计划投资", "资管计划投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("证券公司及其子公司资产管理计划投资", "资管计划投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("期货公司及其子公司资产管理计划投资", "资管计划投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("私募基金产品投资", "资管计划投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("未在协会备案的合伙企业份额", "资管计划投资");
|
|
|
|
+ // 另类投资
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("另类投资", "另类投资");
|
|
|
|
+ // 境内债权类投资
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("银行委托贷款规模", "境内债权类投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("信托贷款", "境内债权类投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("应收账款投资", "境内债权类投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("各类受(收)益权投资", "境内债权类投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("票据(承兑汇票等)投资", "境内债权类投资");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其他债权投资", "境内债权类投资");
|
|
|
|
+ // 境外投资
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("境外投资", "境外投资");
|
|
|
|
+ // 其他资产
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其他资产", "其他资产");
|
|
|
|
+ // 基金负债情况
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("债券回购总额", "基金负债情况");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("融资、融券总额", "基金负债情况");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其中:融券总额", "基金负债情况");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("银行借款总额", "基金负债情况");
|
|
|
|
+ ASSET_ALLOCATION_TYPE_MAPPER.put("其他融资总额", "基金负债情况");
|
|
|
|
+ }
|
|
|
|
|
|
public static String cleaningValue(Object value) {
|
|
public static String cleaningValue(Object value) {
|
|
return cleaningValue(value, true);
|
|
return cleaningValue(value, true);
|
|
@@ -202,35 +205,35 @@ public final class ReportParseUtils {
|
|
return StrUtil.isBlank(fieldValue) ? null : fieldValue;
|
|
return StrUtil.isBlank(fieldValue) ? null : fieldValue;
|
|
}
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
|
-// * 匹配分级基金名称(并且把母基金追加到第一行)
|
|
|
|
-// *
|
|
|
|
-// * @param text 文本内容
|
|
|
|
-// * @return /
|
|
|
|
-// */
|
|
|
|
-// public static List<String> matchTieredFund(String text) {
|
|
|
|
-// List<String> matches = ListUtil.list(false);
|
|
|
|
-// if (StrUtil.isBlank(text)) {
|
|
|
|
-// matches.add("母基金");
|
|
|
|
-// return matches;
|
|
|
|
-// }
|
|
|
|
-// // 使用正则表达式查找匹配项
|
|
|
|
-// Pattern pattern = Pattern.compile("[A-F]级|基金[A-F]");
|
|
|
|
-// Matcher matcher = pattern.matcher(text);
|
|
|
|
-// // 收集所有匹配项
|
|
|
|
-// while (matcher.find()) {
|
|
|
|
-// matches.add(matcher.group());
|
|
|
|
-// }
|
|
|
|
-// // 提取字母并按字母顺序排序
|
|
|
|
-// List<String> levels = matches.stream()
|
|
|
|
-// .map(s -> s.replaceAll("[^A-F]", ""))
|
|
|
|
-// .distinct()
|
|
|
|
-// .sorted()
|
|
|
|
-// .map(letter -> letter + "级")
|
|
|
|
-// .collect(Collectors.toList());
|
|
|
|
-// levels.add(0, "母基金");
|
|
|
|
-// return levels;
|
|
|
|
-// }
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 匹配分级基金名称(并且把母基金追加到第一行)
|
|
|
|
+ *
|
|
|
|
+ * @param text 文本内容
|
|
|
|
+ * @return /
|
|
|
|
+ */
|
|
|
|
+ public static List<String> matchTieredFund(String text) {
|
|
|
|
+ List<String> matches = ListUtil.list(false);
|
|
|
|
+ if (StrUtil.isBlank(text)) {
|
|
|
|
+ matches.add("母基金");
|
|
|
|
+ return matches;
|
|
|
|
+ }
|
|
|
|
+ // 使用正则表达式查找匹配项
|
|
|
|
+ Pattern pattern = Pattern.compile("[A-F]级|基金[A-F]");
|
|
|
|
+ Matcher matcher = pattern.matcher(text);
|
|
|
|
+ // 收集所有匹配项
|
|
|
|
+ while (matcher.find()) {
|
|
|
|
+ matches.add(matcher.group());
|
|
|
|
+ }
|
|
|
|
+ // 提取字母并按字母顺序排序
|
|
|
|
+ List<String> levels = matches.stream()
|
|
|
|
+ .map(s -> s.replaceAll("[^A-F]", ""))
|
|
|
|
+ .distinct()
|
|
|
|
+ .sorted()
|
|
|
|
+ .map(letter -> letter + "级")
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ levels.add(0, "母基金");
|
|
|
|
+ return levels;
|
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
/**
|
|
* 匹配报告日期
|
|
* 匹配报告日期
|
|
@@ -299,10 +302,10 @@ public final class ReportParseUtils {
|
|
// } else if (StrUtil.containsAny(string, ReportType.ANNUALLY.getPatterns())) {
|
|
// } else if (StrUtil.containsAny(string, ReportType.ANNUALLY.getPatterns())) {
|
|
// reportType = ReportType.ANNUALLY;
|
|
// reportType = ReportType.ANNUALLY;
|
|
// } else
|
|
// } else
|
|
- if (StrUtil.containsAny(string, ReportType.MONTHLY.getPatterns())) {
|
|
|
|
|
|
+ if (StrUtil.containsAny(string, ReportType.MONTHLY.getPatterns())) {
|
|
reportType = ReportType.MONTHLY;
|
|
reportType = ReportType.MONTHLY;
|
|
- } else if (StrUtil.containsAny(string, ReportType.WEEKLY.getPatterns())) {
|
|
|
|
- reportType = ReportType.WEEKLY;
|
|
|
|
|
|
+// } else if (StrUtil.containsAny(string, ReportType.WEEKLY.getPatterns())) {
|
|
|
|
+// reportType = ReportType.WEEKLY;
|
|
} else if (StrUtil.containsAny(string, ReportType.LETTER.getPatterns())) {
|
|
} else if (StrUtil.containsAny(string, ReportType.LETTER.getPatterns())) {
|
|
reportType = ReportType.LETTER;
|
|
reportType = ReportType.LETTER;
|
|
}
|
|
}
|