package digital.laboratory.platform.imr.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import digital.laboratory.platform.common.aop.annotation.DlpFeign;
import digital.laboratory.platform.imr.component.DateUtils;
import digital.laboratory.platform.sys.entity.DrugLite;
import digital.laboratory.platform.sys.feign.RemoteOrgService;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 毒品库中的毒品检材信息 VO 返回前台显示类
 * @TableName b_drug_material_info
 */
@Data
@TableName(value ="b_drug_material_info", autoResultMap = true)
@ApiModel(value = "DrugMaterialInfoVO", description = "毒品库中的毒品检材信息 VO 返回前台显示类")
public class DrugMaterialInfoVO {
    /**
     * 主键标识
     */
    @ApiModelProperty("主键标识")
    private String id;

    /**
     * 关联的案件id
     */
    @ApiModelProperty("关联的案件id")
    private String caseId;

    /**
     * 关联的入库记录id
     */
    @ApiModelProperty("关联的入库记录id")
    private String sampleStorageId;

    @ApiModelProperty("柜子id")
    private String canineId;

    @ApiModelProperty("格子id")
    private String storageCellId;

    @ApiModelProperty("存放位置")
    private String storageLocation;

    /**
     * 毒品检材编号
     */
    @ApiModelProperty("毒品检材编号")
    private String drugNo;

    /**
     * 毒品检材名称
     */
    @ApiModelProperty("毒品检材名称")
    private String drugName;

    @ApiModelProperty("毒品类型")
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<DrugLite> type;

    /**
     * 原质量/体积（委托单位填写）
     */
    @ApiModelProperty("原质量/体积（委托单位填写）")
    private BigDecimal originMassVolume;

    /**
     * 原质量/体积 单位 （委托单位填写）
     */
    @ApiModelProperty("原质量/体积 单位 （委托单位填写）")
    private String originUnit;

    /**
     * 复称质量/体积（接收单位填写）
     */
    @ApiModelProperty("复称质量/体积（接收单位填写）")
    private BigDecimal recheckMassVolume;

    /**
     * 复称质量/体积 单位 （接收单位填写）
     */
    @ApiModelProperty("复称质量/体积 单位 （接收单位填写）")
    private String recheckUnit;

    /**
     * 包装是否完整， 1 完整 | 0 不完整
     */
    @ApiModelProperty("包装是否完整， 1 完整 | 0 不完整")
    private Boolean packageComplete;

    /**
     * 毒品检材状态， 0 待收样 | 1 待复称 | 2 已复称 | 3 待入库 | 5 已入库 | 7 已出库
     */
    @ApiModelProperty("毒品检材状态， 0 待收样 | 1 待复称 | 2 已复称 | 3 待入库 | 5 已入库 | 7 已出库")
    private Integer status;

    /**
     * 毒品检材状态， 0 待收样 | 1 待复称 | 2 已复称 | 3 待入库 | 5 已入库 | 7 已出库
     */
    @ApiModelProperty("毒品检材状态， 0 待收样 | 1 待复称 | 2 已复称 | 3 待入库 | 5 已入库 | 7 已出库")
    private String statusName;

    /**
     * 案事件名称
     */
    @ApiModelProperty("案事件名称")
    private String caseName;

    /**
     * 案件编号
     */
    @ApiModelProperty("案件编号")
    private String caseNo;

    /**
     * 送缴单位
     */
    @ApiModelProperty("送缴单位")
    private String handingOverOrg;

    /**
     * 送缴单位
     */
    @ApiModelProperty("送缴单位名称")
    @DlpFeign(feignClient = RemoteOrgService.class, methodName = "getById", params = {"handingOverOrg"}, resultField = "name")
    private String handingOverOrgName;

    /**
     * 送缴日期
     */
    @ApiModelProperty("送缴时间")
    @JsonFormat(pattern = DateUtils.yyyy_MM_dd_HH_mm_ss, timezone = DateUtils.TIME_ZONE)
    private LocalDateTime handingOverDate;

}
