package com.prolog.cs.base.gsp.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.framework.core.annotation.Column;
import com.prolog.framework.core.annotation.Ignore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @Description 养护表
 * @Author Xiong
 * @Date 2021-05-20
 */

@Data
@ApiModel
public class GspUpkeepCheckVO implements Serializable {

    private static final long serialVersionUID = 4612011526535896850L;

    @ApiModelProperty(hidden = true, value = "ID", required = true)
    private String id;

    @ApiModelProperty(hidden = true, value = "CODE")
    private String code;

    @ApiModelProperty(hidden = true, value = "仓配中心ID")
    private String dcId;

    @ApiModelProperty(value = "仓ID")
    private String warehouseId;

    @ApiModelProperty(value = "货主ID")
    private String cargoOwnerId;

    @ApiModelProperty(value = "批次ID")
    private String batchId;

    @ApiModelProperty(hidden = true, value = "养护计划ID")
    private String planId;

    @ApiModelProperty(hidden = true, value = "养护计划CODE")
    private String planCode;

    @ApiModelProperty(value = "商品ID")
    private String itemId;


    @ApiModelProperty(value = "商品编号")
    private String itemCode;

    @ApiModelProperty(value = "商品名称")
    private String itemName;

    @ApiModelProperty(value = "批号")
    private String lotNum;

    @ApiModelProperty(hidden = true, value = "货位ID")
    private String locatorId;

    @ApiModelProperty(hidden = true, value = "货位编号")
    private String locatorCode;

    @ApiModelProperty(hidden = true, value = "货位")
    private String locatorName;

    @ApiModelProperty(hidden = true, value = "库存数量")
    private String stockQty;

    @ApiModelProperty(value = "养护数量")
    private String upkeepQty;

    @ApiModelProperty(hidden = true, value = "养护待处理数量")
    private String pendingQty;

    @ApiModelProperty(hidden = true, value = "类型：0=未分类 1=重点特殊药品，2=重点专管药品，3=重点其他药品，4=重点医疗器械，5=重点非药品，3=一般药品，4=一般器械，5=一般非药品")
    private String itemType;

    @ApiModelProperty(hidden = true, value = "养护员")
    private String upkeepOperator;

    @ApiModelProperty(hidden = true, value = "审核状态：0初始，1-正常无需复检，2-复检，3-复检完成，4-审核，5-审核完成，B -库存状态ERP审核驳回")
    private String status;

    @ApiModelProperty(hidden = true, value = "来源：0-自动；1手动")
    private String sourceType;

    @ApiModelProperty(hidden = true, value = "养护结论：0=待处理，1=合格，2=不合格")
    private String upkeepConclusion;

    @ApiModelProperty(hidden = true, value = "一级审核结论：0=待处理，1=合格，2=不合格")
    private String checkConclusion;

    @ApiModelProperty(hidden = true, value = "二级审核结论：1=合格，2=不合格")
    private String recheckConclusion;

    @ApiModelProperty(hidden = true, value = "最终结论：1=合格，2=不合格")
    private String conclusion;

    @ApiModelProperty(hidden = true, value = "处理意见")
    private String processOpinion;

    @ApiModelProperty(hidden = true, value = "审核员")
    private String checkOperator;

    @ApiModelProperty(hidden = true, value = "审核意见")
    private String checkOpinion;

    @ApiModelProperty(hidden = true, value = "复检员")
    private String recheckOperator;

    @ApiModelProperty(hidden = true, value = "复检意见")
    private String recheckOpinion;

    @ApiModelProperty(hidden = true, value = "外观(0=未选 1=已选)")
    private Boolean checkWaiGuan;

    @ApiModelProperty(hidden = true, value = "包装(0=未选 1=已选)")
    private Boolean checkBaoZhuang;

    @ApiModelProperty(hidden = true, value = "存储条件(0=未选 1=已选)")
    private Boolean checkChenChuTiaoJian;

    @ApiModelProperty(hidden = true, value = "翻跺(0=未选 1=已选)")
    private Boolean checkFanDuo;

    @ApiModelProperty(hidden = true, value = "除湿(0=未选 1=已选)")
    private Boolean checkChuShi;

    @ApiModelProperty(hidden = true, value = "加湿(0=未选 1=已选)")
    private Boolean checkJiaShi;

    @ApiModelProperty(hidden = true, value = "升温(0=未选 1=已选)")
    private Boolean checkShenWen;

    @ApiModelProperty(hidden = true, value = "降温(0=未选 1=已选)")
    private Boolean checkJiangWen;

    @ApiModelProperty(hidden = true, value = "通风(0=未选 1=已选)")
    private Boolean checkTongFeng;

    @ApiModelProperty(hidden = true, value = "除尘(0=未选 1=已选)")
    private Boolean checkChuChen;

    @ApiModelProperty(hidden = true, value = "质量状况：0=未确定 1=合格 2=不合格")
    private String qualityStatus;

    @ApiModelProperty(hidden = true, value = "温湿度状况")
    private String thsTatus;

    @ApiModelProperty(hidden = true, value = "养护待处理原因")
    private String pendingReason;

    @ApiModelProperty(hidden = true, value = "计划养护时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date planUpkeepDate;

    @ApiModelProperty(hidden = true, value = "养护时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date upkeepDate;

    @ApiModelProperty(hidden = true, value = "一检时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date checkDate;

    @ApiModelProperty(hidden = true, value = "复检日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date recheckDate;

    @ApiModelProperty(hidden = true, value = "备注")
    private String remark;

    @ApiModelProperty(hidden = true, value = "生产日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date pdateFrom;

    @ApiModelProperty(hidden = true, value = "有效期至")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date validUntil;

    @ApiModelProperty(value = "建筑物ID")
    private String bldgId;

    @ApiModelProperty(hidden = true, value = "养护类型：(0=一般 1=重点)")
    private String upkeepType;

    @ApiModelProperty(value = "生产厂家")
    private String manufacturerName;

    @ApiModelProperty(value = "上市许可持有人")
    private String itemHealthListedLicensor;

    @ApiModelProperty(value = "货主")
    private String cargoOwnerName;

    @ApiModelProperty(value = "建筑物")
    private String bldgName;


    @Ignore
    @ApiModelProperty(value = "仓库")
    private String warehouseName;


    @Ignore
    @ApiModelProperty(value = "生产日期")
    private Date productionDate;

    @Ignore
    @ApiModelProperty(value = "有效期至日期")
    private Date expiredDate;

    @Ignore
    @ApiModelProperty(value = "显示生产日期")
    private String showProductionDate;

    @Ignore
    @ApiModelProperty(value = "显示有效期至日期")
    private String showExpiredDate;

    @Ignore
    @ApiModelProperty(value = "下架库存状态，逻辑页面不显示")
    private String outStockStatus;

    @Ignore
    @ApiModelProperty(value = "上架库存状态，逻辑页面不显示")
    private String inStockStatus;

    @ApiModelProperty(value = "整件数")
    private BigDecimal caseQuantity;

    @ApiModelProperty(value = "计划养护数量")
    @Column(value = "PLAN_STOCK_QTY")
    private String planStockQty;

    /**
     * 零散数
     */
    @ApiModelProperty(value = "零散数")
    private BigDecimal oddPieceQuantity;

    @ApiModelProperty(value = "数量")
    private BigDecimal quantity;

    /**
     * 移出库位ID
     */
    @ApiModelProperty(value = "移出库位ID")
    private String outLocatorId;

    /**
     * 移出库位ID
     */
    @ApiModelProperty(value = "移出库位名")
    private String outLocatorName;

    /**
     * 移出容器ID
     */
    @ApiModelProperty(value = "移出容器ID")
    private String outContainerCode = "N/A";

    /**
     * 移出货格
     */
    @ApiModelProperty(value = "移出货格")
    private String outGoodsCaseCode = "N/A";

    /**
     * 移入库位ID
     */
    @ApiModelProperty(value = "移入库位ID")
    private String inLocatorId;

    /**
     * 移入容器ID
     */
    private String inContainerCode = "N/A";

    /**
     * 移入货格
     */
    @ApiModelProperty(value = "移入货格")
    private String inGoodsCaseCode = "N/A";

    /**
     * 移动原因
     */
    @ApiModelProperty(value = "移动原因")
    private String reason;

    @ApiModelProperty(value = "备注")
    private String comments;

    /**
     * GSP 养护单ID
     */
    @ApiModelProperty(value = "养护单ID")
    private String gspBillId;

    /**
     * GSP 养护单号
     */
    @ApiModelProperty(value = "养护单号")
    private String gspBillNo;

    /**
     * GSP 养护子单号
     */
    @ApiModelProperty(value = "养护子单ID")
    private String gspLineId;

    @ApiModelProperty(value = "移入库别code")
    private String inWhAreaCategory;

    @ApiModelProperty(value = "移出库别code")
    private String outWhAreaCategory;

    @ApiModelProperty(value = "移出库别")
    private String outWhAreaCategoryName;

    /**
     * GSP 养护子单号
     */
    @ApiModelProperty(value = "移入库别名")
    private String inWhAreaCategoryName;

    @Ignore
    @ApiModelProperty(hidden = true, value = "移出库位类型")
    private String whWarehouseLocatorType;

    @ApiModelProperty("批准文号")
    private String itemHealthApprovalNbr;

    @ApiModelProperty(value = "商品大类(字典) (对应ERP药品大类)(oms增加)")
    private String itemHealthCategoryName;

    @ApiModelProperty(value = "预留字段")
    private String warehouseRoomName;

    @ApiModelProperty(value = "商品规格说明")
    private String specification;

    @ApiModelProperty(value = "包装数量")
    private BigDecimal caseConversionRate;

    @ApiModelProperty(value = "包装单位（字典）")
    private String caseUom;

    @ApiModelProperty(value = "注册证号")
    private String itemHealthRegisterNbr;

    @ApiModelProperty(value = "产地")
    private String countryOriginName;

    @ApiModelProperty(value = "规格(养护打印时放单纯的规格数据)")
    private String spec;


    /**
     * 虫蛀(0=未选 1=已选)
     */
    @ApiModelProperty(value = "虫蛀(0=未选 1=已选)")
    @Column(value = "CHECK_CHONG_ZHU")
    private Boolean checkChongZhu;

    /**
     * 发霉(0=未选 1=已选)
     */
    @ApiModelProperty(value = "发霉(0=未选 1=已选)")
    @Column(value = "CHECK_FA_MEI")
    private Boolean checkFaMei;

    /**
     * 泛油(0=未选 1=已选)
     */
    @ApiModelProperty(value = "泛油(0=未选 1=已选)")
    @Column(value = "CHECK_FAN_YOU")
    private Boolean checkFanYou;

    /**
     * 潮解(0=未选 1=已选)
     */
    @ApiModelProperty(value = "潮解(0=未选 1=已选)")
    @Column(value = "CHECK_CHAO_JIE")
    private Boolean checkChaoJie;

    /**
     * 变色(0=未选 1=已选)
     */
    @ApiModelProperty(value = "变色(0=未选 1=已选)")
    @Column(value = "CHECK_BIAN_SE")
    private Boolean checkBianSe;

    /**
     * 上斗(0=未选 1=已选)
     */
    @ApiModelProperty(value = "上斗(0=未选 1=已选)")
    @Column(value = "CHECK_SHANG_DOU")
    private Boolean checkShangDou;

    /**
     * 破损(0=未选 1=已选)
     */
    @ApiModelProperty(value = "破损(0=未选 1=已选)")
    @Column(value = "CHECK_PO_SUN")
    private Boolean checkPoSun;

    /**
     * 破损(0=未选 1=已选)
     */
    @ApiModelProperty(value = "遮光(0=未选 1=已选)")
    @Column(value = "CHECK_ZHE_GUANG")
    private Boolean checkZheGuang;


    /**
     * 破损(0=未选 1=已选)
     */
    @ApiModelProperty(value = "避光(0=未选 1=已选)")
    @Column(value = "CHECK_BI_GUANG")
    private Boolean checkBiGuang;

    @ApiModelProperty(value = "库区名")
    private String warehouseAreaName;

    @ApiModelProperty(value = "库别名")
    private String warehouseAreaCategory;

    @ApiModelProperty(value = "存储条件")
    private String storeTemperature;

    @ApiModelProperty(value = "库别名")
    private String containerCode;

    @ApiModelProperty(value = "是否已发出库指令（0-否；1-已发未达；2-已送达）")
    private Integer outboundInstruct;

}
