package org.xyzh.api.bidding.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xyzh.common.dto.BaseDTO;
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;

/**
 * 招标项目DTO
 * 用于创建和更新招标项目
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "招标项目DTO")
public class BiddingProjectDTO extends BaseDTO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "项目ID（更新时需要）")
    private String projectId;
    
    @Schema(description = "项目编号")
    private String projectNo;
    
    @Schema(description = "项目名称")
    private String projectName;
    
    @Schema(description = "项目类型：public-公开招标/invitation-邀请招标/competitive_negotiation-竞争性谈判")
    private String projectType;
    
    @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 BigDecimal budgetAmount;
    
    @Schema(description = "货币单位")
    private String currency;
    
    @Schema(description = "项目状态")
    private String projectStatus;
    
    @Schema(description = "中标状态")
    private String winningStatus;
    
    @Schema(description = "中标金额")
    private BigDecimal winningAmount;
    
    @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 = "负责人")
    private String responsibleUser;
    
    @Schema(description = "团队成员")
    private List<String> teamMembers;
}
