package com.cf.imes.module.executor.dal.dataobject.veneer;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.math.BigDecimal;

/**
 * 贴皮表 veneers_{N} DO
 *
 * @author Gqr
 * @since 2026/1/4 14:10
 */
@TableName("veneers")
@KeySequence("veneers_n_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VeneerDO extends BaseDO {
    /**
     * 主键
     */
    private Long id;

    /**
     * 贴皮编号
     */
    private String veneerNo;

    /**
     * 源贴皮编号
     */
    private String sourceVeneerNo;

    /**
     * 批次号
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String batchNo;

    /**
     * 组织ID
     */
    private Long organId;

    /**
     * 分类名称
     */
    private String classificationName;

    /**
     * 贴皮名称
     */
    private String veneerName;

    /**
     * 产品等级
     */
    private Integer productLevel;

    /**
     * 品牌
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String brand;

    /**
     * 规格
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String spec;

    /**
     * 材质
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String material;

    /**
     * 颜色
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String color;

    /**
     * 厂家
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String factory;

    /**
     * 数量
     */
    private Integer num;

    /**
     * 是否有瑕疵：0否 1是
     */
    private Boolean defect;

    /**
     * 是否余料：0否 1是
     */
    private Boolean remain;

    /**
     * 源排单号
     */
    private Long sourcePlanNo;

    /**
     * 使用排单号
     */
    private Long planNo;

    /**
     * 状态：0未使用 1已使用
     */
    private Integer status;

    /**
     * 宽
     */
    private BigDecimal width;

    /**
     * 长
     */
    private BigDecimal length;

    /**
     * 厚
     */
    private BigDecimal thickness;

    /**
     * 备注
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String remark;

    /**
     * 贴皮文件ID
     */
    private Long fileId;

    /**
     * 瑕疵数据
     */
    private String defectData;
}
