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

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

/**
 * @author Beal
 */
@Schema(description = "管理后台 - 生产单板件 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlateRespVO {

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

    @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11087")
    @ExcelProperty("生产单号")
    private Long orderId;

    @Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
    @ExcelProperty("板名称")
    private String name;

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

    @Schema(description = "板类型，0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("板类型，0 层板 1 立板 2 背板")
    private Integer type;

    @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14195")
    @ExcelProperty("商品 ID")
    private String goodsId;

    @Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("宽度")
    private BigDecimal width;

    @Schema(description = "高度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("高度")
    private BigDecimal height;

    @Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("厚度")
    private BigDecimal thickness;

    @Schema(description = "拆单宽度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("拆单宽度")
    private BigDecimal splitWidth;

    @Schema(description = "拆单高度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("拆单高度")
    private BigDecimal splitHeight;

    @Schema(description = "拆单厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("拆单厚度")
    private BigDecimal splitThickness;

    @Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("左封边厚度")
    private BigDecimal sealLeft;

    @Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("右封边厚度")
    private BigDecimal sealRight;

    @Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("上封边厚度")
    private BigDecimal sealUp;

    @Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("下封边厚度")
    private BigDecimal sealDown;

    @Schema(description = "面积", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("面积")
    private BigDecimal area;

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

    @Schema(description = "孔面类型，0 正面 1 反面 2 侧面", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("孔面类型，0 正面 1 反面 2 侧面")
    private Integer holeFace;

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

    @Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28477")
    @ExcelProperty("异型孔数量")
    private Short unregularPointCount;

    @Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20823")
    @ExcelProperty("正面孔数量")
    private Short frontHoleCount;

    @Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "3441")
    @ExcelProperty("背面孔数量")
    private Short backHoleCount;

    @Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "25509")
    @ExcelProperty("侧面孔数量")
    private Short sideHoleCount;

    @Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "31547")
    @ExcelProperty("正面造型量")
    private Short frontModelCount;

    @Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "26725")
    @ExcelProperty("背面造型量")
    private Short backModelCount;

    @Schema(description = "是否门板", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否门板")
    private Boolean isDoor;

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

    @Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("异型偏移 x")
    private Double offsetX;

    @Schema(description = "异型偏移 y", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("异型偏移 y")
    private Double offsetY;

    @Schema(description = "是否孤形对角", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否孤形对角")
    private Boolean isArcAcross;

    @Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12800")
    @ExcelProperty("模块类型 ID")
    private Long moduleTypeId;

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

    @Schema(description = "是否异形", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否异形")
    private Boolean isSpecialShaped;

    @Schema(description = "是否造型", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否造型")
    private Boolean isSculpt;

    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "是否作废", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否作废")
    private Boolean isCancel;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "板材颜色")
    private String color;

    @Schema(description = "板材材质")
    private String material;


    @Schema(description = "柜体名称")
    private String bodyName;

    @Schema(description = "房间名称")
    private String roomName;


    @Schema(description = "生产单明细ID")
    private Long itemId;

    @Schema(description = "加工组ID")
    private Long processGroupId;


    @Schema(description = "大板数量")
    private Long bigPlateNum;

    @Schema(description = "余料板数量")
    private Long remainPlateNum;


    @Schema(description = "品牌")
    private String brand;

    @Schema(description = "用户ID")
    private Long companyId;

    @Schema(description = "有纹路")
    private String hasTexture;

    @Schema(description = "大板长度")
    private BigDecimal bigPlateLength;

    @Schema(description = "大板宽度")
    private BigDecimal bigPlateWidth;

    @Schema(description = "规格")
    private String spec;

    @Schema(description = "排单状态")
    private Long planStatus;



    @Schema(description = "小板详情列表")
    private List<PlateDetailVO> plateDetailList;


}