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

import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.validation.InEnum;
import com.cf.imes.module.executor.enums.veneer.VeneerProductLevelEnum;
import com.cf.imes.module.executor.enums.veneer.VeneerStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import java.math.BigDecimal;

/**
 *
 *
 * @author Gqr
 * @since 2026/1/4 17:56
 */
@Schema(description = "生产管理 - 贴皮分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class VeneerPageReqVO extends PageParam {
    @Schema(description = "贴皮编号")
    @Length(max = 32, message = "{veneer.save.veneerNo.length.max}")
    private String veneerNo;

    @Schema(description = "批次号")
    @Length(max = 32, message = "{veneer.save.batchNo.length.max}")
    private String batchNo;

    @Schema(description = "分类名称")
    private String classificationName;

    @Schema(description = "贴皮名称")
    @Length(max = 64, message = "{veneer.save.veneerName.length.max}")
    private String veneerName;

    @Schema(description = "产品等级，0：A类、1：B类、2：C类")
    @InEnum(value = VeneerProductLevelEnum.class, fieldName = "productLevel")
    private Integer productLevel;

    @Schema(description = "颜色")
    @Length(max = 32, message = "{veneer.save.color.length.max}")
    private String color;

    @Schema(description = "材质")
    @Length(max = 64, message = "{veneer.save.material.length.max}")
    private String material;

    @Schema(description = "宽")
    private BigDecimal[] width;

    @Schema(description = "长")
    private BigDecimal[] length;

    @Schema(description = "厚")
    private BigDecimal[] thickness;

    @Schema(description = "规格")
    @Length(max = 64, message = "{veneer.save.spec.length.max}")
    private String spec;

    @Schema(description = "厂家")
    @Length(max = 128, message = "{veneer.save.factory.length.max}")
    private String factory;

    @Schema(description = "数量")
    private Integer[] num;

    @Schema(description = "瑕疵")
    private Boolean defect;

    @Schema(description = "备注")
    @Length(max = 255, message = "{veneer.save.remark.length.max}")
    private String remark;

    @Schema(description = "余料")
    private Boolean remain;

    @Schema(description = "源排单号")
    private Long sourcePlanNo;

    @Schema(description = "使用排单号")
    private Long planNo;

    @Schema(description = "状态，0：未使用、1：已使用")
    @InEnum(value = VeneerStatusEnum.class, fieldName = "status")
    private Integer status;
}
