package com.bonus.canteen.core.customer.vo;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.bonus.canteen.core.common.encrypt.HandleType;
import com.bonus.canteen.core.common.encrypt.LeNiuDecryptDataProcess;
import com.bonus.canteen.core.common.encrypt.LeNiuDecryptField;
import com.bonus.canteen.core.common.utils.SysUtil;
import com.bonus.canteen.core.customer.constants.FeaturesBuildStatusEnum;
import com.bonus.canteen.core.customer.utils.CustomerUtil;
import com.bonus.canteen.core.customer.v4.mobile.constant.CardStatusNumberConverter;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@LeNiuDecryptDataProcess
public class PageCustInfoPhotoVO {
   @ApiModelProperty("主键自增")
   private Long id;
   @ApiModelProperty("人员id")
   private Long custId;
   @ApiModelProperty("人员姓名")
   @ExcelProperty(
      value = {"用户姓名"},
      order = 1
   )
   @LeNiuDecryptField
   private String custName;
   @ApiModelProperty("人员编号")
   @ExcelProperty(
      value = {"用户编号"},
      order = 2
   )
   private String custNum;
   @ApiModelProperty("手机号")
   @ExcelProperty(
      value = {"用户手机号"},
      order = 3
   )
   private String mobile;
   @ApiModelProperty("机构全称")
   @ExcelProperty(
      value = {"所属组织"},
      order = 4
   )
   private String orgFullName;
   @ApiModelProperty("人员类别")
   @ExcelIgnore
   private Integer psnType;
   @ExcelProperty(
      value = {"用户类别"},
      order = 5
   )
   private String psnTypeName;
   @ApiModelProperty("成本中心全称")
   @ExcelProperty(
      value = {"成本中心"},
      order = 6
   )
   private String costCenterName;
   @ApiModelProperty("所属位置")
   private Long placeId;
   @ApiModelProperty("位置全称")
   @ExcelProperty(
      value = {"位置名称"},
      order = 7
   )
   private String placeFullName;
   @ApiModelProperty("职位")
   @ExcelProperty(
      value = {"职位"},
      order = 8
   )
   private String job;
   @ApiModelProperty("特征码生成状态")
   @ExcelProperty(
      value = {"人脸状态"},
      order = 9,
      converter = FeaturesBuildStatusEnum.ExcelConvertor.class
   )
   private Integer featuresBuildStatus;
   @ApiModelProperty("特征码生成失败原因")
   @ExcelProperty(
      value = {"失败原因"},
      order = 10
   )
   private String errorMsg;
   @ApiModelProperty("人脸照片有效期(天)")
   @ExcelProperty(
      value = {"人脸照片有效期(天)"},
      order = 10
   )
   private String remainingDays;
   @ApiModelProperty("卡物理号")
   @ExcelProperty(
      value = {"卡号"},
      order = 11
   )
   private String serialNum;
   @ApiModelProperty("卡状态")
   @ExcelProperty(
      value = {"卡状态"},
      order = 12,
      converter = CardStatusNumberConverter.class
   )
   private String cardStatus;
   @ApiModelProperty("开卡时间")
   @ExcelProperty(
      value = {"开卡时间"},
      order = 13
   )
   private String openCardTime;
   @ApiModelProperty("第三方人员id")
   @ExcelProperty(
      value = {"第三方ID"},
      order = 14
   )
   private String custThirdId;
   @ApiModelProperty("创建时间")
   @ExcelProperty(
      value = {"创建时间"},
      order = 15
   )
   private LocalDateTime crtime;

   @ApiModelProperty("修改时间")
   private LocalDateTime uptime;

   @ApiModelProperty("特征码生成时间")
   @ExcelProperty(
      value = {"特征码生成时间"},
      order = 16
   )
   private LocalDateTime featuresBuildTime;
   @ApiModelProperty("邮箱")
   private String email;
   @ApiModelProperty("所属组织id")
   private Long orgId;
   @ApiModelProperty("性别 1-男 2-女")
   @ExcelIgnore
   private Integer sex;
   @ApiModelProperty("家庭地址")
   @ExcelIgnore
   private String homeAddr;
   @ApiModelProperty("人员状态 1-正常 2-注销")
   @ExcelIgnore
   private Integer custState;
   @ApiModelProperty("照片地址")
   @ExcelIgnore
   private String photoUrl;
   @ApiModelProperty("人员限制id")
   @ExcelIgnore
   private Integer custLimitId;
   @ApiModelProperty("成本中心id")
   @ExcelIgnore
   private Long costCenterId;
   @ApiModelProperty("过期日期")
   private LocalDate expireDate;
   @ApiModelProperty("扩展字段1(日期 yyyy-MM-dd)")
   private LocalDate extendDate;
   @ApiModelProperty("扩展字段2(日期 yyyy-MM-dd HH:mm:ss)")
   private LocalDateTime extendDateTime;
   @ApiModelProperty("扩展字段3(字符串)")
   private String extendStr1;
   @ApiModelProperty("扩展字段4(字符串)")
   private String extendStr2;

   public String getRemainingDays() {
      return CustomerUtil.getRemainingDays(this.expireDate);
   }

   public String getPhotoUrl() {
      return SysUtil.getCutFileUrl(this.photoUrl);
   }

   public Long getId() {
      return this.id;
   }

   public Long getCustId() {
      return this.custId;
   }

   public String getCustName() {
      return this.custName;
   }

   public String getCustNum() {
      return this.custNum;
   }

   public String getMobile() {
      return this.mobile;
   }

   public String getOrgFullName() {
      return this.orgFullName;
   }

   public Integer getPsnType() {
      return this.psnType;
   }

   public String getPsnTypeName() {
      return this.psnTypeName;
   }

   public String getCostCenterName() {
      return this.costCenterName;
   }

   public Long getPlaceId() {
      return this.placeId;
   }

   public String getPlaceFullName() {
      return this.placeFullName;
   }

   public String getJob() {
      return this.job;
   }

   public Integer getFeaturesBuildStatus() {
      return this.featuresBuildStatus;
   }

   public String getErrorMsg() {
      return this.errorMsg;
   }

   public String getSerialNum() {
      return this.serialNum;
   }

   public String getCardStatus() {
      return this.cardStatus;
   }

   public String getOpenCardTime() {
      return this.openCardTime;
   }

   public String getCustThirdId() {
      return this.custThirdId;
   }

   public LocalDateTime getCrtime() {
      return this.crtime;
   }

   public LocalDateTime getUptime() {
      return uptime;
   }

   public void setUptime(LocalDateTime uptime) {
      this.uptime = uptime;
   }

   public LocalDateTime getFeaturesBuildTime() {
      return this.featuresBuildTime;
   }

   public String getEmail() {
      return this.email;
   }

   public Long getOrgId() {
      return this.orgId;
   }

   public Integer getSex() {
      return this.sex;
   }

   public String getHomeAddr() {
      return this.homeAddr;
   }

   public Integer getCustState() {
      return this.custState;
   }

   public Integer getCustLimitId() {
      return this.custLimitId;
   }

   public Long getCostCenterId() {
      return this.costCenterId;
   }

   public LocalDate getExpireDate() {
      return this.expireDate;
   }

   public LocalDate getExtendDate() {
      return this.extendDate;
   }

   public LocalDateTime getExtendDateTime() {
      return this.extendDateTime;
   }

   public String getExtendStr1() {
      return this.extendStr1;
   }

   public String getExtendStr2() {
      return this.extendStr2;
   }

   public void setId(final Long id) {
      this.id = id;
   }

   public void setCustId(final Long custId) {
      this.custId = custId;
   }

   public void setCustName(final String custName) {
      this.custName = custName;
   }

   public void setCustNum(final String custNum) {
      this.custNum = custNum;
   }

   public void setMobile(final String mobile) {
      this.mobile = mobile;
   }

   public void setOrgFullName(final String orgFullName) {
      this.orgFullName = orgFullName;
   }

   public void setPsnType(final Integer psnType) {
      this.psnType = psnType;
   }

   public void setPsnTypeName(final String psnTypeName) {
      this.psnTypeName = psnTypeName;
   }

   public void setCostCenterName(final String costCenterName) {
      this.costCenterName = costCenterName;
   }

   public void setPlaceId(final Long placeId) {
      this.placeId = placeId;
   }

   public void setPlaceFullName(final String placeFullName) {
      this.placeFullName = placeFullName;
   }

   public void setJob(final String job) {
      this.job = job;
   }

   public void setFeaturesBuildStatus(final Integer featuresBuildStatus) {
      this.featuresBuildStatus = featuresBuildStatus;
   }

   public void setErrorMsg(final String errorMsg) {
      this.errorMsg = errorMsg;
   }

   public void setRemainingDays(final String remainingDays) {
      this.remainingDays = remainingDays;
   }

   public void setSerialNum(final String serialNum) {
      this.serialNum = serialNum;
   }

   public void setCardStatus(final String cardStatus) {
      this.cardStatus = cardStatus;
   }

   public void setOpenCardTime(final String openCardTime) {
      this.openCardTime = openCardTime;
   }

   public void setCustThirdId(final String custThirdId) {
      this.custThirdId = custThirdId;
   }

   public void setCrtime(final LocalDateTime crtime) {
      this.crtime = crtime;
   }

   public void setFeaturesBuildTime(final LocalDateTime featuresBuildTime) {
      this.featuresBuildTime = featuresBuildTime;
   }

   public void setEmail(final String email) {
      this.email = email;
   }

   public void setOrgId(final Long orgId) {
      this.orgId = orgId;
   }

   public void setSex(final Integer sex) {
      this.sex = sex;
   }

   public void setHomeAddr(final String homeAddr) {
      this.homeAddr = homeAddr;
   }

   public void setCustState(final Integer custState) {
      this.custState = custState;
   }

   public void setPhotoUrl(final String photoUrl) {
      this.photoUrl = photoUrl;
   }

   public void setCustLimitId(final Integer custLimitId) {
      this.custLimitId = custLimitId;
   }

   public void setCostCenterId(final Long costCenterId) {
      this.costCenterId = costCenterId;
   }

   public void setExpireDate(final LocalDate expireDate) {
      this.expireDate = expireDate;
   }

   public void setExtendDate(final LocalDate extendDate) {
      this.extendDate = extendDate;
   }

   public void setExtendDateTime(final LocalDateTime extendDateTime) {
      this.extendDateTime = extendDateTime;
   }

   public void setExtendStr1(final String extendStr1) {
      this.extendStr1 = extendStr1;
   }

   public void setExtendStr2(final String extendStr2) {
      this.extendStr2 = extendStr2;
   }




}
