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.EmailFundNavVO;
import com.smppw.utils.DateUtil;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
@TableName("email_fund_nav")
public class EmailFundNavDO {
    /**
     * 主键Id
     */
    @TableId(value = "id")
    private Integer id;
    /**
     * 邮件id(email_file_info.id)
     */
    @TableField(value = "file_id")
    private Integer fileId;
    /**
     * 基金id
     */
    @TableField(value = "fund_id")
    private String fundId;
    /**
     * 邮件解析的基金名称
     */
    @TableField(value = "fund_name")
    private String fundName;
    /**
     * 邮件解析的备案编码
     */
    @TableField(value = "register_number")
    private String registerNumber;
    /**
     * 净值日期
     */
    @TableField(value = "price_date")
    private Date priceDate;
    /**
     * 单位净值
     */
    @TableField(value = "nav")
    private BigDecimal nav;
    /**
     * 累计单位净值
     */
    @TableField(value = "cumulative_nav")
    private BigDecimal cumulativeNavWithdrawal;
    /**
     * 是否入库 0-没有,1-有
     */
    @TableField(value = "is_stored")
    private Integer isStored;
    /**
     * 异常情况:1-无异常,2-净值缺失,3-未匹配基金,4-净值<=0,5-资产净值<=0
     */
    @TableField(value = "exception_status")
    private Integer exceptionStatus;
    /**
     * 记录的有效性；1-有效；0-无效；
     */
    @TableField(value = "isvalid")
    private Integer isvalid;
    /**
     * 创建者Id;第一次创建时与Creator值相同，修改时与修改人值相同
     */
    @TableField(value = "creatorid")
    private Integer creatorId;
    /**
     * 修改者Id;第一次创建时与Creator值相同，修改时与修改人值相同
     */
    @TableField(value = "updaterid")
    private Integer updaterId;
    /**
     * 创建时间,默认第一次创建的getdate()时间
     */
    @TableField(value = "createtime")
    private Date createTime;
    /**
     * 修改时间;第一次创建时与CreatTime值相同，修改时与修改时间相同
     */
    @TableField(value = "updatetime")
    private Date updateTime;

    public EmailFundNavVO toVo() {
        EmailFundNavVO vo = new EmailFundNavVO();
        vo.setId(this.id);
        vo.setFundId(this.fundId);
        vo.setFundName(this.fundName);
        vo.setRegisterNumber(this.registerNumber);
        vo.setPriceDate(this.priceDate==null?null:DateUtils.format(this.priceDate, DateUtils.YYYY_MM_DD));
        vo.setCumulativeNavWithdrawal(this.cumulativeNavWithdrawal);
        vo.setNav(this.nav);
        vo.setIsStored(this.isStored);
        vo.setExceptionStatus(this.exceptionStatus);
        vo.setUpateTime(DateUtils.format(this.updateTime, DateUtils.YYYY_MM_DD_HH_MM_SS));
        return vo;
    }
}