package com.org.web.person.domain;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.org.system.entity.BaseEntity;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 供养人员
 */
@Data
@Accessors(chain = true)
@TableName(value ="bc_person_support")
public class BcPersonSupport extends BaseEntity {

    /** 用户ID */
    private Long id;

    /**
     * 姓名
     */
    @NotEmpty(message = "姓名不能为空")
    private String name;

    /**
     * 身份证号码
     */
    @NotEmpty(message = "身份证不能为空")
    private String idCardNo;

    /**
     * 性别 1-男 0-女 2-未知
     */
    private Integer sex;
    public Integer getSex() {
        if (StrUtil.isEmptyIfStr(idCardNo)) return null;
        return IdcardUtil.getGenderByIdCard(idCardNo);
    }

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 户籍地址
     */
    private String residenceAddress;

    /**
     * 所在村 数据字典0040
     */
    private Integer village;

    /**
     * 归属村组
     */
    private String residenceVillage;

    /**
     * 人员类型 1-供养人员 2-医养结合护理人员
     */
    private Integer type;

    /**
     * 供养方式 数据字典0020
     */
    private Integer supportType;

    /**
     * 护理等级 数据字典0021
     */
    private Integer nursingLevel;

    /**
     * 是否在院 1是 0否
     */
    private Integer isInHospital;

    /**
     * 住院信息
     */
    private String hospitalMessage;

    /**
     * 亲属联系方式
     */
    private String relativeContact;

    /**
     * 是否残疾 1-是 0-否
     */
    private Integer ifDisabled;

    /**
     * 残疾等级
     */
    private String disabilityLevel;

    /**
     * 自理情况登记
     */
    private String selfCare;

    /**
     * 是否精准扶贫户 1-是 0-否
     */
    private Integer ifHelpPoor;

    /**
     * 特困供养金发放金额-合计金额
     */
    private BigDecimal hardshipAllowanceTotal;

    /**
     * 特困供养金发放金额-基本生活补助金额
     */
    private BigDecimal hardshipAllowanceBasic;

    /**
     * 特困供养金发放金额-护理照料补贴金额
     */
    private BigDecimal hardshipAllowanceCare;

    /**
     * 补贴发放账户
     */
    private String allowanceAccount;

    /**
     * 纳入时间
     */
    @JsonFormat(pattern = DatePattern.NORM_DATE_PATTERN, timezone = "GMT+8")
    private Date bringTime;

    /** ---------------- 详细信息 ------------------ */

    /**
     * 婚姻状况 数据字典0030 1-未婚 2-已婚 3-离异 99-未知
     */
    private Integer maritalStatus;

    /**
     * 身体状况
     */
    private String health;

    /**
     * 辅具使用情况
     */
    private String deviceUsage;

    /**
     * 用药情况
     */
    private String medication;

    /**
     * 疾病史
     */
    private String diseaseHistory;

    /**
     * 过敏史
     */
    private String allergyHistory;

    /**
     * 精神状态
     */
    private String mentality;

    /**
     * 饮食习惯
     */
    private String eatingHabits;

    /**
     * 运动习惯
     */
    private String exerciseHabits;

    /**
     * 睡眠情况
     */
    private String sleepQuality;

    /**
     * 服药情况
     */
    private String medicationStatus;

    /**
     * 卫生情况
     */
    private String hygiene;

    /**
     * 喜好的文艺、体育等方面的活动
     */
    private String favoriteActivity;

    /**
     * 共建共享志愿活动记录
     */
    private String activityRecord;

    /**
     * 医嘱
     */
    private String doctorAdvice;

    /**
     * 特殊说明
     */
    private String specialInstruction;


    /** ---------------- 家庭成员 ------------------ */

    @TableField(exist = false)
    private List<BcPersonFamily> familyList = new ArrayList<>();

    @TableField(exist = false)
    private Integer age;

    /**
     * 年龄区间 1:50岁以下 2:50-59 3:60-69 4:70-79 5:80-89 6:90岁以上
     */
    @TableField(exist = false)
    private Integer ageRange;

    @TableField(exist = false)
    private Integer gender;

    // 居住房间
    @TableField(exist = false)
    private String roomBed;

    @TableField(exist = false)
    private String villageName;

    @TableField(exist = false)
    private String nursingLevelName;

    @TableField(exist = false)
    private String supportTypeName;



    /**
     * 房间id
     */
    @TableField(exist = false)
    private Long roomId;

    /**
     * 床位id
     */
    @TableField(exist = false)
    private Long bedId;
}
