|
@@ -2,6 +2,7 @@ package com.simuwang.daq.service;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.collection.ListUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
@@ -361,17 +362,22 @@ public class EmailParseService {
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.NAV_DEFICIENCY);
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.NAV_DEFICIENCY);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+
|
|
// 2.匹配基金(考虑到解析估值表时已经匹配上基金的情况)
|
|
// 2.匹配基金(考虑到解析估值表时已经匹配上基金的情况)
|
|
- if (CollUtil.isEmpty(fundNavDTO.getFundIdList())) {
|
|
|
|
- List<String> fundIdList = fundService.getFundIdByNamesAndCode(fundNavDTO.getFundName(), fundNavDTO.getRegisterNumber());
|
|
|
|
|
|
+ List<String> fundIdList = fundNavDTO.getFundIdList();
|
|
|
|
+ if (CollUtil.isEmpty(fundIdList)) {
|
|
|
|
+ fundIdList = fundService.getFundIdByNamesAndCode(fundNavDTO.getFundName(), fundNavDTO.getRegisterNumber());
|
|
if (CollUtil.isEmpty(fundIdList)) {
|
|
if (CollUtil.isEmpty(fundIdList)) {
|
|
- // 判断是否写入别名管理表fund_alias
|
|
|
|
- saveFundAlias(fundNavDTO.getFundName(), fundNavDTO.getRegisterNumber());
|
|
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.NOT_MATCH);
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.NOT_MATCH);
|
|
- return;
|
|
|
|
}
|
|
}
|
|
- fundNavDTO.setFundIdList(fundIdList);
|
|
|
|
}
|
|
}
|
|
|
|
+ fundNavDTO.setFundIdList(fundIdList);
|
|
|
|
+ // 写入别名管理表fund_alias
|
|
|
|
+ saveFundAlias(fundNavDTO.getFundName(), fundNavDTO.getRegisterNumber(), fundIdList);
|
|
|
|
+ if (CollUtil.isEmpty(fundIdList)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
// 考虑单独规模文件时 -> 无单位净值和累计净值
|
|
// 考虑单独规模文件时 -> 无单位净值和累计净值
|
|
// 3.单位净值或累计净值不大于0
|
|
// 3.单位净值或累计净值不大于0
|
|
if (!emailTitle.contains("规模")) {
|
|
if (!emailTitle.contains("规模")) {
|
|
@@ -381,6 +387,7 @@ public class EmailParseService {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
// 4.资产净值不大于0
|
|
// 4.资产净值不大于0
|
|
if (StrUtil.isNotBlank(fundNavDTO.getAssetNet()) && fundNavDTO.getAssetNet().compareTo("0") <= 0) {
|
|
if (StrUtil.isNotBlank(fundNavDTO.getAssetNet()) && fundNavDTO.getAssetNet().compareTo("0") <= 0) {
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.ASSET_NET_NEGATIVE);
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.ASSET_NET_NEGATIVE);
|
|
@@ -389,7 +396,7 @@ public class EmailParseService {
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.SUCCESS);
|
|
fundNavDTO.setParseStatus(NavParseStatusConst.SUCCESS);
|
|
}
|
|
}
|
|
|
|
|
|
- private void saveFundAlias(String fundName, String registerNumber) {
|
|
|
|
|
|
+ private void saveFundAlias(String fundName, String registerNumber, List<String> fundIdList) {
|
|
// 未识别到基金名称和备案编码的数据不写入别名管理
|
|
// 未识别到基金名称和备案编码的数据不写入别名管理
|
|
if (StrUtil.isBlank(fundName) && StrUtil.isBlank(registerNumber)) {
|
|
if (StrUtil.isBlank(fundName) && StrUtil.isBlank(registerNumber)) {
|
|
return;
|
|
return;
|
|
@@ -404,11 +411,29 @@ public class EmailParseService {
|
|
if (StrUtil.isNotBlank(fundName) && StrUtil.isBlank(registerNumber)) {
|
|
if (StrUtil.isNotBlank(fundName) && StrUtil.isBlank(registerNumber)) {
|
|
fundAliasDOList = fundAliasMapper.queryFundByName(fundName);
|
|
fundAliasDOList = fundAliasMapper.queryFundByName(fundName);
|
|
}
|
|
}
|
|
|
|
+
|
|
if (CollUtil.isNotEmpty(fundAliasDOList)) {
|
|
if (CollUtil.isNotEmpty(fundAliasDOList)) {
|
|
- return;
|
|
|
|
|
|
+ List<String> collect = fundAliasDOList.stream().map(FundAliasDO::getTargetFundId).distinct().toList();
|
|
|
|
+ fundIdList = fundIdList.stream().filter(e -> !collect.contains(e)).toList();
|
|
}
|
|
}
|
|
- log.info("写入别名表 -> 基金名称:{},备案编码:{}", fundName, registerNumber);
|
|
|
|
- fundAliasMapper.insert(fundName, registerNumber);
|
|
|
|
|
|
+
|
|
|
|
+ log.info("写入别名表 -> 基金名称:{},备案编码:{},基金id:{}", fundName, registerNumber, fundIdList);
|
|
|
|
+ List<FundAliasDO> fundAliasDOS = CollUtil.isNotEmpty(fundIdList) ? ListUtil.toList(buildFundAliasDO(fundName, registerNumber, null))
|
|
|
|
+ : fundIdList.stream().map(e -> buildFundAliasDO(fundName, registerNumber, e)).toList();
|
|
|
|
+ fundAliasMapper.batchInsert(fundAliasDOS);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public FundAliasDO buildFundAliasDO(String fundName, String registerNumber, String fundId) {
|
|
|
|
+ FundAliasDO fundAliasDO = new FundAliasDO();
|
|
|
|
+ fundAliasDO.setTargetFundId(fundId);
|
|
|
|
+ fundAliasDO.setSourceFundName(fundName);
|
|
|
|
+ fundAliasDO.setSourceRegisterNumber(registerNumber);
|
|
|
|
+ fundAliasDO.setIsvalid(1);
|
|
|
|
+ fundAliasDO.setCreatorId(0);
|
|
|
|
+ fundAliasDO.setCreateTime(new Date());
|
|
|
|
+ fundAliasDO.setUpdateTime(new Date());
|
|
|
|
+ fundAliasDO.setUpdaterId(0);
|
|
|
|
+ return fundAliasDO;
|
|
}
|
|
}
|
|
|
|
|
|
private Integer saveEmailParseInfo(EmailParseInfoDO emailParseInfoDO) {
|
|
private Integer saveEmailParseInfo(EmailParseInfoDO emailParseInfoDO) {
|