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

import com.baomidou.mybatisplus.annotation.KeySequence;
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 java.math.BigDecimal;

/**
 * 订单板件贴皮记录 DO。
 */
@TableName("order_plate_veneer")
@KeySequence("order_plate_veneer_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderPlateVeneerDO extends BaseDO {

    /**
     * 主键。
     */
    private Long id;

    /**
     * 组织ID，也是 MyCat 分片键。
     */
    private Long organId;

    /**
     * 订单主键。
     */
    private Long orderId;

    /**
     * 订单板材主键，对应 {@code order_goods.id}。
     */
    private Long orderGoodsId;

    /**
     * 原板件主键，对应 {@code order_plate.id}。
     */
    private Long orderPlateId;

    /**
     * 原板件编号。
     */
    private String plateNo;

    /**
     * 原板件名称。
     */
    private String plateName;

    /**
     * 原板件长度，单位：mm。
     */
    private BigDecimal plateLength;

    /**
     * 原板件宽度，单位：mm。
     */
    private BigDecimal plateWidth;

    /**
     * 原板件厚度，单位：mm。
     */
    private BigDecimal plateThickness;

    /**
     * 原板件排版面：0-正面，1-反面，2-随意面。
     */
    private Integer holeArrange;

    /**
     * 贴皮逻辑面：A-A面，B-B面。
     */
    private String veneerSide;

    /**
     * 实际板件面：0-正面，1-反面。
     */
    private Integer plateSurface;

    /**
     * 分解后生成的贴皮编号，规则为原板件编号加 A/B 后缀。
     */
    private String veneerNo;

    /**
     * 贴皮外扩余量，单位：mm。
     */
    private BigDecimal outerMargin;

    /**
     * 贴皮排单ID，0表示未排单。
     */
    private Long planId;

    /**
     * 来源贴皮库记录主键，对应 {@code veneers.id}。
     */
    private Long sourceVeneerId;

    /**
     * 贴皮商品编号快照。
     */
    private String sourceVeneerNo;

    /**
     * 贴皮名称快照。
     */
    private String veneerName;

    /**
     * 产品等级快照。
     */
    private Integer productLevel;

    /**
     * 颜色快照。
     */
    private String color;

    /**
     * 材质快照。
     */
    private String material;
}
