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 Achievement {
	private String		id;

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

	/**
	 * 数据类别 (0--成果, 1--技术, 2--项目)
	 */
	private Integer		dataCategory;

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

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

	/**
	 * 类型(0--专利, 1--软著, 2--项目, 3--版权, 4--工业设计, 5--配方, 6--非标)
	 */
	private Integer		category;

	/**
	 * 摘要
	 */
	private String		summary;

	/**
	 * 成果简介
	 */
	private String		introduction;

	/**
	 * 技术图片
	 */
	protected String		technicalPictureUrl;

	/**
	 * 应用领域1
	 */
	private Integer		fieldA;

	/**
	 * 应用领域2
	 */
	private Integer		fieldB;

	/**
	 * 应用领域3
	 */
	private Integer		fieldC;

	/**
	 * 成熟度(1--正在研发, 2-- 已有样品, 3-- 通过小试, 4-- 通过中试, 5-- 可以量产)
	 */
	private Integer		maturity;

	/**
	 * 成熟度资料--图片URL
	 */
	private String		maturityPictureUrl;

	/**
	 * 成熟度资料--文本文件URL
	 */
	private String		maturityTextFileUrl;

	/**
	 * 成熟度资料--视屏URL
	 */
	private String		maturityVideoUrl;

	/**
	 * 创新度(0--行业先进,1--行业领先,2--国内先进,3--国内领先,4--国际先进,5--国际领先)
	 */
	private Integer		innovation;
	
	/**
	 * 所有人ID
	 */
	private String		ownerId;

	/**
	 * 成果所有人名称
	 */
	private String		ownerName;

	/**
	 * 所有人类型(0-个人,1-组织)
	 */
	private Integer		ownerType;

	/**
	 * 所有人证件号
	 */
	private String		ownerIdNumber;

	/**
	 * 所有人联系电话
	 */
	private String		ownerMobile;

	/**
	 * 所有人电子邮箱
	 */
	private String		ownerEmail;

	/**
	 * 所有人通讯地址
	 */
	private String		ownerPostalAddress;

	/**
	 * 合作方式(0--技术转让,1--授权生产)
	 */
	private Integer		cooperationMode;

	/**
	 * 转让方式(0--完全转让,1--许可转让,2--技术入股)
	 */
	private Integer		transferMode;

	/**
	 * 议价方式(0--面议，1--定价)
	 */
	private Integer		bargainingMode;

	/**
	 * 转让价格
	 */
	private BigDecimal	transferPrice;

	/**
	 * 技术场景
	 */
	private String		technicalScene;

	/**
	 * 技术突破
	 */
	private String		breakthrough;

	/**
	 * 专利情况
	 */
	private String		patentCase;

	/**
	 * 获奖情况
	 */
	private String		awards;

	/**
	 * 技术团队情况
	 */
	private String		teamDes;

	/**
	 * 技术参数
	 */
	private String		parameter;

	/**
	 * 技术方案URL
	 */
	private String		techPlanUrl;

	/**
	 * 商业计划书URL
	 */
	private String		businessPlanUrl;

	/**
	 * 所属组织ID
	 */
	private String		orgId;

	/**
	 * 所属组织名称
	 */
	private String		orgName;

	/**
	 * 所属组织地址
	 */
	private String		orgAddress;

	/**
	 * 所属组织邮箱
	 */
	private String		orgEmail;

	/**
	 * 所属组织联系人名称
	 */
	private String		orgContacts;

	/**
	 * 所属组织联系人电话
	 */
	private String		orgContactsMobile;


	/**
	 * 客户经理ID
	 */
	private String		managerId;

	/**
	 * 营销员ID
	 */
	private String		salesmanId;

	/**
	 * 状态
	 */
	private Integer		status;

	/**
	 * 成果记录创建时间
	 */
	private Date		createTime;

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

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

	/**
	 * 删除标记
	 */
	private Integer		deletedSign;
	
	  /**
     * 审核状态
     */
    private Integer auditStatus;
    
    /**
     * 技术经纪人ID
     */
    private String techBrokerId;
    
    /**
     * 国际中文名
     */
    private String 	countryNameZh;

    /**
     *  是否国际化  0 - 否    , 1 - 是
     */
    private Integer internationalFlag;

    /**
     *  是否属于军民融合成果 0 - 否	, 1 - 是
     */
    private Integer jmrhFlag;
    

    /**
     *  是否属于精品 0 - 否	, 1 - 是
     */
    private Integer boutique;
    
    private String remark;
    
    private String contacts;
	
	private String contactMobile ;
	
	public String getContacts() {
		return contacts;
	}

	public void setContacts(String contacts) {
		this.contacts = contacts;
	}

	public String getContactMobile() {
		return contactMobile;
	}

	public void setContactMobile(String contactMobile) {
		this.contactMobile = contactMobile;
	}
	
	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 getCategory() {
		return category;
	}

	public void setCategory(Integer category) {
		this.category = category;
	}

	public String getSummary() {
		return summary;
	}

	public void setSummary(String summary) {
		this.summary = summary;
	}

	public String getIntroduction() {
		return introduction;
	}

	public void setIntroduction(String introduction) {
		this.introduction = introduction;
	}

	public String getTechnicalPictureUrl() {
		return technicalPictureUrl;
	}

	public void setTechnicalPictureUrl(String technicalPictureUrl) {
		this.technicalPictureUrl = technicalPictureUrl;
	}

	public Integer getFieldA() {
		return fieldA;
	}

	public void setFieldA(Integer fieldA) {
		this.fieldA = fieldA;
	}

	public Integer getFieldB() {
		return fieldB;
	}

	public void setFieldB(Integer fieldB) {
		this.fieldB = fieldB;
	}

	public Integer getFieldC() {
		return fieldC;
	}

	public void setFieldC(Integer fieldC) {
		this.fieldC = fieldC;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getMaturity() {
		return maturity;
	}

	public void setMaturity(Integer maturity) {
		this.maturity = maturity;
	}

	public String getMaturityPictureUrl() {
		return maturityPictureUrl;
	}

	public void setMaturityPictureUrl(String maturityPictureUrl) {
		this.maturityPictureUrl = maturityPictureUrl;
	}

	public String getMaturityTextFileUrl() {
		return maturityTextFileUrl;
	}

	public void setMaturityTextFileUrl(String maturityTextFileUrl) {
		this.maturityTextFileUrl = maturityTextFileUrl;
	}

	public String getMaturityVideoUrl() {
		return maturityVideoUrl;
	}

	public void setMaturityVideoUrl(String maturityVideoUrl) {
		this.maturityVideoUrl = maturityVideoUrl;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getInnovation() {
		return innovation;
	}

	public void setInnovation(Integer innovation) {
		this.innovation = innovation;
	}
	

	public String getOwnerId() {
		return ownerId;
	}

	public void setOwnerId(String ownerId) {
		this.ownerId = ownerId;
	}

	public String getOwnerName() {
		return ownerName;
	}

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

	@JsonFormat(shape = Shape.STRING)
	public Integer getOwnerType() {
		return ownerType;
	}

	public void setOwnerType(Integer ownerType) {
		this.ownerType = ownerType;
	}

	public String getOwnerIdNumber() {
		return ownerIdNumber;
	}

	public void setOwnerIdNumber(String ownerIdNumber) {
		this.ownerIdNumber = ownerIdNumber;
	}

	public String getOwnerMobile() {
		return ownerMobile;
	}

	public void setOwnerMobile(String ownerMobile) {
		this.ownerMobile = ownerMobile;
	}

	public String getOwnerEmail() {
		return ownerEmail;
	}

	public void setOwnerEmail(String ownerEmail) {
		this.ownerEmail = ownerEmail;
	}

	public String getOwnerPostalAddress() {
		if (StringUtils.isEmpty(ownerPostalAddress)) {
			return "湖南长沙";
		}
		return ownerPostalAddress;
	}

	public void setOwnerPostalAddress(String ownerPostalAddress) {
		
		this.ownerPostalAddress = ownerPostalAddress;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getCooperationMode() {
		return cooperationMode;
	}

	public void setCooperationMode(Integer cooperationMode) {
		this.cooperationMode = cooperationMode;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getTransferMode() {
		return transferMode;
	}

	public void setTransferMode(Integer transferMode) {
		this.transferMode = transferMode;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getBargainingMode() {
		return bargainingMode;
	}

	public void setBargainingMode(Integer bargainingMode) {
		this.bargainingMode = bargainingMode;
	}

	public BigDecimal getTransferPrice() {
		return transferPrice;
	}

	public void setTransferPrice(BigDecimal transferPrice) {
		this.transferPrice = transferPrice;
	}

	public String getTechnicalScene() {
		return technicalScene;
	}

	public void setTechnicalScene(String technicalScene) {
		this.technicalScene = technicalScene;
	}

	public String getBreakthrough() {
		return breakthrough;
	}

	public void setBreakthrough(String breakthrough) {
		this.breakthrough = breakthrough;
	}

	public String getPatentCase() {
		return patentCase;
	}

	public void setPatentCase(String patentCase) {
		this.patentCase = patentCase;
	}

	public String getAwards() {
		return awards;
	}

	public void setAwards(String awards) {
		this.awards = awards;
	}

	public String getTeamDes() {
		return teamDes;
	}

	public void setTeamDes(String teamDes) {
		this.teamDes = teamDes;
	}

	public String getParameter() {
		return parameter;
	}

	public void setParameter(String parameter) {
		this.parameter = parameter;
	}

	public String getTechPlanUrl() {
		return techPlanUrl;
	}

	public void setTechPlanUrl(String techPlanUrl) {
		this.techPlanUrl = techPlanUrl;
	}

	public String getBusinessPlanUrl() {
		return businessPlanUrl;
	}

	public void setBusinessPlanUrl(String businessPlanUrl) {
		this.businessPlanUrl = businessPlanUrl;
	}
	
	@JsonIgnore
	public String getOrgId() {
		return orgId;
	}

	public void setOrgId(String orgId) {
		this.orgId = orgId;
	}
	
	@JsonIgnore
	public String getOrgName() {
		return orgName;
	}

	public void setOrgName(String orgName) {
		this.orgName = orgName;
	}
	
	@JsonIgnore
	public String getOrgAddress() {
		return orgAddress;
	}

	public void setOrgAddress(String orgAddress) {
		this.orgAddress = orgAddress;
	}
	
	@JsonIgnore
	public String getOrgEmail() {
		return orgEmail;
	}

	public void setOrgEmail(String orgEmail) {
		this.orgEmail = orgEmail;
	}
	
	@JsonIgnore
	public String getOrgContacts() {
		return orgContacts;
	}

	public void setOrgContacts(String orgContacts) {
		this.orgContacts = orgContacts;
	}
	
	@JsonIgnore
	public String getOrgContactsMobile() {
		return orgContactsMobile;
	}

	public void setOrgContactsMobile(String orgContactsMobile) {
		this.orgContactsMobile = orgContactsMobile;
	}



	public String getManagerId() {
		return managerId;
	}

	public void setManagerId(String managerId) {
		this.managerId = managerId;
	}

	public String getSalesmanId() {
		return salesmanId;
	}

	public void setSalesmanId(String salesmanId) {
		this.salesmanId = salesmanId;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	@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;
	}

	@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 getCountryNameZh() {
		return countryNameZh;
	}

	public void setCountryNameZh(String countryNameZh) {
		this.countryNameZh = countryNameZh;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getInternationalFlag() {
		return internationalFlag;
	}

	public void setInternationalFlag(Integer internationalFlag) {
		this.internationalFlag = internationalFlag;
	}

	@JsonFormat(shape = Shape.STRING)
	public Integer getJmrhFlag() {
		return jmrhFlag;
		
	}
	
	public void setJmrhFlag(Integer jmrhFlag) {
		this.jmrhFlag = jmrhFlag;
	}
	
	@JsonFormat(shape = Shape.STRING)
	public Integer getBoutique() {
		return boutique;
	}

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

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

	public void setReleaseDateFormattedDate(String releaseDateFormattedDate) {

	}

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

	public void setMaturityTextFileUrlDownloadFileName(String maturityTextFileDownloadFileName) {

	}

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

	public void setBusinessPlanDownloadFileName(String businessPlanDownloadFileName) {

	}

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

	public void setTechPlanDownloadFileName(String techPlanDownloadFileName) {

	}
}