package com.fizz.business.vo;

import com.fizz.business.dto.PdiPlanSubDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class PdiPlanVO implements Serializable {

    @Schema(description = "主键")
    private Long id;

    @Schema(description = "计划号")
    private String planNo;

    @Schema(description = "计划卷顺序")
    private Integer planMatSeq;

    @Schema(description = "L3下发的机组代码")
    private String l3UnitCode;

    @Schema(description = "机组号")
    private String unitCode;

    @Schema(description = "工序代码")
    private String processCode;

    @Schema(description = "合同号")
    private String orderNo;

    @Schema(description = "产品号")
    private String prodCode;

    @Schema(description = "钢种")
    private String steelGrade;

    @Schema(description = "工艺规程id")
    private Long setupId;

    @Schema(description = "工艺规程名称")
    private String setupName;

    @Schema(description = "工艺规程版本号")
    private String setupVersion;

    @Schema(description = "原料卷号")
    private String originMatId;

    @Schema(description = "来料卷号")
    private String entryMatId;

    @Schema(description = "半卷回退子卷号")
    private String returnMatId;

    @Schema(description = "来料卷厂家")
    private String entryMatFactory;

    @Schema(description = "来料宽度")
    private Double entryWidth;

    @Schema(description = "来料厚度")
    private Double entryThickness;

    @Schema(description = "来料长度")
    private Double entryLength;

    @Schema(description = "来料重量")
    private Double entryWeight;

    @Schema(description = "实际来料重量，CP/ZR/CA需要修改")
    private Double actualEntryWeight;

    @Schema(description = "投料重量，半卷回退时更新")
    private Double feedWeight;

    @Schema(description = "来料外径")
    private Double entryOuterDiameter;

    @Schema(description = "来料内径")
    private Double entryInnerDiameter;

    @Schema(description = "目标宽度")
    private Double targetWidth;

    @Schema(description = "目标宽度下限")
    private Double targetWidthMin;

    @Schema(description = "目标宽度上限")
    private Double targetWidthMax;

    @Schema(description = "目标厚度")
    private Double targetThickness;

    @Schema(description = "目标厚度上限")
    private Double targetThicknessMax;

    @Schema(description = "目标厚度下限")
    private Double targetThicknessMin;

    @Schema(description = "切边量")
    private Double trimAmount;

    @Schema(description = "涂镁方式， 1=冷涂，2=热涂")
    private String coatFlag;

    @Schema(description = "刻痕方式，1=在线刻痕，2=离线刻痕，3=不刻痕")
    private String nickFlag;

    @Schema(description = "来源，L3-L3计划，MANUAL-人工")
    private String origin;

    @Schema(description = "类型，PLAN_MAT-计划卷、TEMP_MAT-临时卷、BLOCK_MAT-封闭卷")
    private String type;

    @Schema(description = "INVALID-无效，UNCONFIRMED-待确认，NEW-新计划，READY-准备好，ONLINE-上线，PRODUCING-生产中，PRODUCT-生产完成，BLOCK-封闭，REFUSE-拒绝，DELETED-删除")
    private String status;

    @Schema(description = "回退类型，ALL_RETURN-整卷回退，HALF_RETURN-整卷回退")
    private String returnType;

    @Schema(description = "半卷回退类型，HEAD_COIL-头部卷，TAIL_COIL-尾部卷")
    private String halfReturnType;

    @Schema(description = "排序字段")
    private Long sort;

    @Schema(description = "拒绝原因")
    private String refuseReason;

    @Schema(description = "计划确认时间")
    private LocalDateTime confirmTime;

    @Schema(description = "计划上线时间")
    private LocalDateTime onlineTime;

    @Schema(description = "计划生产时间")
    private LocalDateTime producingTime;

    @Schema(description = "计划生产完成时间")
    private LocalDateTime productTime;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    @Schema(description = "L2计划子卷")
    private List<PdiPlanSubDTO> subPlanList;

    @Schema(description = "是否实验卷")
    private String isExperiment;

    @Schema(description = "实验类别")
    private String experimentType;
}
