|
@@ -79,7 +79,7 @@ public class EmailParseService {
|
|
private final FundPositionDetailMapper fundPositionDetailMapper;
|
|
private final FundPositionDetailMapper fundPositionDetailMapper;
|
|
private final DistributionMapper distributionMapper;
|
|
private final DistributionMapper distributionMapper;
|
|
private final CompanyInformationMapper companyInformationMapper;
|
|
private final CompanyInformationMapper companyInformationMapper;
|
|
- @Autowired
|
|
|
|
|
|
+ private final FileManageMapper fileManageMapper;
|
|
private FundInfoMapper fundInfoMapper;
|
|
private FundInfoMapper fundInfoMapper;
|
|
|
|
|
|
@Value("${email.file.path}")
|
|
@Value("${email.file.path}")
|
|
@@ -101,7 +101,7 @@ public class EmailParseService {
|
|
AssetMapper assetMapper, NavMapper navMapper, FundService fundService,
|
|
AssetMapper assetMapper, NavMapper navMapper, FundService fundService,
|
|
FundAliasMapper fundAliasMapper,
|
|
FundAliasMapper fundAliasMapper,
|
|
ValuationTableMapper valuationTableMapper, ValuationTableAttributeMapper valuationTableAttributeMapper,
|
|
ValuationTableMapper valuationTableMapper, ValuationTableAttributeMapper valuationTableAttributeMapper,
|
|
- FundPositionDetailMapper fundPositionDetailMapper, DistributionMapper distributionMapper, CompanyInformationMapper companyInformationMapper) {
|
|
|
|
|
|
+ FundPositionDetailMapper fundPositionDetailMapper, DistributionMapper distributionMapper, CompanyInformationMapper companyInformationMapper, FileManageMapper fileManageMapper, FundInfoMapper fundInfoMapper) {
|
|
this.emailTypeRuleMapper = emailTypeRuleMapper;
|
|
this.emailTypeRuleMapper = emailTypeRuleMapper;
|
|
this.emailRuleConfig = emailRuleConfig;
|
|
this.emailRuleConfig = emailRuleConfig;
|
|
this.emailFieldMapper = emailFieldMapper;
|
|
this.emailFieldMapper = emailFieldMapper;
|
|
@@ -121,6 +121,8 @@ public class EmailParseService {
|
|
this.fundPositionDetailMapper = fundPositionDetailMapper;
|
|
this.fundPositionDetailMapper = fundPositionDetailMapper;
|
|
this.distributionMapper = distributionMapper;
|
|
this.distributionMapper = distributionMapper;
|
|
this.companyInformationMapper = companyInformationMapper;
|
|
this.companyInformationMapper = companyInformationMapper;
|
|
|
|
+ this.fileManageMapper = fileManageMapper;
|
|
|
|
+ this.fundInfoMapper = fundInfoMapper;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -214,7 +216,6 @@ public class EmailParseService {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
Integer fileId = saveEmailFileInfo(emailId, emailContentInfoDTO.getFileId(), fileName, emailContentInfoDTO.getFilePath(), parseDate);
|
|
Integer fileId = saveEmailFileInfo(emailId, emailContentInfoDTO.getFileId(), fileName, emailContentInfoDTO.getFilePath(), parseDate);
|
|
-
|
|
|
|
List<EmailFundNavDTO> fundNavDTOList = fileNameNavEntry.getValue();
|
|
List<EmailFundNavDTO> fundNavDTOList = fileNameNavEntry.getValue();
|
|
//记录采集表
|
|
//记录采集表
|
|
if(CollUtil.isNotEmpty(fundNavDTOList)){
|
|
if(CollUtil.isNotEmpty(fundNavDTOList)){
|
|
@@ -243,6 +244,12 @@ public class EmailParseService {
|
|
// 设置净值数据的解析状态
|
|
// 设置净值数据的解析状态
|
|
setNavParseStatus(fundNavDTO, emailTitle);
|
|
setNavParseStatus(fundNavDTO, emailTitle);
|
|
}
|
|
}
|
|
|
|
+ //需要写入到文件管理
|
|
|
|
+ try{
|
|
|
|
+ saveFileManage(fileId,emailType,emailContentInfoDTO,fundNavDTOList,parseDate);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.error("保存文件管理信息报错:"+e.getMessage(),e);
|
|
|
|
+ }
|
|
// 保存净值表和规模表
|
|
// 保存净值表和规模表
|
|
saveNavAndAssetNet(fileId, fundNavDTOList, parseDate);
|
|
saveNavAndAssetNet(fileId, fundNavDTOList, parseDate);
|
|
saveValuationInfo(fileId, fundNavDTOList);
|
|
saveValuationInfo(fileId, fundNavDTOList);
|
|
@@ -285,6 +292,58 @@ public class EmailParseService {
|
|
emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason);
|
|
emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void saveFileManage(Integer fileId,Integer emailType, EmailContentInfoDTO emailContentInfoDTO,List<EmailFundNavDTO> fundNavDTOList, Date parseDate) {
|
|
|
|
+ try{
|
|
|
|
+ //HTML不保存
|
|
|
|
+ if(ExcelUtil.isHTML(emailContentInfoDTO.getFilePath())){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ FileManageDO fileManageDO = new FileManageDO();
|
|
|
|
+ fileManageDO.setFileId(fileId);
|
|
|
|
+ fileManageDO.setFileType(emailType);
|
|
|
|
+ fileManageDO.setSourceType(FileSourceType.SYSTEM_SOURCE);
|
|
|
|
+ fileManageDO.setFileDate(parseDate);
|
|
|
|
+ fileManageDO.setFileName(emailContentInfoDTO.getFileName());
|
|
|
|
+ fileManageDO.setFilePath(emailContentInfoDTO.getFilePath());
|
|
|
|
+ fileManageDO.setCreateTime(DateUtils.getNowDate());
|
|
|
|
+ fileManageDO.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
+ fileManageDO.setIsvalid(1);
|
|
|
|
+ if(CollUtil.isNotEmpty(fundNavDTOList)){
|
|
|
|
+ List<EmailFundNavDTO> fundIdNavList = fundNavDTOList.stream().filter(e -> CollUtil.isNotEmpty(e.getFundIdList())).collect(Collectors.toList());
|
|
|
|
+ if(CollUtil.isNotEmpty(fundIdNavList)){
|
|
|
|
+ //取第一个有基金ID作为附件关联的基金
|
|
|
|
+ String fundId = fundIdNavList.get(0).getFundIdList().get(0);
|
|
|
|
+ fileManageDO.setFundId(fundId);
|
|
|
|
+ FundInfoDO fundInfoDO = fundInfoMapper.searchFundDetail(fundId);
|
|
|
|
+ fileManageDO.setRegisterNumber(fundInfoDO.getRegisterNumber());
|
|
|
|
+ fileManageDO.setFundName(fundInfoDO.getFundName());
|
|
|
|
+ }else{
|
|
|
|
+ //说明是未匹配基金或者存在数据缺失,取附件上的基金名称和备案编码
|
|
|
|
+ List<EmailFundNavDTO> fundNameNavList = fundNavDTOList.stream().filter(e -> StringUtil.isNotEmpty(e.getFundName())).collect(Collectors.toList());
|
|
|
|
+ if(CollUtil.isNotEmpty(fundNameNavList)){
|
|
|
|
+ EmailFundNavDTO emailFundNavDTO = fundNameNavList.get(0);
|
|
|
|
+ fileManageDO.setRegisterNumber(emailFundNavDTO.getRegisterNumber());
|
|
|
|
+ fileManageDO.setFundName(emailFundNavDTO.getFundName());
|
|
|
|
+ }else{
|
|
|
|
+ List<EmailFundNavDTO> registerNumbereNavList = fundNavDTOList.stream().filter(e -> StringUtil.isNotEmpty(e.getRegisterNumber())).collect(Collectors.toList());
|
|
|
|
+ if(CollUtil.isNotEmpty(registerNumbereNavList)){
|
|
|
|
+ EmailFundNavDTO registerNumbereNav = registerNumbereNavList.get(0);
|
|
|
|
+ fileManageDO.setRegisterNumber(registerNumbereNav.getRegisterNumber());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ FileManageDO oldFileManageDO = fileManageMapper.getFileInfoByFileId(fileId);
|
|
|
|
+ if(oldFileManageDO == null){
|
|
|
|
+ fileManageMapper.saveFileManage(fileManageDO);
|
|
|
|
+ }else{
|
|
|
|
+ fileManageMapper.updateFileManage(fileManageDO);
|
|
|
|
+ }
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.error(e.getMessage(),e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void batchSaveEmailFundNavCollection(List<EmailFundNavCollectionDO> emailFundNavCollectionVOList) {
|
|
private void batchSaveEmailFundNavCollection(List<EmailFundNavCollectionDO> emailFundNavCollectionVOList) {
|
|
//过滤空数据
|
|
//过滤空数据
|
|
emailFundNavCollectionVOList = emailFundNavCollectionVOList.stream().filter(e -> (StringUtil.isNotEmpty(e.getNav())||
|
|
emailFundNavCollectionVOList = emailFundNavCollectionVOList.stream().filter(e -> (StringUtil.isNotEmpty(e.getNav())||
|