package com.erp.supplier.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("procurement_inquiries")
public class ProcurementInquiry {

    @TableId(type = IdType.AUTO)
    private Long id;

    /** 询价单号 */
    private String inquiryNo;

    /** 供应商ID */
    private Long supplierId;

    /** 供应商名称 */
    private String supplierName;

    /** 询价类型: product/material/service */
    private String inquiryType;

    /** 商品ID(关联商品服务) */
    private Long productId;

    /** 商品名称 */
    private String productName;

    /** 商品规格 */
    private String productSpec;

    /** 商品单位 */
    private String unit;

    /** 询价数量 */
    private BigDecimal quantity;

    /** 期望交货日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String expectedDeliveryDate;

    /** 询价状态: draft/sent/replied/compared/confirmed/cancelled */
    private String inquiryStatus;

    /** 询价日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime inquiryDate;

    /** 报价截止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String quoteDeadline;

    /** 报价金额 */
    private BigDecimal quotedPrice;

    /** 报价币种 */
    private String currency;

    /** 报价有效期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String quoteValidUntil;

    /** 交货周期(天) */
    private Integer deliveryCycle;

    /** 质量标准 */
    private String qualityStandard;

    /** 付款方式 */
    private String paymentTerms;

    /** 备注 */
    private String remark;

    /** 是否已选择: 0-否 1-是 */
    private Integer isSelected;

    /** 选择原因 */
    private String selectionReason;

    /** 创建人ID */
    private Long creatorId;

    /** 创建人姓名 */
    private String creatorName;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedAt;

    /** 逻辑删除标记 */
    @TableLogic
    private Integer deleted;
}
