package com.goafanti.common.model;

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

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import com.goafanti.common.constant.AFTConstants;
import com.goafanti.common.utils.FileUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;

public class Demand {
    private String id;

    /**
    * 编号
    */
    private Integer serialNumber;

    /**
    * 数据类别(0-个人需求,1-单位需求)
    */
    private Integer dataCategory;

    /**
    * 名称
    */
    private String name;

    /**
    * 关键词
    */
    private String keyword;

    /**
    * 信息来源(0-平台采集,1-客户发布)
    */
    private Integer infoSources;

    /**
    * 行业类别下拉A
    */
    private Integer industryCategoryA;

    /**
    * 行业类别下拉B
    */
    private Integer industryCategoryB;

    /**
    * 行业类别下拉C
    */
    private Integer industryCategoryC;

    /**
    * 需求类型
    */
    private Integer demandType;

    /**
    * 问题说明
    */
    private String problemDes;

    /**
    * 技术指标要求
    */
    private String technicalRequirements;

    /**
    * 需求文件--图片URL
    */
    private String pictureUrl;

    /**
    * 需求文件--文本文件
    */
    private String textFileUrl;

    /**
    * 需求文件--视屏文件URL
    */
    private String videoUrl;

    /**
    * 固定预算
    */
    private BigDecimal fixedBudget;

    /**
    * 固定周期
    */
    private String fixedCycle;

    /**
    * 固定人数
    */
    private Integer peopleNumber;

    /**
    * 固定方案
    */
    private String fixedScheme;

    /**
    * 费用托管
    */
    private BigDecimal costEscrow;
    
    /**
     * 精品需求
     */
     private Integer boutique;

    /**
    * 预算费用
    */
    private BigDecimal budgetCost;

    /**
    * 有效期限
    */
    private Date validityPeriod;

    /**
    * 雇主客户ID
    */
    private String employerId;

    /**
    * 雇主名称
    */
    private String employerName;

    /**
    * 雇主地址
    */
    private String employerAddress;

    /**
    * 雇主联系人名称
    */
    private String employerContacts;

    /**
    * 雇主联系人电话
    */
    private String employerContactsMobile;

    /**
    * 雇主联系人邮箱
    */
    private String employerContactsMailbox;

    

    /**
    * 需求状态(0-进行中,1-未解决,2-已解决)
    */
    private Integer status;

    /**
    * 是否发布(0-未发布,1-发布)
    */
    private Integer releaseStatus;

    /**
    * 发布时间
    */
    private Date releaseDate;

    /**
    * 需求记录创建时间
    */
    private Date createTime;

    /**
    * 负责人(营销员)
    */
    private String principalId;

    /**
    * 删除标记
    */
    private Integer deletedSign;
    
    /**
     * 审核状态
     */
    private Integer auditStatus;
    
    /**
     * 技术经纪人ID
     */
    private String techBrokerId;
    
    /**
     * 备注
     */
    private String remark;
    /**
     * 加急天数
     */
    private Integer  urgentDays;
	/**
	 * 加急报酬
	 */
    private BigDecimal urgentMoney;
	
    private String orderCount;
	private String orderIntentionCount; 
	
	private String contacts; 
	
	private String contactMobile;

    public String getOrderCount() {
		return orderCount;
	}

	public void setOrderCount(String orderCount) {
		this.orderCount = orderCount;
	}

	public String getOrderIntentionCount() {
		return orderIntentionCount;
	}

	public void setOrderIntentionCount(String orderIntentionCount) {
		this.orderIntentionCount = orderIntentionCount;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Integer getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(Integer serialNumber) {
        this.serialNumber = serialNumber;
    }
    
    @JsonFormat(shape = Shape.STRING)
    public Integer getDataCategory() {
        return dataCategory;
    }

    public void setDataCategory(Integer dataCategory) {
        this.dataCategory = dataCategory;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }
    
    @JsonFormat(shape = Shape.STRING)
    public Integer getInfoSources() {
        return infoSources;
    }

    public void setInfoSources(Integer infoSources) {
        this.infoSources = infoSources;
    }
    
    public Integer getIndustryCategoryA() {
        return industryCategoryA;
    }

    public void setIndustryCategoryA(Integer industryCategoryA) {
        this.industryCategoryA = industryCategoryA;
    }
    
    public Integer getIndustryCategoryB() {
        return industryCategoryB;
    }

    public void setIndustryCategoryB(Integer industryCategoryB) {
        this.industryCategoryB = industryCategoryB;
    }
    
    public Integer getIndustryCategoryC() {
        return industryCategoryC;
    }

    public void setIndustryCategoryC(Integer industryCategoryC) {
        this.industryCategoryC = industryCategoryC;
    }
    
    @JsonFormat(shape = Shape.STRING)
    public Integer getDemandType() {
        return demandType;
    }

    public void setDemandType(Integer demandType) {
        this.demandType = demandType;
    }

    public String getProblemDes() {
        return problemDes;
    }

    public void setProblemDes(String problemDes) {
        this.problemDes = problemDes;
    }

    public String getTechnicalRequirements() {
        return technicalRequirements;
    }

    public void setTechnicalRequirements(String technicalRequirements) {
        this.technicalRequirements = technicalRequirements;
    }

    public String getPictureUrl() {
        return pictureUrl;
    }

    public void setPictureUrl(String pictureUrl) {
        this.pictureUrl = pictureUrl;
    }

    public String getTextFileUrl() {
        return textFileUrl;
    }

    public void setTextFileUrl(String textFileUrl) {
        this.textFileUrl = textFileUrl;
    }

    public String getVideoUrl() {
        return videoUrl;
    }

    public void setVideoUrl(String videoUrl) {
        this.videoUrl = videoUrl;
    }

    public BigDecimal getFixedBudget() {
        return fixedBudget;
    }

    public void setFixedBudget(BigDecimal fixedBudget) {
        this.fixedBudget = fixedBudget;
    }

    public String getFixedCycle() {
        return fixedCycle;
    }

    public void setFixedCycle(String fixedCycle) {
        this.fixedCycle = fixedCycle;
    }

    public Integer getPeopleNumber() {
        return peopleNumber;
    }

    public void setPeopleNumber(Integer peopleNumber) {
        this.peopleNumber = peopleNumber;
    }

    public String getFixedScheme() {
        return fixedScheme;
    }

    public void setFixedScheme(String fixedScheme) {
        this.fixedScheme = fixedScheme;
    }

    public BigDecimal getCostEscrow() {
        return costEscrow;
    }

    public void setCostEscrow(BigDecimal costEscrow) {
        this.costEscrow = costEscrow;
    }
    
	public Integer getBoutique() {
		return boutique;
	}

	public void setBoutique(Integer boutique) {
		this.boutique = boutique;
	}

	public BigDecimal getBudgetCost() {
        return budgetCost;
    }

    public void setBudgetCost(BigDecimal budgetCost) {
        this.budgetCost = budgetCost;
    }

    public Date getValidityPeriod() {
        return validityPeriod;
    }

    public void setValidityPeriod(Date validityPeriod) {
        this.validityPeriod = validityPeriod;
    }

    public String getEmployerId() {
        return employerId;
    }

    public void setEmployerId(String employerId) {
        this.employerId = employerId;
    }

    public String getEmployerName() {
        return employerName;
    }

    public void setEmployerName(String employerName) {
        this.employerName = employerName;
    }

    public String getEmployerAddress() {
        return employerAddress;
    }

    public void setEmployerAddress(String employerAddress) {
        this.employerAddress = employerAddress;
    }

    public String getEmployerContacts() {
        return employerContacts;
    }

    public void setEmployerContacts(String employerContacts) {
        this.employerContacts = employerContacts;
    }

    public String getEmployerContactsMobile() {
        return employerContactsMobile;
    }

    public void setEmployerContactsMobile(String employerContactsMobile) {
        this.employerContactsMobile = employerContactsMobile;
    }

    public String getEmployerContactsMailbox() {
        return employerContactsMailbox;
    }

    public void setEmployerContactsMailbox(String employerContactsMailbox) {
        this.employerContactsMailbox = employerContactsMailbox;
    }

    
    public String getContacts() {
        return contacts;
    }

    public void setContacts(String  contacts) {
        this.contacts = contacts;
    }
    
    @JsonFormat(shape = Shape.STRING)
    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }
    
    @JsonFormat(shape = Shape.STRING)
    public Integer getReleaseStatus() {
		return releaseStatus;
	}

	public void setReleaseStatus(Integer releaseStatus) {
		this.releaseStatus = releaseStatus;
	}

	public Date getReleaseDate() {
        return releaseDate;
    }

    public void setReleaseDate(Date releaseDate) {
        this.releaseDate = releaseDate;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getCreateTimeFormattedDate() {
		if (this.createTime == null) {
			return null;
		} else {
			return DateFormatUtils.format(this.getCreateTime(), AFTConstants.YYYYMMDDHHMMSS);
		}
	}

    public String getPrincipalId() {
        return principalId;
    }

    public void setPrincipalId(String principalId) {
        this.principalId = principalId;
    }
    
    @JsonIgnore
    public Integer getDeletedSign() {
        return deletedSign;
    }

    public void setDeletedSign(Integer deletedSign) {
        this.deletedSign = deletedSign;
    }
    
    @JsonFormat(shape = Shape.STRING)
    public Integer getAuditStatus() {
		return auditStatus;
	}

	public void setAuditStatus(Integer auditStatus) {
		this.auditStatus = auditStatus;
	}

	public String getTechBrokerId() {
		return techBrokerId;
	}

	public void setTechBrokerId(String techBrokerId) {
		this.techBrokerId = techBrokerId;
	}

	public String getValidityPeriodFormattedDate() {
		if (this.validityPeriod == null) {
			return null;
		} else {
			return DateFormatUtils.format(this.getValidityPeriod(), AFTConstants.YYYYMMDD);
		}
	}

	public void setValidityPeriodFormattedDate(String validityPeriodFormattedDate) {

	}
	
	public String getReleaseDateFormattedDate() {
		if (this.releaseDate == null) {
			return null;
		} else {
			return DateFormatUtils.format(this.getReleaseDate(), AFTConstants.YYYYMMDD);
		}
	}

	public void setReleaseDateFormattedDate(String releaseDateFormattedDate) {

	}
	
	public String getTextFileDownloadFileName() {
		if (StringUtils.isBlank(this.textFileUrl)) {
			return null;
		} else {
			return FileUtils.getDownloadFileName(this.textFileUrl);
		}
	}

	public void setTextFileUrlDownloadFileName(String textFileDownloadFileName) {

	}

	public Integer getUrgentDays() {
		return urgentDays;
	}

	public void setUrgentDays(Integer urgentDays) {
		this.urgentDays = urgentDays;
	}
	public void setUrgentDays(String  urgentDays) {
		this.urgentDays = Integer.valueOf(urgentDays);
	}

	public BigDecimal getUrgentMoney() {
		return urgentMoney;
	}

	public void setUrgentMoney(BigDecimal urgentMoney) {
		this.urgentMoney = urgentMoney;
	}

	public String getContactMobile() {
		return contactMobile;
	}

	public void setContactMobile(String contactMobile) {
		this.contactMobile = contactMobile;
	}

	
}