|
@@ -505,19 +505,12 @@ public class EmailParseService {
|
|
|
Map<String, List<NavDO>> fundIdNavMap = navDOList.stream().collect(Collectors.groupingBy(NavDO::getFundId));
|
|
|
for (Map.Entry<String, List<NavDO>> entry : fundIdNavMap.entrySet()) {
|
|
|
List<NavDO> navDOS = entry.getValue();
|
|
|
- List<String> priceDateList = navDOS.stream().map(NavDO::getPriceDate).map(e -> DateUtil.format(e, DateConst.YYYY_MM_DD)).collect(Collectors.toList());
|
|
|
- List<String> dateList = navMapper.queryFundNavByDate(entry.getKey(), priceDateList);
|
|
|
- List<NavDO> updateNavDoList = navDOS.stream().filter(e -> dateList.contains(DateUtil.format(e.getPriceDate(), DateConst.YYYY_MM_DD))).collect(Collectors.toList());
|
|
|
- List<NavDO> insertNavDoList = navDOS.stream().filter(e -> !dateList.contains(DateUtil.format(e.getPriceDate(), DateConst.YYYY_MM_DD))).collect(Collectors.toList());
|
|
|
//按照净值日期排序,方便后面的振幅检测
|
|
|
- if (CollUtil.isNotEmpty(insertNavDoList) && insertNavDoList.size() > 1) {
|
|
|
- insertNavDoList = insertNavDoList.stream().sorted(Comparator.comparing(NavDO::getPriceDate)).collect(Collectors.toList());
|
|
|
- }
|
|
|
- if (CollUtil.isNotEmpty(updateNavDoList) && updateNavDoList.size() > 1) {
|
|
|
- updateNavDoList = updateNavDoList.stream().sorted(Comparator.comparing(NavDO::getPriceDate)).collect(Collectors.toList());
|
|
|
+ if (CollUtil.isNotEmpty(navDOS) && navDOS.size() > 1) {
|
|
|
+ navDOS = navDOS.stream().sorted(Comparator.comparing(NavDO::getPriceDate)).collect(Collectors.toList());
|
|
|
}
|
|
|
//因为要做振幅检测,所以不能使用批量插入的方式
|
|
|
- for(NavDO insertDO : insertNavDoList){
|
|
|
+ for(NavDO insertDO : navDOS){
|
|
|
BigDecimal amplitude = amplitudeNav(insertDO);
|
|
|
if(amplitude.compareTo(BigDecimal.valueOf(1)) >= 0){
|
|
|
//振幅超过100%不可以入库,要给出提示信息
|
|
@@ -527,21 +520,17 @@ public class EmailParseService {
|
|
|
if(amplitude.compareTo(BigDecimal.valueOf(0.2)) >= 0){
|
|
|
saveAmplitudeFundNav(insertDO,fileId,NavParseStatusConst.AMPLITUDE_EXCEPTION,1);
|
|
|
}
|
|
|
- navMapper.batchInsert(CollUtil.toList(insertDO));
|
|
|
+ NavDO oldNavDO = navMapper.queryFundNav(insertDO);
|
|
|
+ if(oldNavDO != null){
|
|
|
+ oldNavDO.setNav(insertDO.getNav());
|
|
|
+ oldNavDO.setCumulativeNavWithdrawal(insertDO.getCumulativeNavWithdrawal());
|
|
|
+ oldNavDO.setUpdateTime(new Date());
|
|
|
+ navMapper.updateNav(oldNavDO);
|
|
|
+ }else{
|
|
|
+ navMapper.saveNav(insertDO);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- for(NavDO updateDO : updateNavDoList){
|
|
|
- BigDecimal amplitude = amplitudeNav(updateDO);
|
|
|
- if(amplitude.compareTo(BigDecimal.valueOf(1)) >= 0){
|
|
|
- //超过净值振幅不能入库,同时需要修改采集库的入库状态和异常信息
|
|
|
- saveAmplitudeFundNav(updateDO,fileId,NavParseStatusConst.AMPLITUDE_ERROR,0);
|
|
|
- }else{
|
|
|
- if(amplitude.compareTo(BigDecimal.valueOf(0.2)) >= 0){
|
|
|
- saveAmplitudeFundNav(updateDO,fileId,NavParseStatusConst.AMPLITUDE_EXCEPTION,1);
|
|
|
- }
|
|
|
- navMapper.batchUpdate(CollUtil.toList(updateDO));
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
|