package com.chinaweal.aiccs.aiccs.punishment.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.activerecord.Model;
import com.chinaweal.aiccs.common.util.DateUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 全国企业信用协同修复一网通办-协同修复企业信息
 * </p>
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("CR_E_CASE")
@ApiModel(value = "CrECase对象", description = "全国企业信用协同修复一网通办-协同修复企业信息")
public class CrECase extends Model<CrECase> {

    private static final long serialVersionUID = 1L;

    /**
     * 行政处罚修复ID
     */
    @ApiModelProperty(value = "行政处罚修复ID")
    @TableId(value = "casecreid", type = IdType.ASSIGN_UUID)
    private String casecreid;

    /**
     * 主体身份代码
     */
    @ApiModelProperty(value = "主体身份代码")
    @TableField("pripid")
    private String pripid;

    /**
     * 企业（机构）名称
     */
    @ApiModelProperty(value = "企业（机构）名称")
    @TableField("entname")
    private String entname;

    /**
     * 统一社会信用代码
     */
    @ApiModelProperty(value = "统一社会信用代码")
    @TableField("uniscid")
    private String uniscid;

    /**
     * 行政处罚ID
     */
    @ApiModelProperty(value = "行政处罚ID")
    @TableField("caseid")
    private String caseid;

    /**
     * 申请修复日期
     */
    @ApiModelProperty(value = "申请修复日期")
    @TableField("repairdate")
    @JsonFormat(pattern = DateUtils.DATE_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDate repairdate;

    /**
     * 作出信用修复决定的机关
     */
    @ApiModelProperty(value = "作出信用修复决定的机关")
    @TableField("repauth")
    private String repauth;

    /**
     * 作出信用修复决定的机关（中文）
     */
    @ApiModelProperty(value = "作出信用修复决定的机关（中文）")
    @TableField("repauth_cn")
    private String repauthcn;

    /**
     * 信用修复决定时间
     */
    @ApiModelProperty(value = "信用修复决定时间")
    @TableField("repdate")
    @JsonFormat(pattern = DateUtils.DATE_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDate repdate;

    /**
     * 信用修复状态
     */
    @ApiModelProperty(value = "信用修复状态")
    @TableField("rep_state")
    private String repstate;

    /**
     * 作出信用修复决定理由
     */
    @ApiModelProperty(value = "作出信用修复决定理由")
    @TableField("end_rea")
    private String endrea;

    /**
     * 上传时间
     */
    @ApiModelProperty(value = "上传时间")
    @TableField("upload_time")
    @JsonFormat(pattern = DateUtils.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDateTime uploadtime;

    /**
     * 上传省份
     */
    @ApiModelProperty(value = "上传省份")
    @TableField("upload_pro")
    private String uploadpro;

    /**
     * 目标省份
     */
    @ApiModelProperty(value = "目标省份")
    @TableField("target_pro")
    private String targetpro;

    /**
     * 内蒙数据中心时间戳
     */
    @ApiModelProperty(value = "内蒙数据中心时间戳")
    @TableField("s_ext_datetime")
    @JsonIgnore
    private LocalDateTime sExtDatetime;

    /**
     * 录入方式(0 页面、1 接口)
     */
    @ApiModelProperty(value = "录入方式(0 页面、1 接口)")
    @TableField("entry_type")
    private String entrytype;

    /**
     * 作出行政处罚决定机关代码
     */
    @ApiModelProperty(value = "作出行政处罚决定机关代码")
    @TableField("penauth")
    private String penauth;

    /**
     * 作出行政处罚决定机关（中文）
     */
    @ApiModelProperty(value = "作出行政处罚决定机关（中文）")
    @TableField("penauth_cn")
    private String penauthcn;

    /**
     * 行政处罚决定书文号
     */
    @ApiModelProperty(value = "行政处罚决定书文号")
    @TableField("pendecno")
    private String pendecno;

    /**
     * 上传总局报错信息
     */
    @ApiModelProperty(value = "上传总局报错信息")
    @TableField("zj_error_msg")
    private String zjerrormsg;


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