package com.wms_main.model.dto.request.ewm;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;

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

@Data
public class EwmOutTaskRequest {

    /**
     * 波次号
     */
    @JsonProperty("waveNo")
    private String waveNo;

    /**
     * 拣货模式（汇总拣货、边拣边分）
     */
    @JsonProperty("pickingMode")
    private String pickingMode;

    /**
     * 拣货类型
     */
    @JsonProperty("pickingType")
    private String pickingType;

    /**
     * 拣货时间
     */
    @JsonProperty("pickingDate")
    //@JsonDeserialize(using = LocalDateTimeDeserializer.class)
    //@JsonSerialize(using = LocalDateTimeSerializer.class)
    private Date pickingDate;

    /**
     * 拣货班次
     */
    @JsonProperty("pickingShift")
    private String pickingShift;

    /**
     * 任务明细
     */
    @JsonProperty("taskDetailInfo")
    private List<TaskDetailInfo> taskDetailInfo;

    // Getters and Setters

    @Data
    public static class TaskDetailInfo {

        /**
         * 不可重复（to+toItem）
         */
        @JsonProperty("taskNo")
        private String taskNo;

        /**
         * 客户原始单号，必填；（po+poItem或者woNo）
         */
        @JsonProperty("orderNo")
        private String orderNo;

        /**
         * 单据类型
         */
        @JsonProperty("orderType")
        private String orderType;

        /**
         * 工单描述
         */
        @JsonProperty("description")
        private String description;

        /**
         * 工单产品数量
         */
        @JsonProperty("productNum")
        private BigDecimal productNum;

        /**
         * 物料号
         */
        @JsonProperty("matNo")
        private String matNo;

        /**
         * 物料描述
         */
        @JsonProperty("matDesc")
        private String matDesc;

        /**
         * 出库数量
         */
        @JsonProperty("pickingQty")
        private BigDecimal pickingQty;

        /**
         * 对应商品基础资料的MEINH
         */
        @JsonProperty("skuUnit")
        private String skuUnit;

        /**
         * 备注（可选）
         */
        @JsonProperty("remark")
        private String remark;

        /**
         * 特殊库存标识（可选）
         */
        @JsonProperty("specialStock")
        private String specialStock;

        /**
         * so单号与供应商编号，出库指定SO号或者供应商编号出库（可选）
         */
        @JsonProperty("specialStockNo")
        private String specialStockNo;

        /**
         * 特殊库存item号（可选）
         */
        @JsonProperty("specialStockItemNo")
        private String specialStockItemNo;

        /**
         * 批次号（可选）
         */
        @JsonProperty("batchNo")
        private String batchNo;


        /**
         * 颗粒度
         */
        @JsonProperty("secondPickingKey")
        private String secondPickingKey;

        // Getters and Setters
    }

    // Getters and Setters for EwmOutTaskRequest fields
}
