瀏覽代碼

feat(): 别名管理保存,将净值规模数据入库

chenjianhua 7 月之前
父節點
當前提交
a1682d408b

+ 4 - 0
service-base/src/main/java/com/simuwang/base/mapper/EmailFundAssetMapper.java

@@ -19,4 +19,8 @@ public interface EmailFundAssetMapper {
     Integer countNoStoreAsset(String sourceFundName);
 
     void deleteByFileId(@Param("fileId") Integer fileId);
+
+    List<EmailFundAssetDO> selectNotMappingAsset(@Param("fundName") String sourceFundName);
+
+    void batchUpdate(@Param("itemDoList")List<EmailFundAssetDO> fundAssetDOList);
 }

+ 4 - 0
service-base/src/main/java/com/simuwang/base/mapper/EmailFundNavMapper.java

@@ -22,4 +22,8 @@ public interface EmailFundNavMapper {
     List<Integer> selectFileIdByFundName(@Param("fundName") String sourceFundName);
 
     void deleteByFileId(@Param("fileId") Integer fileId);
+
+    List<EmailFundNavDO> selectNotMappingNav(@Param("fundName") String sourceFundName);
+
+    void batchUpdate(@Param("navList") List<EmailFundNavDO> fundNavDOList);
 }

+ 19 - 1
service-base/src/main/resources/mapper/EmailFundAssetMapper.xml

@@ -29,6 +29,16 @@
         </foreach>
 
     </insert>
+    <update id="batchUpdate">
+        update PPW_EMAIL.email_fund_asset
+        <set>
+            fund_id = #{itemDo.fundId},
+            exception_status = #{itemDo.exceptionStatus},
+            updatetime=#{itemDo.updateTime}
+        </set>
+        where isvalid = 1
+        and id = #{itemDo.id}
+    </update>
     <select id="searchAssetDetail" resultMap="BaseResultMap"
             parameterType="com.simuwang.base.pojo.dto.query.ParseDetailPageQuery">
         select distinct id,fund_id, fund_name,register_number,price_date,asset_net,asset_share,is_stored,exception_status,updatetime
@@ -87,7 +97,15 @@
         )a
     </select>
     <select id="countNoStoreAsset" resultType="java.lang.Integer" parameterType="java.lang.String">
-        select count(distinct price_date)
+        select count(id)
+        from PPW_EMAIL.email_fund_asset
+        where isvalid =1 and exception_status=3
+          and fund_name=#{fundName}
+    </select>
+    <select id="selectNotMappingAsset" resultMap="BaseResultMap"
+            parameterType="java.lang.String">
+        select distinct id,fund_id,file_id, fund_name,register_number,price_date,asset_net,asset_share,is_stored,exception_status,
+                        updatetime
         from PPW_EMAIL.email_fund_asset
         where isvalid =1 and exception_status=3
           and fund_name=#{fundName}

+ 36 - 3
service-base/src/main/resources/mapper/EmailFundNavMapper.xml

@@ -30,6 +30,18 @@
             #{itemDo.isvalid}, #{itemDo.creatorId}, #{itemDo.createTime}, #{itemDo.updaterId}, #{itemDo.updateTime})
         </foreach>
     </insert>
+    <update id="batchUpdate">
+        <foreach collection="navList" item="itemDo" index="index" open="" close="" separator=";">
+            update PPW_EMAIL.email_fund_nav
+            <set>
+                fund_id = #{itemDo.fundId},
+                exception_status = #{itemDo.exceptionStatus},
+                updatetime=#{itemDo.updateTime}
+            </set>
+            where isvalid = 1
+            and id = #{itemDo.id}
+        </foreach>
+    </update>
     <delete id="deleteByFileId" parameterType="java.lang.Integer">
         update PPW_EMAIL.email_fund_nav nav set isvalid = 0,updatetime=sysdate() where file_id=#{fileId}
     </delete>
@@ -111,15 +123,36 @@
         ) a
     </select>
     <select id="countNoStoreNav" resultType="java.lang.Integer" parameterType="java.lang.String">
-        select count(distinct price_date)
+        select count(nav.id)
         from PPW_EMAIL.email_fund_nav nav
-        where isvalid =1 and exception_status=3
-            and fund_name=#{fundName}
+        where nav.isvalid =1 and nav.exception_status=3
+            and nav.fund_name=#{fundName}
     </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=3
             and nav.fund_name=#{fundName}
     </select>
+    <select id="selectNotMappingNav" resultMap="BaseResultMap"
+            parameterType="java.lang.String">
+        select nav.id,
+               nav.file_id,
+               nav.fund_id,
+               nav.fund_name,
+               nav.register_number,
+               nav.price_date,
+               nav.nav,
+               nav.cumulative_nav_withdrawal,
+               nav.exception_status,
+               nav.is_stored,
+               nav.isvalid,
+               nav.creatorid,
+               nav.updaterid,
+               nav.updatetime,
+               nav.createtime
+        from PPW_EMAIL.email_fund_nav nav
+        where nav.isvalid =1 and nav.exception_status=3
+          and nav.fund_name=#{fundName}
+    </select>
 
 
 </mapper>

service-base/src/main/resources/mapper/CompanyInformationMapper.xml → service-base/src/main/resources/mapper/EmailFundNavService.xml


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

@@ -15,7 +15,7 @@
         <result column="updatetime" property="updateTime"/>
     </resultMap>
     <update id="saveFundAlias" parameterType="com.simuwang.base.pojo.dos.FundAliasDO">
-        update PPW_EMAIL.fund_alias set target_fund_id=#{targetFundId},target_fund_name=#{targetFundName},target_register_numer=#{targetRegisterNumber},updatetime=#{updateTime}
+        update PPW_EMAIL.fund_alias set target_fund_id=#{targetFundId},target_fund_name=#{targetFundName},target_register_number=#{targetRegisterNumber},updatetime=#{updateTime}
         where isvalid =1 and id=#{id}
     </update>
 

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

@@ -190,7 +190,7 @@ public class EmailParseService {
         }
     }
 
-    private void saveNavDo(List<NavDO> navDOList) {
+    public void saveNavDo(List<NavDO> navDOList) {
         if (CollUtil.isEmpty(navDOList)) {
             return;
         }
@@ -210,7 +210,7 @@ public class EmailParseService {
         }
     }
 
-    private void saveAssetDo(List<AssetDO> assetDOList) {
+    public void saveAssetDo(List<AssetDO> assetDOList) {
         if (CollUtil.isEmpty(assetDOList)) {
             return;
         }

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

@@ -0,0 +1,11 @@
+package com.simuwang.manage.service;
+
+/**
+ * FileName: EmailFundAssetService
+ * Author:   chenjianhua
+ * Date:     2024/9/15 12:43
+ * Description: ${DESCRIPTION}
+ */
+public interface EmailFundAssetService {
+    void reparseFileAsset(String sourceFundName, String targetFundId);
+}

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

@@ -0,0 +1,11 @@
+package com.simuwang.manage.service;
+
+/**
+ * FileName: EmailFileNavService
+ * Author:   chenjianhua
+ * Date:     2024/9/15 11:25
+ * Description: ${DESCRIPTION}
+ */
+public interface EmailFundNavService {
+    void reparseFileNav(String sourceFundName, String targetFundId);
+}

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

@@ -0,0 +1,50 @@
+package com.simuwang.manage.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.simuwang.base.mapper.EmailFundAssetMapper;
+import com.simuwang.base.pojo.dos.AssetDO;
+import com.simuwang.base.pojo.dos.EmailFundAssetDO;
+import com.simuwang.base.pojo.dos.NavDO;
+import com.simuwang.daq.service.EmailParseService;
+import com.simuwang.manage.service.EmailFundAssetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * FileName: EmailFundAssetServiceImpl
+ * Author:   chenjianhua
+ * Date:     2024/9/15 12:43
+ * Description: ${DESCRIPTION}
+ */
+@Service
+public class EmailFundAssetServiceImpl implements EmailFundAssetService {
+
+    @Autowired
+    private EmailFundAssetMapper emailFundAssetMapper;
+
+    @Autowired
+    private EmailParseService emailParseService;
+
+    @Override
+    public void reparseFileAsset(String sourceFundName, String targetFundId) {
+        List<EmailFundAssetDO> fundAssetDOList = emailFundAssetMapper.selectNotMappingAsset(sourceFundName);
+        if(fundAssetDOList.size() > 0){
+            //修改采集库的数据
+            for(EmailFundAssetDO fundNavDO : fundAssetDOList){
+                fundNavDO.setFundId(targetFundId);
+                fundNavDO.setExceptionStatus(1);
+                fundNavDO.setUpdateTime(new Date());
+            }
+            emailFundAssetMapper.batchUpdate(fundAssetDOList);
+            //净值入库
+            List<AssetDO> assetDOList = fundAssetDOList.stream().filter(e -> StrUtil.isNotBlank(e.getFundId()))
+                    .map(e -> BeanUtil.copyProperties(e, AssetDO.class)).collect(Collectors.toList());
+            emailParseService.saveAssetDo(assetDOList);
+        }
+    }
+}

+ 5 - 3
service-manage/src/main/java/com/simuwang/manage/service/impl/EmailFundInfoServiceImpl.java

@@ -41,8 +41,10 @@ public class EmailFundInfoServiceImpl implements EmailFundInfoService {
     @Override
     public void reparseValuationFile(String sourceFundName) {
         List<Integer> fileIdList = emailFundNavMapper.selectFileIdByFundName(sourceFundName);
-        //过滤其他文件类型,只保留估值表
-        List<Integer> valuationFileId = emailFileInfoMapper.selectValuationFileId(fileIdList);
-        emailParseApiService.reparseFile(valuationFileId);
+        if(fileIdList.size() < 0){
+            //过滤其他文件类型,只保留估值表
+            List<Integer> valuationFileId = emailFileInfoMapper.selectValuationFileId(fileIdList);
+            emailParseApiService.reparseFile(valuationFileId);
+        }
     }
 }

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

@@ -0,0 +1,52 @@
+package com.simuwang.manage.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.mapper.EmailFundNavMapper;
+import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
+import com.simuwang.base.pojo.dos.EmailFundNavDO;
+import com.simuwang.base.pojo.dos.NavDO;
+import com.simuwang.daq.service.EmailParseService;
+import com.simuwang.manage.service.EmailFundNavService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * FileName: EmailFileNavServiceImpl
+ * Author:   chenjianhua
+ * Date:     2024/9/15 11:25
+ * Description: ${DESCRIPTION}
+ */
+@Service
+public class EmailFundNavServiceImpl implements EmailFundNavService {
+
+    @Autowired
+    private EmailFundNavMapper emailFundNavMapper;
+
+    @Autowired
+    private EmailParseService emailParseService;
+
+    @Override
+    public void reparseFileNav(String sourceFundName, String targetFundId) {
+        List<EmailFundNavDO> fundNavDOList = emailFundNavMapper.selectNotMappingNav(sourceFundName);
+        if(fundNavDOList.size() > 0){
+            //修改采集库的数据
+            for(EmailFundNavDO fundNavDO : fundNavDOList){
+                fundNavDO.setFundId(targetFundId);
+                fundNavDO.setExceptionStatus(1);
+                fundNavDO.setUpdateTime(new Date());
+            }
+            emailFundNavMapper.batchUpdate(fundNavDOList);
+            //净值入库
+            List<NavDO> navDOList = fundNavDOList.stream().filter(e -> StrUtil.isNotBlank(e.getFundId()))
+                    .map(e -> BeanUtil.copyProperties(e, NavDO.class)).collect(Collectors.toList());
+            navDOList.forEach(e -> e.setUpdateTime(DateUtils.getNowDate()));
+            emailParseService.saveNavDo(navDOList);
+        }
+    }
+}

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

@@ -5,10 +5,11 @@ 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.pojo.dos.CompanyEmailSendHistoryDO;
 import com.simuwang.base.pojo.dos.FundAliasDO;
 import com.simuwang.base.pojo.dto.query.FundAliasPageQuery;
 import com.simuwang.base.pojo.vo.FundAliasVO;
+import com.simuwang.manage.service.EmailFundAssetService;
+import com.simuwang.manage.service.EmailFundNavService;
 import com.simuwang.manage.service.EmailFundInfoService;
 import com.simuwang.manage.service.FundAliasService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +42,12 @@ public class FundAliasServiceImpl implements FundAliasService {
     @Autowired
     private EmailFundInfoService emailFundInfoService;
 
+    @Autowired
+    private EmailFundNavService emailFileNavService;
+
+    @Autowired
+    private EmailFundAssetService emailFundAssetService;
+
     @Override
     public MybatisPage<FundAliasVO> searchFundAlias(FundAliasPageQuery fundAliasPageQuery) {
         List<FundAliasDO> fundAliasDOList = fundAliasMapper.searchFundAlias(fundAliasPageQuery);
@@ -79,6 +86,10 @@ public class FundAliasServiceImpl implements FundAliasService {
         fundAliasDO.setIsvalid(1);
         fundAliasDO.setUpdateTime(new Date());
         fundAliasMapper.saveFundAlias(fundAliasDO);
+        //将采集的净值数据匹配之后重新入库
+        emailFileNavService.reparseFileNav(fundAliasVO.getSourceFundName(),fundAliasVO.getTargetFundId());
+        //将采集的规模数据匹配之后重新入库
+        emailFundAssetService.reparseFileAsset(fundAliasVO.getSourceFundName(),fundAliasVO.getTargetFundId());
         //处理采集数据,将采集的数据入库
         emailFundInfoService.reparseValuationFile(fundAliasVO.getSourceFundName());
     }

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

@@ -96,7 +96,6 @@ public class ParseEmailDetailServiceImpl implements ParseEmailDetailService {
     public void saveFundNav(FundNavVO fundNavVO) {
         List<NavDO> navDOList = new ArrayList<>();
         NavDO navDO = new NavDO();
-        navDO.setCumulativeNav(fundNavVO.getCumulativeNavWithdrawal());
         navDO.setCumulativeNavWithdrawal(fundNavVO.getCumulativeNavWithdrawal());
         navDO.setNav(fundNavVO.getNav());
         navDO.setFundId(fundNavVO.getFundId());
@@ -112,7 +111,7 @@ public class ParseEmailDetailServiceImpl implements ParseEmailDetailService {
         }else{
             oldNav.setUpdateTime(DateUtils.getNowDate());
             oldNav.setCumulativeNav(navDO.getCumulativeNav());
-            oldNav.setCumulativeNavWithdrawal(navDO.getCumulativeNav());
+            oldNav.setCumulativeNavWithdrawal(navDO.getCumulativeNavWithdrawal());
             oldNav.setNav(navDO.getNav());
             navDOList.add(oldNav);
             navMapper.batchUpdate(navDOList);