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.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

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


@Schema(description = "管理后台 - 长者导入 Request VO")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false，避免用户导入有问题
public class ElderlyFileImportExcelVO {

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

    @ExcelProperty("性别(男填1,女填2)")
    private Integer elderSex;

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

    @ExcelProperty("出生日期")
    private Date birthday;

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

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

    @ExcelProperty("身份证号")
    private String idCard;

    @ExcelProperty("身份证地址")
    private String papersAddress;


    @ExcelProperty("户籍地址")
    private String registeredResidenceAddress;


    @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.LANGUAGE_ARR)
    private String language;

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

    @ExcelProperty("关联人")
    private String affiliatedPerson;

    @ExcelProperty("关联情况")
    private String associationExplanation;

    @ExcelProperty("联系人")
    private String telPhone;

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

    @ExcelProperty("居住情况")
    private String liveSituation;

    // TODO ?
//    @ExcelProperty("入住性质")
//    private Integer inStatusType;

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

    @ExcelProperty("医疗保险")
    private String medicalInsurance;

    @ExcelProperty("经济来源")
    private String economySource;

    @ExcelProperty("宗教信仰")
    private String religiousBelief;

    @ExcelProperty("媒介渠道")
    private String mediaChannels;

    @ExcelProperty(value = "是否残疾（是填1，否填2）")
    private Integer whetherDisabled;

    @ExcelProperty("推荐人")
    private String refereeName;

    @ExcelProperty("推荐金额")
    private BigDecimal refereePay;

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

//    @ExcelProperty("退休时间")
//    @JSONField(format = "yyyy-MM-dd")
//    private LocalDate retirementTime;

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

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




    //****************** 亲属字段 *******************
    @ExcelProperty("第一托养人姓名")
    private String firstName;

    @ExcelProperty("第一托养人与亲属关系")
    private String firstRelation;

    @ExcelProperty("第一托养人性别(男填1,女填2)")
    private String firstGender;


    @ExcelProperty(value = "第一托养人身份证类型",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.PAPERS_TYPE)
    private Integer firstPapersType;

    @ExcelProperty(value = "第一托养人证件号")
    private String firstIdCard;

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

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

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

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

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



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

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

    @ExcelProperty("第二托养人性别(男填1,女填2)")
    private String secondGender;

    @ExcelProperty(value = "第二托养人身份证类型",converter = DictConvert.class)
    @DictFormat(DictTypeConstants.PAPERS_TYPE)
    private Integer secondPapersType;

    @ExcelProperty(value = "第二托养人证件号")
    private String secondIdCard;

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

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

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

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

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




    @ExcelProperty("错误原因")
    private String errorMsg;

}
