Переглянути джерело

feat: 分红管理开发,包含增删改查

chenjianhua 7 місяців тому
батько
коміт
6f545195e5
17 змінених файлів з 769 додано та 18 видалено
  1. 34 0
      service-base/src/main/java/com/simuwang/base/mapper/DistributionMapper.java
  2. 4 0
      service-base/src/main/java/com/simuwang/base/mapper/NavMapper.java
  3. 70 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/DistributionDO.java
  4. 98 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/DistributionTablePageDO.java
  5. 73 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/query/DistributionPageQuery.java
  6. 20 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyIdListVO.java
  7. 18 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyIdVO.java
  8. 67 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/DistributionTablePageVO.java
  9. 48 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/DistributionVO.java
  10. 20 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/IdListVO.java
  11. 0 12
      service-base/src/main/java/com/simuwang/base/pojo/vo/IdVO.java
  12. 128 0
      service-base/src/main/resources/mapper/DistributionMapper.xml
  13. 17 0
      service-base/src/main/resources/mapper/NavMapper.xml
  14. 4 6
      service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailSendHistoryController.java
  15. 51 0
      service-manage/src/main/java/com/simuwang/manage/api/distribution/DistributionController.java
  16. 22 0
      service-manage/src/main/java/com/simuwang/manage/service/DistributionService.java
  17. 95 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/DistributionServiceImpl.java

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

@@ -0,0 +1,34 @@
+package com.simuwang.base.mapper;
+
+import com.simuwang.base.pojo.dos.DistributionDO;
+import com.simuwang.base.pojo.dos.DistributionTablePageDO;
+import com.simuwang.base.pojo.dto.query.DistributionPageQuery;
+import com.simuwang.base.pojo.vo.IdListVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * FileName: DistributionMapper
+ * Author:   chenjianhua
+ * Date:     2024/9/15 14:09
+ * Description: ${DESCRIPTION}
+ */
+@Mapper
+public interface DistributionMapper {
+    List<DistributionTablePageDO> searchDistributionList(DistributionPageQuery distributionPageQuery);
+
+    long countDistributionList(DistributionPageQuery distributionPageQuery);
+
+    DistributionDO selectDistributionById(@Param("id") Integer id);
+
+    void updateDistributionById(DistributionDO distributionDO);
+
+    DistributionDO selectDistributionByDate(@Param("fundId") String fundId, @Param("distributeDate") Date distributeDate);
+
+    void saveDistribution(DistributionDO distributionDO);
+
+    void deleteDistribution(@Param("ids") List<Integer> idList);
+}

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

@@ -16,4 +16,8 @@ public interface NavMapper {
     List<String> queryFundNavByDate(@Param("fundId") String fundId, @Param("priceDateList") List<String> priceDateList);
 
     NavDO queryFundNav(NavDO navDO);
+
+    void saveNav( NavDO navDO);
+
+    void updateNav(NavDO navDO);
 }

+ 70 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/DistributionDO.java

@@ -0,0 +1,70 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * FileName: DistributionDO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 13:54
+ * Description: ${DESCRIPTION}
+ */
+@Data
+@TableName("distribution")
+public class DistributionDO {
+    /**
+     * 主键Id
+     */
+    @TableId(value = "id")
+    private Integer id;
+    /**
+     * 基金id
+     */
+    @TableField(value = "fund_id")
+    private String fundId;
+    /**
+     * 分红日期
+     */
+    @TableField(value = "distribute_date")
+    private Date distributeDate;
+    /**
+     * 基金分配类型标志:-1-其他,1-分红,2-拆分,3-业绩报酬,4-注资,5-撤资
+     */
+    @TableField(value = "distribute_type")
+    private Integer distributeType;
+    /**
+     * 分红/拆分比例
+     */
+    @TableField(value = "distribution")
+    private BigDecimal distribution;
+    /**
+     * 是否有效: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;
+}

+ 98 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/DistributionTablePageDO.java

@@ -0,0 +1,98 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.pojo.vo.DistributionTablePageVO;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * FileName: DistributionDO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 13:54
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class DistributionTablePageDO{
+    /**
+     * 主键Id
+     */
+    private Integer id;
+    /**
+     * 基金id
+     */
+    private String fundId;
+    /**
+     * 基金名称
+     */
+    private String fundName;
+    /**
+     * 备案编码
+     */
+    private String registerNumber;
+    /**
+     * 公司名称
+     */
+    private String companyName;
+    /**
+     * 分红日期
+     */
+    private Date distributeDate;
+    /**
+     * 基金分配类型标志:-1-其他,1-分红,2-拆分,3-业绩报酬,4-注资,5-撤资
+     */
+    private Integer distributeType;
+    /**
+     * 分红/拆分比例
+     */
+    private BigDecimal distribution;
+    /**
+     * 单位净值
+     */
+    private BigDecimal nav;
+    /**
+     * 累计单位净值
+     */
+    private BigDecimal cumulativeNavWithdrawal;
+    /**
+     * 是否有效:0-无效,1-有效
+     */
+    private Integer isvalid;
+    /**
+     * 创建者Id
+     */
+    private Integer creatorId;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改者Id
+     */
+    private Integer updaterId;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    public DistributionTablePageVO toVo() {
+        DistributionTablePageVO vo = new DistributionTablePageVO();
+        vo.setId(this.id);
+        vo.setFundId(this.fundId);
+        vo.setFundName(this.fundName);
+        vo.setCompanyName(this.companyName);
+        vo.setDistribution(this.distribution);
+        vo.setDistributeType(this.distributeType);
+        vo.setDistributeDate(DateUtils.format(this.distributeDate,DateUtils.YYYY_MM_DD));
+        vo.setNav(this.nav);
+        vo.setCumulativeNavWithdrawal(this.cumulativeNavWithdrawal);
+        vo.setRegisterNumber(this.registerNumber);
+        vo.setUpdateTime(DateUtils.format(this.updateTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        vo.setIsvalid(this.isvalid);
+        return vo;
+    }
+}

+ 73 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/DistributionPageQuery.java

@@ -0,0 +1,73 @@
+package com.simuwang.base.pojo.dto.query;
+
+
+import com.simuwang.base.common.support.query.PageQuery;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 13:38
+ * @description 角色用户关联的分页接口请求参数
+ */
+public class DistributionPageQuery extends PageQuery {
+
+    /**
+     * 公司名称
+     */
+    private String fundName;
+    /**
+     * 公司名称
+     */
+    private String companyName;
+    /**
+     * 分红方式
+     */
+    private Integer distributeType;
+    /**
+     * 分红开始日期
+     */
+    private String startDate;
+    /**
+     * 分红结束日期
+     */
+    private String endDate;
+
+    public String getFundName() {
+        return fundName;
+    }
+
+    public void setFundName(String fundName) {
+        this.fundName = fundName;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public Integer getDistributeType() {
+        return distributeType;
+    }
+
+    public void setDistributeType(Integer distributeType) {
+        this.distributeType = distributeType;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+}

+ 20 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyIdListVO.java

@@ -0,0 +1,20 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * FileName: CompanyIdVO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:12
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class CompanyIdListVO {
+
+    /**
+     * 公司ID
+     */
+    private List<String> companyIdList;
+}

+ 18 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyIdVO.java

@@ -0,0 +1,18 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+/**
+ * FileName: CompanyIdVO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:12
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class CompanyIdVO {
+
+    /**
+     * 公司ID
+     */
+    private String companyId;
+}

+ 67 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/DistributionTablePageVO.java

@@ -0,0 +1,67 @@
+package com.simuwang.base.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * FileName: DistributionDO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 13:54
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class DistributionTablePageVO {
+    /**
+     * 主键Id
+     */
+    private Integer id;
+    /**
+     * 基金id
+     */
+    private String fundId;
+    /**
+     * 基金名称
+     */
+    private String fundName;
+    /**
+     * 备案编码
+     */
+    private String registerNumber;
+    /**
+     * 公司名称
+     */
+    private String companyName;
+    /**
+     * 分红日期
+     */
+    private String distributeDate;
+    /**
+     * 基金分配类型标志:-1-其他,1-分红,2-拆分,3-业绩报酬,4-注资,5-撤资
+     */
+    private Integer distributeType;
+    /**
+     * 分红/拆分比例
+     */
+    private BigDecimal distribution;
+    /**
+     * 单位净值
+     */
+    private BigDecimal nav;
+    /**
+     * 累计单位净值
+     */
+    private BigDecimal cumulativeNavWithdrawal;
+    /**
+     * 是否有效:0-无效,1-有效
+     */
+    private Integer isvalid;
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+}

+ 48 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/DistributionVO.java

@@ -0,0 +1,48 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * FileName: DistributionDO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 13:54
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class DistributionVO {
+    /**
+     * 主键Id
+     */
+    private Integer id;
+    /**
+     * 基金id
+     */
+    private String fundId;
+    /**
+     * 基金名称
+     */
+    private String fundName;
+    /**
+     * 分红日期
+     */
+    private String distributeDate;
+    /**
+     * 基金分配类型标志:-1-其他,1-分红,2-拆分,3-业绩报酬,4-注资,5-撤资
+     */
+    private Integer distributeType;
+    /**
+     * 分红/拆分比例
+     */
+    private BigDecimal distribution;
+    /**
+     * 单位净值
+     */
+    private BigDecimal nav;
+    /**
+     * 累计单位净值
+     */
+    private BigDecimal cumulativeNavWithdrawal;
+}

+ 20 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/IdListVO.java

@@ -0,0 +1,20 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * FileName: IdListVO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:03
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class IdListVO {
+
+    /**
+     * 批量删除的ID集合,单个也是
+     */
+    private List<Integer> idList;
+}

+ 0 - 12
service-base/src/main/java/com/simuwang/base/pojo/vo/IdVO.java

@@ -17,16 +17,4 @@ public class IdVO {
      * 主键ID
      */
     private Integer id;
-    /**
-     * 公司ID
-     */
-    private String companyId;
-    /**
-     * 批量ID集合
-     */
-    private List<Integer> idList;
-    /**
-     * 批量CompanyId集合
-     */
-    private List<String> companyIdList;
 }

+ 128 - 0
service-base/src/main/resources/mapper/DistributionMapper.xml

@@ -0,0 +1,128 @@
+<?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.DistributionMapper">
+    <resultMap id="BaseMap" type="com.simuwang.base.pojo.dos.DistributionDO">
+        <id column="id" property="id"/>
+        <result column="fund_id" property="fundId"/>
+        <result column="distribute_date" property="distributeDate"/>
+        <result column="distribute_type" property="distributeType"/>
+        <result column="distribution" property="distribution"/>
+        <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>
+
+    <resultMap id="BasePageMap" type="com.simuwang.base.pojo.dos.DistributionTablePageDO">
+        <id column="id" property="id"/>
+        <result column="fund_name" property="fundName"/>
+        <result column="company_name" property="companyName"/>
+        <result column="register_number" property="registerNumber"/>
+        <result column="fund_id" property="fundId"/>
+        <result column="distribute_date" property="distributeDate"/>
+        <result column="distribute_type" property="distributeType"/>
+        <result column="distribution" property="distribution"/>
+        <result column="nav" property="nav"/>
+        <result column="cumulative_nav_withdrawal" property="cumulativeNavWithdrawal"/>
+        <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>
+    <insert id="saveDistribution" parameterType="com.simuwang.base.pojo.dos.DistributionDO">
+        insert into PPW_EMAIL.distribution(fund_id,distribute_date,distribute_type,distribution,isvalid,creatorid,createtime,updatetime,updaterid)
+        values (#{fundId},#{distributeDate},#{distributeType},#{distribution},#{isvalid},#{creatorId},#{createTime},#{updateTime},#{updaterId})
+    </insert>
+    <update id="updateDistributionById" parameterType="com.simuwang.base.pojo.dos.DistributionDO">
+        update PPW_EMAIL.distribution set distribute_date=#{distributeDate},distribute_type=#{distributeType},distribution=#{distribution},updatetime=#{updateTime}
+        where id=#{id} and isvalid =1
+    </update>
+    <delete id="deleteDistribution" parameterType="com.simuwang.base.pojo.vo.IdListVO">
+        update PPW_EMAIL.distribution set isvalid =0,updatetime=sysdate() where isvalid =1 and id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <select id="searchDistributionList" resultMap="BasePageMap"
+            parameterType="com.simuwang.base.pojo.dto.query.DistributionPageQuery">
+        SELECT DISTINCT
+            d.id,
+            d.fund_id,
+            info.fund_name,
+            info.register_number,
+            c.company_name,
+            d.distribute_date,
+            d.distribute_type,
+            d.distribution,
+            n.nav,
+            n.cumulative_nav_withdrawal,
+            d.updatetime,
+            d.isvalid,
+            d.creatorid,
+            d.createtime,
+            d.updatetime
+        FROM
+            PPW_EMAIL.distribution d
+            JOIN PPW_EMAIL.pvn_fund_info info
+            ON d.fund_id = info.fund_id
+            JOIN PPW_EMAIL.pvn_company_info c
+            ON info.trust_id = c.company_id
+            JOIN PPW_EMAIL.nav n
+            ON n.fund_id = d.fund_id and d.distribute_date=n.price_date
+        WHERE d.isvalid = 1
+            AND info.isvalid = 1
+            AND c.isvalid = 1
+            AND n.isvalid = 1
+        <if test="companyName != null and companyName !=''">
+            and (c.company_name like concat('%',#{companyName},'%') or c.company_short_name like concat('%',#{companyName},'%'))
+        </if>
+        <if test="fundName != null and fundName !=''">
+            and (info.fund_name like concat('%',#{fundName},'%') or info.fund_short_name like concat('%',#{fundName},'%'))
+        </if>
+        <if test="distributeType != null">
+            and d.distribute_type = #{distributeType}
+        </if>
+        <if test="startDate != null and startDate !=''">
+            and d.distribute_date >= #{startDate}
+        </if>
+        <if test="endDate != null and endDate !=''">
+            and d.distribute_date <![CDATA[ <= ]]> #{endDate}
+        </if>
+        limit #{offset},#{pageSize}
+    </select>
+    <select id="countDistributionList" resultType="java.lang.Long"
+            parameterType="com.simuwang.base.pojo.dto.query.DistributionPageQuery">
+        select count(distinct d.id)
+        from PPW_EMAIL.distribution d
+        join PPW_EMAIL.pvn_fund_info info on d.fund_id = info.fund_id
+        join PPW_EMAIL.pvn_company_info c on info.trust_id = c.company_id
+        join PPW_EMAIL.nav n on n.fund_id = d.fund_id
+        where d.isvalid=1 and info.isvalid =1 and c.isvalid =1 and n.isvalid=1
+        <if test="companyName != null and companyName !=''">
+            and (c.company_name like concat('%',#{companyName},'%') or c.company_short_name like concat('%',#{companyName},'%'))
+        </if>
+        <if test="fundName != null and fundName !=''">
+            and (info.fund_name like concat('%',#{fundName},'%') or info.fund_short_name like concat('%',#{fundName},'%'))
+        </if>
+        <if test="distributeType != null">
+            and d.distribute_type = #{distributeType}
+        </if>
+        <if test="startDate != null and startDate !=''">
+            and d.distribute_date >= #{startDate}
+        </if>
+        <if test="endDate != null and endDate !=''">
+            and d.distribute_date <![CDATA[ <= ]]> #{endDate}
+        </if>
+    </select>
+    <select id="selectDistributionById" resultMap="BaseMap"
+            parameterType="java.lang.Integer">
+        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,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>
+</mapper>

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

@@ -39,6 +39,23 @@
             and price_date = #{itemDo.priceDate}
         </foreach>
     </insert>
+    <insert id="saveNav" parameterType="com.simuwang.base.pojo.dos.NavDO">
+        insert into PPW_EMAIL.nav(fund_id,price_date,nav,cumulative_nav,cumulative_nav_withdrawal,
+        isvalid, creatorid, createtime, updaterid, updatetime)
+        values
+            (#{fundId},#{priceDate},#{nav},#{cumulativeNav},#{cumulativeNavWithdrawal},
+            #{isvalid}, #{creatorId}, #{createTime}, #{updaterId}, #{updateTime})
+    </insert>
+    <update id="updateNav" parameterType="com.simuwang.base.pojo.dos.NavDO">
+        update PPW_EMAIL.nav
+        <set>
+            nav = #{nav},
+            cumulative_nav_withdrawal = #{cumulativeNavWithdrawal},
+            updatetime=#{updateTime}
+        </set>
+        where isvalid = 1
+        and id=#{id}
+    </update>
 
     <select id="queryFundNavByDate" resultType="java.lang.String">
         select price_date

+ 4 - 6
service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailSendHistoryController.java

@@ -5,9 +5,7 @@ import com.simuwang.base.common.page.TableDataInfo;
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.pojo.dto.query.CompanyEmailHistoryPageQuery;
 import com.simuwang.base.pojo.dto.query.CompanyEmailPageQuery;
-import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
-import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
-import com.simuwang.base.pojo.vo.IdVO;
+import com.simuwang.base.pojo.vo.*;
 import com.simuwang.manage.api.base.BaseController;
 import com.simuwang.manage.service.CompanyEmailConfigService;
 import com.simuwang.manage.service.CompanyEmailSendHistoryService;
@@ -72,7 +70,7 @@ public class CompanyEmailSendHistoryController extends BaseController {
      * @return
      */
     @PostMapping("delete-company-email")
-    public boolean deleteEmail(@RequestBody IdVO comyanyEmailIdVO){
+    public boolean deleteEmail(@RequestBody CompanyIdListVO comyanyEmailIdVO){
         companyEmailSendHistoryService.deleteEmail(comyanyEmailIdVO.getCompanyIdList());
         return true;
     }
@@ -83,7 +81,7 @@ public class CompanyEmailSendHistoryController extends BaseController {
      * @return
      */
     @PostMapping("delete-email-history")
-    public boolean deleteEmailHistory(@RequestBody IdVO comyanyEmailIdVO){
+    public boolean deleteEmailHistory(@RequestBody IdListVO comyanyEmailIdVO){
         companyEmailSendHistoryService.deleteEmailHistory(comyanyEmailIdVO.getIdList());
         return true;
     }
@@ -128,7 +126,7 @@ public class CompanyEmailSendHistoryController extends BaseController {
      * @return
      */
     @PostMapping("send-company-email")
-    public boolean sendCompanyEmail(@RequestBody IdVO comyanyEmailIdVO){
+    public boolean sendCompanyEmail(@RequestBody CompanyIdListVO comyanyEmailIdVO){
         companyEmailConfigService.sendCompanyEmail(comyanyEmailIdVO.getCompanyIdList());
         return true;
     }

+ 51 - 0
service-manage/src/main/java/com/simuwang/manage/api/distribution/DistributionController.java

@@ -0,0 +1,51 @@
+package com.simuwang.manage.api.distribution;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.CompanyEmailPageQuery;
+import com.simuwang.base.pojo.dto.query.DistributionPageQuery;
+import com.simuwang.base.pojo.vo.DistributionTablePageVO;
+import com.simuwang.base.pojo.vo.DistributionVO;
+import com.simuwang.base.pojo.vo.IdListVO;
+import com.simuwang.base.pojo.vo.IdVO;
+import com.simuwang.manage.service.DistributionService;
+import com.smppw.common.pojo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * FileName: DistributionController
+ * Author:   chenjianhua
+ * Date:     2024/9/15 13:36
+ * Description: ${DESCRIPTION}
+ */
+@RestController
+@RequestMapping("/v1/distribution")
+public class DistributionController {
+
+    @Autowired
+    private DistributionService distributionService;
+    /**
+     * 分红页面展示查询
+     * @param distributionPageQuery
+     * @return
+     */
+    @RequestMapping("search-distribution-list")
+    public MybatisPage<DistributionTablePageVO> searchDistributionList(DistributionPageQuery distributionPageQuery){
+        MybatisPage<DistributionTablePageVO> result = distributionService.searchDistributionList(distributionPageQuery);
+        return result;
+    }
+
+    @RequestMapping("save-distribution")
+    public ResultVo saveDistribution(@RequestBody DistributionVO distributionVO){
+        ResultVo vo = distributionService.saveDistribution(distributionVO);
+        return vo;
+    }
+
+    @RequestMapping("delete-distribution")
+    public boolean deleteDistribution(IdListVO idListVO){
+        distributionService.deleteDistribution(idListVO);
+        return true;
+    }
+}

+ 22 - 0
service-manage/src/main/java/com/simuwang/manage/service/DistributionService.java

@@ -0,0 +1,22 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.DistributionPageQuery;
+import com.simuwang.base.pojo.vo.DistributionTablePageVO;
+import com.simuwang.base.pojo.vo.DistributionVO;
+import com.simuwang.base.pojo.vo.IdListVO;
+import com.smppw.common.pojo.ResultVo;
+
+/**
+ * FileName: DistributionService
+ * Author:   chenjianhua
+ * Date:     2024/9/15 14:07
+ * Description: ${DESCRIPTION}
+ */
+public interface DistributionService {
+    MybatisPage<DistributionTablePageVO> searchDistributionList(DistributionPageQuery distributionPageQuery);
+
+    ResultVo saveDistribution(DistributionVO distributionVO);
+
+    void deleteDistribution(IdListVO idListVO);
+}

+ 95 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/DistributionServiceImpl.java

@@ -0,0 +1,95 @@
+package com.simuwang.manage.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.simuwang.base.common.conts.DateConst;
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.common.util.StringUtil;
+import com.simuwang.base.mapper.DistributionMapper;
+import com.simuwang.base.mapper.NavMapper;
+import com.simuwang.base.pojo.dos.DistributionDO;
+import com.simuwang.base.pojo.dos.DistributionTablePageDO;
+import com.simuwang.base.pojo.dos.NavDO;
+import com.simuwang.base.pojo.dto.query.DistributionPageQuery;
+import com.simuwang.base.pojo.vo.DistributionTablePageVO;
+import com.simuwang.base.pojo.vo.DistributionVO;
+import com.simuwang.base.pojo.vo.IdListVO;
+import com.simuwang.manage.service.DistributionService;
+import com.smppw.common.pojo.ResultVo;
+import org.apache.poi.ss.formula.functions.Na;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * FileName: DistributionServiceImpl
+ * Author:   chenjianhua
+ * Date:     2024/9/15 14:07
+ * Description: ${DESCRIPTION}
+ */
+@Service
+public class DistributionServiceImpl implements DistributionService {
+
+    @Autowired
+    private DistributionMapper distributionMapper;
+
+    @Autowired
+    private NavMapper navMapper;
+    @Override
+    public MybatisPage<DistributionTablePageVO> searchDistributionList(DistributionPageQuery distributionPageQuery) {
+        List<DistributionTablePageDO> distributionTablePageDOList = distributionMapper.searchDistributionList(distributionPageQuery);
+        List<DistributionTablePageVO> distributionTablePageVOList = distributionTablePageDOList.stream().map(DistributionTablePageDO::toVo).collect(Collectors.toList());
+        long total = distributionMapper.countDistributionList(distributionPageQuery);
+        return MybatisPage.of(total,distributionTablePageVOList);
+    }
+
+    @Override
+    public ResultVo saveDistribution(DistributionVO distributionVO) {
+        ResultVo vo = new ResultVo(true);
+        DistributionDO distributionDO = new DistributionDO();
+        distributionDO.setFundId(distributionVO.getFundId());
+        distributionDO.setDistribution(distributionVO.getDistribution());
+        distributionDO.setDistributeDate(DateUtils.parse(distributionVO.getDistributeDate(),DateUtils.YYYY_MM_DD));
+        distributionDO.setDistributeType(distributionVO.getDistributeType());
+        distributionDO.setIsvalid(1);
+        distributionDO.setUpdateTime(DateUtils.getNowDate());
+        DistributionDO oldDistributionDO = distributionMapper.selectDistributionByDate(distributionVO.getFundId(),DateUtils.parse(distributionVO.getDistributeDate(),DateUtils.YYYY_MM_DD));
+        if(!StringUtil.isNull(oldDistributionDO)){
+            if(!oldDistributionDO.getId().equals(distributionVO.getId())){
+                vo.setData(false);
+                vo.setMsg("同一基金在同一天不能已存在分红数据");
+                return vo;
+            }
+            distributionDO.setId(oldDistributionDO.getId());
+            distributionMapper.updateDistributionById(distributionDO);
+        }else{
+            distributionDO.setCreateTime(DateUtils.getNowDate());
+            distributionMapper.saveDistribution(distributionDO);
+        }
+        //保存净值
+        NavDO navDO = new NavDO();
+        navDO.setFundId(distributionVO.getFundId());
+        navDO.setNav(distributionVO.getNav());
+        navDO.setCumulativeNavWithdrawal(distributionVO.getCumulativeNavWithdrawal());
+        navDO.setPriceDate(DateUtils.parse(distributionVO.getDistributeDate(),DateUtils.YYYY_MM_DD));
+        NavDO oldNav = navMapper.queryFundNav(navDO);
+        if(StringUtil.isNull(oldNav)){
+            navDO.setUpdateTime(DateUtils.getNowDate());
+            navDO.setCreateTime(DateUtils.getNowDate());
+            navDO.setIsvalid(1);
+            navMapper.saveNav(navDO);
+        }else{
+            navDO.setId(oldNav.getId());
+            navDO.setUpdateTime(DateUtils.getNowDate());
+            navMapper.updateNav(navDO);
+        }
+        return vo;
+    }
+
+    @Override
+    public void deleteDistribution(IdListVO idListVO) {
+        distributionMapper.deleteDistribution(idListVO.getIdList());
+    }
+}