Browse Source

fix:数据详情查询优化

chenjianhua 1 month ago
parent
commit
69b8948f12

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

@@ -35,4 +35,6 @@ public interface EmailFundNavMapper {
     List<EmailFundNavDO> selectNavByFundId(@Param("fundId") String sourceFundId);
 
     Long countEmailNavTotal();
+
+    String getLastPriceDateByfundRegisterNumber(@Param("fundName") String sourceFundName,@Param("registerNumber") String registerNumber);
 }

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

@@ -14,6 +14,9 @@ public class FundNotMappingInfoDO {
     @TableId(type = IdType.AUTO,value = "id")
     private Integer id;
 
+    @TableField(value = "fund_alias_id")
+    private Integer fundAliasId;
+
     @TableField(value = "fund_name")
     private String fundName;
 
@@ -26,6 +29,9 @@ public class FundNotMappingInfoDO {
     @TableField(value = "asset_total")
     private Integer assetTotal;
 
+    @TableField(value = "last_price_date")
+    private String lastPriceDate;
+
     @TableField(value = "creatorid")
     private Integer creatorId;
 

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

@@ -5,6 +5,8 @@ import lombok.Data;
 @Data
 public class FundRegisterDO {
 
+    private Integer id;
+
     private String fundName;
 
     private String registerNumber;

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

@@ -70,7 +70,7 @@
     </delete>
     <select id="searchDeletionList" resultMap="BaseResultMap"
             parameterType="com.simuwang.base.pojo.dto.query.DeletionPageQuery">
-        SELECT distinct
+        SELECT
         d.fund_id,
         info.fund_name,
         c.company_name,

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

@@ -268,6 +268,23 @@
     <select id="countEmailNavTotal" resultType="java.lang.Long">
         select count(1) from PPW_EMAIL.email_fund_nav where isvalid=1
     </select>
+    <select id="getLastPriceDateByfundRegisterNumber" resultType="java.lang.String">
+        select max(nav.price_date)
+        from PPW_EMAIL.email_fund_nav nav
+        where nav.isvalid =1
+        <if test="fundName != null and fundName != ''">
+            and nav.fund_name=#{fundName}
+        </if>
+        <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>
 
 
 </mapper>

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

@@ -92,7 +92,7 @@
         info.fund_name as target_fund_name,
         info.register_number as target_register_number,
         c.company_name as company_name,
-        a.last_price_date as last_price_date,
+        fnmi.last_price_date as last_price_date,
         alias.isvalid,
         alias.creatorid,
         alias.createtime,
@@ -105,11 +105,8 @@
         on alias.target_fund_id = info.fund_id and info.isvalid=1
         left join PPW_EMAIL.pvn_company_info c
         on c.company_id = info.trust_id and c.isvalid=1
-        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
+        join fund_not_mapping_info fnmi
+        on fnmi.fund_alias_id=alias.id 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},'%') )
@@ -127,13 +124,18 @@
             <when test="sort != null  and sort=='priceDate' and order != null and order =='asc'">
                 order by
                 CASE
-                    WHEN a.last_price_date IS NULL THEN 1
+                    WHEN fnmi.last_price_date IS NULL THEN 1
                 ELSE 0
                 END,
-                a.last_price_date asc
+                fnmi.last_price_date asc
             </when>
             <otherwise>
-                order by a.last_price_date desc
+                order by
+                CASE
+                WHEN fnmi.last_price_date IS NULL THEN 1
+                ELSE 0
+                END,
+                fnmi.last_price_date desc
             </otherwise>
         </choose>
         limit #{offset},#{pageSize}
@@ -178,7 +180,7 @@
         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 id, source_fund_name as "fundName",source_register_number as "registerNumber" from PPW_EMAIL.fund_alias where isvalid=1
     </select>
 
     <insert id="batchInsert">

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

@@ -5,6 +5,8 @@
         <id column="id" property="id"/>
         <result column="fund_name" property="fundName"/>
         <result column="register_number" property="registerNumber"/>
+        <result column="fund_alias_id" property="fundAliasId"/>
+        <result column="last_price_date" property="lastPriceDate"/>
         <result column="nav_total" property="navTotal"/>
         <result column="asset_total" property="assetTotal"/>
         <result column="isvalid" property="isvalid"/>

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

@@ -105,7 +105,7 @@ public class CompleteScheduleConfig implements SchedulingConfigurer {
                 loadFtpFileUpdateTriggerContext -> {
                     String cron = sysConfigMapper.selectConfigByKey("not_mapping_nav_asset_compute");
                     if(StringUtil.isEmpty(cron)){
-                        cron = "0 10 0/1 * * ?";
+                        cron = "0 13 0/1 * * ?";
                     }
                     logger.info("匹配基金净值规模数量定时任务轮训时间:"+cron);
                     //2.2 返回执行周期(Date)

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

@@ -10,4 +10,6 @@ public interface EmailFundNavService {
     void reparseFileNav(String sourceFundName,String registerNumber, String targetFundId,String sourceFundId);
 
     Integer countNoStoreNav(String fundName, String registerNumber);
+
+    String getLastPriceDateByfundRegisterNumber(String fundName, String registerNumber);
 }

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

@@ -191,7 +191,7 @@ public class DeletionServiceImpl implements DeletionService {
             deletionTypeStatisticsDO.setProcessedNum(processedNum);
             DeletionTypeStatisticsDO oldDeletionTypeStatisticsDO = deletionTypeStatisticsMapper.getDeletionTypeStatistics(fundId,deletionType);
             if(oldDeletionTypeStatisticsDO != null){
-                deletionTypeStatisticsDO.setDeletionNum(oldDeletionTypeStatisticsDO.getDeletionNum());
+                deletionTypeStatisticsDO.setId(oldDeletionTypeStatisticsDO.getId());
                 deletionTypeStatisticsDO.setUpdateTime(new Date());
             }
             deletionTypeStatisticsDOList.add(deletionTypeStatisticsDO);

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

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

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

@@ -34,12 +34,16 @@ public class NotMappingFundComputeTask {
         for (FundRegisterDO fundRegisterDO : fundRegisterDOList) {
             FundNotMappingInfoDO fundNotMappingInfoDO = new FundNotMappingInfoDO();
             fundNotMappingInfoDO.setFundName(fundRegisterDO.getFundName());
+            fundNotMappingInfoDO.setFundAliasId(fundRegisterDO.getId());
             fundNotMappingInfoDO.setRegisterNumber(fundRegisterDO.getRegisterNumber());
             //异常净值数量
             Integer navTotal = emailFundNavService.countNoStoreNav(fundRegisterDO.getFundName(),fundRegisterDO.getRegisterNumber());
             //异常净值数量
             Integer assetTotal = emailFundAssetService.countNoStoreAsset(fundRegisterDO.getFundName(),fundRegisterDO.getRegisterNumber());
+
+            String lastPriceDate = emailFundNavService.getLastPriceDateByfundRegisterNumber(fundRegisterDO.getFundName(),fundRegisterDO.getRegisterNumber());
             fundNotMappingInfoDO.setAssetTotal(assetTotal);
+            fundNotMappingInfoDO.setLastPriceDate(lastPriceDate);
             fundNotMappingInfoDO.setNavTotal(navTotal);
             fundNotMappingInfoDO.setIsvalid(1);
             fundNotMappingInfoDO.setCreateTime(new Date());