package com.wms_main.model.vo.wms;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms_main.model.po.TAppProduct;
import com.wms_main.model.po.TAppSingleProduct;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * 配料单显示类
 */
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class KittingBomVo extends BaseImportVo {
    /**
     * 主键id
     */
    @JsonProperty("templateId")
    private String templateId;
    /**
     * 配料单类型
     * 1：总成
     * 2：单片
     */
    @JsonProperty("bomType")
    private Integer bomType;
    /**
     * 机型
     */
    @JsonProperty("model")
    private String model;
    /**
     * 成品号
     */
    @JsonProperty("productId")
    private String productId;
    /**
     * 原材料号
     */
    @JsonProperty("goodsId")
    private String goodsId;
    /**
     * 原材料物料描述
     */
    @JsonProperty("goodsDescription")
    private String goodsDescription;
    /**
     * 单套数量
     */
    @JsonProperty("quantity1Pair")
    private Integer quantity1Pair;
    /**
     * 料盒号
     */
    @JsonProperty("boxNo")
    private String boxNo;
    /**
     * 套数
     */
    @JsonProperty("quantityOfPair")
    private Integer quantityOfPair;

    /**
     * 将Po转换为Vo
     * @param product po
     * @return vo
     */
    public static KittingBomVo ofProduct(TAppProduct product) {
        return new KittingBomVo(
                product.getTemplateId(),
                1,
                product.getModel(),
                product.getProductId(),
                product.getGoodsId(),
                product.getGoodsDescription(),
                product.getQuantity1Pair(),
                product.getBoxNo(),
                product.getQuantityOfPair()
        );
    }

    /**
     * 将Po转换为Vo
     * @param singleProduct po
     * @return vo
     */
    public static KittingBomVo ofSingleProduct(TAppSingleProduct singleProduct) {
        return new KittingBomVo(
                singleProduct.getSingleTemplateId(),
                2,
                singleProduct.getModel(),
                singleProduct.getProductId(),
                singleProduct.getGoodsId(),
                singleProduct.getGoodsDescription(),
                singleProduct.getQuantity1Pair(),
                singleProduct.getBoxNo(),
                singleProduct.getQuantityOfPair()
        );
    }
}
