浏览代码

feat: 净值规模查询功能开发

chenjianhua 7 月之前
父节点
当前提交
dfa0c7e8c3

+ 20 - 0
service-base/src/main/java/com/simuwang/base/mapper/FundNavAssetMapper.java

@@ -0,0 +1,20 @@
+package com.simuwang.base.mapper;
+
+import com.simuwang.base.pojo.dos.FundNavAssetDO;
+import com.simuwang.base.pojo.dto.query.FundNavAssetPageQuery;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * FileName: FundNavAssetMapper
+ * Author:   chenjianhua
+ * Date:     2024/9/15 17:01
+ * Description: ${DESCRIPTION}
+ */
+@Mapper
+public interface FundNavAssetMapper {
+    List<FundNavAssetDO> searchNavAssetList(FundNavAssetPageQuery fundNavAssetPageQuery);
+
+    long countNavAssetList(FundNavAssetPageQuery fundNavAssetPageQuery);
+}

+ 63 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/FundNavAssetDO.java

@@ -0,0 +1,63 @@
+package com.simuwang.base.pojo.dos;
+
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.pojo.vo.FundNavAssetVO;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * FileName: FundNavAssetVO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:49
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class FundNavAssetDO {
+    /**
+     * 基金ID
+     */
+    private String fundId;
+    /**
+     * 基金名称
+     */
+    private String fundName;
+    /**
+     * 净值日期
+     */
+    private Date priceDate;
+    /**
+     * 单位净值
+     */
+    private BigDecimal nav;
+    /**
+     * 累计净值
+     */
+    private BigDecimal cumulativeNavWithdrawal;
+    /**
+     * 资产份额
+     */
+    private BigDecimal assetShare;
+    /**
+     * 资产净值
+     */
+    private BigDecimal assetNet;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    public FundNavAssetVO toVo() {
+        FundNavAssetVO vo = new FundNavAssetVO();
+        vo.setFundId(this.fundId);
+        vo.setFundName(this.fundName);
+        vo.setPriceDate(DateUtils.format(this.priceDate,DateUtils.YYYY_MM_DD));
+        vo.setNav(this.nav);
+        vo.setCumulativeNavWithdrawal(this.cumulativeNavWithdrawal);
+        vo.setAssetNet(this.assetNet);
+        vo.setAssetShare(this.assetShare);
+        vo.setUpdateTime(DateUtils.format(this.updateTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        return vo;
+    }
+}

+ 35 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/FundNavAssetPageQuery.java

@@ -0,0 +1,35 @@
+package com.simuwang.base.pojo.dto.query;
+
+import com.simuwang.base.common.support.query.PageQuery;
+import lombok.Data;
+
+/**
+ * FileName: FundNavAssetPageQuery
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:55
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class FundNavAssetPageQuery extends PageQuery {
+
+    /**
+     * 基金名称
+     */
+    private String fundName;
+    /**
+     * 净值开始日期
+     */
+    private String priceStartDate;
+    /**
+     * 净值结束日期
+     */
+    private String priceEndDate;
+    /**
+     * 更新开始日期
+     */
+    private String updateStartDate;
+    /**
+     * 更新结束日期
+     */
+    private String updateEndDate;
+}

+ 47 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/FundNavAssetVO.java

@@ -0,0 +1,47 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * FileName: FundNavAssetVO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:49
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class FundNavAssetVO {
+    /**
+     * 基金ID
+     */
+    private String fundId;
+    /**
+     * 基金名称
+     */
+    private String fundName;
+    /**
+     * 净值日期
+     */
+    private String priceDate;
+    /**
+     * 单位净值
+     */
+    private BigDecimal nav;
+    /**
+     * 累计净值
+     */
+    private BigDecimal cumulativeNavWithdrawal;
+    /**
+     * 资产份额
+     */
+    private BigDecimal assetShare;
+    /**
+     * 资产净值
+     */
+    private BigDecimal assetNet;
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+}

+ 95 - 0
service-base/src/main/resources/mapper/FundNavAssetMapper.xml

@@ -0,0 +1,95 @@
+<?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.FundNavAssetMapper">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.FundNavAssetDO">
+        <result column="fund_id" property="fundId"/>
+        <result column="fund_short_name" property="fundName"/>
+        <result column="price_date" property="priceDate"/>
+        <result column="nav" property="nav"/>
+        <result column="cumulative_nav_withdrawal" property="cumulativeNavWithdrawal"/>
+        <result column="asset_share" property="assetShare"/>
+        <result column="asset_net" property="assetNet"/>
+        <result column="updatetime" property="updateTime"/>
+    </resultMap>
+    <select id="searchNavAssetList" resultMap="BaseResultMap"
+            parameterType="com.simuwang.base.pojo.dto.query.FundNavAssetPageQuery">
+        SELECT distinct
+        info.fund_id,
+        info.fund_short_name,
+        IFNULL(
+        nav.price_date,
+        asset.price_date
+        ) AS price_date,
+        nav.nav,
+        nav.cumulative_nav_withdrawal,
+        asset.asset_share,
+        asset.asset_net,
+        CASE
+        WHEN nav.updatetime is null
+        THEN asset.updatetime
+        WHEN asset.updatetime is null
+        THEN nav.updatetime
+        WHEN asset.updatetime >= nav.updatetime
+        THEN asset.updatetime
+        ELSE nav.updatetime
+        END AS updatetime
+        FROM
+        PPW_EMAIL.pvn_fund_info info
+        LEFT JOIN PPW_EMAIL.nav nav
+        ON info.fund_id = nav.fund_id
+        AND nav.isvalid = 1
+        LEFT JOIN PPW_EMAIL.asset asset
+        ON info.fund_id = asset.fund_id
+        AND nav.price_date = asset.price_date
+        AND asset.isvalid = 1
+        WHERE info.isvalid = 1
+        and (nav.nav is not null or asset.asset_share is not null or asset.asset_net is not null)
+        <if test="fundName != null and fundName !=''">
+            and (info.fund_name like concat('%',#{fundName},'%') or info.fund_short_name like concat('%',#{fundName},'%') or info.register_number like concat('%',#{fundName},'%'))
+        </if>
+        <if test="priceStartDate != null and priceStartDate !=''">
+            and (nav.price_date >= #{priceStartDate} or asset.price_date >= #{priceStartDate})
+        </if>
+        <if test="priceEndDate != null and priceEndDate !=''">
+            and (nav.price_date <![CDATA[ <= ]]> #{priceEndDate} or asset.price_date <![CDATA[ <= ]]> #{priceEndDate})
+        </if>
+        <if test="updateStartDate != null and updateStartDate !=''">
+            and (nav.updatetime >= #{updateStartDate} or asset.updatetime >= #{updateStartDate})
+        </if>
+        <if test="updateEndDate != null and updateEndDate !=''">
+            and (nav.updatetime <![CDATA[ <= ]]> #{updateEndDate} or asset.updatetime <![CDATA[ <= ]]> #{updateEndDate})
+        </if>
+        order by fund_name,price_date desc
+        limit #{offset},#{pageSize}
+    </select>
+    <select id="countNavAssetList" resultType="java.lang.Long"
+            parameterType="com.simuwang.base.pojo.dto.query.FundNavAssetPageQuery">
+        SELECT count(1)
+        FROM
+        PPW_EMAIL.pvn_fund_info info
+        LEFT JOIN PPW_EMAIL.nav nav
+        ON info.fund_id = nav.fund_id
+        AND nav.isvalid = 1
+        LEFT JOIN PPW_EMAIL.asset asset
+        ON info.fund_id = asset.fund_id
+        AND nav.price_date = asset.price_date
+        AND asset.isvalid = 1
+        WHERE info.isvalid = 1
+        and (nav.nav is not null or asset.asset_share is not null or asset.asset_net is not null)
+        <if test="fundName != null and fundName !=''">
+            and (info.fund_name like concat('%',#{fundName},'%') or info.fund_short_name like concat('%',#{fundName},'%') or info.register_number like concat('%',#{fundName},'%'))
+        </if>
+        <if test="priceStartDate != null and priceStartDate !=''">
+            and (nav.price_date >= #{priceStartDate} or asset.price_date >= #{priceStartDate})
+        </if>
+        <if test="priceEndDate != null and priceEndDate !=''">
+            and (nav.price_date <![CDATA[ <= ]]> #{priceEndDate} or asset.price_date <![CDATA[ <= ]]> #{priceEndDate})
+        </if>
+        <if test="updateStartDate != null and updateStartDate !=''">
+            and (nav.updatetime >= #{updateStartDate} or asset.updatetime >= #{updateStartDate})
+        </if>
+        <if test="updateEndDate != null and updateEndDate !=''">
+            and (nav.updatetime <![CDATA[ <= ]]> #{updateEndDate} or asset.updatetime <![CDATA[ <= ]]> #{updateEndDate})
+        </if>
+    </select>
+</mapper>

+ 37 - 0
service-manage/src/main/java/com/simuwang/manage/api/navAsset/FundNavAssetController.java

@@ -0,0 +1,37 @@
+package com.simuwang.manage.api.navAsset;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.DistributionPageQuery;
+import com.simuwang.base.pojo.dto.query.FundNavAssetPageQuery;
+import com.simuwang.base.pojo.vo.DistributionTablePageVO;
+import com.simuwang.base.pojo.vo.FundNavAssetVO;
+import com.simuwang.manage.service.FundNavAssetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 净值规模管理
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:46
+ * Description: ${DESCRIPTION}
+ */
+@RestController
+@RequestMapping("/v1/nav-asset")
+public class FundNavAssetController {
+
+    @Autowired
+    private FundNavAssetService fundNavAssetService;
+
+    /**
+     * 基金净值规模页面展示查询
+     * @param fundNavAssetPageQuery
+     * @return
+     */
+    @RequestMapping("search-nav-asset-list")
+    public MybatisPage<FundNavAssetVO> searchNavAssetList(FundNavAssetPageQuery fundNavAssetPageQuery){
+        MybatisPage<FundNavAssetVO> result = fundNavAssetService.searchNavAssetList(fundNavAssetPageQuery);
+        return result;
+    }
+
+}

+ 15 - 0
service-manage/src/main/java/com/simuwang/manage/service/FundNavAssetService.java

@@ -0,0 +1,15 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.FundNavAssetPageQuery;
+import com.simuwang.base.pojo.vo.FundNavAssetVO;
+
+/**
+ * FileName: FundNavAssetService
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:57
+ * Description: ${DESCRIPTION}
+ */
+public interface FundNavAssetService {
+    MybatisPage<FundNavAssetVO> searchNavAssetList(FundNavAssetPageQuery fundNavAssetPageQuery);
+}

+ 33 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/FundNavAssetServiceImpl.java

@@ -0,0 +1,33 @@
+package com.simuwang.manage.service.impl;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.mapper.FundNavAssetMapper;
+import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
+import com.simuwang.base.pojo.dos.FundNavAssetDO;
+import com.simuwang.base.pojo.dto.query.FundNavAssetPageQuery;
+import com.simuwang.base.pojo.vo.FundNavAssetVO;
+import com.simuwang.manage.service.FundNavAssetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * FileName: FundNavAssetServiceImpl
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:58
+ * Description: ${DESCRIPTION}
+ */
+@Service
+public class FundNavAssetServiceImpl implements FundNavAssetService {
+    @Autowired
+    private FundNavAssetMapper fundNavAssetMapper;
+    @Override
+    public MybatisPage<FundNavAssetVO> searchNavAssetList(FundNavAssetPageQuery fundNavAssetPageQuery) {
+        List<FundNavAssetDO> fundNavAssetDOList = fundNavAssetMapper.searchNavAssetList(fundNavAssetPageQuery);
+        List<FundNavAssetVO> fundNavAssetVOList = fundNavAssetDOList.stream().map(FundNavAssetDO::toVo).collect(Collectors.toList());
+        long total = fundNavAssetMapper.countNavAssetList(fundNavAssetPageQuery);
+        return MybatisPage.of(total,fundNavAssetVOList);
+    }
+}