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("suppliers")
public class Supplier {

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

    /** 供应商编码 */
    private String supplierCode;

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

    /** 供应商类型: manufacturer/trader/agent/individual */
    private String supplierType;

    /** 所属行业 */
    private String industry;

    /** 统一社会信用代码 */
    private String businessLicense;

    /** 注册资本 */
    private BigDecimal registeredCapital;

    /** 成立日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String establishmentDate;

    /** 法定代表人 */
    private String legalPerson;

    /** 联系电话 */
    private String phone;

    /** 电子邮箱 */
    private String email;

    /** 官方网站 */
    private String website;

    /** 省份 */
    private String province;

    /** 城市 */
    private String city;

    /** 区县 */
    private String district;

    /** 详细地址 */
    private String address;

    /** 主营业务 */
    private String mainBusiness;

    /** 合作状态: pending/active/inactive/blacklist */
    private String status;

    /** 供应商等级: A/B/C/D (A级最高) */
    private String grade;

    /** 信用评分 (0-100) */
    private Integer creditScore;

    /** 是否为内供: 0-外部 1-内部 */
    private Integer isInternal;

    /** 合作开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String cooperationStartDate;

    /** 合作结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String cooperationEndDate;

    /** 结算方式: prepaid/postpaid/monthly */
    private String settlementMethod;

    /** 付款周期(天) */
    private Integer paymentDays;

    /** 最低起订量 */
    private BigDecimal minimumOrderQuantity;

    /** 备注 */
    private String remark;

    /** 附件(JSON数组，存储附件URL) */
    private String attachments;

    /** 审核状态: pending/approved/rejected */
    private String auditStatus;

    /** 审核备注 */
    private String auditComment;

    /** 审核人ID */
    private Long auditorId;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime auditTime;

    /** 乐观锁版本号 */
    @Version
    private Integer version;

    /** 创建时间 */
    @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;
}
