package com.ruoyi.buyerapi.domain;

import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Value;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 立项管理对象 buyer_project
 *
 * @author ruoyi
 * @date 2022-09-22
 */
@ApiModel(value = "立项管理对象")
@Data
public class BuyerProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private String[] ids;

    /** id */
    @ApiModelProperty(value = "id")
    private String id;

    /** 备注 */
    @ApiModelProperty(value = "备注")
    @Excel(name = "备注")
    private String remarks;

    /** 删除标志（0代表存在 1代表删除） */
    @ApiModelProperty(value = "删除标志（0代表存在 1代表删除）")
    private String delFlag;

    /** 公司id */
    @ApiModelProperty(value = "公司id")
    @Excel(name = "公司id")
    private String companyId;

    /** 名称 */
    @ApiModelProperty(value = "名称")
    @Excel(name = "名称")
    private String name;

    /** 申报单位 */
    @ApiModelProperty(value = "申报单位")
    @Excel(name = "申报单位")
    private String declareCompany;

    /** 预算金额 */
    @ApiModelProperty(value = "预算金额")
    @Excel(name = "预算金额")
    private BigDecimal budget;

    /** 编号 */
    @ApiModelProperty(value = "编号")
    @Excel(name = "编号")
    private String code;

    /** 来源 */
    @ApiModelProperty(value = "来源 */")
    @Excel(name = "来源")
    private String resource;

    /** 承担单位 */
    @ApiModelProperty(value = "承担单位")
    @Excel(name = "承担单位")
    private String assumeCompany;

    /** 开展形式 */
    @ApiModelProperty(value = "开展形式")
    @Excel(name = "开展形式")
    private String expandedForm;

    /** 依托项目 */
    @ApiModelProperty(value = "依托项目")
    @Excel(name = "依托项目")
    private String relyProject;

    /** 申请日期 */
    @ApiModelProperty(value = "申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyDate;

    /** 开始日期 */
    @ApiModelProperty(value = "开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 结束日期 */
    @ApiModelProperty(value = "结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 中间日期 */
    @ApiModelProperty(value = "中间日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date middleDate;

    /** 日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date date;

    /** 性别 */
    @ApiModelProperty(value = "性别")
    @Excel(name = "性别")
    private String sex;

    /** 学历 */
    @ApiModelProperty(value = "学历")
    @Excel(name = "学历")
    private String major;

    /** 出生日期 */
    @ApiModelProperty(value = "出生日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthdate;

    /** 联系电话 */
    @ApiModelProperty(value = "联系电话")
    @Excel(name = "联系电话")
    private String tel;

    /** 部门 */
    @ApiModelProperty(value = "部门")
    @Excel(name = "部门")
    private String dept;

    /** 负责人id */
    @ApiModelProperty(value = "负责人id")
    @Excel(name = "负责人id")
    private String employeeId;

    /** 负责人姓名 */
    @ApiModelProperty(value = "负责人姓名")
    @Excel(name = "负责人姓名")
    private String employeeName;

    /** 项目状态（0：进行中，1：已完成，2:已超时） */
    @ApiModelProperty(value = "项目状态（0：进行中，1：已完成，2:已超时）")
    @Excel(name = "项目状态（0：进行中，1：已完成，2:已超时）")
    private String status;

    /** 职称 */
    @ApiModelProperty(value = "职称")
    @Excel(name = "职称")
    private String job;

    /** 邮政编码 */
    @ApiModelProperty(value = "邮政编码")
    @Excel(name = "邮政编码")
    private String postcode;

    /** 通讯地址 */
    @ApiModelProperty(value = "通讯地址")
    @Excel(name = "通讯地址")
    private String addr;

    /** 立项背景 */
    @ApiModelProperty(value = "立项背景")
    @Excel(name = "立项背景")
    private String projectInfo;

    /** 项目进度 */
    @ApiModelProperty(value = "项目进度")
    @Excel(name = "项目进度")
    private String projectProgress;

    /** 关键技术 */
    @ApiModelProperty(value = "关键技术")
    @Excel(name = "关键技术")
    private String keyTechnology;

    /** 创新性 */
    @ApiModelProperty(value = "创新性")
    @Excel(name = "创新性")
    private String innovation;

    /** 预期成果目标 */
    @ApiModelProperty(value = "预期成果目标")
    @Excel(name = "预期成果目标")
    private String expecteResult;

    /** 项目成员 */
    @ApiModelProperty(value = "项目成员")
    private List<BuyerProjectMember> BuyerProjectMemberList;

    /** 项目成员id数组 */
    @ApiModelProperty(value = "项目成员id数组")
    private List<String> BuyerProjectMemberArray;

    /** 关联文件 */
    @ApiModelProperty(value = "关联文件")
    private List<BuyerFileInfo> buyerFileInfos;

    /** 文件信息 */
    @ApiModelProperty(value = "文件信息")
    private String fileNames;

    /** 关联辅助凭证 */
    @ApiModelProperty(value = "关联辅助凭证")
    private List<BuyerVoucherProject> voucherProjects;

    /** 辅助帐年度 */
    private String year;

    /** 过程文件今日不再提醒（0=否，1=是） */
    @ApiModelProperty(value = "过程文件今日不再提醒（0=否，1=是）")
    private String todayStatu;

    /** 过程文件关闭提醒（0=否，1=是） */
    @ApiModelProperty(value = "过程文件关闭提醒（0=否，1=是）")
    private String closeStatu;

    /** 验收资料今日不再提醒（0=否，1=是） */
    @ApiModelProperty(value = "验收资料今日不再提醒（0=否，1=是）")
    private String todayStatus;

    /** 验收资料关闭提醒（0=否，1=是） */
    @ApiModelProperty(value = "验收资料关闭提醒（0=否，1=是）")
    private String closeStatus;

    /** 过程材料/验收资料 */
    @ApiModelProperty(value = "过程文件/验收资料")
    private String type;

    /** 提示语 */
    @ApiModelProperty(value = "提示语")
    private String message;

    /** linkId */
    private String linkId;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remarks", getRemarks())
            .append("delFlag", getDelFlag())
            .append("companyId", getCompanyId())
            .append("name", getName())
            .append("declareCompany", getDeclareCompany())
            .append("budget", getBudget())
            .append("code", getCode())
            .append("resource", getResource())
            .append("assumeCompany", getAssumeCompany())
            .append("expandedForm", getExpandedForm())
            .append("relyProject", getRelyProject())
            .append("applyDate", getApplyDate())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("sex", getSex())
            .append("major", getMajor())
            .append("birthdate", getBirthdate())
            .append("tel", getTel())
            .append("job", getJob())
            .append("postcode", getPostcode())
            .append("addr", getAddr())
            .append("projectInfo", getProjectInfo())
            .append("projectProgress", getProjectProgress())
            .append("keyTechnology", getKeyTechnology())
            .append("innovation", getInnovation())
            .append("expecteResult", getExpecteResult())
            .toString();
    }
}
