package com.microservices.dms.achievementLibrary.domain;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.microservices.dms.resourceLibrary.domain.vo.KeyValVo;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.microservices.common.core.annotation.Excel;
import com.microservices.common.core.web.domain.BaseEntity;

/**
 * 成果对象 achievementsll
 *
 * @author microservices
 * @date 2025-04-02
 */
public class Achievements extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 成果唯一标识
     */
    private Long id;

    /**
     * 成果名称
     */
    @Excel(name = "成果名称")
    private String achievementName;
    /**
     * 成果展示名称
     */
    private String showAchievementName;

    /**
     * 成果领域1
     */
    @Excel(
            name = "成果领域",
            readConverterExp = "1=理论研究,2=政策法规,3=医学,4=电子信息,5=通信工程,6=计算机科学,7=软件工程,9=人工智能,10=知识图谱,12=大数据,23=机器人,24=无人系统,25=创意征集,26=文献翻译,27=成果转化,28=科技协同,29=科研组织模式,30=新兴领域,31=其他,32=电子元器件,33=测试仪器,34=军事历史,35=计算机网络"
    )
    private String field1;
    //成果领域名称
    private String field1Name;

    /**
     * 融办名称
     */
    @Excel(name = "融办名称")
    private String field2;

    /**
     * 融办描述
     */
    @Excel(name = "融办描述")
    private String field3;

    /**
     * 成果类型
     */
    @Excel(name = "成果类型")
    private String achievementType;

    /**
     * 成果来源
     */
    @Excel(name = "成果来源", readConverterExp = "1=开源项目,2=创客任务,3=开放竞赛,4=校企成果,5=省市融办")
    private String source;

    /**
     * 成果来源ID
     */
    @Excel(name = "成果来源ID")
    private Long sourceId;

    /**
     * 成果来源渠道
     */
    @Excel(name = "成果来源渠道")
    private String sourceLink;

    /**
     * 成果标签
     */
    @Excel(name = "成果标签", readConverterExp = "1=高校,2=企业,3=其他")
    private String tags;

    /**
     * 成果摘要
     */
    @Excel(name = "成果摘要")
    private String summary;

    /**
     * 发布单位
     */
    @Excel(name = "单位名称")
    private String publishingUnit;

    /**
     * 单位概况
     */
    @Excel(name = "单位概况")
    private String address;

    /**
     * 是否精选成果
     */
    @Excel(name = "是否精选成果")
    private Integer isFeatured;

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

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

    /**
     * 成果所属人ID
     */
    @Excel(name = "成果所属人ID")
    private String ownerId;

    /**
     * 成果所属人名称
     */
    @Excel(name = "成果所属人名称")
    private String ownerName;

    /**
     * 成果状态
     */
    @Excel(name = "成果状态")
    private String status;

    /**
     * 成果简介
     */
    @Excel(name = "成果简介")
    private String details;

    /**
     * 成果审核人
     */
    @Excel(name = "成果审核人")
    private String reviewer;

    /**
     * 成果审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成果审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reviewDate;

    /**
     * 成果审核意见
     */
    @Excel(name = "成果审核意见")
    private String reviewComments;

    /**
     * 成果图片
     */
    @Excel(name = "图片")
    private String images;

    /**
     * 成果附件
     */
    @Excel(name = "成果附件")
    private String attachments;

    //成果小类
    @Excel(name = "成果图片视频")
    private String ext1;
    //成果状态

    @Excel(name = "应用图片视频")
    private String ext2;
    //成果团队名称
    @Excel(name = "应用情况")
    private String ext3;

    private Long clickSum;
    private Long watcherSum;
    private Long favoriteSum;
    private Long dockSum;
    private String filedDesc;
    private Float hotRank;
    private Long attachmentCount;
    private Integer isExpertAudit;
    private String userImg;
    private String userNickName;
    public String gender;
    private String userLogin;
    private List<Map<String,Object>> dockingUserInfo;

    public String getExt1() {
        return ext1;
    }

    public void setExt1(String ext1) {
        this.ext1 = ext1;
    }

    public String getExt2() {
        return ext2;
    }

    public void setExt2(String ext2) {
        this.ext2 = ext2;
    }

    public String getExt3() {
        return ext3;
    }

    public void setExt3(String ext3) {
        this.ext3 = ext3;
    }

    public List<Map<String, Object>> getDockingUserInfo() {
        return dockingUserInfo;
    }

    public void setDockingUserInfo(List<Map<String, Object>> dockingUserInfo) {
        this.dockingUserInfo = dockingUserInfo;
    }

    public String getFiledDesc() {
        return filedDesc;
    }

    public void setFiledDesc(String filedDesc) {
        this.filedDesc = filedDesc;
    }

    public Long getDockSum() {
        return dockSum;
    }

    public void setDockSum(Long dockSum) {
        this.dockSum = dockSum;
    }

    public String getShowAchievementName() {
        return showAchievementName;
    }

    public void setShowAchievementName(String showAchievementName) {
        this.showAchievementName = showAchievementName;
    }

    public String getUserImg() {
        return userImg;
    }

    public void setUserImg(String userImg) {
        this.userImg = userImg;
    }

    public String getUserNickName() {
        return userNickName;
    }

    public void setUserNickName(String userNickName) {
        this.userNickName = userNickName;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getUserLogin() {
        return userLogin;
    }

    public void setUserLogin(String userLogin) {
        this.userLogin = userLogin;
    }

    public String getField1Name() {
        return field1Name;
    }

    public void setField1Name(String field1Name) {
        this.field1Name = field1Name;
    }

    public Long getWatcherSum() {
        return watcherSum;
    }

    public void setWatcherSum(Long watcherSum) {
        this.watcherSum = watcherSum;
    }

    public Long getFavoriteSum() {
        return favoriteSum;
    }

    public void setFavoriteSum(Long favoriteSum) {
        this.favoriteSum = favoriteSum;
    }

    public Float getHotRank() {
        return hotRank;
    }

    public void setHotRank(Float hotRank) {
        this.hotRank = hotRank;
    }

    public Integer getIsExpertAudit() {
        return isExpertAudit;
    }

    public void setIsExpertAudit(Integer isExpertAudit) {
        this.isExpertAudit = isExpertAudit;
    }

    public Long getAttachmentCount() {
        return attachmentCount;
    }

    public void setAttachmentCount(Long attachmentCount) {
        this.attachmentCount = attachmentCount;
    }

    public Long getClickSum() {
        return clickSum;
    }

    public void setClickSum(Long clickSum) {
        this.clickSum = clickSum;
    }

    private List<KeyValVo> attachmentList;

    public List<KeyValVo> getAttachmentList() {
        return attachmentList;
    }

    public void setAttachmentList(List<KeyValVo> attachmentList) {
        this.attachmentList = attachmentList;
    }

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

    public Long getId() {
        return id;
    }

    public void setAchievementName(String achievementName) {
        this.achievementName = achievementName;
    }

    public String getAchievementName() {
        return achievementName;
    }

    public void setField1(String field1) {
        this.field1 = field1;
    }

    public String getField1() {
        return field1;
    }

    public void setField2(String field2) {
        this.field2 = field2;
    }

    public String getField2() {
        return field2;
    }

    public void setField3(String field3) {
        this.field3 = field3;
    }

    public String getField3() {
        return field3;
    }

    public void setAchievementType(String achievementType) {
        this.achievementType = achievementType;
    }

    public String getAchievementType() {
        return achievementType;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public String getSource() {
        return source;
    }

    public void setSourceId(Long sourceId) {
        this.sourceId = sourceId;
    }

    public Long getSourceId() {
        return sourceId;
    }

    public void setSourceLink(String sourceLink) {
        this.sourceLink = sourceLink;
    }

    public String getSourceLink() {
        return sourceLink;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    public String getTags() {
        return tags;
    }

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

    public String getSummary() {
        return summary;
    }

    public void setPublishingUnit(String publishingUnit) {
        this.publishingUnit = publishingUnit;
    }

    public String getPublishingUnit() {
        return publishingUnit;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAddress() {
        return address;
    }

    public void setIsFeatured(Integer isFeatured) {
        this.isFeatured = isFeatured;
    }

    public Integer getIsFeatured() {
        return isFeatured;
    }

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

    public String getContactPerson() {
        return contactPerson;
    }

    public void setContactNumber(String contactNumber) {
        this.contactNumber = contactNumber;
    }

    public String getContactNumber() {
        return contactNumber;
    }

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

    public String getOwnerId() {
        return ownerId;
    }

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

    public String getOwnerName() {
        return ownerName;
    }

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

    public String getStatus() {
        return status;
    }

    public void setDetails(String details) {
        this.details = details;
    }

    public String getDetails() {
        return details;
    }

    public void setReviewer(String reviewer) {
        this.reviewer = reviewer;
    }

    public String getReviewer() {
        return reviewer;
    }

    public void setReviewDate(Date reviewDate) {
        this.reviewDate = reviewDate;
    }

    public Date getReviewDate() {
        return reviewDate;
    }

    public void setReviewComments(String reviewComments) {
        this.reviewComments = reviewComments;
    }

    public String getReviewComments() {
        return reviewComments;
    }

    public void setImages(String images) {
        this.images = images;
    }

    public String getImages() {
        return images;
    }

    public void setAttachments(String attachments) {
        this.attachments = attachments;
    }

    public String getAttachments() {
        return attachments;
    }

}
