package com.sw.mes.store.dto;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @Author wupeng
 * @Description 出库单明细
 * @Date 18:47 2023/7/31
 * @Param
 * @return
 **/
@Data
@ApiModel(value = "出库单明细Dto")
public class WarehouseOutputBillDetailDto {
    @ExcelIgnore
    private Long id;
    @ApiModelProperty(value = "出库单ID")
    @ExcelIgnore
    private Long outputBillId;
    @ApiModelProperty(value = "出库单号")
    @ExcelProperty(value = "出库单号")
    private String outputBillNo;
    @ApiModelProperty(value = "物料主数据ID", required = true)
    @ExcelIgnore
    private Long materialModelId;
    @ApiModelProperty(value = "物料主数据料号")
    @ExcelProperty(value = "物料主数据料号")
    private String materialModelCode;
    @ApiModelProperty(value = "物料主数据名称")
    @ExcelProperty(value = "物料主数据名称")
    private String materialModelName;
    @ApiModelProperty(value = "物料主数据类型")
    @ExcelProperty(value = "物料主数据类型")
    private String materialTypeName;
    @ApiModelProperty(value = "物料主数据类别")
    @ExcelProperty(value = "物料主数据类别")
    private String materialCategoryName;
    //注意：这个码是入库时，如果没有实际唯一标识，系统会自动生成一个唯一码，写入到这个字段
    @ApiModelProperty(value = "系统生成唯一码")
    @ExcelProperty(value = "系统生成唯一码")
    private String uniqueCode;
    //注意：这个码是出库时，需要人工手动填入的，实际唯一码。有可能uniqueCode字段值一致，当且仅当入库时填写的就是实际唯一标识
    @ApiModelProperty(value = "实际录入唯一码")
    @ExcelProperty(value = "实际录入唯一码")
    private String manualUniqueCode;
    @ApiModelProperty(value = "批次号")
    @ExcelProperty(value = "批次号")
    private String batchNo;
    @ApiModelProperty(value = "物料主数据供应商")
    @ExcelProperty(value = "物料主数据供应商")
    private String supplier;
    @ApiModelProperty(value = "物料主数据规格")
    @ExcelProperty(value = "物料主数据规格")
    private String specification;
    @ApiModelProperty(value = "物料主数据图号")
    @ExcelProperty(value = "物料主数据图号")
    private String materialTh;
    @ApiModelProperty(value = "物料等级")
    @ExcelProperty(value = "物料等级")
    private String materialLevel;
    @ApiModelProperty(value = "物料粒径")
    @ExcelProperty(value = "物料粒径")
    private String suppliesGrain;
    @ApiModelProperty("物料档位")
    @ExcelProperty(value = "物料档位")
    private String materialGear;
    @ApiModelProperty(value = "出库数量")
    @ExcelProperty(value = "出库数量")
    private BigDecimal outputCount;
    @ApiModelProperty(value = "需求数量")
    @ExcelProperty(value = "需求数量")
    private BigDecimal requireCount;
    @ApiModelProperty(value = "库存数量")
    @ExcelProperty(value = "库存数量")
    private BigDecimal quantity;
    @ApiModelProperty(value = "物料单位")
    @ExcelProperty(value = "物料单位")
    private String unitName;
    @ApiModelProperty(value = "库位ID")
    @ExcelIgnore
    private Long warehouseId;
    @ApiModelProperty(value = "库位名称")
    @ExcelProperty(value = "库位名称")
    private String warehouseName;
    @ApiModelProperty(value = "库位编码")
    @ExcelProperty(value = "库位编码")
    private String warehouseCode;
    @ApiModelProperty(value = "创建人ID")
    @ExcelIgnore
    private Integer createUserId;
    @ApiModelProperty(value = "创建人名称")
    @ExcelProperty(value = "创建人名称")
    private String createUserName;
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "创建时间")
    private Date createTime;
    @ApiModelProperty(value = "操作人ID")
    @ExcelIgnore
    private Integer updateUserId;
    @ApiModelProperty(value = "操作人名称")
    @ExcelProperty(value = "操作人名称")
    private String updateUserName;
    @ApiModelProperty(value = "操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "操作时间")
    private Date updateTime;
    @ApiModelProperty(value = "出库类型")
    @ExcelProperty(value = "出库类型")
    private String type;
    @ApiModelProperty(value = "去向")
    @ExcelProperty(value = "去向")
    private String destination;
    @ApiModelProperty(value = "单据状态。待出库、已出库、锁定、取消")
    @ExcelProperty(value = "单据状态")
    private String status;
    @ApiModelProperty("载具编号")
    @ExcelProperty(value = "托号")
    private String traceid;
    @ApiModelProperty("SAP工厂")
    @ExcelProperty(value = "SAP工厂")
    private String customer;
    @ApiModelProperty("箱号")
    @ExcelProperty(value = "箱号")
    private String serialNo;
    @ApiModelProperty(value = "是否锁定库存，默认false非锁定库存，需要锁定库存则设为true", required = false)
    @ExcelIgnore
    private boolean lockInventory = false;
    @ApiModelProperty("晶编编码")
    @ExcelProperty(value = "晶编编码")
    private String crystalNo;
}