package com.tofly.feesapi.yhgl.entity;

import cn.hutool.core.builder.EqualsBuilder;
import com.baomidou.mybatisplus.annotation.*;

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

import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.tofly.feesapi.common.constant.YhztEnum;
import com.tofly.feesapi.common.util.FieldDesc;
import com.tofly.feesapi.file.entity.File;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.apache.ibatis.type.JdbcType;
import org.springframework.format.annotation.DateTimeFormat;

@Data
@TableName("YH_KHJBXX")
@ApiModel(value = "YhKhjbxx对象", description = "用户基本信息")
public class YhKhjbxx extends Model<YhKhjbxx> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("用户编号")
    @TableId(value = "yhbh", type = IdType.INPUT)
    @FieldDesc("用户编号")
    private String yhbh;

    @ApiModelProperty("原用户号")
    @FieldDesc("原用户号")
    private String ykhbh;

    @ApiModelProperty("所属公司")
    @FieldDesc("所属公司")
    private String ssgs;

    @ApiModelProperty("所属抄表片区")
    @FieldDesc("所属抄表片区")
    private String sscbpq;

    @ApiModelProperty("所属抄表本")
    @FieldDesc("所属抄表本")
    private String sscbb;

    @ApiModelProperty("申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @FieldDesc("申请日期")
    private Date sqrq;

    @ApiModelProperty("用户姓名")
    @FieldDesc("用户姓名")
    private String yhxm;

    @ApiModelProperty("用户地址")
    @FieldDesc("用户地址")
    private String yhdz;

    @ApiModelProperty("联系电话")
    @FieldDesc("联系电话")
    private String lxdh;

    @ApiModelProperty("用户数")
    @FieldDesc("用户数")
    private Long rks;

    @ApiModelProperty("性别（1男，2女，3未知）[sys_child_code,pcid='9']")
    @FieldDesc("性别")
    private String xb;

    @ApiModelProperty("手机")
    @FieldDesc("手机")
    private String sj;

    @ApiModelProperty("住宅电话")
    @FieldDesc("住宅电话")
    private String zzdh;

    @ApiModelProperty("工作单位")
    @FieldDesc("工作单位")
    private String gzdw;

    @ApiModelProperty("办公电话")
    @FieldDesc("办公电话")
    private String bgdh;

    @ApiModelProperty("电子邮箱")
    @FieldDesc("电子邮箱")
    private String dzyx;

    @ApiModelProperty("证件类别(sys_child_code,pcid='10')")
    @FieldDesc("证件类别")
    private String zjlb;

    @ApiModelProperty("证件号码")
    @FieldDesc("证件号码")
    private String zjhm;

    @ApiModelProperty("与户主关系")
    @FieldDesc("与户主关系")
    private String hzgx;

    @ApiModelProperty("用户状态（0:申请用户,1:正式用户,2:报停用户,3:销户用户,4:作废用户）")
    @FieldDesc("用户状态")
    private YhztEnum yhzt;

    @ApiModelProperty("重视级别")
    @FieldDesc("重视级别")
    private String zsjb;

    @ApiModelProperty("建档日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @FieldDesc("建档日期")
    private Date jdrq;

    @ApiModelProperty("通水标志（0：未开通，1：已开通）")
    @FieldDesc("通水标志")
    private String tsbz;

    @ApiModelProperty("通水日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @FieldDesc("通水日期")
    private Date tsrq;

    @ApiModelProperty("合同签订")
    @FieldDesc("合同签订")
    private String htqd;

    @ApiModelProperty("合同签订日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @FieldDesc("合同签订日期")
    private Date htqdrq;

    @ApiModelProperty("合同编号")
    @FieldDesc("合同编号")
    private String htbh;

    @ApiModelProperty("备注")
    @FieldDesc("备注")
    private String bz;

    @ApiModelProperty("备注1")
    @FieldDesc("备注1")
    private String bz1;

    @ApiModelProperty("报装_工程编号")
    @FieldDesc("报装工程编号")
    private String bzGcbh;

    @ApiModelProperty("报装_批次序列号")
    @FieldDesc("报装批次序列号")
    private String bzPcxlh;

    @ApiModelProperty("操作人员编码")
    @FieldDesc("操作人员编码")
    private String czrybm;

    @ApiModelProperty("操作人员姓名")
    @FieldDesc("操作人员姓名")
    private String czryxm;

    @ApiModelProperty("操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @FieldDesc("操作时间")
    private Date czsj;

    @ApiModelProperty("身份证图片")
    @FieldDesc("身份证图片")
    private String psfz;

    @ApiModelProperty("合同图片")
    @FieldDesc("合同图片")
    private String pht;

    @ApiModelProperty("工商执照图片")
    @FieldDesc("工商执照图片")
    private String pgszz;

    @ApiModelProperty("房产证图片")
    @FieldDesc("房产证图片")
    private String pfcz;

    @ApiModelProperty("营业执照图片")
    @FieldDesc("营业执照图片")
    private String pyyzz;

    @ApiModelProperty("有效证件图片")
    @FieldDesc("有效证件图片")
    private String pyxzj;

    @ApiModelProperty("信用等级（sys_child_code,pcid='20'）")
    @FieldDesc("信用等级")
    private String xydj;

    @ApiModelProperty("是否特困户（1是，0否）")
    @FieldDesc("是否特困户")
    private String tkhbz;

    @ApiModelProperty("职位")
    @FieldDesc("职位")
    private String zw;

    @ApiModelProperty("建档人员编码")
    @FieldDesc("建档人员编码")
    private String jdrybm;

    @ApiModelProperty("建档人员姓名")
    @FieldDesc("建档人员姓名")
    private String jdryxm;

    @ApiModelProperty("建档批次序列号")
    @FieldDesc("建档批次序列号")
    private String jdpcxlh;

    @ApiModelProperty("发票类型: 0-手册，1-普票，2-专票，3-收据")
    @FieldDesc("发票类型")
    private String fplx;

    @ApiModelProperty("是否取整")
    @FieldDesc("是否取整")
    private String sfqz;

    @ApiModelProperty("抄表人员姓名")
    @FieldDesc("抄表人员姓名")
    private String cbryxm;

    @FieldDesc("序号")
    private Long xh;

    @ApiModelProperty("所属行政规划")
    @FieldDesc("所属行政规划")
    private String ssregion;

    @ApiModelProperty("修改人员")
    @FieldDesc("修改人员")
    private String xgrybm;

    @ApiModelProperty("发票开具姓名")
    @FieldDesc("发票开具姓名")
    private String fpName;

    @ApiModelProperty("发票开具纳税人识别号")
    @FieldDesc("发票开具纳税人识别号")
    private String fpNsrsbh;

    @ApiModelProperty("发票开具地址")
    @FieldDesc("发票开具地址")
    private String fpDz;

    @ApiModelProperty("发票开具联系电话")
    @FieldDesc("发票开具联系电话")
    private String fpLxdh;

    @ApiModelProperty("发票开具开户行")
    @FieldDesc("发票开具开户行")
    private String fpBankname;

    @ApiModelProperty("发票开具银行账号")
    @FieldDesc("发票开具银行账号")
    private String fpBankcode;

    @ApiModelProperty("发票开具备注")
    @FieldDesc("发票开具备注")
    private String fpBz;

    @ApiModelProperty("收费方式")
    @FieldDesc("收费方式")
    private String fffs;

    @ApiModelProperty("年度累计量")
    @FieldDesc("年度累计量")
    private BigDecimal jtzqljl;

    @ApiModelProperty("客户类型（弱势群体，残疾，正常，低保，企业，服务）")
    @FieldDesc("客户类型")
    private String khlb;

    @ApiModelProperty("拼音简码")
    @FieldDesc("拼音简码")
    private String pyjm;

    @ApiModelProperty("月累积量")
    @FieldDesc("月累积量")
    private BigDecimal yljl;

    @ApiModelProperty("水表数量")
    @FieldDesc("水表数量")
    private Integer sbsl;

    @ApiModelProperty("是否开票")
    @FieldDesc("是否开票")
    private String sfkp;

    @ApiModelProperty("是否免税")
    @FieldDesc("是否免税")
    private String sfms;

    @ApiModelProperty("推送方式-1不推送，0邮箱 1手机 2邮箱、手机")
    @FieldDesc("推送方式")
    private String pushmode;

    @ApiModelProperty("购方邮箱")
    @FieldDesc("购方邮箱")
    private String email;

    @ApiModelProperty("低保户年度累计量")
    @FieldDesc("低保户年度累计量")
    private BigDecimal dbhndljl;

    @ApiModelProperty("客户编码")
    @FieldDesc("客户编码")
    private String khbm;

    @ApiModelProperty("大小户 0-小户 1-大户")
    @FieldDesc("大小户")
    private Integer dxh;

    @ApiModelProperty("主户标志(大户下有多个水表，主户是用于统一收费、开票信息的唯一对象) 0-否 1-是")
    @FieldDesc("主户标志")
    private Integer zhbz;

    @ApiModelProperty("曾用名,多个曾用名用','分隔")
    @FieldDesc("曾用名")
    private String cym;

    @ApiModelProperty("用水地址")
    @FieldDesc("用水地址")
    private String ysdz;

    @ApiModelProperty("累计量清零时间")
    @FieldDesc("累计量清零时间")
    private String jtljlqcsj;

    @ApiModelProperty("物业标志（0未非物业，1为物业）")
    @FieldDesc("物业标志")
    private String wybz;

    @Override
    public boolean equals(Object o) {
        return EqualsBuilder.reflectionEquals(this, o);
    }
}
