package digital.laboratory.platform.entrustment.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import digital.laboratory.platform.common.mybatis.base.BaseEntity;
import digital.laboratory.platform.sys.entity.entrustment.IMAdditionalProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

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

import lombok.Data;
import lombok.EqualsAndHashCode;


/**
 * 与案件相关的物证信息
 *
 * @author Zhang Xiaolong created at  2022-07-26
 * @describe 与案件相关的物证信息 实体类
 */
@Data
@TableName(value = "b_case_evidence", autoResultMap = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "与案件相关的物证信息")
public class CaseEvidence extends BaseEntity {

    /**
     * id
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    @ApiModelProperty(value="id")
    private String id;

    /**
     * 本系统物证编号
     */
    @ApiModelProperty(value="本系统物证编号")
    private String evidenceNo;

    /**
     * 案件Id
     */
    @ApiModelProperty(value="案件Id")
    private String caseId;

    /**
     * 第三方系统(如现勘系统、案事件系统)物证编号
     */
    @ApiModelProperty(value="第三方系统(如现勘系统、案事件系统)物证编号")
    private String thirdPartySysEvidenceNo;

    /**
     * 物证名称
     */
    @ApiModelProperty(value="物证名称")
    private String name;

    /**
     * 物证类别:1. 非生物性物证;2. 生物特性物证
     */
    @ApiModelProperty(value="物证类别:1. 非生物性物证;2. 生物特性物证")
    private String type;

    /**
     * 现场标牌号
     */
    @ApiModelProperty(value="现场标牌号")
    private String fieldLabelNo;

    /**
     * 物证来源
     */
    @ApiModelProperty(value="物证来源")
    private String source;

    /**
     * 物证颜色
     */
    @ApiModelProperty(value="物证颜色")
    private String color;

    /**
     * 物证性状
     */
    @ApiModelProperty(value="物证性状")
    private String form;

    /**
     * 物证情况之承载物名称, 例如 棉签 2 棵, 粉末 少许
     */
    @ApiModelProperty(value="物证情况之承载物名称, 例如 棉签 2 棵, 粉末 少许")
    private String fundName;

    /**
     * 物证情况之承载物数量, 例如 5 颗, 3包, 
     */
    @ApiModelProperty(value="物证情况之承载物数量, 例如 5 颗, 3包, ")
    private Integer fundQuantity;

    /**
     * 物证情况之承载物单位, 例如 5 颗, 3包
     */
    @ApiModelProperty(value="物证情况之承载物单位, 例如 5 颗, 3包")
    private String fundUnit;

    /**
     * 物证数量, 例如 3.8 克 或 4.5毫升
     */
    @ApiModelProperty(value="物证数量, 例如 3.8 克 或 4.5毫升")
    private BigDecimal quantity;

    /**
     * 物证单位, 例如 3.8 克 或 4.5毫升
     */
    @ApiModelProperty(value="物证单位, 例如 3.8 克 或 4.5毫升")
    private String unit;

    /**
     * 附加属性, 如:体积3毫升,密码123,型号abc
     */
    @ApiModelProperty(value="附加属性, 如:体积3毫升,密码123,型号abc")
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<IMAdditionalProperty> additionalProperties;

    /**
     * 所有者姓名
     */
    @ApiModelProperty(value="所有者姓名")
    private String personName;

    /**
     * 所有者证件类型
     */
    @ApiModelProperty(value="所有者证件类型")
    private String personCert;

    /**
     * 所有者证件号
     */
    @ApiModelProperty(value="所有者证件号")
    private String personId;

    /**
     * 所有者性别,公安系统编码 1：男 2：女 0：未知
     */
    @ApiModelProperty(value="所有者性别,公安系统编码 1：男 2：女 0：未知")
    private Integer personGender;

    /**
     * 所有者国籍
     */
    @ApiModelProperty(value="所有者国籍")
    private String personNationality;

    /**
     * 所有者民族编码,公安系统编码
     */
    @ApiModelProperty(value="所有者民族编码,公安系统编码")
    private Integer personNation;

    /**
     * 所有者地址
     */
    @ApiModelProperty(value="所有者地址")
    private String personAddress;

    /**
     * 所有者年龄
     */
    @ApiModelProperty(value="所有者年龄")
    private Integer personAge;

    /**
     * 包装情况:纸袋,纸盒,纸箱,自定义
     */
    @ApiModelProperty(value="包装情况:纸袋,纸盒,纸箱,自定义")
    private String pack;

    /**
     * 存储方法:常规,冷藏,特殊
     */
    @ApiModelProperty(value="存储方法:常规,冷藏,特殊")
    private String storageMethod;

    /**
     * 描述
     */
    @ApiModelProperty(value="描述")
    private String description;

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

    /**
     * 数据来源，用于区别数据来自自身系统还是外部系统
     */
    @ApiModelProperty(value="数据来源")
    private Integer dataSources;




}
