package com.sy.coinage.workshop.vo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.sy.coinage.core.annotation.FastJsonFieldProfile;
import com.baomidou.mybatisplus.annotation.TableField;
import com.sy.coinage.workshop.model.DeliveryDetail;
import com.sy.coinage.workshop.model.DeliveryPlanDetail;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * DeliveryPlan响应bean
 */
@Data
public class DeliveryPlanVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "id")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "id")
    private Integer id;
    @ApiModelProperty(value = "品名ID")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "securities_id")
    private Integer securitiesId;
    @ApiModelProperty(value = "品名")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "securities")
    private String securities;
    @ApiModelProperty(value = "入库地点ID(原发货地址ID)")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "address_id")
    private String addressId;
    @ApiModelProperty(value = "入库地址（原发货地址名称）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "address_cn")
    private String addressCn;
    @ApiModelProperty(value = "计划解缴时间（yyyy-MM-dd）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "plan_delivery_date")
    @JSONField(format = "yyyy-MM-dd")
    private Date planDeliveryDate;
    @ApiModelProperty(value = "数量（万枚）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "qty")
    private Integer qty;
    @ApiModelProperty(value = "总箱数（整拍箱子+零箱）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "total_box_num")
    private Integer totalBoxNum;
    @ApiModelProperty(value = "首箱冠字号(根据首箱冠字号，与首拍箱数)")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "first_crown")
    private String firstCrown;
    @ApiModelProperty(value = "首拍编号")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "first_serial_number")
    private String firstSerialNumber;
    @ApiModelProperty(value = "首拍箱数(根据首拍箱数)")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "first_box_num")
    private Integer firstBoxNum;
    @ApiModelProperty(value = "crownBetween")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "crown_between")
    private String crownBetween;
    @ApiModelProperty(value = "计划拍数（根据箱数、初始冠字号计算得到）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "plan_par")
    private Integer planPar;
    @ApiModelProperty(value = "零箱数-计划（计算所得，不是完整拍子的都在这里累加）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "plan_box_num")
    private Integer planBoxNum;
    @ApiModelProperty(value = "拍号字符串（将拍号按照规则，组装成字符串）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "par_between")
    private String parBetween;
    @ApiModelProperty(value = "发货单号（品名+序号的形式）")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "order_no")
    private String orderNo;
    @ApiModelProperty(value = "计划单状态  1:初始创建  2:完成发货")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "status")
    private Integer status;
    @ApiModelProperty(value = "开始跳号ID字符串（多个用逗号分割），冗余字段")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "start_jump_ids")
    private String startJumpIds;
    @ApiModelProperty(value = "开始跳号字符串（多个跳号段用逗号分割）冗余字段")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "start_jump_str")
    private String startJumpStr;
    @ApiModelProperty(value = "结束跳号id字符串（多ID用逗号分割）冗余字段")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "end_jump_ids")
    private String endJumpIds;
    @ApiModelProperty(value = "结束跳号字符串（多个跳号段用逗号分割),冗余字段")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "end_jump_str")
    private String endJumpStr;
    @ApiModelProperty(value = "实际发货时间(yyyy-MM-dd hh:mm:ss)，即app库房发货确认时的时间。")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "delivery_time")
    @JSONField(format = "yyyy-MM-dd")
    private Date deliveryTime;
    @ApiModelProperty(value = "记录创建时间")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "create_time")
    @JSONField(format = "yyyy-MM-dd")
    private Date createTime;

    @ApiModelProperty(value = "明细集合")
    List<DeliveryPlanDetail> detailList;

    @ApiModelProperty(value = "按新号排列 1是 2否")
    private Integer resetSerialNumber;

    @ApiModelProperty(value = "最后修改时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time")
    private Date updateTime;

    @ApiModelProperty(value = "备注")
    @FastJsonFieldProfile(groups = {"list", "get"})
    @TableField(value = "remark")
    private String remark;

}
