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

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;

@Schema(description = "管理后台 - 订单板件 Response VO")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PlateDetailRespVO {

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


    @Schema(description = "房间ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long roomId;

    @Schema(description = "房间名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private String roomName;


    @Schema(description = "柜体ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long bodyId;


    @Schema(description = "柜体名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private String bodyName;


    @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long orderId;


    @Schema(description = "商品ID-大板分类ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private  Long id;


    @Schema(description = "大板实际ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private  String goodsId;

    @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private  String goodsName;


    @Schema(description = "板编号", requiredMode = Schema.RequiredMode.REQUIRED)
    private  String plateNo;

    @Schema(description = "自定义板编号", requiredMode = Schema.RequiredMode.REQUIRED)
    private  String customPlateNo;

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


    @Schema(description = "板颜色", requiredMode = Schema.RequiredMode.REQUIRED)
    private  String color;

    @Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
    private String brand;

    @Schema(description = "板材质", requiredMode = Schema.RequiredMode.REQUIRED)
    private  String material;


    @Schema(description = "板长", requiredMode = Schema.RequiredMode.REQUIRED)
    private  Double height;


    @Schema(description = "板宽", requiredMode = Schema.RequiredMode.REQUIRED)
    private  Double width;


    @Schema(description = "板厚", requiredMode = Schema.RequiredMode.REQUIRED)
    private  Double thickness;


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


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


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


    @Schema(description = "是否异性-是否弧形地脚，不处理异形", requiredMode = Schema.RequiredMode.REQUIRED)
    private  Boolean isSpecialShaped;


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


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


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


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

    @Schema(description = "左预留边")
    private BigDecimal reservedEdgeLeft;

    @Schema(description = "右预留边")
    private BigDecimal reservedEdgeRight;

    @Schema(description = "上预留边")
    private BigDecimal reservedEdgeUp;

    @Schema(description = "下预留边")
    private BigDecimal reservedEdgeDown;

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

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

    @Schema(description = "加工组类型ID")
    private Long groupTypeId;

    @Schema(description = "加工组名称")
    private String processGroupName;

    @Schema(description = "加工组类型名称")
    private String processGroupTypeName;


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


    @Schema(description = "是否有孔", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean isRowHole;


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


    @Schema(description = "是否侧面造型")
    private Boolean isSideSculpt;


    @Schema(description = "是否二维刀路")
    private Boolean is2v;


    @Schema(description = "是否侧面二维刀路")
    private Boolean isSide2v;

    @Schema(description = "部件名称")
    private String componentName;

    @Schema(description = "部件ID")
    private Long componentId;

    @Schema(description = "是否双面造型")
    private Boolean doubleSideModel;

    @Schema(description = "是否双面排孔")
    private Boolean doubleSideHole;

    @Schema(description = "是否正面造型")
    private Boolean frontModel;

    @Schema(description = "是否侧面造型")
    private Boolean backModel;

    @Schema(description = "是否正面排孔")
    private Boolean frontHole;

    @Schema(description = "是否反面排孔")
    private Boolean backHole;

    @Schema(description = "是否侧面造型")
    private Boolean sideModel;

    @Schema(description = "是否侧面排孔")
    private Boolean sideHole;
}
