Selaa lähdekoodia

Merge branch 'develop' of http://112.74.196.215:3000/Tech2/data-daq into develop

wangzaijun 7 kuukautta sitten
vanhempi
commit
3737b3109a
21 muutettua tiedostoa jossa 154 lisäystä ja 43 poistoa
  1. 0 4
      service-base/pom.xml
  2. 6 5
      service-base/src/main/java/com/simuwang/base/common/conts/ValuationConst.java
  3. 1 1
      service-base/src/main/java/com/simuwang/base/common/enums/DeletionType.java
  4. 7 7
      service-base/src/main/java/com/simuwang/base/common/util/EmailUtil.java
  5. 14 0
      service-base/src/main/java/com/simuwang/base/common/util/ValuationDataUtils.java
  6. 1 1
      service-base/src/main/java/com/simuwang/base/mapper/DeletionInfoMapper.java
  7. 3 0
      service-base/src/main/java/com/simuwang/base/mapper/DistributionMapper.java
  8. 5 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/EmailParseInfoDO.java
  9. 3 2
      service-base/src/main/java/com/simuwang/base/pojo/dto/EmailContentInfoDTO.java
  10. 24 1
      service-base/src/main/java/com/simuwang/base/pojo/valuation/AssetsValuationDetails.java
  11. 1 1
      service-base/src/main/java/com/simuwang/base/pojo/vo/FundDeletionRemarkVO.java
  12. 4 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/FundDeletionTypeVO.java
  13. 11 2
      service-base/src/main/resources/mapper/DeletionInfoMapper.xml
  14. 5 1
      service-base/src/main/resources/mapper/DistributionMapper.xml
  15. 1 0
      service-base/src/main/resources/mapper/EmailParseInfoMapper.xml
  16. 1 0
      service-base/src/main/resources/mapper/NavMapper.xml
  17. 20 13
      service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java
  18. 6 0
      service-daq/src/main/java/com/simuwang/daq/service/ValuationParseService.java
  19. 9 1
      service-deploy/src/main/test/java/com/simuwang/datadaq/DataTrusteeApplicationTests.java
  20. 1 1
      service-manage/src/main/java/com/simuwang/manage/service/impl/DeletionServiceImpl.java
  21. 31 3
      service-manage/src/main/java/com/simuwang/manage/task/FundDeletionTask.java

+ 0 - 4
service-base/pom.xml

@@ -132,10 +132,6 @@
             <version>2.0.1</version>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.angus</groupId>
-            <artifactId>angus-mail</artifactId>
-        </dependency>
-        <dependency>
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>
             <version>1.5</version>

+ 6 - 5
service-base/src/main/java/com/simuwang/base/common/conts/ValuationConst.java

@@ -1,10 +1,5 @@
 package com.simuwang.base.common.conts;
 
-/**
- * @author Rain
- * @date 2023/6/5 15:20
- * @description
- */
 public class ValuationConst {
 
     /**
@@ -17,4 +12,10 @@ public class ValuationConst {
      */
     public static final String[] NET_ASSET_VALUE = {"资产净值", "基金资产净值", "基金资产净值:", "基金资产净值:", "资产资产净值",
             "资产资产净值:", "资产资产净值:", "信托资产净值", "信托资产净值:", "信托资产净值:"};
+
+    /**
+     * 资产份额
+     */
+    public static final String[] ASSET_SHARE_VALUE = {"实收资本", "实收资本:", "实收资本:","实收信托", "实收信托:", "实收信托:"};
+
 }

+ 1 - 1
service-base/src/main/java/com/simuwang/base/common/enums/DeletionType.java

@@ -10,7 +10,7 @@ import java.util.stream.Stream;
  */
 public enum DeletionType {
     //单位分红/拆分比例
-    NAV_DELETION(1, "净值缺失"), ASSET_DELETION(2, "规模缺失"), DISTRIBUTION_DELETION(3, "分红缺失");
+    NAV_DELETION(1, "净值缺失"), ASSET_DELETION(2, "规模缺失"), DISTRIBUTION_DELETION(3, "分红缺失"), NO_DELETION(4, "已补充");
 
     private final Integer code;
     private final String info;

+ 7 - 7
service-base/src/main/java/com/simuwang/base/common/util/EmailUtil.java

@@ -9,6 +9,7 @@ import cn.hutool.extra.mail.JakartaUserPassAuthenticator;
 import com.simuwang.base.common.conts.DateConst;
 import com.simuwang.base.pojo.dto.EmailContentInfoDTO;
 import com.simuwang.base.pojo.dto.MailboxInfoDTO;
+import com.sun.mail.imap.IMAPStore;
 import jakarta.mail.Message;
 import jakarta.mail.MessagingException;
 import jakarta.mail.Session;
@@ -17,7 +18,6 @@ import jakarta.mail.internet.MimeBodyPart;
 import jakarta.mail.internet.MimeMultipart;
 import jakarta.mail.internet.MimeUtility;
 import org.apache.commons.io.FileUtils;
-import org.eclipse.angus.mail.imap.IMAPSSLStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -151,11 +151,11 @@ public class EmailUtil {
                 if (partContent.toString().contains("<table")) {
                     emailContentInfoDTO.setEmailContent(partContent.toString());
                     String savePath = filePath + fileName;
-                    File savefile = new File(savePath);
-                    if (!savefile.exists()) {
-                        if (!savefile.getParentFile().exists()) {
-                            savefile.getParentFile().mkdirs();
-                            savefile.getParentFile().setExecutable(true);
+                    File saveFile = new File(savePath);
+                    if (!saveFile.exists()) {
+                        if (!saveFile.getParentFile().exists()) {
+                            saveFile.getParentFile().mkdirs();
+                            saveFile.getParentFile().setExecutable(true);
                         }
                         FileUtil.writeFile(savePath, partContent.toString());
                     }
@@ -200,7 +200,7 @@ public class EmailUtil {
         try {
             String protocol = mailboxInfoDTO.getProtocol().equals(IMAP) ? "imaps" : "pop3";
             if (mailboxInfoDTO.getProtocol().contains(IMAP)) {
-                IMAPSSLStore imapStore = (IMAPSSLStore) session.getStore(protocol);
+                IMAPStore imapStore = (IMAPStore) session.getStore(protocol);
                 imapStore.connect(mailboxInfoDTO.getHost(), mailboxInfoDTO.getAccount(), mailboxInfoDTO.getPassword());
                 // 网易邮箱需要带上身份标识,详情请看:https://www.hmail163.com/content/?404.html
                 Map<String, String> clientParams = new HashMap<>(2);

+ 14 - 0
service-base/src/main/java/com/simuwang/base/common/util/ValuationDataUtils.java

@@ -133,6 +133,20 @@ public class ValuationDataUtils {
     }
 
     /**
+     * 校验该科目是否是资产份额
+     *
+     * @param str 待校验字符串
+     * @return 检验结果
+     */
+    public static boolean checkAssetShare(String str) {
+        if (StringUtils.isEmpty(str)) {
+            return false;
+        }
+        long count = Arrays.stream(ValuationConst.ASSET_SHARE_VALUE).filter(p -> p.trim().equals(str)).count();
+        return count > 0;
+    }
+
+    /**
      * 校验该科目是否是资产净值
      *
      * @param str 待校验字符串

+ 1 - 1
service-base/src/main/java/com/simuwang/base/mapper/DeletionInfoMapper.java

@@ -32,7 +32,7 @@ public interface DeletionInfoMapper {
 
     void batchUpdate(@Param("itemDoList") List<FundDeletionInfoVO> fundDeletionInfoVOList);
 
-    void updateRemark(@Param("fundId") String fundId, @Param("deletionType") Integer deletionType, @Param("remark")String remark);
+    void updateRemark(@Param("fundId") String fundId, @Param("deletionType") Integer deletionType,@Param("deletionDate") String deletionDate, @Param("remark")String remark);
 
     List<FundDeletionInfoDO> selectFundDeletionInfoVOList(@Param("fundIdList") List<String> fundIdList);
 

+ 3 - 0
service-base/src/main/java/com/simuwang/base/mapper/DistributionMapper.java

@@ -1,5 +1,6 @@
 package com.simuwang.base.mapper;
 
+import com.simuwang.base.common.enums.DistributeType;
 import com.simuwang.base.pojo.dos.DistributionDO;
 import com.simuwang.base.pojo.dos.DistributionTablePageDO;
 import com.simuwang.base.pojo.dto.query.DistributionPageQuery;
@@ -31,4 +32,6 @@ public interface DistributionMapper {
     void saveDistribution(DistributionDO distributionDO);
 
     void deleteDistribution(@Param("ids") List<Integer> idList);
+
+    List<DistributionDO> getDistributionByFundId(@Param("fundId")String fundId,@Param("distributeType") DistributeType distributeType);
 }

+ 5 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/EmailParseInfoDO.java

@@ -18,6 +18,11 @@ public class EmailParseInfoDO {
     @TableId(value = "id")
     private Integer id;
     /**
+     * 邮件发送方
+     */
+    @TableField(value = "sender_email")
+    private String senderEmail;
+    /**
      * 邮箱地址
      */
     @TableField(value = "email")

+ 3 - 2
service-base/src/main/java/com/simuwang/base/pojo/dto/EmailContentInfoDTO.java

@@ -55,9 +55,10 @@ public class EmailContentInfoDTO implements Serializable, Cloneable {
     private String emailContent;
 
     /**
-     * 收件
+     * 邮件发送
      */
-    private String toEmail;
+    private String senderEmail;
+
     /**
      * 文件id(重新解析邮件功能)
      */

+ 24 - 1
service-base/src/main/java/com/simuwang/base/pojo/valuation/AssetsValuationDetails.java

@@ -3,7 +3,6 @@ package com.simuwang.base.pojo.valuation;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-
 public class AssetsValuationDetails {
 
 	private int id;
@@ -26,7 +25,31 @@ public class AssetsValuationDetails {
 	private Double netAssetsValue;
 	private Double increment;
 
+	private Double assetShare;
+
+	public void setNav(Double nav) {
+		this.nav = nav;
+	}
+
+	public void setTotalMarketValue(Double totalMarketValue) {
+		this.totalMarketValue = totalMarketValue;
+	}
+
+	public void setNetAssetsValue(Double netAssetsValue) {
+		this.netAssetsValue = netAssetsValue;
+	}
+
+	public void setIncrement(Double increment) {
+		this.increment = increment;
+	}
+
+	public Double getAssetShare() {
+		return assetShare;
+	}
 
+	public void setAssetShare(Double assetShare) {
+		this.assetShare = assetShare;
+	}
 
 	public int getId() {
 		return id;

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/vo/FundDeletionRemarkVO.java

@@ -16,7 +16,7 @@ public class FundDeletionRemarkVO {
     /**
      * (基金ID-缺失类型)列表
      */
-    private List<FundDeletionTypeVO> FundDeletionTypeList;
+    private List<FundDeletionTypeVO> fundDeletionTypeList;
     /**
      * 备注
      */

+ 4 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/FundDeletionTypeVO.java

@@ -18,4 +18,8 @@ public class FundDeletionTypeVO {
      * 缺失类型
      */
     private Integer deletionType;
+    /**
+     * 缺失日期
+     */
+    private String deletionDate;
 }

+ 11 - 2
service-base/src/main/resources/mapper/DeletionInfoMapper.xml

@@ -32,13 +32,22 @@
                 deletion_type = #{itemDo.deletionType},
                 deletion_date=#{itemDo.deletionDate},
                 remark=#{itemDo.remark},
-                updatetime=#{itemDo.updateTime}
+                updatetime=sysdate()
             </set>
             where isvalid = 1 and id=#{itemDo.id}
         </foreach>
     </update>
     <update id="updateRemark">
-        update PPW_EMAIL.deletion_info set remark=#{remark} where fund_id=#{fundId} and deletion_type=#{deletionType} and isvalid=1
+        update PPW_EMAIL.deletion_info set remark=#{remark} where isvalid=1
+        <if test="fundId != null and fundId !=''">
+            and fund_id=#{fundId}
+        </if>
+        <if test="deletionType != null and deletionType !=''">
+            and deletion_type=#{deletionType}
+        </if>
+        <if test="deletionDate != null and deletionDate !=''">
+            and deletion_date=#{deletionDate}
+        </if>
     </update>
     <select id="searchDeletionList" resultMap="BaseResultMap"
             parameterType="com.simuwang.base.pojo.dto.query.DeletionPageQuery">

+ 5 - 1
service-base/src/main/resources/mapper/DistributionMapper.xml

@@ -121,8 +121,12 @@
         select id,fund_id,distribute_date,distribute_type,distribution,isvalid,creatorid,createtime,updatetime,updaterid
         from PPW_EMAIL.distribution where isvalid =1 and id=#{id}
     </select>
-    <select id="selectDistributionByDate" resultType="com.simuwang.base.pojo.dos.DistributionDO">
+    <select id="selectDistributionByDate" resultMap="BaseMap">
         select id,fund_id,distribute_date,distribute_type,distribution,isvalid,creatorid,createtime,updatetime,updaterid
         from PPW_EMAIL.distribution where isvalid =1 and fund_id=#{fundId} and distribute_date=#{distributeDate}
     </select>
+    <select id="getDistributionByFundId" resultMap="BaseMap">
+        select id,fund_id,distribute_date,distribute_type,distribution,isvalid,creatorid,createtime,updatetime,updaterid
+        from PPW_EMAIL.distribution where isvalid =1 and fund_id=#{fundId} and distribute_type=#{distributeType}
+    </select>
 </mapper>

+ 1 - 0
service-base/src/main/resources/mapper/EmailParseInfoMapper.xml

@@ -4,6 +4,7 @@
     <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.EmailParseInfoDO">
         <id column="id" property="id"/>
         <result column="email" property="email"/>
+        <result column="sender_email" property="senderEmail"/>
         <result column="email_date" property="emailDate" />
         <result column="parse_date" property="parseDate" />
         <result column="email_title" property="emailTitle"/>

+ 1 - 0
service-base/src/main/resources/mapper/NavMapper.xml

@@ -89,6 +89,7 @@
         from PPW_EMAIL.nav
         where isvalid = 1
           and fund_id = #{fundId}
+        order by price_date
     </select>
 
 

+ 20 - 13
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -134,9 +134,10 @@ public class EmailParseService {
         String emailDate = CollUtil.isNotEmpty(emailContentInfoDTOList) ? emailContentInfoDTOList.get(0).getEmailDate() : null;
         Integer emailType = CollUtil.isNotEmpty(emailContentInfoDTOList) ? emailContentInfoDTOList.get(0).getEmailType() : null;
         Integer emailId = CollUtil.isNotEmpty(emailContentInfoDTOList) ? emailContentInfoDTOList.get(0).getEmailId() : null;
+        String senderEmail = CollUtil.isNotEmpty(emailContentInfoDTOList) ? emailContentInfoDTOList.get(0).getSenderEmail() : null;
         Date parseDate = new Date();
         int emailParseStatus = EmailParseStatusConst.SUCCESS;
-        EmailParseInfoDO emailParseInfoDO = buildEmailParseInfo(emailId, emailAddress, emailDate, emailTitle, emailType, emailParseStatus, parseDate);
+        EmailParseInfoDO emailParseInfoDO = buildEmailParseInfo(emailId, emailAddress, senderEmail, emailDate, emailTitle, emailType, emailParseStatus, parseDate);
         emailId = saveEmailParseInfo(emailParseInfoDO);
 
         for (Map.Entry<EmailContentInfoDTO, List<EmailFundNavDTO>> fileNameNavEntry : fileNameNavMap.entrySet()) {
@@ -408,10 +409,11 @@ public class EmailParseService {
         return emailParseInfoDO.getId();
     }
 
-    private EmailParseInfoDO buildEmailParseInfo(Integer emailId, String emailAddress, String emailDate,
+    private EmailParseInfoDO buildEmailParseInfo(Integer emailId, String emailAddress, String senderEmail, String emailDate,
                                                  String emailTitle, Integer emailType, Integer parseStatus, Date parseDate) {
         EmailParseInfoDO emailParseInfoDO = new EmailParseInfoDO();
         emailParseInfoDO.setId(emailId);
+        emailParseInfoDO.setSenderEmail(senderEmail);
         emailParseInfoDO.setEmail(emailAddress);
         emailParseInfoDO.setEmailDate(DateUtil.parse(emailDate, DateConst.YYYY_MM_DD_HH_MM_SS));
         emailParseInfoDO.setParseDate(parseDate);
@@ -463,20 +465,22 @@ public class EmailParseService {
         Folder folder = store.getFolder("INBOX");
         folder.open(Folder.READ_ONLY);
         // 获取邮件日期大于等于startDate的邮件(搜索条件只支持按天)
-        SearchTerm startDateTerm = new ReceivedDateTerm(ComparisonTerm.GE, startDate);
-        Message[] messages = folder.search(startDateTerm);
+         SearchTerm startDateTerm = new ReceivedDateTerm(ComparisonTerm.GE, startDate);
+         Message[] messages = folder.search(startDateTerm);
+       // Message[] messages = folder.getMessages();
         Map<String, List<EmailContentInfoDTO>> emailMessageMap = MapUtil.newHashMap();
         for (Message message : messages) {
             List<EmailContentInfoDTO> emailContentInfoDTOList = CollUtil.newArrayList();
             String uuidKey = UUID.randomUUID().toString().replaceAll("-", "");
             Integer emailType;
+            String senderEmail;
             try {
                 Date emailDate = message.getSentDate();
-                boolean isParseConditionSatisfied = emailDate == null || (endDate == null && emailDate.compareTo(startDate) > 0)
-                        || emailDate.compareTo(startDate) < 0 || (endDate != null && emailDate.compareTo(endDate) > 0);
+                boolean isParseConditionSatisfied = emailDate == null || (endDate == null && emailDate.compareTo(startDate) > 0) || (startDate != null && emailDate.compareTo(startDate) < 0);
                 if (isParseConditionSatisfied) {
                     continue;
                 }
+                senderEmail = message.getFrom()[0].toString();
                 emailType = EmailUtil.getEmailTypeBySubject(message.getSubject(), emailTypeMap);
                 String emailDateStr = DateUtil.format(emailDate, DateConst.YYYY_MM_DD_HH_MM_SS);
                 if (emailType == null) {
@@ -496,12 +500,12 @@ public class EmailParseService {
                     emailContentInfoDTO.setEmailDate(emailDateStr);
                     String fileName = message.getSubject() + DateUtil.format(emailDate, DateConst.YYYYMMDDHHMMSS24);
                     String filePath = path + mailboxInfoDTO.getAccount() + "/" + DateUtil.format(emailDate, DateConst.YYYY_MM_DD) + "/" + fileName + ".html";
-                    File savefile = new File(filePath);
-                    savefile.setReadable(true);
-                    if (!savefile.exists()) {
-                        if (!savefile.getParentFile().exists()) {
-                            savefile.getParentFile().mkdirs();
-                            savefile.getParentFile().setExecutable(true);
+                    File saveFile = new File(filePath);
+                    saveFile.setReadable(true);
+                    if (!saveFile.exists()) {
+                        if (!saveFile.getParentFile().exists()) {
+                            saveFile.getParentFile().mkdirs();
+                            saveFile.getParentFile().setExecutable(true);
                         }
                     }
                     FileUtil.writeFile(filePath, content.toString());
@@ -509,7 +513,10 @@ public class EmailParseService {
                     emailContentInfoDTOList.add(emailContentInfoDTO);
                 }
                 if (CollUtil.isNotEmpty(emailContentInfoDTOList)) {
-                    emailContentInfoDTOList.forEach(e -> e.setEmailType(emailType));
+                    emailContentInfoDTOList.forEach(e -> {
+                        e.setEmailType(emailType);
+                        e.setSenderEmail(senderEmail);
+                    });
                     emailMessageMap.put(uuidKey, emailContentInfoDTOList);
                 }
             } catch (Exception e) {

+ 6 - 0
service-daq/src/main/java/com/simuwang/daq/service/ValuationParseService.java

@@ -507,6 +507,8 @@ public class ValuationParseService {
         Double netAssetMarketValue = null;
         // 基金估值增值
         Double increment = null;
+        // 资产份额
+        Double assetShare = null;
 
         for (int i = 0; i < lBases.size(); i++) {
 
@@ -520,6 +522,9 @@ public class ValuationParseService {
             if (ValuationDataUtils.checkMarketValue(originalSubjectCode)) {
                 totalMarketValue = ValuationDataUtils.string2Double(d.getMarketValue());
             }
+            if (ValuationDataUtils.checkAssetShare(originalSubjectCode)) {
+                assetShare = ValuationDataUtils.string2Double(d.getMarketValue());
+            }
             if (ValuationDataUtils.checkNetAssetsValue(originalSubjectCode)) {
                 netAssetMarketValue = ValuationDataUtils.string2Double(d.getMarketValue());
                 increment = ValuationDataUtils.string2Double(d.getValueAdded());
@@ -595,6 +600,7 @@ public class ValuationParseService {
             list.add(data);
         }
         extInfo.setTotalMarketValue(totalMarketValue);
+        extInfo.setAssetShare(assetShare);
         extInfo.setNetAssetsValue(netAssetMarketValue);
         extInfo.setIncrement(increment);
         avInfo.setExtInfo(extInfo);

+ 9 - 1
service-deploy/src/main/test/java/com/simuwang/datadaq/DataTrusteeApplicationTests.java

@@ -35,9 +35,17 @@ class DataTrusteeApplicationTests {
         emailInfoDTO.setHost("imap.exmail.qq.com");
         emailInfoDTO.setPort("993");
         emailInfoDTO.setProtocol("imap");
+
+        emailInfoDTO.setAccount("jjpj_test");
+        emailInfoDTO.setPassword("shzq#919");
+//        emailInfoDTO.setAccount("fofservice@simuwang.com");
+//        emailInfoDTO.setPassword("cJH@2021");
+        emailInfoDTO.setHost("mail.shzq.com");
+        emailInfoDTO.setPort("993");
+        emailInfoDTO.setProtocol("imap");
         Map<Integer, List<String>> emailTypeMap = MapUtil.newHashMap();
         emailTypeMap.put(1, List.of("净值"));
-        Date startDate = DateUtil.parse("2024-09-19 09:20:00", DateConst.YYYY_MM_DD_HH_MM_SS);
+        Date startDate = DateUtil.parse("2024-09-19 11:20:00", DateConst.YYYY_MM_DD_HH_MM_SS);
         Date endDate = DateUtil.parse("2024-09-19 16:00:00", DateConst.YYYY_MM_DD_HH_MM_SS);
         try {
             emailParseService.parseEmail(emailInfoDTO, startDate, endDate);

+ 1 - 1
service-manage/src/main/java/com/simuwang/manage/service/impl/DeletionServiceImpl.java

@@ -67,7 +67,7 @@ public class DeletionServiceImpl implements DeletionService {
     public void saveBatchDeletionRemark(FundDeletionRemarkVO fundDeletionRemarkVO) {
         String remark = fundDeletionRemarkVO.getRemark();
         for(FundDeletionTypeVO remarkVO : fundDeletionRemarkVO.getFundDeletionTypeList()){
-            deletionInfoMapper.updateRemark(remarkVO.getFundId(),remarkVO.getDeletionType(),remark);
+            deletionInfoMapper.updateRemark(remarkVO.getFundId(),remarkVO.getDeletionType(),remarkVO.getDeletionDate(),remark);
         }
     }
 

+ 31 - 3
service-manage/src/main/java/com/simuwang/manage/task/FundDeletionTask.java

@@ -2,6 +2,7 @@ package com.simuwang.manage.task;
 
 import cn.hutool.core.date.DateUtil;
 import com.simuwang.base.common.enums.DeletionType;
+import com.simuwang.base.common.enums.DistributeType;
 import com.simuwang.base.common.enums.Frequency;
 import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.StringUtil;
@@ -42,6 +43,9 @@ public class FundDeletionTask {
 
     @Autowired
     private DeletionInfoMapper deletionInfoMapper;
+
+    @Autowired
+    private DistributionMapper distributionMapper;
     @Scheduled(cron = "0 0 5,12,20 * * ?")
     public void computeDeletion(){
         List<String> fundIdList = navMapper.getAllFundId();
@@ -62,6 +66,16 @@ public class FundDeletionTask {
             List<TradeDateDO> tradeDateDOList = tradeDateMapper.selectTradeDate(inceptionDate,today);
             navDeletion(fundId,navDOList,tradeDateDOList,fundReportFrequencyDO);
             assetDeletion(fundId,assetDOList,tradeDateDOList,fundReportFrequencyDO);
+            distributionDeletion(fundId,navDOList);
+        }
+    }
+
+    private void distributionDeletion(String fundId, List<NavDO> navDOList) {
+        //查询是否存在拆分
+        List<DistributionDO> distributionDOS = distributionMapper.getDistributionByFundId(fundId, DistributeType.DIVIDENDS_SPLIT);
+        if(distributionDOS.size() > 0){
+            //存在拆分,不做分红缺失计算,同时吧以往的数据置为无效
+
         }
     }
 
@@ -71,6 +85,7 @@ public class FundDeletionTask {
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getTradeDate(),DateUtils.YYYY_MM_DD)));
             for(String tradeDate : tradeListMap.keySet()){
                 if(navListMap.containsKey(tradeDate)){
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //写入缺失信息表
@@ -84,9 +99,9 @@ public class FundDeletionTask {
             for(String priceDate : navListMap.keySet()){
                 Integer weekOfYear = DateUtil.weekOfYear(DateUtils.parse(priceDate,DateUtils.YYYY_MM_DD));
                 if(weekNavListMap.containsKey(weekOfYear)){
-                    List<AssetDO> navDOS = weekNavListMap.get(weekOfYear);
-                    navDOS.addAll(navListMap.get(priceDate));
-                    weekNavListMap.put(weekOfYear,navDOS);
+                    List<AssetDO> assetDOS = weekNavListMap.get(weekOfYear);
+                    assetDOS.addAll(navListMap.get(priceDate));
+                    weekNavListMap.put(weekOfYear,assetDOS);
                 }else{
                     List<AssetDO> navDOS = new ArrayList<>();
                     navDOS.addAll(navListMap.get(priceDate));
@@ -96,6 +111,9 @@ public class FundDeletionTask {
             Map<Integer,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getWeekOfYear()));
             for(Integer weekOfYear : tradeListMap.keySet()){
                 if(weekNavListMap.containsKey(weekOfYear)){
+                    List<AssetDO> assetDOS = weekNavListMap.get(weekOfYear);
+                    String tradeDate = DateUtils.format(assetDOS.get(assetDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期
@@ -127,6 +145,9 @@ public class FundDeletionTask {
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getYearmonth()));
             for(String yearMonth : tradeListMap.keySet()){
                 if(monthNavListMap.containsKey(yearMonth)){
+                    List<AssetDO> assetDOS = monthNavListMap.get(yearMonth);
+                    String tradeDate = DateUtils.format(assetDOS.get(assetDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期
@@ -148,6 +169,7 @@ public class FundDeletionTask {
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getTradeDate(),DateUtils.YYYY_MM_DD)));
             for(String tradeDate : tradeListMap.keySet()){
                 if(navListMap.containsKey(tradeDate)){
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //写入缺失信息表
@@ -173,6 +195,9 @@ public class FundDeletionTask {
             Map<Integer,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getWeekOfYear()));
             for(Integer weekOfYear : tradeListMap.keySet()){
                 if(weekNavListMap.containsKey(weekOfYear)){
+                    List<NavDO> navDOS = weekNavListMap.get(weekOfYear);
+                    String tradeDate = DateUtils.format(navDOS.get(navDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期
@@ -204,6 +229,9 @@ public class FundDeletionTask {
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getYearmonth()));
             for(String yearMonth : tradeListMap.keySet()){
                 if(monthNavListMap.containsKey(yearMonth)){
+                    List<NavDO> navDOS = monthNavListMap.get(yearMonth);
+                    String tradeDate = DateUtils.format(navDOS.get(navDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期