package org.xyzh.api.bidding.vo;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xyzh.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.fastjson2.annotation.JSONField;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 招标项目VO
 * 用于前端展示招标项目详细信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "招标项目VO")
public class BiddingProjectVO extends BaseVO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "项目ID")
    private String projectId;
    
    @Schema(description = "项目编号")
    private String projectNo;
    
    @Schema(description = "项目名称")
    private String projectName;
    
    @Schema(description = "项目类型")
    private String projectType;
    
    @Schema(description = "项目类型名称（中文）")
    private String projectTypeName;
    
    @Schema(description = "所属行业")
    private String industry;
    
    @Schema(description = "来源平台")
    private String sourcePlatform;
    
    @Schema(description = "来源URL")
    private String sourceUrl;
    
    @Schema(description = "发布日期", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date publishDate;
    
    @Schema(description = "投标截止日期", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date deadline;
    
    @Schema(description = "开标日期", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date openingDate;
    
    @Schema(description = "距离截止日期剩余天数")
    private Long daysUntilDeadline;
    
    @Schema(description = "预算金额")
    private BigDecimal budgetAmount;
    
    @Schema(description = "货币单位")
    private String currency;
    
    @Schema(description = "预算金额格式化显示")
    private String budgetAmountFormatted;
    
    @Schema(description = "项目状态")
    private String projectStatus;
    
    @Schema(description = "项目状态名称（中文）")
    private String projectStatusName;
    
    @Schema(description = "中标状态")
    private String winningStatus;
    
    @Schema(description = "中标状态名称（中文）")
    private String winningStatusName;
    
    @Schema(description = "中标金额")
    private BigDecimal winningAmount;
    
    @Schema(description = "中标金额格式化显示")
    private String winningAmountFormatted;
    
    @Schema(description = "客户名称")
    private String clientName;
    
    @Schema(description = "客户联系方式")
    private String clientContact;
    
    @Schema(description = "联系人")
    private String contactPerson;
    
    @Schema(description = "项目地点")
    private String projectLocation;
    
    @Schema(description = "项目描述")
    private String description;
    
    @Schema(description = "关键词")
    private List<String> keywords;
    
    @Schema(description = "负责人ID")
    private String responsibleUser;
    
    @Schema(description = "负责人姓名")
    private String responsibleUserName;
    
    @Schema(description = "团队成员")
    private List<String> teamMembers;
    
    @Schema(description = "团队成员姓名列表")
    private List<String> teamMemberNames;
    
    @Schema(description = "部门名称")
    private String deptName;
    
    @Schema(description = "文档数量")
    private Integer documentCount;
    
    @Schema(description = "要素数量")
    private Integer requirementCount;
    
    @Schema(description = "否决项数量")
    private Integer vetoCount;
    
    @Schema(description = "投标文件数量")
    private Integer responseCount;
    
    @Schema(description = "完成进度（百分比）")
    private Integer progressPercentage;
}
