package com.sw.common.accessory.server.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
 * MES报工SAP货物移动接口对象 report_sap_goodsmvt
 * 
 * @author liru
 * @date 2024-01-06
 */
@Data
@ApiModel(value = "MES报工SAP货物移动接口Dto")
public class ReportSapGoodsmvtDto
{
    /** ID */
    @ApiModelProperty(value = "ID" )
    @JSONField(serialize = false)
    private Long id;

    /** 唯一事务ID */
    @ApiModelProperty(value = "唯一事务ID" )
    @JSONField(serialize = false)
    private String zuuid;

    /** 过账日期 */
    @ApiModelProperty(value = "过账日期" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(serialize = false)
    private Date budat;

    /** 凭证日期 */
    @ApiModelProperty(value = "凭证日期" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(serialize = false)
    private Date bldat;

    /** 过账人 */
    @ApiModelProperty(value = "过账人" )
    @JSONField(serialize = false)
    private String ernam;

    /** 参照 */
    @ApiModelProperty(value = "参照" )
    @JSONField(serialize = false)
    private String xblnr;

    /** 提单号 */
    @ApiModelProperty(value = "提单号" )
    @JSONField(serialize = false)
    private String frbnr;

    /** 移动类型 
     * <pre>
     * 工单类型	报工类型	分类	报工类型
拉晶工单	消耗	原料消耗	正数261 负数262
		石墨件消耗	正数201负数202
		氩气消耗	正数261 负数262
	收货	主产品	正数101，负102
		副产品	正数531，负数532
	工时	工单工时	
截断工单	消耗	原料消耗	正数261 负数262
	收货	主产品	正数101，负102
		副产品	正数531，负数532
	工时	工单工时	
刀刨工单	消耗	原料消耗	正数261 负数262
	收货	主产品	正数101，负102
		副产品	正数531，负数532
	工时	工单工时	
籽晶工单	消耗	原料消耗	正数261 负数262
	收货	主产品	正数101，负102
		副产品	正数531，负数532
籽晶工单	消耗	原料消耗	正数261 负数262
	收货	硅料	正数101，负102
		副产品	正数531，负数532
成本中心	消耗	石墨件消耗	正数201负数202
		硅料	正数201负数202
     * </pre>
     * */
    @ApiModelProperty(value = "移动类型" )
    @JSONField(name = "BWART")
    @NotBlank
    private String bwart;

    /** 成本中心 */
    @ApiModelProperty(value = "成本中心" )
    @JSONField(name = "KOSTL")
    private String kostl;

    /** SAP生产订单 */
    @ApiModelProperty(value = "SAP生产订单" )
    @JSONField(name = "AUFNR")
    private String aufnr;

    /** 销售订单 */
    @ApiModelProperty(value = "销售订单 可不填" )
    @JSONField(name = "VBELN")
    private String vbeln;

    /** 销售订单行 */
    @ApiModelProperty(value = "销售订单行 可不填" )
    @JSONField(name = "POSNR")
    private String posnr;

    /** 采购订单 */
    @ApiModelProperty(value = "采购订单 可不填" )
    @JSONField(name = "EBELN")
    private String ebeln;

    /** 采购订单行 */
    @ApiModelProperty(value = "采购订单行 可不填" )
    @JSONField(name = "EBELP")
    private String ebelp;

    /** SAP预留 */
    @ApiModelProperty(value = "SAP预留 可不填" )
    @JSONField(name = "RSNUM")
    private String rsnum;

    /** SAP预留行项目 */
    @ApiModelProperty(value = "SAP预留行项目 可不填" )
    @JSONField(name = "RSPOS")
    private String rspos;

    /** 发货工厂 */
    @ApiModelProperty(value = "发货工厂  可不填" )
    @JSONField(name = "WERKS")
    private String werks;

    /** 库存地点 */
    @ApiModelProperty(value = "库存地点" )
    @JSONField(name = "LGORT")
    private String lgort;

    /** 物料编码 */
    @ApiModelProperty(value = "物料编码" )
    @JSONField(name = "MATNR")
    private String matnr;

    /** 批次号 */
    @ApiModelProperty(value = "批次号" )
    @JSONField(name = "CHARG")
    private String charg;

    /** 数量 */
    @ApiModelProperty(value = "数量" )
    @JSONField(name = "MENGE")
    private String menge;

    /** 单位 */
    @ApiModelProperty(value = "单位" )
    @JSONField(name = "MEINS")
    private String meins;

    /** 收货工厂 */
    @ApiModelProperty(value = "收货工厂" )
    @JSONField(name = "UMWRK")
    private String umwrk;

    /** 收货库区 */
    @ApiModelProperty(value = "收货库区" )
    @JSONField(name = "UMLGO")
    private String umlgo;

    /** 收货批次号 */
    @ApiModelProperty(value = "收货批次号" )
    @JSONField(name = "UMCHA")
    private String umcha;

    /** 文本 */
    @ApiModelProperty(value = "文本" )
    @JSONField(name = "SGTXT")
    private String sgtxt;

    /** 副产品标识
     * 如是副产品填: X 
     *  */
    @ApiModelProperty(value = "副产品标识" )
    @JSONField(name = "ZFCP_FLAG")
    private String zfcpFlag;
    
    
    /**发料次数**/
    @ApiModelProperty(value = "发料次数" )
    @JSONField(name = "OTHER1")
    private String other1;

    /** 批次特性信息 */
    @ApiModelProperty(value = "批次特性信息集合" )
    @JSONField(name = "CHARG_ITEM")
    private List<ReportSapChargItemDto> chargItems = new ArrayList<>();

    @JSONField(serialize = false)
    private Boolean status;

    @JSONField(serialize = false)
    private String crystalNo;

    /**工序名称**/
    @JSONField(serialize = false)
    private String procName;
}
