package cn.iocoder.yudao.module.mes.dal.dataobject.plan;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 生产计划 DO
 *
 * @author 内蒙必硕
 */
@TableName("mes_plan")
@KeySequence("mes_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PlanDO extends BaseDO {

    /**
     * ID
     */
    @TableId
    private Long id;
    /**
     * 计划编码
     */
    private String code;
    /**
     * 产品ID
     */
    private Long productId;
    /**
     * 任务单明细ID
     */
    private Long taskDetailId;
    /**
     * 任务单ID
     */
    private Long taskId;
    /**
     * 计划成型数量
     */
    private Long planNumber;
    /**
     * 未派工数量
     */
    private Long noPaigongNumber;
    /**
     * 计划热压数量
     */
    private Long reyaNumber;
    /**
     * 成品数量
     */
    private Long finishNumber;
    /**
     * 状态
     * <p>
     * 枚举 {@link TODO mes_plan_status 对应的类}
     */
    private Integer status;
    /**
     * 计划开始时间
     */
    private LocalDateTime planStartTime;
    /**
     * 计划结束时间
     */
    private LocalDateTime planEndTime;
    /**
     * 实际开始时间
     */
    private LocalDateTime startTime;
    /**
     * 实际结束时间
     */
    private LocalDateTime endTime;
    /**
     * 生产主管ID
     */
    private Long productionManagerId;
    /**
     * 备注
     */
    private String remark;
    /**
     * 是否启用
     * <p>
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean isEnable;

    /**
     * 关联生产线ID
     */
    private Long feedingPipeline;
    /**
     * 对应的派工单ID
     */
    private Long requisitionId;

    /**
     * 优先级，同种产品的优先级，数字越大，排序越靠前，越早分配完成数量
     */
    private Long priorityNum;

    //@Schema(description = "组别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer groupType;
    /**
     * 是否试生产
     */
    private Boolean isPreProduction;
    /**
     * 是否完成质检
     */
    private Boolean isZj;

    /**
     * 完工数量
     */
    private Long wangongNumber;
    /**
     * 合格数量
     */
    private Long passNumber;
    /**
     * 不合格数量
     */
    private Long noPassNumber;

    /**
     * 合格率
     */
    private BigDecimal passRate;

    private Long workerId;

}