|
@@ -4,9 +4,7 @@ import com.simuwang.base.common.enums.ParseStatus;
|
|
|
import com.simuwang.base.common.support.MybatisPage;
|
|
|
import com.simuwang.base.common.util.DateUtils;
|
|
|
import com.simuwang.base.common.util.StringUtil;
|
|
|
-import com.simuwang.base.mapper.EmailFileInfoMapper;
|
|
|
-import com.simuwang.base.mapper.EmailParseInfoMapper;
|
|
|
-import com.simuwang.base.mapper.EmailTypeRuleMapper;
|
|
|
+import com.simuwang.base.mapper.*;
|
|
|
import com.simuwang.base.pojo.dos.EmailFileInfoDO;
|
|
|
import com.simuwang.base.pojo.dos.EmailParseDetailDO;
|
|
|
import com.simuwang.base.pojo.dos.EmailParseInfoDO;
|
|
@@ -23,10 +21,7 @@ import com.smppw.utils.DateUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -46,6 +41,11 @@ public class ParseEmailServiceImpl implements ParseEmailService {
|
|
|
|
|
|
@Autowired
|
|
|
private EmailFileInfoMapper emailFileInfoMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private EmailFundNavMapper emailFundNavMapper;
|
|
|
+ @Autowired
|
|
|
+ private EmailFundAssetMapper emailFundAssetMapper;
|
|
|
@Override
|
|
|
public void saveEmailType(EmailTypeRuleVO emailTypeRuleVO) {
|
|
|
EmailTypeRuleDO ruleDO = new EmailTypeRuleDO();
|
|
@@ -143,9 +143,68 @@ public class ParseEmailServiceImpl implements ParseEmailService {
|
|
|
@Override
|
|
|
public MybatisPage<EmailParseDetailVO> searchEmailDetailById(EmailFileQuery emailFileQuery) {
|
|
|
//根据邮件ID获取附件信息
|
|
|
- List<EmailParseDetailDO> dataList = emailFileInfoMapper.searchEmailDetailById(emailFileQuery);
|
|
|
- List<EmailParseDetailVO> result = dataList.stream().filter(e -> StringUtil.isNotNull(e)).map(EmailParseDetailDO::toVO).collect(Collectors.toList());
|
|
|
- long total = emailFileInfoMapper.countEmailDetailById(emailFileQuery);
|
|
|
+ Integer fileId = emailFileQuery.getFileId();
|
|
|
+ List<String> priceDateList = emailFileInfoMapper.getAllPriceDateByFileId(fileId);
|
|
|
+ List<EmailParseDetailDO> dataList = new ArrayList<>();
|
|
|
+ for(String priceDate : priceDateList){
|
|
|
+ List<EmailParseDetailDO> navList = emailFundNavMapper.selectFundNavByFielId(fileId,priceDate);
|
|
|
+ List<EmailParseDetailDO> assetList = emailFundAssetMapper.selectFundAssetByFielId(fileId,priceDate);
|
|
|
+ //整合
|
|
|
+ if(navList.size() > 0){
|
|
|
+ //先处理净值
|
|
|
+ for(EmailParseDetailDO navDO : navList){
|
|
|
+ for(EmailParseDetailDO assetDO : assetList){
|
|
|
+ if(navDO.getFundId() != null && navDO.getFundId().equals(assetDO.getFundId())){
|
|
|
+ navDO.setAssetExceptionStatus(assetDO.getAssetExceptionStatus());
|
|
|
+ navDO.setAssetIsStored(assetDO.getAssetIsStored());
|
|
|
+ navDO.setAssetNet(assetDO.getAssetNet());
|
|
|
+ navDO.setAssetShare(assetDO.getAssetShare());
|
|
|
+ }else if(navDO.getRegisterNumber() != null && navDO.getRegisterNumber().equals(assetDO.getRegisterNumber())){
|
|
|
+ navDO.setAssetExceptionStatus(assetDO.getAssetExceptionStatus());
|
|
|
+ navDO.setAssetIsStored(assetDO.getAssetIsStored());
|
|
|
+ navDO.setAssetNet(assetDO.getAssetNet());
|
|
|
+ navDO.setAssetShare(assetDO.getAssetShare());
|
|
|
+ }else if(navDO.getFundName() != null && navDO.getFundName().equals(assetDO.getFundName())){
|
|
|
+ navDO.setAssetExceptionStatus(assetDO.getAssetExceptionStatus());
|
|
|
+ navDO.setAssetIsStored(assetDO.getAssetIsStored());
|
|
|
+ navDO.setAssetNet(assetDO.getAssetNet());
|
|
|
+ navDO.setAssetShare(assetDO.getAssetShare());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataList.add(navDO);
|
|
|
+ }
|
|
|
+ //处理规模
|
|
|
+ for(EmailParseDetailDO assetDO : assetList){
|
|
|
+ int idx=0;
|
|
|
+ for(EmailParseDetailDO dataDO : dataList){
|
|
|
+ if((dataDO.getFundId() != null && dataDO.getFundId().equals(assetDO.getFundId()))
|
|
|
+ || (dataDO.getRegisterNumber() != null && dataDO.getRegisterNumber().equals(assetDO.getRegisterNumber()))
|
|
|
+ || (dataDO.getFundName() != null && dataDO.getFundName().equals(assetDO.getFundName()))){
|
|
|
+ idx++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //没有找到说明只有规模没有净值
|
|
|
+ if(idx == 0){
|
|
|
+ dataList.add(assetDO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ long total = dataList.size();
|
|
|
+ List<EmailParseDetailDO> resultDO = null;
|
|
|
+ long current = emailFileQuery.getCurrent();
|
|
|
+ long pageSize = emailFileQuery.getPageSize();
|
|
|
+ long offset = emailFileQuery.getOffset();
|
|
|
+ if(pageSize >= dataList.size()){
|
|
|
+ resultDO = dataList.subList(Integer.parseInt(offset+""),dataList.size());
|
|
|
+ }else{
|
|
|
+ if(current*pageSize > dataList.size()){
|
|
|
+ resultDO = dataList.subList(Integer.parseInt(offset+""),dataList.size());
|
|
|
+ }else{
|
|
|
+ resultDO = dataList.subList(Integer.parseInt(offset+""),Integer.parseInt(current*pageSize+""));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<EmailParseDetailVO> result = resultDO.stream().filter(e -> StringUtil.isNotNull(e)).map(EmailParseDetailDO::toVO).collect(Collectors.toList());
|
|
|
return MybatisPage.of(total,result);
|
|
|
}
|
|
|
}
|