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

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
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;
import java.time.LocalDateTime;

/**
 * 贴皮排单 DO。
 */
@TableName("order_veneer_plan")
@KeySequence("order_veneer_plan_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderVeneerPlanDO extends BaseDO {

    /**
     * 贴皮排单ID。
     */
    @TableId
    private Long id;

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

    /**
     * 排单状态：0-未开料/新单，1-已优化，2-开料中，3-已开料。
     */
    private Integer status;

    /**
     * 是否已投入生产。
     */
    private Boolean isScheduled;

    /**
     * 排序优先级。
     */
    private Long sort;

    /**
     * 计划生产时间。
     */
    private LocalDateTime planTime;

    /**
     * 当前加工方案ID。
     */
    private Long processId;

    /**
     * 当前加工方案名称。
     */
    private String processName;

    /**
     * 上一次加工方案ID。
     */
    private Long previousProcessId;

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

    /**
     * 贴皮数量，A/B面分别计数。
     */
    private Integer veneerNum;

    /**
     * 贴皮总面积，单位：平方米。
     */
    private BigDecimal veneerArea;

    /**
     * 备注。
     */
    private String remark;

    /**
     * 生产操作人。
     */
    private String operator;

    /**
     * 开始生产时间。
     */
    private LocalDateTime produceTime;

    /**
     * 完成时间。
     */
    private LocalDateTime finishTime;

    /**
     * 乐观锁版本号。
     */
    private Integer version;
}
