package com.yh.saas.plugin.yiliangyiyun.entity;

import com.baomidou.mybatisplus.activerecord.Model;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.annotations.Version;

import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yh.saas.common.support.entity.BaseModel;
import com.yh.saas.plugin.yiliangyiyun.entity.view.WarehouseNumView;
import com.yh.saas.plugin.yiliangyiyun.entity.view.WarehouseView;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 记录仓库信息
 * </p>
 *
 * @author Gongdc
 * @since 2021-05-21
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("warehouse_base_info")
public class WarehouseBaseInfo extends BaseModel<WarehouseBaseInfo> {

    private static final long serialVersionUID = 1L;

    /**
     * 仓位列表
     */
    @TableField(exist = false)
    private List<WarehousePositionInfo> positionInfos;
    /**
     * 仓库货名列表
     */
    @TableField(exist = false)
    private List<WarehousePositionStorageInfo> goodsNameInfos;
    /**
     * 仓库列表
     */
    @TableField(exist = false)
    private List<WarehouseView> warehouseViewList;
    /**
     * 仓库储量列表
     */
    @TableField(exist = false)
    private List<WarehouseNumView> warehouseNumViewList;
    /**
     * 主键
     */
    @TableId(type = IdType.UUID)
    private String id;
    /**
     * 公司id
     */
    private String compId;
    /**
     * 仓库名称
     */
    private String warehouseName;
    /**
     * 常用仓库编号
     */
    private String commonWarehouseNo;
    /**
     * 仓库类型(1 常用仓库 2 临时仓库)
     */
    private String warehouseType;
    /**
     * 创建临时仓库方式(1 自动 2 手动)
     */
    private String createType;
    /**
     * 清仓状态标识
     */
    private String clearStatusFlag;
    /**
     * 清仓状态
     */
    private String clearStatus;
    /**
     * 负责人key
     */
    private String personChargeKey;
    /**
     * 负责人
     */
    private String personCharge;
    /**
     * 负责人电话
     */
    private String personPhone;
    /**
     * 其他负责人
     */
    private String otherPersonCharge;
    /**
     * 其他负责人电话
     */
    private String otherPersonPhone;
    /**
     * 仓库所在地省
     */
    private String warehousePrivate;
    /**
     * 仓库所在地市
     */
    private String warehouseCity;
    /**
     * 仓库所在地区
     */
    private String warehouseArea;
    /**
     * 详细地址
     */
    private String detailedAddress;
    /**
     * 总储存量（吨）
     */
    private Float totalStorage;
    /**
     * 附件地址
     */
    private String addressUrl;
    /**
     * 仓库定位
     */
    private String warehousePositioning;
    /**
     * 是否显示
     */
    private String showFlag;
    /**
     * 监控url1
     */
    private String monitorUrl1;
    /**
     * 监控url2
     */
    private String monitorUrl2;
    /**
     * 是否自动获取重量（0否1是）
     */
    private String automaticWeightAcquisition;
    /**
     * 应余量
     */
    @TableField(exist = false)
    private Float residual;
    /**
     * 全部标识
     */
    @TableField(exist = false)
    private String flag;


    /**
     * 是否允许手动编辑重量（0否1是）
     */
    private String allowEdit;
    @TableField(exist = false)
    private List<WarehousePositionInfo> warehousePositionInfoList;
    /**
     * 收购质检信息数量包括已删除的
     */
    @TableField(exist = false)
    private Integer count;
    /**
     * 贸易质检信息数量包括已删除的
     */
    @TableField(exist = false)
    private Integer tradeCount;
    /**
     * 出库信息数量包括已删除的
     */
    @TableField(exist = false)
    private Integer outCount;
    @TableField(exist = false)
    private List<PurchasePrice> purchasePriceList;
    /**
     * 品级
     */
    @TableField(exist = false)
    private String grade;
    /**
     * 货名
     */
    @TableField(exist = false)
    private String goodsName;
    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date startDate;
    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date endDate;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }


    public static class QueryFiles {

        public static final String COMP_ID = "comp_id";

        public static final String WAREHOUSE_NAME = "warehouse_name";

        public static final String WAREHOUSE_TYPE = "warehouse_type";

        public static final String UPDATE_DATE = "update_date";

        public static final String SHOW_FLAG = "show_flag";

        public static final String DELETE_FLAG = "delete_flag";

    }
}
