package com.ruoyi.project.business.domain;

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

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;

/**
 * 【请填写功能名称】对象 tc_project_history
 * 
 * @author ruoyi
 * @date 2024-07-22
 */
public class TcProjectHistory extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 联系人ID */
    private Long projectId;

    /** 项目编号(自动采番） */
    @Excel(name = "项目编号(自动采番）")
    private String projectNo;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 关联客户 */
    @Excel(name = "关联客户")
    private Long accountId;

    /** 项目地址 */
    @Excel(name = "项目地址")
    private String address;

    /** 0:否  1：是 */
    @Excel(name = "0:否  1：是")
    private String modelFlag;

    /** 项目类型（关联字典表） */
    @Excel(name = "项目类型", readConverterExp = "关=联字典表")
    private String type;

    /** 项目细分市场（关联字典表） */
    @Excel(name = "项目细分市场", readConverterExp = "关=联字典表")
    private String segmentedMarket;

    /** 国家ID */
    @Excel(name = "国家ID")
    private Long countryId;

    /** 城市 */
    @Excel(name = "城市")
    private String city;

    /** 项目进度（value）/项目状态（label）：初次报价	10% 出图	20% 议价中	50% 最终竞标阶段	70% 客户确认规格和图纸	80% 代理商已和客户签单	90% 成单	100% 延期	0% 丢单	0%  */
    @Excel(name = "项目进度", readConverterExp = "v=alue")
    private String progress;

    /** 开发商 */
    @Excel(name = "开发商")
    private String developer;

    /** 计划成交月份 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划成交月份", width = 30, dateFormat = "yyyy-MM-dd")
    private Date planDealMonth;

    /** 项目交期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目交期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date completionYear;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date overTime;

    /** 币种 */
    @Excel(name = "币种")
    private String currencyId;

    private Date expectedInstallStartDate;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contactPerson;

    /** 联系方式 */
    @Excel(name = "联系方式")
    private String contact;

    /** 职位 */
    @Excel(name = "职位")
    private String jobTitle;

    /** 邮箱 */
    @Excel(name = "邮箱")
    private String email;

    /** 项目审批状态  01待审批、02审批不通过、03审批通过 */
    @Excel(name = "项目审批状态  01待审批、02审批不通过、03审批通过")
    private String status;

    /** 产品型号 */
    @Excel(name = "产品型号")
    private String productSeries;

    /** 解决方案 */
    @Excel(name = "解决方案")
    private String solution;

    /** 负责人 */
    @Excel(name = "负责人")
    private Long owner;

    /** 所属代理商 */
    @Excel(name = "所属代理商")
    private Long ownerAgent;

    /** 驳回原因 */
    @Excel(name = "驳回原因")
    private String refuseReason;

    /** 审批人 */
    @Excel(name = "审批人")
    private Long auditPerson;

    /** 延期备注 */
    @Excel(name = "延期备注")
    private String delayRemark;

    /** 丢单备注 */
    @Excel(name = "丢单备注")
    private String loseRemark;

    /** 数据权限字符 */
    @Excel(name = "数据权限字符")
    private String permissionChar;

    /** 版本号 */
    @Excel(name = "版本号")
    private Long version;

    /** 删除标记（0：启用  1：停用） */
    private String delFlag;

    /** 区域 */
    @Excel(name = "区域")
    private Long areaId;

    /** 关键决策人 */
    @Excel(name = "关键决策人")
    private String keyContactPerson;

    /** 联系方式 */
    @Excel(name = "联系方式")
    private String keyContact;

    /** 职位 */
    @Excel(name = "职位")
    private String keyJobTitle;

    /** 邮箱 */
    @Excel(name = "邮箱")
    private String keyEmail;

    /** 特殊需求 */
    @Excel(name = "特殊需求")
    private String specialRemark;

    /** 设备数量 */
    @Excel(name = "设备数量")
    private Long equipmentQuantity;

    /** 设备类型 */
    @Excel(name = "设备类型")
    private String equipmentType;

    /** 金额 */
    @Excel(name = "金额")
    private BigDecimal amount;

    private List<TcProjectEquipmentHistory> machineList;

    private String nickName;

    private String ownerName;
    private String ownerAgentName;

    private BigDecimal priceTotal;

    private Integer deviceTotal;

    private String modifyRemark;

    // 竞争对手 50
    private String competitor;

    // 丢单原因分类
    private String reasonType;

    public String getCompetitor() {
        return competitor;
    }

    public void setCompetitor(String competitor) {
        this.competitor = competitor;
    }

    public String getReasonType() {
        return reasonType;
    }

    public void setReasonType(String reasonType) {
        this.reasonType = reasonType;
    }

    public Integer getDeviceTotal() {
        return deviceTotal;
    }

    public void setDeviceTotal(Integer deviceTotal) {
        this.deviceTotal = deviceTotal;
    }

    public BigDecimal getPriceTotal() {
        return priceTotal;
    }

    public void setPriceTotal(BigDecimal priceTotal) {
        this.priceTotal = priceTotal;
    }

    public String getOwnerAgentName() {
        return ownerAgentName;
    }

    public void setOwnerAgentName(String ownerAgentName) {
        this.ownerAgentName = ownerAgentName;
    }

    public String getOwnerName() {
        return ownerName;
    }

    public void setOwnerName(String ownerName) {
        this.ownerName = ownerName;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public List<TcProjectEquipmentHistory> getMachineList() {
        return machineList;
    }

    public void setMachineList(List<TcProjectEquipmentHistory> machineList) {
        this.machineList = machineList;
    }

    public void setProjectId(Long projectId)
    {
        this.projectId = projectId;
    }

    public Long getProjectId() 
    {
        return projectId;
    }
    public void setProjectNo(String projectNo) 
    {
        this.projectNo = projectNo;
    }

    public String getProjectNo() 
    {
        return projectNo;
    }
    public void setProjectName(String projectName) 
    {
        this.projectName = projectName;
    }

    public String getProjectName() 
    {
        return projectName;
    }
    public void setAccountId(Long accountId) 
    {
        this.accountId = accountId;
    }

    public Long getAccountId() 
    {
        return accountId;
    }
    public void setAddress(String address) 
    {
        this.address = address;
    }

    public String getAddress() 
    {
        return address;
    }
    public void setModelFlag(String modelFlag) 
    {
        this.modelFlag = modelFlag;
    }

    public String getModelFlag() 
    {
        return modelFlag;
    }
    public void setType(String type) 
    {
        this.type = type;
    }

    public String getType() 
    {
        return type;
    }
    public void setSegmentedMarket(String segmentedMarket) 
    {
        this.segmentedMarket = segmentedMarket;
    }

    public String getSegmentedMarket() 
    {
        return segmentedMarket;
    }
    public void setCountryId(Long countryId) 
    {
        this.countryId = countryId;
    }

    public Long getCountryId() 
    {
        return countryId;
    }
    public void setCity(String city) 
    {
        this.city = city;
    }

    public String getCity() 
    {
        return city;
    }
    public void setProgress(String progress) 
    {
        this.progress = progress;
    }

    public String getProgress() 
    {
        return progress;
    }
    public void setDeveloper(String developer) 
    {
        this.developer = developer;
    }

    public String getDeveloper() 
    {
        return developer;
    }
    public void setPlanDealMonth(Date planDealMonth) 
    {
        this.planDealMonth = planDealMonth;
    }

    public Date getPlanDealMonth() 
    {
        return planDealMonth;
    }
    public void setCompletionYear(Date completionYear) 
    {
        this.completionYear = completionYear;
    }

    public Date getCompletionYear() 
    {
        return completionYear;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setOverTime(Date overTime) 
    {
        this.overTime = overTime;
    }

    public Date getOverTime() 
    {
        return overTime;
    }

    public String getCurrencyId() {
        return currencyId;
    }

    public void setCurrencyId(String currencyId) {
        this.currencyId = currencyId;
    }

    public Date getExpectedInstallStartDate() {
        return expectedInstallStartDate;
    }

    public void setExpectedInstallStartDate(Date expectedInstallStartDate) {
        this.expectedInstallStartDate = expectedInstallStartDate;
    }

    public void setContactPerson(String contactPerson)
    {
        this.contactPerson = contactPerson;
    }

    public String getContactPerson() 
    {
        return contactPerson;
    }
    public void setContact(String contact) 
    {
        this.contact = contact;
    }

    public String getContact() 
    {
        return contact;
    }
    public void setJobTitle(String jobTitle) 
    {
        this.jobTitle = jobTitle;
    }

    public String getJobTitle() 
    {
        return jobTitle;
    }
    public void setEmail(String email) 
    {
        this.email = email;
    }

    public String getEmail() 
    {
        return email;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setProductSeries(String productSeries) 
    {
        this.productSeries = productSeries;
    }

    public String getProductSeries() 
    {
        return productSeries;
    }
    public void setSolution(String solution) 
    {
        this.solution = solution;
    }

    public String getSolution() 
    {
        return solution;
    }
    public void setOwner(Long owner) 
    {
        this.owner = owner;
    }

    public Long getOwner() 
    {
        return owner;
    }
    public void setOwnerAgent(Long ownerAgent) 
    {
        this.ownerAgent = ownerAgent;
    }

    public Long getOwnerAgent() 
    {
        return ownerAgent;
    }
    public void setRefuseReason(String refuseReason) 
    {
        this.refuseReason = refuseReason;
    }

    public String getRefuseReason() 
    {
        return refuseReason;
    }
    public void setAuditPerson(Long auditPerson) 
    {
        this.auditPerson = auditPerson;
    }

    public Long getAuditPerson() 
    {
        return auditPerson;
    }
    public void setDelayRemark(String delayRemark) 
    {
        this.delayRemark = delayRemark;
    }

    public String getDelayRemark() 
    {
        return delayRemark;
    }
    public void setLoseRemark(String loseRemark) 
    {
        this.loseRemark = loseRemark;
    }

    public String getLoseRemark() 
    {
        return loseRemark;
    }
    public void setPermissionChar(String permissionChar) 
    {
        this.permissionChar = permissionChar;
    }

    public String getPermissionChar() 
    {
        return permissionChar;
    }
    public void setVersion(Long version) 
    {
        this.version = version;
    }

    public Long getVersion() 
    {
        return version;
    }

    public String getModifyRemark() {
        return modifyRemark;
    }

    public void setModifyRemark(String modifyRemark) {
        this.modifyRemark = modifyRemark;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }
    public void setAreaId(Long areaId) 
    {
        this.areaId = areaId;
    }

    public Long getAreaId() 
    {
        return areaId;
    }
    public void setKeyContactPerson(String keyContactPerson) 
    {
        this.keyContactPerson = keyContactPerson;
    }

    public String getKeyContactPerson() 
    {
        return keyContactPerson;
    }
    public void setKeyContact(String keyContact) 
    {
        this.keyContact = keyContact;
    }

    public String getKeyContact() 
    {
        return keyContact;
    }
    public void setKeyJobTitle(String keyJobTitle) 
    {
        this.keyJobTitle = keyJobTitle;
    }

    public String getKeyJobTitle() 
    {
        return keyJobTitle;
    }
    public void setKeyEmail(String keyEmail) 
    {
        this.keyEmail = keyEmail;
    }

    public String getKeyEmail() 
    {
        return keyEmail;
    }
    public void setSpecialRemark(String specialRemark) 
    {
        this.specialRemark = specialRemark;
    }

    public String getSpecialRemark() 
    {
        return specialRemark;
    }
    public void setEquipmentQuantity(Long equipmentQuantity) 
    {
        this.equipmentQuantity = equipmentQuantity;
    }

    public Long getEquipmentQuantity() 
    {
        return equipmentQuantity;
    }
    public void setEquipmentType(String equipmentType) 
    {
        this.equipmentType = equipmentType;
    }

    public String getEquipmentType() 
    {
        return equipmentType;
    }
    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("projectId", getProjectId())
            .append("projectNo", getProjectNo())
            .append("projectName", getProjectName())
            .append("accountId", getAccountId())
            .append("address", getAddress())
            .append("modelFlag", getModelFlag())
            .append("type", getType())
            .append("segmentedMarket", getSegmentedMarket())
            .append("countryId", getCountryId())
            .append("city", getCity())
            .append("progress", getProgress())
            .append("developer", getDeveloper())
            .append("planDealMonth", getPlanDealMonth())
            .append("completionYear", getCompletionYear())
            .append("startTime", getStartTime())
            .append("overTime", getOverTime())
            .append("currencyId", getCurrencyId())
            .append("contactPerson", getContactPerson())
            .append("contact", getContact())
            .append("jobTitle", getJobTitle())
            .append("email", getEmail())
            .append("status", getStatus())
            .append("productSeries", getProductSeries())
            .append("solution", getSolution())
            .append("owner", getOwner())
            .append("ownerAgent", getOwnerAgent())
            .append("refuseReason", getRefuseReason())
            .append("auditPerson", getAuditPerson())
            .append("delayRemark", getDelayRemark())
            .append("loseRemark", getLoseRemark())
            .append("permissionChar", getPermissionChar())
            .append("version", getVersion())
            .append("delFlag", getDelFlag())
            .append("createTime", getCreateTime())
            .append("createBy", getCreateBy())
            .append("updateTime", getUpdateTime())
            .append("updateBy", getUpdateBy())
            .append("remark", getRemark())
            .append("areaId", getAreaId())
            .append("keyContactPerson", getKeyContactPerson())
            .append("keyContact", getKeyContact())
            .append("keyJobTitle", getKeyJobTitle())
            .append("keyEmail", getKeyEmail())
            .append("specialRemark", getSpecialRemark())
            .append("equipmentQuantity", getEquipmentQuantity())
            .append("equipmentType", getEquipmentType())
            .append("amount", getAmount())
            .toString();
    }
}
