瀏覽代碼

feat:产品要素导入功能开发

chenjianhua 2 周之前
父節點
當前提交
cea407d3b3

+ 1 - 0
service-base/src/main/java/com/simuwang/base/common/conts/ExcelConst.java

@@ -31,4 +31,5 @@ public class ExcelConst {
     public final static String DELETION_NAME_REGISTERENUMBER="基金名称和备案编码不能同时为空";
     public final static String ERROR_INCEPTION_DATE="成立日期不能晚于当前日期";
     public final static String SUCCESS="数据解析正常";
+    public final static String DELETION_MANAGER_REGISTERENUMBER="投资经理和备案编码不能为空";
 }

+ 1 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/InvestmentManagerMapper.java

@@ -8,4 +8,5 @@ import org.apache.ibatis.annotations.Param;
 
 public interface InvestmentManagerMapper extends BaseMapper<InvestmentManagerDO> {
 
+    void deleteByRegisterNumber(@Param("registerNumberList") List<String> registerNumberList);
 }

+ 1 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/ProductContractMapper.java

@@ -9,4 +9,5 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface ProductContractMapper extends BaseMapper<ProductContractDO> {
 
+    ProductContractDO selectByNameAndRegisterNumber(@Param("registerNumber") String registerNumber, @Param("productName")String productName);
 }

+ 1 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/ProductDerivativeMapper.java

@@ -9,4 +9,5 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface ProductDerivativeMapper extends BaseMapper<ProductDerivativeDO> {
 
+    ProductDerivativeDO selectByNameAndRegisterNumber(@Param("registerNumber") String registerNumber, @Param("productName")String productName);
 }

+ 1 - 1
service-base/src/main/java/com/simuwang/base/mapper/daq/ProductInformationMapper.java

@@ -14,5 +14,5 @@ public interface ProductInformationMapper extends BaseMapper<ProductInformationD
 
     long countProductList(ProductPageQuery productPageQuery);
 
-    ProductInformationDO selectByNameAndRegisterNumber(ProductInformationDO productInformationDO);
+    ProductInformationDO selectByNameAndRegisterNumber(@Param("registerNumber") String registerNumber,@Param("productName")String productName);
 }

+ 19 - 300
service-base/src/main/java/com/simuwang/base/pojo/dos/InvestmentManagerDO.java

@@ -1,325 +1,44 @@
 package com.simuwang.base.pojo.dos;
 
-import java.util.Date;
+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("investment_manager")
 public class InvestmentManagerDO {
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.ID
-     *
-     * @mbggenerated
-     */
+
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.REGISTER_NUMBER
-     *
-     * @mbggenerated
-     */
+    @TableField("register_number")
     private String registerNumber;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.MANAGER_NAME
-     *
-     * @mbggenerated
-     */
+    @TableField("manager_name")
     private String managerName;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.START_DATE
-     *
-     * @mbggenerated
-     */
+    @TableField("start_date")
     private String startDate;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.END_DATE
-     *
-     * @mbggenerated
-     */
+    @TableField("end_date")
     private String endDate;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.ISVALID
-     *
-     * @mbggenerated
-     */
+    @TableField("isvalid")
     private Integer isvalid;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.CREATETIME
-     *
-     * @mbggenerated
-     */
+    @TableField("createtime")
     private Date createtime;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.UPDATETIME
-     *
-     * @mbggenerated
-     */
+    @TableField("updatetime")
     private Date updatetime;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.CREATORID
-     *
-     * @mbggenerated
-     */
+    @TableField("creatorid")
     private Integer creatorid;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column INVESTMENT_MANAGER.UPDATERID
-     *
-     * @mbggenerated
-     */
+    @TableField("updaterid")
     private Integer updaterid;
 
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.ID
-     *
-     * @return the value of INVESTMENT_MANAGER.ID
-     *
-     * @mbggenerated
-     */
-    public Integer getId() {
-        return id;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.ID
-     *
-     * @param id the value for INVESTMENT_MANAGER.ID
-     *
-     * @mbggenerated
-     */
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.REGISTER_NUMBER
-     *
-     * @return the value of INVESTMENT_MANAGER.REGISTER_NUMBER
-     *
-     * @mbggenerated
-     */
-    public String getRegisterNumber() {
-        return registerNumber;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.REGISTER_NUMBER
-     *
-     * @param registerNumber the value for INVESTMENT_MANAGER.REGISTER_NUMBER
-     *
-     * @mbggenerated
-     */
-    public void setRegisterNumber(String registerNumber) {
-        this.registerNumber = registerNumber == null ? null : registerNumber.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.MANAGER_NAME
-     *
-     * @return the value of INVESTMENT_MANAGER.MANAGER_NAME
-     *
-     * @mbggenerated
-     */
-    public String getManagerName() {
-        return managerName;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.MANAGER_NAME
-     *
-     * @param managerName the value for INVESTMENT_MANAGER.MANAGER_NAME
-     *
-     * @mbggenerated
-     */
-    public void setManagerName(String managerName) {
-        this.managerName = managerName == null ? null : managerName.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.START_DATE
-     *
-     * @return the value of INVESTMENT_MANAGER.START_DATE
-     *
-     * @mbggenerated
-     */
-    public String getStartDate() {
-        return startDate;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.START_DATE
-     *
-     * @param startDate the value for INVESTMENT_MANAGER.START_DATE
-     *
-     * @mbggenerated
-     */
-    public void setStartDate(String startDate) {
-        this.startDate = startDate == null ? null : startDate.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.END_DATE
-     *
-     * @return the value of INVESTMENT_MANAGER.END_DATE
-     *
-     * @mbggenerated
-     */
-    public String getEndDate() {
-        return endDate;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.END_DATE
-     *
-     * @param endDate the value for INVESTMENT_MANAGER.END_DATE
-     *
-     * @mbggenerated
-     */
-    public void setEndDate(String endDate) {
-        this.endDate = endDate == null ? null : endDate.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.ISVALID
-     *
-     * @return the value of INVESTMENT_MANAGER.ISVALID
-     *
-     * @mbggenerated
-     */
-    public Integer getIsvalid() {
-        return isvalid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.ISVALID
-     *
-     * @param isvalid the value for INVESTMENT_MANAGER.ISVALID
-     *
-     * @mbggenerated
-     */
-    public void setIsvalid(Integer isvalid) {
-        this.isvalid = isvalid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.CREATETIME
-     *
-     * @return the value of INVESTMENT_MANAGER.CREATETIME
-     *
-     * @mbggenerated
-     */
-    public Date getCreatetime() {
-        return createtime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.CREATETIME
-     *
-     * @param createtime the value for INVESTMENT_MANAGER.CREATETIME
-     *
-     * @mbggenerated
-     */
-    public void setCreatetime(Date createtime) {
-        this.createtime = createtime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.UPDATETIME
-     *
-     * @return the value of INVESTMENT_MANAGER.UPDATETIME
-     *
-     * @mbggenerated
-     */
-    public Date getUpdatetime() {
-        return updatetime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.UPDATETIME
-     *
-     * @param updatetime the value for INVESTMENT_MANAGER.UPDATETIME
-     *
-     * @mbggenerated
-     */
-    public void setUpdatetime(Date updatetime) {
-        this.updatetime = updatetime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.CREATORID
-     *
-     * @return the value of INVESTMENT_MANAGER.CREATORID
-     *
-     * @mbggenerated
-     */
-    public Integer getCreatorid() {
-        return creatorid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.CREATORID
-     *
-     * @param creatorid the value for INVESTMENT_MANAGER.CREATORID
-     *
-     * @mbggenerated
-     */
-    public void setCreatorid(Integer creatorid) {
-        this.creatorid = creatorid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column INVESTMENT_MANAGER.UPDATERID
-     *
-     * @return the value of INVESTMENT_MANAGER.UPDATERID
-     *
-     * @mbggenerated
-     */
-    public Integer getUpdaterid() {
-        return updaterid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column INVESTMENT_MANAGER.UPDATERID
-     *
-     * @param updaterid the value for INVESTMENT_MANAGER.UPDATERID
-     *
-     * @mbggenerated
-     */
-    public void setUpdaterid(Integer updaterid) {
-        this.updaterid = updaterid;
-    }
 }

+ 22 - 1
service-base/src/main/java/com/simuwang/base/pojo/dos/ProductContractDO.java

@@ -1,43 +1,64 @@
 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("product_contract")
 public class ProductContractDO {
-
+    @TableId(value="id",type = IdType.AUTO)
     private Integer id;
 
+    @TableField("product_id")
     private Integer productId;
 
+    @TableField("register_number")
     private String registerNumber;
 
+    @TableField("product_name")
     private String productName;
 
+    @TableField("product_contract")
     private String productContract;
 
+    @TableField("performance_basic")
     private String performanceBasic;
 
+    @TableField("accrued_method")
     private String accruedMethod;
 
+    @TableField("isvalid")
     private Integer isvalid;
 
+    @TableField("createtime")
     private Date createtime;
 
+    @TableField("updatetime")
     private Date updatetime;
 
+    @TableField("creatorid")
     private Integer creatorid;
 
+    @TableField("updaterid")
     private Integer updaterid;
 
+    @TableField("investment_scope")
     private String investmentScope;
 
+    @TableField("investment_limit")
     private String investmentLimit;
 
+    @TableField("investment_strategy")
     private String investmentStrategy;
 
+    @TableField("investment_method")
     private String investmentMethod;
 
+    @TableField("remark")
     private String remark;
 
 

+ 6 - 660
service-base/src/main/java/com/simuwang/base/pojo/dos/ProductDerivativeDO.java

@@ -1,709 +1,55 @@
 package com.simuwang.base.pojo.dos;
 
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
 
+import java.util.Date;
+@Data
+@TableName("product_derivative")
 public class ProductDerivativeDO {
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.ID
-     *
-     * @mbggenerated
-     */
+
     private Integer id;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.PRODUCT_ID
-     *
-     * @mbggenerated
-     */
     private Integer productId;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.REGISTER_NUMBER
-     *
-     * @mbggenerated
-     */
     private String registerNumber;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.PRODUCT_NAME
-     *
-     * @mbggenerated
-     */
     private String productName;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.DISTRIBUTE_REPORT
-     *
-     * @mbggenerated
-     */
     private String distributeReport;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.CUMULATIVE_NAV
-     *
-     * @mbggenerated
-     */
     private String cumulativeNav;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.PRODUCT_SHARE
-     *
-     * @mbggenerated
-     */
     private String productShare;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.PRODUCT_ASSET
-     *
-     * @mbggenerated
-     */
     private String productAsset;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.PRODUCT_VALUATION
-     *
-     * @mbggenerated
-     */
     private String productValuation;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.START_DATE
-     *
-     * @mbggenerated
-     */
     private String startDate;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.INVESTMENT_MANAGER_DESC
-     *
-     * @mbggenerated
-     */
     private String investmentManagerDesc;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.PRODUCT_COUNT
-     *
-     * @mbggenerated
-     */
     private String productCount;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.MANAGE_ASSET
-     *
-     * @mbggenerated
-     */
     private String manageAsset;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.FEE_NOTE
-     *
-     * @mbggenerated
-     */
     private String feeNote;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.MANAGEMENTFEE_TRUST
-     *
-     * @mbggenerated
-     */
     private String managementfeeTrust;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.MANAGEMENTFEE_BANK
-     *
-     * @mbggenerated
-     */
     private String managementfeeBank;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.OUTSOURCE_FEE
-     *
-     * @mbggenerated
-     */
     private String outsourceFee;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.ISVALID
-     *
-     * @mbggenerated
-     */
     private Integer isvalid;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.CREATETIME
-     *
-     * @mbggenerated
-     */
     private Date createtime;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.UPDATETIME
-     *
-     * @mbggenerated
-     */
     private Date updatetime;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.CREATORID
-     *
-     * @mbggenerated
-     */
     private Integer creatorid;
 
-    /**
-     * This field was generated by MyBatis Generator.
-     * This field corresponds to the database column PRODUCT_DERIVATIVE.UPDATERID
-     *
-     * @mbggenerated
-     */
     private Integer updaterid;
 
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.ID
-     *
-     * @return the value of PRODUCT_DERIVATIVE.ID
-     *
-     * @mbggenerated
-     */
-    public Integer getId() {
-        return id;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.ID
-     *
-     * @param id the value for PRODUCT_DERIVATIVE.ID
-     *
-     * @mbggenerated
-     */
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.PRODUCT_ID
-     *
-     * @return the value of PRODUCT_DERIVATIVE.PRODUCT_ID
-     *
-     * @mbggenerated
-     */
-    public Integer getProductId() {
-        return productId;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.PRODUCT_ID
-     *
-     * @param productId the value for PRODUCT_DERIVATIVE.PRODUCT_ID
-     *
-     * @mbggenerated
-     */
-    public void setProductId(Integer productId) {
-        this.productId = productId;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.REGISTER_NUMBER
-     *
-     * @return the value of PRODUCT_DERIVATIVE.REGISTER_NUMBER
-     *
-     * @mbggenerated
-     */
-    public String getRegisterNumber() {
-        return registerNumber;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.REGISTER_NUMBER
-     *
-     * @param registerNumber the value for PRODUCT_DERIVATIVE.REGISTER_NUMBER
-     *
-     * @mbggenerated
-     */
-    public void setRegisterNumber(String registerNumber) {
-        this.registerNumber = registerNumber == null ? null : registerNumber.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.PRODUCT_NAME
-     *
-     * @return the value of PRODUCT_DERIVATIVE.PRODUCT_NAME
-     *
-     * @mbggenerated
-     */
-    public String getProductName() {
-        return productName;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.PRODUCT_NAME
-     *
-     * @param productName the value for PRODUCT_DERIVATIVE.PRODUCT_NAME
-     *
-     * @mbggenerated
-     */
-    public void setProductName(String productName) {
-        this.productName = productName == null ? null : productName.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.DISTRIBUTE_REPORT
-     *
-     * @return the value of PRODUCT_DERIVATIVE.DISTRIBUTE_REPORT
-     *
-     * @mbggenerated
-     */
-    public String getDistributeReport() {
-        return distributeReport;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.DISTRIBUTE_REPORT
-     *
-     * @param distributeReport the value for PRODUCT_DERIVATIVE.DISTRIBUTE_REPORT
-     *
-     * @mbggenerated
-     */
-    public void setDistributeReport(String distributeReport) {
-        this.distributeReport = distributeReport == null ? null : distributeReport.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.CUMULATIVE_NAV
-     *
-     * @return the value of PRODUCT_DERIVATIVE.CUMULATIVE_NAV
-     *
-     * @mbggenerated
-     */
-    public String getCumulativeNav() {
-        return cumulativeNav;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.CUMULATIVE_NAV
-     *
-     * @param cumulativeNav the value for PRODUCT_DERIVATIVE.CUMULATIVE_NAV
-     *
-     * @mbggenerated
-     */
-    public void setCumulativeNav(String cumulativeNav) {
-        this.cumulativeNav = cumulativeNav == null ? null : cumulativeNav.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.PRODUCT_SHARE
-     *
-     * @return the value of PRODUCT_DERIVATIVE.PRODUCT_SHARE
-     *
-     * @mbggenerated
-     */
-    public String getProductShare() {
-        return productShare;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.PRODUCT_SHARE
-     *
-     * @param productShare the value for PRODUCT_DERIVATIVE.PRODUCT_SHARE
-     *
-     * @mbggenerated
-     */
-    public void setProductShare(String productShare) {
-        this.productShare = productShare == null ? null : productShare.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.PRODUCT_ASSET
-     *
-     * @return the value of PRODUCT_DERIVATIVE.PRODUCT_ASSET
-     *
-     * @mbggenerated
-     */
-    public String getProductAsset() {
-        return productAsset;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.PRODUCT_ASSET
-     *
-     * @param productAsset the value for PRODUCT_DERIVATIVE.PRODUCT_ASSET
-     *
-     * @mbggenerated
-     */
-    public void setProductAsset(String productAsset) {
-        this.productAsset = productAsset == null ? null : productAsset.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.PRODUCT_VALUATION
-     *
-     * @return the value of PRODUCT_DERIVATIVE.PRODUCT_VALUATION
-     *
-     * @mbggenerated
-     */
-    public String getProductValuation() {
-        return productValuation;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.PRODUCT_VALUATION
-     *
-     * @param productValuation the value for PRODUCT_DERIVATIVE.PRODUCT_VALUATION
-     *
-     * @mbggenerated
-     */
-    public void setProductValuation(String productValuation) {
-        this.productValuation = productValuation == null ? null : productValuation.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.START_DATE
-     *
-     * @return the value of PRODUCT_DERIVATIVE.START_DATE
-     *
-     * @mbggenerated
-     */
-    public String getStartDate() {
-        return startDate;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.START_DATE
-     *
-     * @param startDate the value for PRODUCT_DERIVATIVE.START_DATE
-     *
-     * @mbggenerated
-     */
-    public void setStartDate(String startDate) {
-        this.startDate = startDate == null ? null : startDate.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.INVESTMENT_MANAGER_DESC
-     *
-     * @return the value of PRODUCT_DERIVATIVE.INVESTMENT_MANAGER_DESC
-     *
-     * @mbggenerated
-     */
-    public String getInvestmentManagerDesc() {
-        return investmentManagerDesc;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.INVESTMENT_MANAGER_DESC
-     *
-     * @param investmentManagerDesc the value for PRODUCT_DERIVATIVE.INVESTMENT_MANAGER_DESC
-     *
-     * @mbggenerated
-     */
-    public void setInvestmentManagerDesc(String investmentManagerDesc) {
-        this.investmentManagerDesc = investmentManagerDesc == null ? null : investmentManagerDesc.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.PRODUCT_COUNT
-     *
-     * @return the value of PRODUCT_DERIVATIVE.PRODUCT_COUNT
-     *
-     * @mbggenerated
-     */
-    public String getProductCount() {
-        return productCount;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.PRODUCT_COUNT
-     *
-     * @param productCount the value for PRODUCT_DERIVATIVE.PRODUCT_COUNT
-     *
-     * @mbggenerated
-     */
-    public void setProductCount(String productCount) {
-        this.productCount = productCount == null ? null : productCount.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.MANAGE_ASSET
-     *
-     * @return the value of PRODUCT_DERIVATIVE.MANAGE_ASSET
-     *
-     * @mbggenerated
-     */
-    public String getManageAsset() {
-        return manageAsset;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.MANAGE_ASSET
-     *
-     * @param manageAsset the value for PRODUCT_DERIVATIVE.MANAGE_ASSET
-     *
-     * @mbggenerated
-     */
-    public void setManageAsset(String manageAsset) {
-        this.manageAsset = manageAsset == null ? null : manageAsset.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.FEE_NOTE
-     *
-     * @return the value of PRODUCT_DERIVATIVE.FEE_NOTE
-     *
-     * @mbggenerated
-     */
-    public String getFeeNote() {
-        return feeNote;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.FEE_NOTE
-     *
-     * @param feeNote the value for PRODUCT_DERIVATIVE.FEE_NOTE
-     *
-     * @mbggenerated
-     */
-    public void setFeeNote(String feeNote) {
-        this.feeNote = feeNote == null ? null : feeNote.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.MANAGEMENTFEE_TRUST
-     *
-     * @return the value of PRODUCT_DERIVATIVE.MANAGEMENTFEE_TRUST
-     *
-     * @mbggenerated
-     */
-    public String getManagementfeeTrust() {
-        return managementfeeTrust;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.MANAGEMENTFEE_TRUST
-     *
-     * @param managementfeeTrust the value for PRODUCT_DERIVATIVE.MANAGEMENTFEE_TRUST
-     *
-     * @mbggenerated
-     */
-    public void setManagementfeeTrust(String managementfeeTrust) {
-        this.managementfeeTrust = managementfeeTrust == null ? null : managementfeeTrust.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.MANAGEMENTFEE_BANK
-     *
-     * @return the value of PRODUCT_DERIVATIVE.MANAGEMENTFEE_BANK
-     *
-     * @mbggenerated
-     */
-    public String getManagementfeeBank() {
-        return managementfeeBank;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.MANAGEMENTFEE_BANK
-     *
-     * @param managementfeeBank the value for PRODUCT_DERIVATIVE.MANAGEMENTFEE_BANK
-     *
-     * @mbggenerated
-     */
-    public void setManagementfeeBank(String managementfeeBank) {
-        this.managementfeeBank = managementfeeBank == null ? null : managementfeeBank.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.OUTSOURCE_FEE
-     *
-     * @return the value of PRODUCT_DERIVATIVE.OUTSOURCE_FEE
-     *
-     * @mbggenerated
-     */
-    public String getOutsourceFee() {
-        return outsourceFee;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.OUTSOURCE_FEE
-     *
-     * @param outsourceFee the value for PRODUCT_DERIVATIVE.OUTSOURCE_FEE
-     *
-     * @mbggenerated
-     */
-    public void setOutsourceFee(String outsourceFee) {
-        this.outsourceFee = outsourceFee == null ? null : outsourceFee.trim();
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.ISVALID
-     *
-     * @return the value of PRODUCT_DERIVATIVE.ISVALID
-     *
-     * @mbggenerated
-     */
-    public Integer getIsvalid() {
-        return isvalid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.ISVALID
-     *
-     * @param isvalid the value for PRODUCT_DERIVATIVE.ISVALID
-     *
-     * @mbggenerated
-     */
-    public void setIsvalid(Integer isvalid) {
-        this.isvalid = isvalid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.CREATETIME
-     *
-     * @return the value of PRODUCT_DERIVATIVE.CREATETIME
-     *
-     * @mbggenerated
-     */
-    public Date getCreatetime() {
-        return createtime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.CREATETIME
-     *
-     * @param createtime the value for PRODUCT_DERIVATIVE.CREATETIME
-     *
-     * @mbggenerated
-     */
-    public void setCreatetime(Date createtime) {
-        this.createtime = createtime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.UPDATETIME
-     *
-     * @return the value of PRODUCT_DERIVATIVE.UPDATETIME
-     *
-     * @mbggenerated
-     */
-    public Date getUpdatetime() {
-        return updatetime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.UPDATETIME
-     *
-     * @param updatetime the value for PRODUCT_DERIVATIVE.UPDATETIME
-     *
-     * @mbggenerated
-     */
-    public void setUpdatetime(Date updatetime) {
-        this.updatetime = updatetime;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.CREATORID
-     *
-     * @return the value of PRODUCT_DERIVATIVE.CREATORID
-     *
-     * @mbggenerated
-     */
-    public Integer getCreatorid() {
-        return creatorid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.CREATORID
-     *
-     * @param creatorid the value for PRODUCT_DERIVATIVE.CREATORID
-     *
-     * @mbggenerated
-     */
-    public void setCreatorid(Integer creatorid) {
-        this.creatorid = creatorid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method returns the value of the database column PRODUCT_DERIVATIVE.UPDATERID
-     *
-     * @return the value of PRODUCT_DERIVATIVE.UPDATERID
-     *
-     * @mbggenerated
-     */
-    public Integer getUpdaterid() {
-        return updaterid;
-    }
-
-    /**
-     * This method was generated by MyBatis Generator.
-     * This method sets the value of the database column PRODUCT_DERIVATIVE.UPDATERID
-     *
-     * @param updaterid the value for PRODUCT_DERIVATIVE.UPDATERID
-     *
-     * @mbggenerated
-     */
-    public void setUpdaterid(Integer updaterid) {
-        this.updaterid = updaterid;
-    }
 }

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

@@ -91,4 +91,10 @@
     ID, REGISTER_NUMBER, MANAGER_NAME, START_DATE, END_DATE, ISVALID, CREATETIME, UPDATETIME, 
     CREATORID, UPDATERID
   </sql>
+    <update id="deleteByRegisterNumber">
+      update investment_manager set isvalid=0,updatetime=now() where isvalid=1 and register_number in
+      <foreach collection="registerNumberList" index="index" item="registerNumber" separator="," open="(" close=")">
+        #{registerNumber}
+      </foreach>
+    </update>
 </mapper>

+ 20 - 0
service-base/src/main/resources/mapper/daq/ProductContractMapper.xml

@@ -29,5 +29,25 @@
     INVESTMENT_SCOPE, INVESTMENT_LIMIT, INVESTMENT_STRATEGY, INVESTMENT_METHOD, REMARK,
     ACCRUED_METHOD, ISVALID, CREATETIME, UPDATETIME, CREATORID, UPDATERID
   </sql>
+    <select id="selectByNameAndRegisterNumber" resultMap="BaseResultMap">
+        select ID, PRODUCT_ID, REGISTER_NUMBER, PRODUCT_NAME, PRODUCT_CONTRACT, PERFORMANCE_BASIC,
+               INVESTMENT_SCOPE, INVESTMENT_LIMIT, INVESTMENT_STRATEGY, INVESTMENT_METHOD, REMARK,
+               ACCRUED_METHOD, ISVALID, CREATETIME, UPDATETIME, CREATORID, UPDATERID
+        from product_contract where isvalid=1
+        <if test="registerNumber != '' and registerNumber != null">
+          and register_number=#{registerNumber}
+        </if>
+        <if test="productName != '' and productName != null">
+          and product_name=#{productName}
+        </if>
+        <if test="productName == null">
+          and product_name is null
+        </if>
+        <if test="registerNumber == null">
+          and register_number is null
+        </if>
+        order by createtime
+        limit 1
+    </select>
 
 </mapper>

+ 18 - 0
service-base/src/main/resources/mapper/daq/ProductDerivativeMapper.xml

@@ -39,5 +39,23 @@
     PRODUCT_COUNT, MANAGE_ASSET, FEE_NOTE, MANAGEMENTFEE_TRUST, MANAGEMENTFEE_BANK, OUTSOURCE_FEE, 
     ISVALID, CREATETIME, UPDATETIME, CREATORID, UPDATERID
   </sql>
+    <select id="selectByNameAndRegisterNumber" resultType="com.simuwang.base.pojo.dos.ProductDerivativeDO">
+      select <include refid="Base_Column_List"></include>
+      from product_derivative where isvalid=1
+      <if test="registerNumber != '' and registerNumber != null">
+        and register_number=#{registerNumber}
+      </if>
+      <if test="productName != '' and productName != null">
+        and product_name=#{productName}
+      </if>
+      <if test="productName == null">
+        and product_name is null
+      </if>
+      <if test="registerNumber == null">
+        and register_number is null
+      </if>
+      order by createtime
+      limit 1
+    </select>
 
 </mapper>

+ 1 - 0
service-manage/src/main/java/com/simuwang/manage/api/fund/FunAliasController.java

@@ -8,6 +8,7 @@ import com.simuwang.base.pojo.vo.IdVO;
 import com.simuwang.base.pojo.vo.ReviewStatusVO;
 import com.simuwang.logging.SystemLog;
 import com.simuwang.manage.service.FundAliasService;
+import com.simuwang.shiro.utils.UserUtils;
 import com.smppw.common.pojo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;

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

@@ -84,8 +84,6 @@ 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.setUpdateTime(new Date());
         if(StringUtil.isNotEmpty(fundAliasVO.getTargetFundId())){
             fundAliasVO.setReviewStatus(1);

+ 177 - 3
service-manage/src/main/java/com/simuwang/manage/service/impl/ProductServiceImpl.java

@@ -8,9 +8,11 @@ import com.simuwang.base.common.enums.DistributeType;
 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.daq.InvestmentManagerMapper;
+import com.simuwang.base.mapper.daq.ProductContractMapper;
+import com.simuwang.base.mapper.daq.ProductDerivativeMapper;
 import com.simuwang.base.mapper.daq.ProductInformationMapper;
-import com.simuwang.base.pojo.dos.FundAliasDO;
-import com.simuwang.base.pojo.dos.ProductInformationDO;
+import com.simuwang.base.pojo.dos.*;
 import com.simuwang.base.pojo.dto.*;
 import com.simuwang.base.pojo.dto.query.ProductPageQuery;
 import com.simuwang.base.pojo.vo.*;
@@ -40,6 +42,15 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private ProductInformationMapper productInformationMapper;
 
+    @Autowired
+    private ProductContractMapper productContractMapper;
+
+    @Autowired
+    private ProductDerivativeMapper productDerivativeMapper;
+
+    @Autowired
+    private InvestmentManagerMapper investmentManagerMapper;
+
     private static final Logger logger = LoggerFactory.getLogger(ProductServiceImpl.class);
     @Value("${email.file.path}")
     private String path;
@@ -76,8 +87,19 @@ public class ProductServiceImpl implements ProductService {
         int productStartRow = 8;
         List<ProductExcelSuccessDataVO> successDataVOList = new ArrayList<>();
         List<ProductExcelFailDataVO> excelFailDataVOList = new ArrayList<>();
+        //产品基本信息
         List<ProductInformationData> productInformationDataList = productData.getProductInformationDataList();
         saveProductInformation(productInformationDataList,successDataVOList,excelFailDataVOList,productStartRow);
+        //合同
+        List<ProductContractData> productContractDataList = productData.getProductContractDataList();
+        saveProductContractData(productContractDataList,successDataVOList,excelFailDataVOList,productStartRow);
+        //其他信息
+        List<ProductDerivativeData> productDerivativeDOList = productData.getProductDerivativeDataList();
+        saveProductDerivativeData(productDerivativeDOList,successDataVOList,excelFailDataVOList,productStartRow);
+        //投资经理信息
+        List<InvestmentManagerData> investmentManagerDataList = productData.getInvestmentManagerDataList();
+        productStartRow = 3;
+        saveInvestmentManagerData(investmentManagerDataList,successDataVOList,excelFailDataVOList,productStartRow);
         result.setSuccess(successDataVOList);
         result.setFail(excelFailDataVOList);
         result.setTotal(successDataVOList.size()+excelFailDataVOList.size());
@@ -86,6 +108,158 @@ public class ProductServiceImpl implements ProductService {
         return result;
     }
 
+    private void saveInvestmentManagerData(List<InvestmentManagerData> investmentManagerDataList,
+                                           List<ProductExcelSuccessDataVO> successDataVOList,
+                                           List<ProductExcelFailDataVO> excelFailDataVOList,
+                                           int productStartRow) {
+        List<InvestmentManagerDO> investmentManagerDOList = new ArrayList<>();
+        for (int idx =0;idx< investmentManagerDataList.size();idx++) {
+            InvestmentManagerData investmentManagerData = investmentManagerDataList.get(idx);
+            if(StringUtil.isEmpty(investmentManagerData.getRegisterNumber()) && StringUtil.isEmpty(investmentManagerData.getManagerName())){
+                ProductExcelFailDataVO failDataVO = toExcelFailDataVO(ExcelConst.INVESTMENT_MANAGER_SHEET_NAME,ExcelConst.DELETION_MANAGER_REGISTERENUMBER,idx+productStartRow);
+                excelFailDataVOList.add(failDataVO);
+                continue;
+            }
+            InvestmentManagerDO investmentManagerDO = new InvestmentManagerDO();
+            investmentManagerDO.setRegisterNumber(investmentManagerData.getRegisterNumber());
+            investmentManagerDO.setStartDate(investmentManagerData.getStartDate());
+            investmentManagerDO.setEndDate(investmentManagerData.getEndDate());
+            investmentManagerDO.setManagerName(investmentManagerData.getManagerName());
+            investmentManagerDO.setUpdatetime(new Date());
+            investmentManagerDO.setUpdaterid(UserUtils.getLoginUser().getUserId());
+            investmentManagerDO.setIsvalid(1);
+            investmentManagerDO.setCreatetime(new Date());
+            investmentManagerDO.setCreatorid(UserUtils.getLoginUser().getUserId());
+            investmentManagerDOList.add(investmentManagerDO);
+            ProductExcelSuccessDataVO successDataVO = new ProductExcelSuccessDataVO();
+            successDataVO.setRowNum(idx+productStartRow);
+            successDataVO.setSheet(ExcelConst.INVESTMENT_MANAGER_SHEET_NAME);
+            successDataVO.setParseStatus(ExcelConst.SUCCESS);
+            successDataVOList.add(successDataVO);
+        }
+        List<String> registerNumberList = investmentManagerDOList.stream().map(InvestmentManagerDO::getRegisterNumber).collect(Collectors.toList());
+        if(StringUtil.isEmpty(registerNumberList)){
+            investmentManagerMapper.deleteByRegisterNumber(registerNumberList);
+        }
+        try{
+            investmentManagerMapper.insert(investmentManagerDOList);
+        }catch (Exception e){
+            logger.error(e.getMessage());
+        }
+    }
+
+    private void saveProductDerivativeData(List<ProductDerivativeData> productDerivativeDOList,
+                                           List<ProductExcelSuccessDataVO> successDataVOList,
+                                           List<ProductExcelFailDataVO> excelFailDataVOList,
+                                           int productStartRow) {
+        for (int idx =0;idx< productDerivativeDOList.size();idx++) {
+            ProductDerivativeData productDerivativeData = productDerivativeDOList.get(idx);
+            if(StringUtil.isEmpty(productDerivativeData.getRegisterNumber()) && StringUtil.isEmpty(productDerivativeData.getProductName())){
+                ProductExcelFailDataVO failDataVO = toExcelFailDataVO(ExcelConst.PRODUCT_CONTRACT_SHEET_NAME,ExcelConst.DELETION_NAME_REGISTERENUMBER,idx+productStartRow);
+                excelFailDataVOList.add(failDataVO);
+                continue;
+            }
+            ProductDerivativeDO productDerivativeDO = toProductDerivativeDO(productDerivativeData);
+            ProductInformationDO productInformationDO = productInformationMapper.selectByNameAndRegisterNumber(productDerivativeDO.getRegisterNumber(),productDerivativeDO.getProductName());
+            if(productInformationDO != null){
+                productDerivativeDO.setProductId(productInformationDO.getId());
+            }else{
+                productDerivativeDO.setCreatetime(new Date());
+                productDerivativeDO.setCreatorid(UserUtils.getLoginUser().getUserId());
+            }
+            ProductDerivativeDO oldProductDerivativeDO = productDerivativeMapper.selectByNameAndRegisterNumber(productDerivativeData.getRegisterNumber(),productDerivativeData.getProductName());
+            if(oldProductDerivativeDO != null){
+                productDerivativeDO.setId(oldProductDerivativeDO.getId());
+            }
+            try{
+                productDerivativeMapper.insertOrUpdate(productDerivativeDO);
+                ProductExcelSuccessDataVO successDataVO = new ProductExcelSuccessDataVO();
+                successDataVO.setRowNum(idx+productStartRow);
+                successDataVO.setSheet(ExcelConst.PRODUCT_DETAIL_SHEET_NAME);
+                successDataVO.setParseStatus(ExcelConst.SUCCESS);
+                successDataVOList.add(successDataVO);
+            }catch (Exception e){
+                logger.error(e.getMessage(),e);
+                ProductExcelFailDataVO failDataVO = toExcelFailDataVO(ExcelConst.PRODUCT_CONTRACT_SHEET_NAME,ExcelConst.SAVE_FAIL,idx+productStartRow);
+                excelFailDataVOList.add(failDataVO);
+            }
+        }
+    }
+
+    private ProductDerivativeDO toProductDerivativeDO(ProductDerivativeData productDerivativeData) {
+        ProductDerivativeDO productDerivativeDO = new ProductDerivativeDO();
+        productDerivativeDO.setProductName(productDerivativeData.getProductName());
+        productDerivativeDO.setRegisterNumber(productDerivativeData.getRegisterNumber());
+        productDerivativeDO.setDistributeReport(productDerivativeData.getDistributeReport());
+        productDerivativeDO.setCumulativeNav(productDerivativeData.getCumulativeNav());
+        productDerivativeDO.setInvestmentManagerDesc(productDerivativeData.getInvestmentManagerDesc());
+        productDerivativeDO.setFeeNote(productDerivativeData.getFeeNote());
+        productDerivativeDO.setManageAsset(productDerivativeData.getManageAsset());
+        productDerivativeDO.setManagementfeeBank(productDerivativeData.getManagementfeeBank());
+        productDerivativeDO.setManagementfeeTrust(productDerivativeData.getManagementfeeTrust());
+        productDerivativeDO.setOutsourceFee(productDerivativeData.getOutsourceFee());
+        productDerivativeDO.setProductCount(productDerivativeData.getProductCount());
+        productDerivativeDO.setProductAsset(productDerivativeData.getProductAsset());
+        productDerivativeDO.setProductShare(productDerivativeData.getProductShare());
+        productDerivativeDO.setProductValuation(productDerivativeData.getProductValuation());
+        productDerivativeDO.setStartDate(productDerivativeData.getStartDate());
+        return productDerivativeDO;
+    }
+
+    private void saveProductContractData(List<ProductContractData> productContractDataList, 
+                                         List<ProductExcelSuccessDataVO> successDataVOList, 
+                                         List<ProductExcelFailDataVO> excelFailDataVOList, 
+                                         int productStartRow) {
+        for (int idx =0;idx< productContractDataList.size();idx++) {
+            ProductContractData productContractData = productContractDataList.get(idx);
+            if(StringUtil.isEmpty(productContractData.getRegisterNumber()) && StringUtil.isEmpty(productContractData.getProductName())){
+                ProductExcelFailDataVO failDataVO = toExcelFailDataVO(ExcelConst.PRODUCT_CONTRACT_SHEET_NAME,ExcelConst.DELETION_NAME_REGISTERENUMBER,idx+productStartRow);
+                excelFailDataVOList.add(failDataVO);
+                continue;
+            }
+            ProductContractDO productContractDO = toProductContractDO(productContractData);
+            ProductInformationDO productInformationDO = productInformationMapper.selectByNameAndRegisterNumber(productContractData.getRegisterNumber(),productContractData.getProductName());
+            if(productInformationDO != null){
+                productContractDO.setProductId(productInformationDO.getId());
+            }else{
+                productContractDO.setCreatetime(new Date());
+                productContractDO.setCreatorid(UserUtils.getLoginUser().getUserId());
+            }
+            ProductContractDO oldProductContractDO = productContractMapper.selectByNameAndRegisterNumber(productContractData.getRegisterNumber(),productContractData.getProductName());
+            if(oldProductContractDO != null){
+                productContractDO.setId(oldProductContractDO.getId());
+            }
+            try{
+                productContractMapper.insertOrUpdate(productContractDO);
+                ProductExcelSuccessDataVO successDataVO = new ProductExcelSuccessDataVO();
+                successDataVO.setRowNum(idx+productStartRow);
+                successDataVO.setSheet(ExcelConst.PRODUCT_CONTRACT_SHEET_NAME);
+                successDataVO.setParseStatus(ExcelConst.SUCCESS);
+                successDataVOList.add(successDataVO);
+            }catch (Exception e){
+                logger.error(e.getMessage(),e);
+                ProductExcelFailDataVO failDataVO = toExcelFailDataVO(ExcelConst.PRODUCT_CONTRACT_SHEET_NAME,ExcelConst.SAVE_FAIL,idx+productStartRow);
+                excelFailDataVOList.add(failDataVO);
+            }
+        }
+    }
+
+    private ProductContractDO toProductContractDO(ProductContractData productContractData) {
+        ProductContractDO productContractDO = new ProductContractDO();
+        productContractDO.setRegisterNumber(productContractData.getRegisterNumber());
+        productContractDO.setProductName(productContractData.getProductName());
+        productContractDO.setAccruedMethod(productContractData.getAccruedMethod());
+        productContractDO.setInvestmentLimit(productContractData.getInvestmentLimit());
+        productContractDO.setInvestmentMethod(productContractData.getInvestmentMethod());
+        productContractDO.setInvestmentScope(productContractData.getInvestmentScope());
+        productContractDO.setInvestmentStrategy(productContractData.getInvestmentStrategy());
+        productContractDO.setPerformanceBasic(productContractData.getPerformanceBasic());
+        productContractDO.setUpdatetime(new Date());
+        productContractDO.setUpdaterid(UserUtils.getLoginUser().getUserId());
+        productContractDO.setIsvalid(1);
+        return productContractDO;
+    }
+
     private void saveProductInformation(List<ProductInformationData> productInformationDataList, List<ProductExcelSuccessDataVO> successDataVOList, List<ProductExcelFailDataVO> excelFailDataVOList, int productStartRow) {
         for (int idx =0;idx< productInformationDataList.size();idx++) {
             ProductInformationData productInformationData = productInformationDataList.get(idx);
@@ -113,7 +287,7 @@ public class ProductServiceImpl implements ProductService {
                 continue;
             }
             ProductInformationDO productInformationDO = toProductDO(productInformationData);
-            ProductInformationDO oldProductInformationDO = productInformationMapper.selectByNameAndRegisterNumber(productInformationDO);
+            ProductInformationDO oldProductInformationDO = productInformationMapper.selectByNameAndRegisterNumber(productInformationDO.getRegisterNumber(),productInformationDO.getProductName());
             if(oldProductInformationDO != null){
                 productInformationDO.setId(oldProductInformationDO.getId());
             }else{