package cn.iocoder.yudao.module.system.controller.admin.biz.vo.excel;

import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.system.convert.excel.LocalDateConvert;
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

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

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;

/**
 * 长者账单导出VO
 *
 * @author 系统管理员
 */
@Data
public class ElderlyBaseInfoExportExcelVO {

    @ExcelProperty("序号")
    private Integer num;

    @ExcelProperty("档案号")
    private String fileNumber;

    @ExcelProperty("合同号")
    private String contractNumber;

    @ExcelProperty("长者姓名")
    private String elderName;

    @ExcelProperty(value = "长者性别", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.USER_SEX)
    private Integer elderSex;

    @ExcelProperty("年龄")
    private Integer elderAge;

    @ExcelProperty("出生日期")
    @DateTimeFormat("yyyy-MM-dd")
    private Date birthday;

    @ExcelProperty(value = "生日关怀日期", converter = LocalDateConvert.class)
    private LocalDate birthdayCareDate;

    @ExcelProperty(value = "证件类型", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.PAPERS_TYPE)
    private Integer papersType;

    @ExcelProperty("证件号码")
    private String idCard;

    @ExcelProperty(value = "民族",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.NATION_ARR)
    private String nationId;

    @ExcelProperty(value = "政治面貌",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.POLITICAL_ARR)
    private String political;

    @ExcelProperty(value = "文化程度", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.EDUCATION_BACKGROUND)
    private Integer degreeEducation;

    @ExcelProperty(value = "婚姻状况",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.MARITAL_STATUS_ARR)
    private Integer maritalStatus;

    @ExcelProperty("联系方式")
    private String telPhone;

    @ExcelProperty("退休单位")
    private String retirementUnit;

    @ExcelProperty(value = "长者职务",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.BUSINESS_TYPE)
    private String businessType;

    @ExcelProperty(value = "长者类别", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.ELDER_TYPE)
    private Integer elderType;

    @ExcelProperty(value = "居住情况",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.LIVE_ARR)
    private String liveSituation;

    @ExcelProperty("居住地址")
    private String address;

    @ExcelProperty(value = "缴费方式", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.PAYMENT_METHOD_ARR)
    private Integer paymentMethod;

    @ExcelProperty(value = "供养方式", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.FORM_SUPPLY_ARR)
    private Integer formSupply;

    @ExcelProperty(value = "医疗保险",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.MEDICAL_INSURANCE_ARR)
    private String medicalInsurance;

    @ExcelProperty(value = "经济来源",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.ECONOMY_SOURCE_ARR)
    private String economySource;

    @ExcelProperty(value = "宗教信仰",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.RELIGIOUS_BELIEF_ARR)
    private String religiousBelief;

    @ExcelProperty(value = "媒介渠道",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.MEDIA_CHANNELS_ARR)
    private String mediaChannels;


    @ExcelProperty(value = "是否残疾", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COMMON_STATUS6)
    private Integer whetherDisabled;

    @ExcelProperty("退休金")
    private BigDecimal pension;

    @ExcelProperty("退休时间")
    private Date retirementTime;

    @ExcelProperty("社会保障卡号")
    private String socialSecurityCardNumber;

    @ExcelProperty("参保地")
    private String insuredPlace;

    @ExcelProperty(value = "长者标签", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.ELDERLY_TAB)
    private String elderTags;

    @ExcelProperty(value = "入住类型",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.IN_STATUS_TYPE)
    private Integer inStatusType;

    @ExcelProperty("床位信息")
    private String bedName;

    @ExcelProperty("入院日期")
    @DateTimeFormat("yyyy-MM-dd")
    private Date checkInTime;

    @ExcelProperty("护理等级")
    private String nurseLevelName;

    //==================托养人信息======================//
    @ExcelProperty("第一托养人姓名")
    private String name;

    @ExcelProperty("第一托养人关系")
    private String relation;

    @ExcelProperty(value = "第一托养人性别", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.USER_SEX)
    private String gender;

    @ExcelProperty("第一托养人联系电话")
    private String phone;

    @ExcelProperty(value = "第一托养人证件类型", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.PAPERS_TYPE)
    private String relativesPapersType;

    @ExcelProperty("第一托养人证件号码")
    private String relativesIdCard;

    @ExcelProperty("第一托养人家庭电话")
    private String telephone;

    @ExcelProperty("第一托养人工作单位")
    private String workUnit;

    @ExcelProperty("第一托养人现在住址")
    private String nowAddress;

    @ExcelProperty("第一托养人家庭住址")
    private String relativeAddress;

    @ExcelProperty("第二托养人姓名")
    private String secondName;

    @ExcelProperty("第二托养人关系")
    private String secondRelation;

    @ExcelProperty(value = "第二托养人性别", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.USER_SEX)
    private String secondGender;

    @ExcelProperty("第二托养人联系电话")
    private String secondPhone;

    @ExcelProperty(value = "第二托养人证件类型", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.PAPERS_TYPE)
    private String secondRelativesPapersType;

    @ExcelProperty("第二托养人证件号码")
    private String secondRelativesIdCard;

    @ExcelProperty("第二托养人家庭电话")
    private String secondTelephone;

    @ExcelProperty("第二托养人工作单位")
    private String secondWorkUnit;

    @ExcelProperty("第二托养人现在住址")
    private String secondNowAddress;

    @ExcelProperty("第二托养人家庭住址")
    private String secondRelativeAddress;

}