package com.cf.imes.module.executor.controller.admin.plate.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;

@Schema(description = "管理后台 - 生产单板件新增/修改 Request VO")
@Data
public class PlateSaveReqVO {

    @Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32523")
    private Long id;

    @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11087")
    @NotNull(message = "生产单号不能为空")
    private Long orderId;

    @Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
    @NotEmpty(message = "板名称不能为空")
    private String name;

    @Schema(description = "自定义板编号,设计有板编号，则保留设计板编号；设计没有且在机台设置中设置了自定义板编号规则，则按规则自动生成", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "自定义板编号,设计有板编号，则保留设计板编号；设计没有且在机台设置中设置了自定义板编号规则，则按规则自动生成不能为空")
    private String plateNo;

    @Schema(description = "板类型，0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "板类型，0 层板 1 立板 2 背板不能为空")
    private Integer type;

    @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14195")
    @NotEmpty(message = "商品 ID不能为空")
    private String goodsId;

    @Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "宽度不能为空")
    private BigDecimal width;

    @Schema(description = "高度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "高度不能为空")
    private BigDecimal height;

    @Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "厚度不能为空")
    private BigDecimal thickness;

    @Schema(description = "拆单宽度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "拆单宽度不能为空")
    private BigDecimal splitWidth;

    @Schema(description = "拆单高度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "拆单高度不能为空")
    private BigDecimal splitHeight;

    @Schema(description = "拆单厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "拆单厚度不能为空")
    private BigDecimal splitThickness;

    @Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "左封边厚度不能为空")
    private BigDecimal sealLeft;

    @Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "右封边厚度不能为空")
    private BigDecimal sealRight;

    @Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "上封边厚度不能为空")
    private BigDecimal sealUp;

    @Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "下封边厚度不能为空")
    private BigDecimal sealDown;

    @Schema(description = "面积", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "面积不能为空")
    private BigDecimal area;

    @Schema(description = "纹路类型，0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "纹路类型，0 正纹 1 可翻转 2 反纹不能为空")
    private Integer texture;

    @Schema(description = "孔面类型，0 正面 1 反面 2 侧面", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "孔面类型，0 正面 1 反面 2 侧面不能为空")
    private Integer holeFace;

    @Schema(description = "排孔类型，0 正纹 1 反面 2 随意面", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "排孔类型，0 正纹 1 反面 2 随意面不能为空")
    private Integer holeArrange;

    @Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28477")
    @NotNull(message = "异型孔数量不能为空")
    private Short unregularPointCount;

    @Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20823")
    @NotNull(message = "正面孔数量不能为空")
    private Short frontHoleCount;

    @Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "3441")
    @NotNull(message = "背面孔数量不能为空")
    private Short backHoleCount;

    @Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "25509")
    @NotNull(message = "侧面孔数量不能为空")
    private Short sideHoleCount;

    @Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "31547")
    @NotNull(message = "正面造型量不能为空")
    private Short frontModelCount;

    @Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "26725")
    @NotNull(message = "背面造型量不能为空")
    private Short backModelCount;

    @Schema(description = "是否门板", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否门板不能为空")
    private Boolean isDoor;

    @Schema(description = "开门类型，0 无 1 左 2 右 3 上 4 下", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "开门类型，0 无 1 左 2 右 3 上 4 下不能为空")
    private Integer openDoorType;

    @Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "异型偏移 x不能为空")
    private Double offsetX;

    @Schema(description = "异型偏移 y", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "异型偏移 y不能为空")
    private Double offsetY;

    @Schema(description = "是否孤形对角", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否孤形对角不能为空")
    private Boolean isArcAcross;

    @Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12800")
    @NotNull(message = "模块类型 ID不能为空")
    private Long moduleTypeId;

    @Schema(description = "排单过滤类型，1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "排单过滤类型，1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠不能为空")
    private Integer filterType;

    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
    @NotEmpty(message = "备注不能为空")
    private String remark;

    @Schema(description = "是否作废", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否作废不能为空")
    private Boolean isCancel;

}