浏览代码

fix:别名管理查询保存优化,缺失数据查询优化

chenjianhua 1 月之前
父节点
当前提交
2403f042e5
共有 34 个文件被更改,包括 522 次插入114 次删除
  1. 8 3
      service-base/src/main/java/com/simuwang/base/mapper/DeletionInfoMapper.java
  2. 11 0
      service-base/src/main/java/com/simuwang/base/mapper/DeletionTypeStatisticsMapper.java
  3. 2 0
      service-base/src/main/java/com/simuwang/base/mapper/FundAliasMapper.java
  4. 10 0
      service-base/src/main/java/com/simuwang/base/mapper/FundNotMappingMapper.java
  5. 1 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/DeletionInfoDO.java
  6. 57 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/DeletionTypeStatisticsDO.java
  7. 2 1
      service-base/src/main/java/com/simuwang/base/pojo/dos/DistributionDO.java
  8. 6 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/FundAliasDO.java
  9. 12 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/FundDeletionTypeDO.java
  10. 43 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/FundNotMappingInfoDO.java
  11. 11 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/FundRegisterDO.java
  12. 26 70
      service-base/src/main/resources/mapper/DeletionInfoMapper.xml
  13. 21 0
      service-base/src/main/resources/mapper/DeletionTypeStatisticsMapper.xml
  14. 6 0
      service-base/src/main/resources/mapper/EmailFundAssetMapper.xml
  15. 6 0
      service-base/src/main/resources/mapper/EmailFundNavMapper.xml
  16. 8 1
      service-base/src/main/resources/mapper/FundAliasMapper.xml
  17. 31 0
      service-base/src/main/resources/mapper/FundNotMappingMapper.xml
  18. 2 0
      service-deploy/src/main/java/com/simuwang/Application.java
  19. 1 1
      service-deploy/src/main/resources/application.yml
  20. 14 6
      service-manage/src/main/java/com/simuwang/manage/api/deletion/DeletionController.java
  21. 8 2
      service-manage/src/main/java/com/simuwang/manage/api/fund/FunAliasController.java
  22. 28 2
      service-manage/src/main/java/com/simuwang/manage/init/CompleteScheduleConfig.java
  23. 9 2
      service-manage/src/main/java/com/simuwang/manage/service/DeletionService.java
  24. 2 0
      service-manage/src/main/java/com/simuwang/manage/service/EmailFundAssetService.java
  25. 2 0
      service-manage/src/main/java/com/simuwang/manage/service/EmailFundNavService.java
  26. 6 1
      service-manage/src/main/java/com/simuwang/manage/service/FundAliasService.java
  27. 9 0
      service-manage/src/main/java/com/simuwang/manage/service/FundNotMappingService.java
  28. 51 4
      service-manage/src/main/java/com/simuwang/manage/service/impl/DeletionServiceImpl.java
  29. 5 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/EmailFundAssetServiceImpl.java
  30. 5 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/EmailFundNavServiceImpl.java
  31. 38 21
      service-manage/src/main/java/com/simuwang/manage/service/impl/FundAliasServiceImpl.java
  32. 26 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/FundNotMappingServiceImpl.java
  33. 4 0
      service-manage/src/main/java/com/simuwang/manage/task/FundDeletionTask.java
  34. 51 0
      service-manage/src/main/java/com/simuwang/manage/task/NotMappingFundComputeTask.java

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

@@ -1,8 +1,6 @@
 package com.simuwang.base.mapper;
 
-import com.simuwang.base.pojo.dos.DeletionInfoDO;
-import com.simuwang.base.pojo.dos.EmailDeletionInfoDO;
-import com.simuwang.base.pojo.dos.FundDeletionInfoDO;
+import com.simuwang.base.pojo.dos.*;
 import com.simuwang.base.pojo.dto.query.DeletionPageQuery;
 import com.simuwang.base.pojo.dto.query.FundDeletionPageQuery;
 import com.simuwang.base.pojo.vo.FundDeletionInfoVO;
@@ -10,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * FileName: DeletionInfoMapper
@@ -58,4 +57,10 @@ public interface DeletionInfoMapper {
     void batchSaveDeletionInfoDO(@Param("itemDoList")List<DeletionInfoDO> insertDeletionInfoDO);
 
     void batchUpdateRemark(@Param("itemDoList")List<DeletionInfoDO> batchUpdateDeletionInfoDO);
+
+    List<FundDeletionTypeDO> getFundDeletionTypeMapList();
+
+    Integer countFundDeletion(@Param("fundId") String fundId, @Param("deletionType") Integer deletionType,@Param("type") int type);
+
+    String getLastDeletionDate(@Param("fundId") String fundId, @Param("deletionType") Integer deletionType);
 }

+ 11 - 0
service-base/src/main/java/com/simuwang/base/mapper/DeletionTypeStatisticsMapper.java

@@ -0,0 +1,11 @@
+package com.simuwang.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.simuwang.base.pojo.dos.DeletionTypeStatisticsDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface DeletionTypeStatisticsMapper extends BaseMapper<DeletionTypeStatisticsDO> {
+    DeletionTypeStatisticsDO getDeletionTypeStatistics(@Param("fundId") String fundId, @Param("deletionType")Integer deletionType);
+}

+ 2 - 0
service-base/src/main/java/com/simuwang/base/mapper/FundAliasMapper.java

@@ -1,6 +1,7 @@
 package com.simuwang.base.mapper;
 
 import com.simuwang.base.pojo.dos.FundAliasDO;
+import com.simuwang.base.pojo.dos.FundRegisterDO;
 import com.simuwang.base.pojo.dto.query.FundAliasPageQuery;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -34,4 +35,5 @@ public interface FundAliasMapper {
 
     void batchInsert(@Param("itemDoList") List<FundAliasDO> fundAliasDOS);
 
+    List<FundRegisterDO> getNotMappingFundList();
 }

+ 10 - 0
service-base/src/main/java/com/simuwang/base/mapper/FundNotMappingMapper.java

@@ -0,0 +1,10 @@
+package com.simuwang.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.simuwang.base.pojo.dos.FundNotMappingInfoDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface FundNotMappingMapper extends BaseMapper<FundNotMappingInfoDO> {
+    FundNotMappingInfoDO getFundNotMappingInfo(FundNotMappingInfoDO fundNotMappingInfoDO);
+}

+ 1 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/DeletionInfoDO.java

@@ -19,6 +19,7 @@ public class DeletionInfoDO {
     /**
      * 主键Id
      */
+    @TableId(value = "id", type=IdType.AUTO)
     private Integer id;
     /**
      * 基金ID

+ 57 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/DeletionTypeStatisticsDO.java

@@ -0,0 +1,57 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("deletion_type_statistics")
+public class DeletionTypeStatisticsDO {
+
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+
+    @TableField(value = "fund_id")
+    private String fundId;
+
+    @TableField(value = "deletion_type")
+    private Integer deletionType;
+
+    @TableField(value = "deletion_num")
+    private Integer deletionNum;
+
+    @TableField(value = "processed_num")
+    private Integer processedNum;
+    /**
+     * 是否有效:0-无效,1-有效
+     */
+    @TableField(value = "isvalid")
+    private Integer isvalid;
+    /**
+     * 创建者Id
+     */
+    @TableField(value = "creatorid")
+    private Integer creatorId;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "createtime")
+    private Date createTime;
+    /**
+     * 修改者Id
+     */
+    @TableField(value = "updaterid")
+    private Integer updaterId;
+    /**
+     * 更新时间
+     */
+    @TableField(value = "updatetime")
+    private Date updateTime;
+
+    @TableField(value = "last_deletion_date")
+    private String lastDeletionDate;
+}

+ 2 - 1
service-base/src/main/java/com/simuwang/base/pojo/dos/DistributionDO.java

@@ -1,5 +1,6 @@
 package com.simuwang.base.pojo.dos;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -20,7 +21,7 @@ public class DistributionDO {
     /**
      * 主键Id
      */
-    @TableId(value = "id")
+    @TableId(value = "id", type=IdType.AUTO)
     private Integer id;
     /**
      * 基金id

+ 6 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/FundAliasDO.java

@@ -60,6 +60,10 @@ public class FundAliasDO {
      */
     private Date updateTime;
 
+    private Integer navTotal;
+
+    private Integer assetTotal;
+
     private Date lastPriceDate;
     public FundAliasVO toVo() {
         FundAliasVO fundAliasVO = new FundAliasVO();
@@ -71,6 +75,8 @@ public class FundAliasDO {
         fundAliasVO.setTargetRegisterNumber(this.targetRegisterNumber);
         fundAliasVO.setPriceDate(this.lastPriceDate==null?null: DateUtils.format(this.lastPriceDate,DateUtils.YYYY_MM_DD));
         fundAliasVO.setCompanyName(this.companyName);
+        fundAliasVO.setNavTotal(this.navTotal);
+        fundAliasVO.setAssetTotal(this.assetTotal);
         return fundAliasVO;
     }
 }

+ 12 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/FundDeletionTypeDO.java

@@ -0,0 +1,12 @@
+package com.simuwang.base.pojo.dos;
+
+import lombok.Data;
+
+@Data
+public class FundDeletionTypeDO {
+
+    private String fundId;
+
+    private Integer deletionType;
+
+}

+ 43 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/FundNotMappingInfoDO.java

@@ -0,0 +1,43 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("fund_not_mapping_info")
+public class FundNotMappingInfoDO {
+    @TableId(type = IdType.AUTO,value = "id")
+    private Integer id;
+
+    @TableField(value = "fund_name")
+    private String fundName;
+
+    @TableField(value = "register_number")
+    private String registerNumber;
+
+    @TableField(value = "nav_total")
+    private Integer navTotal;
+
+    @TableField(value = "asset_total")
+    private Integer assetTotal;
+
+    @TableField(value = "creatorid")
+    private Integer creatorId;
+
+    @TableField(value = "updaterid")
+    private Integer updaterId;
+
+    @TableField(value = "createtime")
+    private Date createTime;
+
+    @TableField(value = "updatetime")
+    private Date updateTime;
+
+    @TableField(value = "isvalid")
+    private Integer isvalid;
+}

+ 11 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/FundRegisterDO.java

@@ -0,0 +1,11 @@
+package com.simuwang.base.pojo.dos;
+
+import lombok.Data;
+
+@Data
+public class FundRegisterDO {
+
+    private String fundName;
+
+    private String registerNumber;
+}

+ 26 - 70
service-base/src/main/resources/mapper/DeletionInfoMapper.xml

@@ -75,42 +75,15 @@
         info.fund_name,
         c.company_name,
         d.deletion_type,
-        ddn.deletion_num,
-        ddp.processed_num,
+        d.deletion_num,
+        d.processed_num,
         d.last_deletion_date
         FROM
-        (select de.fund_id,de.deletion_type,max(de.deletion_date) as last_deletion_date from PPW_EMAIL.deletion_info de where de.isvalid=1
-        group by de.fund_id,de.deletion_type) d
+        ppw_email.deletion_type_statistics d
         LEFT JOIN PPW_EMAIL.pvn_fund_info info
         ON d.fund_id = info.fund_id and info.isvalid=1
         LEFT JOIN PPW_EMAIL.pvn_company_info c
         ON info.trust_id = c.company_id and c.isvalid=1
-        LEFT JOIN
-        (SELECT
-        di.fund_id,
-        di.deletion_type,
-        COUNT(di.fund_id) AS deletion_num
-        FROM
-        PPW_EMAIL.deletion_info di
-        WHERE di.isvalid = 1
-        AND di.remark IS NULL
-        GROUP BY di.fund_id,
-        di.deletion_type) ddn
-        ON ddn.fund_id = d.fund_id
-        AND d.deletion_type = ddn.deletion_type
-        LEFT JOIN
-        (SELECT
-        dip.fund_id,
-        dip.deletion_type,
-        COUNT(dip.fund_id) AS processed_num
-        FROM
-        PPW_EMAIL.deletion_info dip
-        WHERE dip.isvalid = 1
-        AND dip.remark IS NOT NULL
-        GROUP BY dip.fund_id,
-        dip.deletion_type) ddp
-        ON ddp.fund_id = d.fund_id
-        AND d.deletion_type = ddp.deletion_type
         WHERE 1=1
         <if test="companyName != null and companyName !=''">
             and (c.company_name like concat('%',#{companyName},'%') or c.company_short_name like concat('%',#{companyName},'%'))
@@ -122,10 +95,10 @@
             and d.deletion_type=#{deletionType}
         </if>
         <if test="deletionStartNum != null and deletionStartNum != ''">
-            and ddn.deletion_num >= #{deletionStartNum}
+            and d.deletion_num >= #{deletionStartNum}
         </if>
         <if test="deletionEndNum != null and deletionEndNum != ''">
-            and ddn.deletion_num <![CDATA[ <= ]]> #{deletionEndNum}
+            and d.deletion_num <![CDATA[ <= ]]> #{deletionEndNum}
         </if>
         <choose>
             <when test="sort != null and  sort=='lastDeletionDate' and order != null and order =='asc'">
@@ -139,46 +112,13 @@
     </select>
     <select id="countDeletion" resultType="java.lang.Long"
             parameterType="com.simuwang.base.pojo.dto.query.DeletionPageQuery">
-        select count(1) from (select distinct
-        d.fund_id,
-        info.fund_name,
-        c.company_name,
-        d.deletion_type,
-        ddn.deletion_num,
-        ddp.processed_num
+        select count(1)
         FROM
-        (select de.fund_id,de.deletion_type,max(de.deletion_date) as last_deletion_date from PPW_EMAIL.deletion_info de where de.isvalid=1
-        group by de.fund_id,de.deletion_type) d
+        ppw_email.deletion_type_statistics d
         LEFT JOIN PPW_EMAIL.pvn_fund_info info
         ON d.fund_id = info.fund_id and info.isvalid=1
         LEFT JOIN PPW_EMAIL.pvn_company_info c
         ON info.trust_id = c.company_id and c.isvalid=1
-        LEFT JOIN
-        (SELECT
-        di.fund_id,
-        di.deletion_type,
-        COUNT(di.fund_id) AS deletion_num
-        FROM
-        PPW_EMAIL.deletion_info di
-        WHERE di.isvalid = 1
-        AND di.remark IS NULL
-        GROUP BY di.fund_id,
-        di.deletion_type) ddn
-        ON ddn.fund_id = d.fund_id
-        AND d.deletion_type = ddn.deletion_type
-        LEFT JOIN
-        (SELECT
-        dip.fund_id,
-        dip.deletion_type,
-        COUNT(dip.fund_id) AS processed_num
-        FROM
-        PPW_EMAIL.deletion_info dip
-        WHERE dip.isvalid = 1
-        AND dip.remark IS NOT NULL
-        GROUP BY dip.fund_id,
-        dip.deletion_type) ddp
-        ON ddp.fund_id = d.fund_id
-        AND d.deletion_type = ddp.deletion_type
         WHERE 1=1
         <if test="companyName != null and companyName !=''">
             and (c.company_name like concat('%',#{companyName},'%') or c.company_short_name like concat('%',#{companyName},'%'))
@@ -190,11 +130,11 @@
             and d.deletion_type=#{deletionType}
         </if>
         <if test="deletionStartNum != null and deletionStartNum != ''">
-            and ddn.deletion_num >= #{deletionStartNum}
+            and d.deletion_num >= #{deletionStartNum}
         </if>
         <if test="deletionEndNum != null and deletionEndNum != ''">
-            and ddn.deletion_num <![CDATA[ <= ]]> #{deletionEndNum}
-        </if>) a
+            and d.deletion_num <![CDATA[ <= ]]> #{deletionEndNum}
+        </if>
     </select>
     <select id="getLastDeletionDateByFundId" resultType="java.lang.String">
         select max(deletion_date) from PPW_EMAIL.deletion_info where fund_id=#{fundId} and deletion_type=#{deletionType}
@@ -288,6 +228,22 @@
             </foreach>
             order by info.fund_id desc,d.deletion_type desc,d.deletion_date desc
     </select>
+    <select id="getFundDeletionTypeMapList" resultType="com.simuwang.base.pojo.dos.FundDeletionTypeDO">
+        SELECT fund_id as "fundId",deletion_type as "deletionType" from PPW_EMAIL.deletion_info where isvalid=1 group by fund_id,deletion_type
+    </select>
+    <select id="countFundDeletion" resultType="java.lang.Integer">
+        select count(1) from PPW_EMAIL.deletion_info where isvalid=1 and fund_id=#{fundId} and deletion_type=#{deletionType}
+        <if test="type == 1">
+            and remark is null
+        </if>
+        <if test="type != 1">
+            and remark is not null
+        </if>
+    </select>
+    <select id="getLastDeletionDate" resultType="java.lang.String">
+        select max(deletion_date) from PPW_EMAIL.deletion_info where isvalid=1 and fund_id=#{fundId} and deletion_type=#{deletionType} AND remark is null
+    </select>
+
     <update id="removeDistributeDeletion" parameterType="java.lang.String">
         update PPW_EMAIL.deletion_info set isvalid=0,updatetime=sysdate() where fund_id=#{fundId} and remark is null
     </update>

+ 21 - 0
service-base/src/main/resources/mapper/DeletionTypeStatisticsMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.simuwang.base.mapper.DeletionTypeStatisticsMapper">
+    <resultMap id="StatisticsResultMap" type="com.simuwang.base.pojo.dos.DeletionTypeStatisticsDO">
+        <id column="id" property="id"/>
+        <result column="fund_id" property="fundId"/>
+        <result column="deletion_type" property="deletionType"/>
+        <result column="last_deletion_date" property="lastDeletionDate"/>
+        <result column="deletion_num" property="deletionNum"/>
+        <result column="processed_num" property="processedNum"/>
+        <result column="isvalid" property="isvalid"/>
+        <result column="creatorid" property="creatorId"/>
+        <result column="createtime" property="createTime"/>
+        <result column="updaterid" property="updaterId"/>
+        <result column="updatetime" property="updateTime"/>
+    </resultMap>
+    <select id="getDeletionTypeStatistics" resultMap="StatisticsResultMap">
+        select id,fund_id,deletion_type,last_deletion_date,deletion_num,processed_num,creatorid,isvalid,createtime,updaterid,updatetime
+        from ppw_email.deletion_type_statistics where isvalid=1 and fund_id=#{fundId} and deletion_type=#{deletionType}
+    </select>
+</mapper>

+ 6 - 0
service-base/src/main/resources/mapper/EmailFundAssetMapper.xml

@@ -177,6 +177,12 @@
         <if test="registerNumber != null and registerNumber !=''">
             and register_number=#{registerNumber}
         </if>
+        <if test="fundName == null">
+            and fund_name is null
+        </if>
+        <if test="registerNumber == null">
+            and register_number is null
+        </if>
     </select>
     <select id="selectNotMappingAsset" resultMap="BaseResultMap"
             parameterType="java.lang.String">

+ 6 - 0
service-base/src/main/resources/mapper/EmailFundNavMapper.xml

@@ -180,6 +180,12 @@
         <if test="registerNumber != null and registerNumber != ''">
             and nav.register_number=#{registerNumber}
         </if>
+        <if test="registerNumber == null ">
+            and nav.register_number is null
+        </if>
+        <if test="fundName == null ">
+            and nav.fund_name is null
+        </if>
     </select>
     <select id="selectFileIdByFundName" resultType="java.lang.Integer" parameterType="java.lang.String">
         select distinct nav.file_id from PPW_EMAIL.email_fund_nav nav where nav.isvalid =1 and nav.exception_status in(1,3)

+ 8 - 1
service-base/src/main/resources/mapper/FundAliasMapper.xml

@@ -97,7 +97,9 @@
         alias.creatorid,
         alias.createtime,
         alias.updatetime,
-        alias.updaterid
+        alias.updaterid,
+        fnmi.nav_total,
+        fnmi.asset_total
         from PPW_EMAIL.fund_alias alias
         left join PPW_EMAIL.pvn_fund_info info
         on alias.target_fund_id = info.fund_id and info.isvalid=1
@@ -106,6 +108,8 @@
         left join (select c.fund_name,c.register_number,max(c.price_date) as last_price_date from PPW_EMAIL.email_fund_nav c where c.isvalid=1
                                                                                              group by c.fund_name,c.register_number) a
         on a.fund_name = alias.source_fund_name and a.register_number=alias.source_register_number
+        left join fund_not_mapping_info fnmi
+        on fnmi.fund_name = alias.source_fund_name and fnmi.register_number=alias.source_register_number and fnmi.isvalid=1
         where alias.isvalid=1
         <if test="fundName != null and fundName !=''">
             and (alias.source_fund_name like concat('%',#{fundName},'%') or alias.source_register_number like concat('%',#{fundName},'%') )
@@ -173,6 +177,9 @@
                            on alias.target_fund_id = info.fund_id and info.isvalid=1
         where alias.isvalid=1 and alias.id=#{id}
     </select>
+    <select id="getNotMappingFundList" resultType="com.simuwang.base.pojo.dos.FundRegisterDO">
+        select source_fund_name as "fundName",source_register_number as "registerNumber" from PPW_EMAIL.fund_alias where isvalid=1 group by source_fund_name,source_register_number
+    </select>
 
     <insert id="batchInsert">
         insert into PPW_EMAIL.fund_alias(source_fund_name, source_register_number,target_fund_id,

+ 31 - 0
service-base/src/main/resources/mapper/FundNotMappingMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.simuwang.base.mapper.FundNotMappingMapper">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.FundNotMappingInfoDO">
+        <id column="id" property="id"/>
+        <result column="fund_name" property="fundName"/>
+        <result column="register_number" property="registerNumber"/>
+        <result column="nav_total" property="navTotal"/>
+        <result column="asset_total" property="assetTotal"/>
+        <result column="isvalid" property="isvalid"/>
+        <result column="creatorid" property="creatorId"/>
+        <result column="createtime" property="createTime"/>
+        <result column="updaterid" property="updaterId"/>
+        <result column="updatetime" property="updateTime"/>
+    </resultMap>
+    <select id="getFundNotMappingInfo" resultMap="BaseResultMap">
+        select * from fund_not_mapping_info where isvalid=1
+        <if test="fundName != null and fundName !=''">
+            and fund_name=#{fundName}
+        </if>
+        <if test="registerNumber != null and registerNumber !=''">
+            and register_number=#{registerNumber}
+        </if>
+        <if test="fundName == null">
+            and fund_name is null
+        </if>
+        <if test="registerNumber == null">
+            and register_number is null
+        </if>
+    </select>
+</mapper>

+ 2 - 0
service-deploy/src/main/java/com/simuwang/Application.java

@@ -2,10 +2,12 @@ package com.simuwang;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 @EnableTransactionManagement
 @SpringBootApplication
+@EnableAsync
 public class Application {
 
     public static void main(String[] args) {

+ 1 - 1
service-deploy/src/main/resources/application.yml

@@ -28,7 +28,7 @@ spring:
       # 指定为HikariDataSource
       type: com.zaxxer.hikari.HikariDataSource
       driver-class-name: dm.jdbc.driver.DmDriver
-      url: jdbc:dm://192.168.1.39:5236/?schema=PPW_EMAIL1
+      url: jdbc:dm://192.168.1.39:5236/?schema=PPW_EMAIL
       username: PPW_EMAIL
       password: Dmppw2024
       # hikari连接池配置 对应 HikariConfig 配置属性类

+ 14 - 6
service-manage/src/main/java/com/simuwang/manage/api/deletion/DeletionController.java

@@ -11,11 +11,11 @@ import com.simuwang.base.pojo.dto.query.FundDeletionPageQuery;
 import com.simuwang.base.pojo.vo.*;
 import com.simuwang.logging.SystemLog;
 import com.simuwang.manage.service.DeletionService;
+import com.simuwang.shiro.utils.UserUtils;
 import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
 import jakarta.servlet.ServletOutputStream;
-import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -76,8 +76,12 @@ public class DeletionController {
     @SystemLog(value = "保存缺失备注", type = SystemLog.Type.INSERT)
     @RequestMapping("save-fund-deletion")
     public ResultVo saveFundDeletionList(@RequestBody List<FundDeletionInfoVO> fundDeletionInfoVOList){
-        deletionService.saveFundDeletionList(fundDeletionInfoVOList);
-        return new ResultVo<>(true);
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        deletionService.saveFundDeletionList(fundDeletionInfoVOList,userId);
+        vo.setMsg("数据处理中,请稍后查看");
+        vo.setData(true);
+        return vo;
     }
 
     /**
@@ -88,8 +92,12 @@ public class DeletionController {
     @SystemLog(value = "批量修改缺失备注", type = SystemLog.Type.UPDATE)
     @RequestMapping("batch-deletion-remark")
     public ResultVo saveBatchDeletionRemark(@RequestBody FundDeletionRemarkVO fundDeletionRemarkVO){
-        deletionService.saveBatchDeletionRemark(fundDeletionRemarkVO);
-        return new ResultVo<>(true);
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        deletionService.saveBatchDeletionRemark(fundDeletionRemarkVO,userId);
+        vo.setMsg("数据处理中,请稍后查看");
+        vo.setData(true);
+        return vo;
     }
 
     /**

+ 8 - 2
service-manage/src/main/java/com/simuwang/manage/api/fund/FunAliasController.java

@@ -7,7 +7,9 @@ import com.simuwang.base.pojo.vo.IdListVO;
 import com.simuwang.base.pojo.vo.IdVO;
 import com.simuwang.logging.SystemLog;
 import com.simuwang.manage.service.FundAliasService;
+import com.simuwang.shiro.utils.UserUtils;
 import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -57,8 +59,12 @@ public class FunAliasController {
     @SystemLog(value = "保存基金别名", type = SystemLog.Type.INSERT)
     @PostMapping("/save-fund-alias")
     public ResultVo saveFundAlias(@RequestBody FundAliasVO fundAliasVO){
-        fundAliasService.saveFundAlias(fundAliasVO);
-        return ResultVo.ok(true);
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        fundAliasService.saveFundAlias(fundAliasVO,userId);
+        vo.setMsg("数据处理中,请稍后查看");
+        vo.setData(true);
+        return vo;
     }
 
     /**

+ 28 - 2
service-manage/src/main/java/com/simuwang/manage/init/CompleteScheduleConfig.java

@@ -1,8 +1,10 @@
 package com.simuwang.manage.init;
 
 import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.common.util.StringUtil;
 import com.simuwang.base.mapper.system.SysConfigMapper;
 import com.simuwang.manage.task.FundDeletionTask;
+import com.simuwang.manage.task.NotMappingFundComputeTask;
 import com.simuwang.manage.task.SendCompanyEmailTask;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -14,7 +16,6 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
 import org.springframework.scheduling.config.ScheduledTaskRegistrar;
 import org.springframework.scheduling.support.CronTrigger;
 
-import java.time.LocalDateTime;
 
 
 /**
@@ -37,6 +38,8 @@ public class CompleteScheduleConfig implements SchedulingConfigurer {
 
     @Autowired
     private SysConfigMapper sysConfigMapper;
+    @Autowired
+    private NotMappingFundComputeTask notMappingFundComputeTask;
     /**
      * 执行定时任务.
      */
@@ -66,7 +69,7 @@ public class CompleteScheduleConfig implements SchedulingConfigurer {
                     return new CronTrigger(cron).nextExecutionTime(loadFtpFileTriggerContext).toInstant();
                 }
         );
-        //增量补数
+
         taskRegistrar.addTriggerTask(
                 //1.添加任务内容(Runnable)
                 () -> {
@@ -86,6 +89,29 @@ public class CompleteScheduleConfig implements SchedulingConfigurer {
                     return new CronTrigger(cron).nextExecutionTime(loadFtpFileUpdateTriggerContext).toInstant();
                 }
         );
+
+        taskRegistrar.addTriggerTask(
+                //1.添加任务内容(Runnable)
+                () -> {
+                    try {
+                        logger.info("统计未匹配基金净值规模数量定时任务开始"+DateUtils.getTime());
+                        notMappingFundComputeTask.notMappingFundCompute();//定时拉取数据
+                        logger.info("统计未匹配基金净值规模数量定时任务结束========="+ DateUtils.getTime());
+                    } catch (Exception e) {
+                        logger.error("统计未匹配基金净值规模数量定时任务异常========="+e.getMessage()+ DateUtils.getTime(),e);
+                    }
+                },
+                //2.设置执行周期(Trigger)
+                loadFtpFileUpdateTriggerContext -> {
+                    String cron = sysConfigMapper.selectConfigByKey("not_mapping_nav_asset_compute");
+                    if(StringUtil.isEmpty(cron)){
+                        cron = "0 10 0/1 * * ?";
+                    }
+                    logger.info("匹配基金净值规模数量定时任务轮训时间:"+cron);
+                    //2.2 返回执行周期(Date)
+                    return new CronTrigger(cron).nextExecutionTime(loadFtpFileUpdateTriggerContext).toInstant();
+                }
+        );
     }
 
 }

+ 9 - 2
service-manage/src/main/java/com/simuwang/manage/service/DeletionService.java

@@ -1,6 +1,8 @@
 package com.simuwang.manage.service;
 
 import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dos.DeletionTypeStatisticsDO;
+import com.simuwang.base.pojo.dos.FundDeletionTypeDO;
 import com.simuwang.base.pojo.dto.DeletionDownParam;
 import com.simuwang.base.pojo.dto.ExcelDeletionInfoDTO;
 import com.simuwang.base.pojo.dto.query.DeletionPageQuery;
@@ -11,6 +13,7 @@ import com.simuwang.base.pojo.vo.FundDeletionListVO;
 import com.simuwang.base.pojo.vo.FundDeletionRemarkVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * FileName: DeletionService
@@ -23,11 +26,15 @@ public interface DeletionService {
 
     MybatisPage<FundDeletionInfoVO> searchFundDeletionList(FundDeletionPageQuery fundDeletionPageQuery);
 
-    void saveFundDeletionList(List<FundDeletionInfoVO> fundDeletionInfoVOList);
+    void saveFundDeletionList(List<FundDeletionInfoVO> fundDeletionInfoVOList,Integer userId);
 
-    void saveBatchDeletionRemark(FundDeletionRemarkVO fundDeletionRemarkVO);
+    void saveBatchDeletionRemark(FundDeletionRemarkVO fundDeletionRemarkVO,Integer userId);
 
     List<ExcelDeletionInfoDTO> selectFundDeletionInfoVOList(FundDeletionListVO fundDeletionListVO);
 
     void computeDeletion(DeletionDownParam deletionDownParam);
+
+    void computeDeletionTypeNum(List<FundDeletionTypeDO> fundDeletionTypeList);
+
+    List<FundDeletionTypeDO> getFundDeletionTypeMapList();
 }

+ 2 - 0
service-manage/src/main/java/com/simuwang/manage/service/EmailFundAssetService.java

@@ -8,4 +8,6 @@ package com.simuwang.manage.service;
  */
 public interface EmailFundAssetService {
     void reparseFileAsset(String sourceFundName,String registerNumber, String targetFundId,String sourceFundId);
+
+    Integer countNoStoreAsset(String fundName, String registerNumber);
 }

+ 2 - 0
service-manage/src/main/java/com/simuwang/manage/service/EmailFundNavService.java

@@ -8,4 +8,6 @@ package com.simuwang.manage.service;
  */
 public interface EmailFundNavService {
     void reparseFileNav(String sourceFundName,String registerNumber, String targetFundId,String sourceFundId);
+
+    Integer countNoStoreNav(String fundName, String registerNumber);
 }

+ 6 - 1
service-manage/src/main/java/com/simuwang/manage/service/FundAliasService.java

@@ -1,10 +1,13 @@
 package com.simuwang.manage.service;
 
 import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dos.FundRegisterDO;
 import com.simuwang.base.pojo.dto.query.FundAliasPageQuery;
 import com.simuwang.base.pojo.vo.FundAliasVO;
 import com.simuwang.base.pojo.vo.IdListVO;
 
+import java.util.List;
+
 /**
  * FileName: FunAliasService
  * Author:   chenjianhua
@@ -16,7 +19,9 @@ public interface FundAliasService {
 
     FundAliasVO searchFundAliasById(Integer id);
 
-    void saveFundAlias(FundAliasVO fundAliasVO);
+    void saveFundAlias(FundAliasVO fundAliasVO,Integer userId);
 
     void deleteFundAlias(IdListVO idListVO);
+
+    List<FundRegisterDO> getNotMappingFundList();
 }

+ 9 - 0
service-manage/src/main/java/com/simuwang/manage/service/FundNotMappingService.java

@@ -0,0 +1,9 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.pojo.dos.FundNotMappingInfoDO;
+
+import java.util.List;
+
+public interface FundNotMappingService {
+    void batchInsert(List<FundNotMappingInfoDO> fundNotMappingInfoDOList);
+}

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

@@ -11,12 +11,14 @@ import com.simuwang.base.mapper.*;
 import com.simuwang.base.pojo.dos.*;
 import com.simuwang.base.pojo.dto.DeletionDownParam;
 import com.simuwang.base.pojo.dto.ExcelDeletionInfoDTO;
+import com.simuwang.base.pojo.dos.FundDeletionTypeDO;
 import com.simuwang.base.pojo.dto.query.DeletionPageQuery;
 import com.simuwang.base.pojo.dto.query.FundDeletionPageQuery;
 import com.simuwang.base.pojo.vo.*;
 import com.simuwang.manage.service.DeletionService;
 import com.simuwang.shiro.utils.UserUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -54,6 +56,8 @@ public class DeletionServiceImpl implements DeletionService {
     private DistributionMapper distributionMapper;
 
     @Autowired
+    private DeletionTypeStatisticsMapper deletionTypeStatisticsMapper;
+    @Autowired
     private NavMapper navMapper;
     @Override
     public MybatisPage<DeletionInfoVO> searchDeletionList(DeletionPageQuery deletionPageQuery) {
@@ -72,8 +76,10 @@ public class DeletionServiceImpl implements DeletionService {
     }
 
     @Override
-    public void saveFundDeletionList(List<FundDeletionInfoVO> fundDeletionInfoVOList) {
+    @Async
+    public void saveFundDeletionList(List<FundDeletionInfoVO> fundDeletionInfoVOList,Integer userId) {
         List<FundDeletionInfoDO> fundDeletionInfoDOList = new ArrayList<>();
+        List<FundDeletionTypeDO> fundDeletionTypeDOList = new ArrayList<>();
         for(FundDeletionInfoVO vo : fundDeletionInfoVOList){
             FundDeletionInfoDO fundDeletionInfoDO = new FundDeletionInfoDO();
             fundDeletionInfoDO.setId(vo.getId());
@@ -83,19 +89,30 @@ public class DeletionServiceImpl implements DeletionService {
             fundDeletionInfoDO.setRemark(vo.getRemark());
             fundDeletionInfoDO.setIsvalid(1);
             fundDeletionInfoDO.setUpdateTime(DateUtils.getNowDate());
-            fundDeletionInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
+            fundDeletionInfoDO.setUpdaterId(userId);
             fundDeletionInfoDOList.add(fundDeletionInfoDO);
+            FundDeletionTypeDO fundDeletionTypeDO = new FundDeletionTypeDO();
+            fundDeletionTypeDO.setDeletionType(vo.getDeletionType());
+            fundDeletionTypeDO.setFundId(vo.getFundId());
+            fundDeletionTypeDOList.add(fundDeletionTypeDO);
         }
         deletionInfoMapper.batchUpdate(fundDeletionInfoDOList);
+        computeDeletionTypeNum(fundDeletionTypeDOList);
     }
 
     @Override
-    public void saveBatchDeletionRemark(FundDeletionRemarkVO fundDeletionRemarkVO) {
+    @Async
+    public void saveBatchDeletionRemark(FundDeletionRemarkVO fundDeletionRemarkVO,Integer userId) {
         String remark = fundDeletionRemarkVO.getRemark();
-        Integer userId = UserUtils.getLoginUser().getUserId();
+        List<FundDeletionTypeDO> fundDeletionTypeDOList = new ArrayList<>();
         for(FundDeletionTypeVO remarkVO : fundDeletionRemarkVO.getFundDeletionTypeList()){
             deletionInfoMapper.updateRemark(remarkVO.getFundId(),remarkVO.getDeletionType(),remarkVO.getDeletionDate(),remark,userId);
+            FundDeletionTypeDO fundDeletionTypeDO = new FundDeletionTypeDO();
+            fundDeletionTypeDO.setDeletionType(remarkVO.getDeletionType());
+            fundDeletionTypeDO.setFundId(remarkVO.getFundId());
+            fundDeletionTypeDOList.add(fundDeletionTypeDO);
         }
+        computeDeletionTypeNum(fundDeletionTypeDOList);
     }
 
     @Override
@@ -157,6 +174,36 @@ public class DeletionServiceImpl implements DeletionService {
 
     }
 
+    @Override
+    public void computeDeletionTypeNum(List<FundDeletionTypeDO> fundDeletionTypeList) {
+        List<DeletionTypeStatisticsDO> deletionTypeStatisticsDOList = new ArrayList<>();
+        for (FundDeletionTypeDO fundDeletionType : fundDeletionTypeList) {
+            String fundId = fundDeletionType.getFundId();
+            Integer deletionType = fundDeletionType.getDeletionType();
+            Integer deletionNum = deletionInfoMapper.countFundDeletion(fundId,deletionType,1);
+            Integer processedNum = deletionInfoMapper.countFundDeletion(fundId,deletionType,0);
+            String lastDeletionDate = deletionInfoMapper.getLastDeletionDate(fundId,deletionType);
+            DeletionTypeStatisticsDO deletionTypeStatisticsDO = new DeletionTypeStatisticsDO();
+            deletionTypeStatisticsDO.setFundId(fundId);
+            deletionTypeStatisticsDO.setLastDeletionDate(lastDeletionDate);
+            deletionTypeStatisticsDO.setDeletionType(Integer.valueOf(deletionType));
+            deletionTypeStatisticsDO.setDeletionNum(deletionNum);
+            deletionTypeStatisticsDO.setProcessedNum(processedNum);
+            DeletionTypeStatisticsDO oldDeletionTypeStatisticsDO = deletionTypeStatisticsMapper.getDeletionTypeStatistics(fundId,deletionType);
+            if(oldDeletionTypeStatisticsDO != null){
+                deletionTypeStatisticsDO.setDeletionNum(oldDeletionTypeStatisticsDO.getDeletionNum());
+                deletionTypeStatisticsDO.setUpdateTime(new Date());
+            }
+            deletionTypeStatisticsDOList.add(deletionTypeStatisticsDO);
+        }
+        deletionTypeStatisticsMapper.insertOrUpdate(deletionTypeStatisticsDOList);
+    }
+
+    @Override
+    public List<FundDeletionTypeDO> getFundDeletionTypeMapList() {
+        return deletionInfoMapper.getFundDeletionTypeMapList();
+    }
+
     public static Integer getWeekOfYear(String priceDate) {
         int year = Integer.parseInt(priceDate.substring(0, 4));
         int week = DateUtil.weekOfYear(DateUtils.parse(priceDate, DateUtils.YYYY_MM_DD));

+ 5 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/EmailFundAssetServiceImpl.java

@@ -82,4 +82,9 @@ public class EmailFundAssetServiceImpl implements EmailFundAssetService {
 
         }
     }
+
+    @Override
+    public Integer countNoStoreAsset(String fundName, String registerNumber) {
+        return emailFundAssetMapper.countNoStoreAsset(fundName,registerNumber);
+    }
 }

+ 5 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/EmailFundNavServiceImpl.java

@@ -79,4 +79,9 @@ public class EmailFundNavServiceImpl implements EmailFundNavService {
             }
         }
     }
+
+    @Override
+    public Integer countNoStoreNav(String fundName, String registerNumber) {
+        return emailFundNavMapper.countNoStoreNav(fundName,registerNumber);
+    }
 }

+ 38 - 21
service-manage/src/main/java/com/simuwang/manage/service/impl/FundAliasServiceImpl.java

@@ -2,11 +2,10 @@ package com.simuwang.manage.service.impl;
 
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.util.StringUtil;
-import com.simuwang.base.mapper.CompanyInformationMapper;
-import com.simuwang.base.mapper.EmailFundAssetMapper;
-import com.simuwang.base.mapper.EmailFundNavMapper;
-import com.simuwang.base.mapper.FundAliasMapper;
+import com.simuwang.base.mapper.*;
 import com.simuwang.base.pojo.dos.FundAliasDO;
+import com.simuwang.base.pojo.dos.FundNotMappingInfoDO;
+import com.simuwang.base.pojo.dos.FundRegisterDO;
 import com.simuwang.base.pojo.dto.query.FundAliasPageQuery;
 import com.simuwang.base.pojo.vo.FundAliasVO;
 import com.simuwang.base.pojo.vo.IdListVO;
@@ -16,6 +15,7 @@ import com.simuwang.manage.service.EmailFundInfoService;
 import com.simuwang.manage.service.FundAliasService;
 import com.simuwang.shiro.utils.UserUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -41,9 +41,6 @@ public class FundAliasServiceImpl implements FundAliasService {
     private EmailFundAssetMapper emailFundAssetMapper;
 
     @Autowired
-    private CompanyInformationMapper companyInformationMapper;
-
-    @Autowired
     private EmailFundInfoService emailFundInfoService;
 
     @Autowired
@@ -52,20 +49,13 @@ public class FundAliasServiceImpl implements FundAliasService {
     @Autowired
     private EmailFundAssetService emailFundAssetService;
 
+    @Autowired
+    private FundNotMappingMapper fundNotMappingMapper;
+
     @Override
     public MybatisPage<FundAliasVO> searchFundAlias(FundAliasPageQuery fundAliasPageQuery) {
         List<FundAliasDO> fundAliasDOList = fundAliasMapper.searchFundAlias(fundAliasPageQuery);
         List<FundAliasVO> fundAliasVOList =  fundAliasDOList.stream().map(FundAliasDO::toVo).collect(Collectors.toList());
-        for(FundAliasVO vo : fundAliasVOList){
-            //异常净值数量
-            Integer navTotal = emailFundNavMapper.countNoStoreNav(vo.getSourceFundName(),vo.getSourceRegisterNumber());
-            vo.setNavTotal(navTotal);
-            //异常净值数量
-            Integer assetTotal = emailFundAssetMapper.countNoStoreAsset(vo.getSourceFundName(),vo.getSourceRegisterNumber());
-            vo.setAssetTotal(assetTotal);
-//            //最新净值日期
-//            vo.setPriceDate(emailFundNavMapper.getMaxPriceDate(vo.getSourceFundName()));
-        }
         long total = fundAliasMapper.countFundAlias(fundAliasPageQuery);
         return MybatisPage.of(total,fundAliasVOList);
     }
@@ -80,7 +70,8 @@ public class FundAliasServiceImpl implements FundAliasService {
     }
 
     @Override
-    public void saveFundAlias(FundAliasVO fundAliasVO) {
+    @Async
+    public void saveFundAlias(FundAliasVO fundAliasVO,Integer userId) {
         FundAliasDO fundAliasDO = new FundAliasDO();
         fundAliasDO.setSourceFundName(fundAliasVO.getSourceFundName());
         fundAliasDO.setTargetFundId(fundAliasVO.getTargetFundId());
@@ -89,10 +80,9 @@ public class FundAliasServiceImpl implements FundAliasService {
         fundAliasDO.setTargetRegisterNumber(fundAliasVO.getTargetRegisterNumber());
         fundAliasDO.setId(fundAliasVO.getId());
         fundAliasDO.setIsvalid(1);
-        fundAliasDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
-        fundAliasDO.setCreatorId(UserUtils.getLoginUser().getUserId());
+        fundAliasDO.setUpdaterId(userId);
+        fundAliasDO.setCreatorId(userId);
         fundAliasDO.setUpdateTime(new Date());
-
         FundAliasDO oldFundAliasDO = fundAliasMapper.searchFundAliasById(fundAliasVO.getId());
         String oldFundId = oldFundAliasDO.getTargetFundId();
         fundAliasMapper.saveFundAlias(fundAliasDO);
@@ -102,6 +92,28 @@ public class FundAliasServiceImpl implements FundAliasService {
         emailFundAssetService.reparseFileAsset(fundAliasVO.getSourceFundName(),fundAliasVO.getSourceRegisterNumber(),fundAliasVO.getTargetFundId(),oldFundId);
         //处理采集数据,将采集的数据入库
         emailFundInfoService.reparseValuationFile(fundAliasVO.getSourceFundName(),fundAliasVO.getSourceRegisterNumber());
+        //更新别名统计数据
+        computeFundMappingInfo(fundAliasVO.getSourceFundName(),fundAliasVO.getSourceRegisterNumber());
+    }
+
+    private void computeFundMappingInfo(String fundName,String registerNumber){
+        FundNotMappingInfoDO fundNotMappingInfoDO = new FundNotMappingInfoDO();
+        fundNotMappingInfoDO.setFundName(fundName);
+        fundNotMappingInfoDO.setRegisterNumber(registerNumber);
+        //异常净值数量
+        Integer navTotal = emailFundNavMapper.countNoStoreNav(fundName,registerNumber);
+        //异常净值数量
+        Integer assetTotal = emailFundAssetMapper.countNoStoreAsset(fundName,registerNumber);
+        fundNotMappingInfoDO.setAssetTotal(assetTotal);
+        fundNotMappingInfoDO.setNavTotal(navTotal);
+        fundNotMappingInfoDO.setIsvalid(1);
+        fundNotMappingInfoDO.setCreateTime(new Date());
+        fundNotMappingInfoDO.setUpdateTime(new Date());
+        FundNotMappingInfoDO oldFundNotMappingInfoDO = fundNotMappingMapper.getFundNotMappingInfo(fundNotMappingInfoDO);
+        if(oldFundNotMappingInfoDO != null){
+            fundNotMappingInfoDO.setId(oldFundNotMappingInfoDO.getId());
+        }
+        fundNotMappingMapper.insertOrUpdate(fundNotMappingInfoDO);
     }
 
     @Override
@@ -112,4 +124,9 @@ public class FundAliasServiceImpl implements FundAliasService {
             fundAliasMapper.batchDelete(idList,userId);
         }
     }
+
+    @Override
+    public List<FundRegisterDO> getNotMappingFundList() {
+        return fundAliasMapper.getNotMappingFundList();
+    }
 }

+ 26 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/FundNotMappingServiceImpl.java

@@ -0,0 +1,26 @@
+package com.simuwang.manage.service.impl;
+
+import com.simuwang.base.mapper.FundNotMappingMapper;
+import com.simuwang.base.pojo.dos.FundNotMappingInfoDO;
+import com.simuwang.manage.service.FundNotMappingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class FundNotMappingServiceImpl implements FundNotMappingService {
+    @Autowired
+    private FundNotMappingMapper fundNotMappingMapper;
+    
+    @Override
+    public void batchInsert(List<FundNotMappingInfoDO> fundNotMappingInfoDOList) {
+        for (FundNotMappingInfoDO fundNotMappingInfoDO : fundNotMappingInfoDOList) {
+            FundNotMappingInfoDO oldFundNotMappingInfoDO = fundNotMappingMapper.getFundNotMappingInfo(fundNotMappingInfoDO);
+            if(oldFundNotMappingInfoDO != null){
+                fundNotMappingInfoDO.setId(oldFundNotMappingInfoDO.getId());
+            }
+        }
+        fundNotMappingMapper.insertOrUpdate(fundNotMappingInfoDOList);
+    }
+}

+ 4 - 0
service-manage/src/main/java/com/simuwang/manage/task/FundDeletionTask.java

@@ -40,11 +40,15 @@ public class FundDeletionTask {
                 deletionDownParam.setFundId(fundId);
                 deletionService.computeDeletion(deletionDownParam);
             }
+            //统计缺失类型的处理数据量
+            List<FundDeletionTypeDO> fundDeletionTypeList = deletionService.getFundDeletionTypeMapList();
+            deletionService.computeDeletionTypeNum(fundDeletionTypeList);
         }catch (Exception e){
             log.error(e.getMessage(),e);
             endEmailTask(emailTaskInfoDO.getId(),-1);
             return;
         }
+
         endEmailTask(emailTaskInfoDO.getId(),2);
     }
     private void endEmailTask(Integer id, Integer taskStatus) {

+ 51 - 0
service-manage/src/main/java/com/simuwang/manage/task/NotMappingFundComputeTask.java

@@ -0,0 +1,51 @@
+package com.simuwang.manage.task;
+
+import com.simuwang.base.pojo.dos.FundNotMappingInfoDO;
+import com.simuwang.base.pojo.dos.FundRegisterDO;
+import com.simuwang.manage.service.EmailFundAssetService;
+import com.simuwang.manage.service.EmailFundNavService;
+import com.simuwang.manage.service.FundAliasService;
+import com.simuwang.manage.service.FundNotMappingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class NotMappingFundComputeTask {
+
+    @Autowired
+    private  FundAliasService fundAliasService;
+
+    @Autowired
+    private EmailFundNavService emailFundNavService;
+
+    @Autowired
+    private EmailFundAssetService emailFundAssetService;
+
+    @Autowired
+    private FundNotMappingService fundNotMappingService;
+
+    public void notMappingFundCompute() {
+        List<FundRegisterDO> fundRegisterDOList = fundAliasService.getNotMappingFundList();
+        List<FundNotMappingInfoDO> fundNotMappingInfoDOList = new ArrayList<>();
+        for (FundRegisterDO fundRegisterDO : fundRegisterDOList) {
+            FundNotMappingInfoDO fundNotMappingInfoDO = new FundNotMappingInfoDO();
+            fundNotMappingInfoDO.setFundName(fundRegisterDO.getFundName());
+            fundNotMappingInfoDO.setRegisterNumber(fundRegisterDO.getRegisterNumber());
+            //异常净值数量
+            Integer navTotal = emailFundNavService.countNoStoreNav(fundRegisterDO.getFundName(),fundRegisterDO.getRegisterNumber());
+            //异常净值数量
+            Integer assetTotal = emailFundAssetService.countNoStoreAsset(fundRegisterDO.getFundName(),fundRegisterDO.getRegisterNumber());
+            fundNotMappingInfoDO.setAssetTotal(assetTotal);
+            fundNotMappingInfoDO.setNavTotal(navTotal);
+            fundNotMappingInfoDO.setIsvalid(1);
+            fundNotMappingInfoDO.setCreateTime(new Date());
+            fundNotMappingInfoDO.setUpdateTime(new Date());
+            fundNotMappingInfoDOList.add(fundNotMappingInfoDO);
+        }
+        fundNotMappingService.batchInsert(fundNotMappingInfoDOList);
+    }
+}