package com.heyu.api.baidu.response.certificate;


import com.fasterxml.jackson.annotation.JsonProperty;
import com.heyu.api.baidu.response.BBaseResp;
import lombok.Data;
import lombok.NoArgsConstructor;


/**
 * https://console.bce.baidu.com/support/?_=1740219852952&timestamp=1740309163756#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhousehold_register&method=post
 *
 *
 * 户口本识别
 *
 * {
 * 	"words_result": {
 * 		"Nation": {
 * 			"words": "汉族"
 * 		        },
 * 		"Sex": {
 * 			"words": "女"
 *        },
 * 		"Birthday": {
 * 			"words": "1994年7月27日"
 *        },
 * 		"Date": {
 * 			"words": "2017年7月27日"
 *        },
 * 		"BirthAddress": {
 * 			"words": "四川省"
 *        },
 * 		"Name": {
 * 			"words": "王燕"
 *        },
 *         "FormerName	": {
 * 			"words": "王佳"
 *        },
 * 		"HouseholdNum": {
 * 			"words": "000007670"
 *        },
 * 		"WWToCity": {
 * 			"words": "由久居"
 *        },
 * 		"WWHere": {
 * 			"words": "1994年07月27日因出生迁来"
 *        },
 * 		"CardNo": {
 * 			"words": "112102199407273123"
 *        },
 * 		"Education": {
 * 			"words": "初中毕业"
 *        },
 * 		"Relationship": {
 * 			"words": "独生女"
 *        },
 * 		"Height": {
 * 			"words": "170厘米"
 *        },
 *         "Career": {
 * 			"words": "无"
 *        },
 * 		"WorkAddress": {
 * 			"words": "无"
 *        },
 * 		"Hometown": {
 * 			"words": "四川省"
 *        }
 *         "OtherAddress": {
 * 			"words": "四川省乐山市"
 *        }
 *         "Belief": {
 * 			"words": "佛教"
 *        }
 *         "BloodType": {
 * 			"words": "A型"
 *        }
 *          "MaritalStatus": {
 * 			"words": "未婚"
 *        }
 *         "VeteranStatus": {
 * 			"words": "无"
 *        }    * 	},
 * 	"log_id": "1407164137607266304",
 * 	"words_result_num": 22
 * }
 */
@NoArgsConstructor
@Data
public class BBouseholdRegisterResp  extends BBaseResp {


    @JsonProperty("words_result")
    private WordsResultDTO wordsResult;
    @JsonProperty("log_id")
    private String logId;
    @JsonProperty("words_result_num")
    private Integer wordsResultNum;

    @NoArgsConstructor
    @Data
    public static class WordsResultDTO {
        @JsonProperty("Nation")
        private NationDTO nation;
        @JsonProperty("Sex")
        private SexDTO sex;
        @JsonProperty("Birthday")
        private BirthdayDTO birthday;
        @JsonProperty("Date")
        private DateDTO date;
        @JsonProperty("BirthAddress")
        private BirthAddressDTO birthAddress;
        @JsonProperty("Name")
        private NameDTO name;
        @JsonProperty("FormerName")
        private FormerNameDTO formerName;
        @JsonProperty("HouseholdNum")
        private HouseholdNumDTO householdNum;
        @JsonProperty("WWToCity")
        private WWToCityDTO wWToCity;
        @JsonProperty("WWHere")
        private WWHereDTO wWHere;
        @JsonProperty("CardNo")
        private CardNoDTO cardNo;
        @JsonProperty("Education")
        private EducationDTO education;
        @JsonProperty("Relationship")
        private RelationshipDTO relationship;
        @JsonProperty("Height")
        private HeightDTO height;
        @JsonProperty("Career")
        private CareerDTO career;
        @JsonProperty("WorkAddress")
        private WorkAddressDTO workAddress;
        @JsonProperty("Hometown")
        private HometownDTO hometown;
        @JsonProperty("OtherAddress")
        private OtherAddressDTO otherAddress;
        @JsonProperty("Belief")
        private BeliefDTO belief;
        @JsonProperty("BloodType")
        private BloodTypeDTO bloodType;
        @JsonProperty("MaritalStatus")
        private MaritalStatusDTO maritalStatus;
        @JsonProperty("VeteranStatus")
        private VeteranStatusDTO veteranStatus;

        @NoArgsConstructor
        @Data
        public static class NationDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class SexDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class BirthdayDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class DateDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class BirthAddressDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class NameDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class FormerNameDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class HouseholdNumDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class WWToCityDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class WWHereDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class CardNoDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class EducationDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class RelationshipDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class HeightDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class CareerDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class WorkAddressDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class HometownDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class OtherAddressDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class BeliefDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class BloodTypeDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class MaritalStatusDTO {
            @JsonProperty("words")
            private String words;
        }

        @NoArgsConstructor
        @Data
        public static class VeteranStatusDTO {
            @JsonProperty("words")
            private String words;
        }
    }
}
