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


import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;


/**
 * https://console.bce.baidu.com/support/?_=1740219852952&timestamp=1740310422758#/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%2Fbusinesslicense_verification_detailed&method=post
 *
 *
 * 企业工商信息查询（高级版）
 *
 *
 * {
 *     "words_result_num": 18,
 *     "words_result": {
 *         "liquidation": {},
 *         "penalties": [
 *             {
 *                 "officename": "国家市场监督管理总局",
 *                 "penaltytype": "",
 *                 "remark": "",
 *                 "penaltydate": "2021-11-13 00:00:00",
 *                 "docno": "国市监处〔2021〕116号",
 *                 "publicdate": "",
 *                 "content": ""
 *             }
 *         ],
 *         "shixinitems": [],
 *         "originalname": [],
 *         "changes": [
 *             {
 *                 "changebefore": "21",
 *                 "changeafter": "",
 *                 "changefield": "营业期限",
 *                 "changedate": "2019-12-05 00:00:00"
 *             },
 *             {
 *                 "changebefore": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告。依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。",
 *                 "changeafter": "销售第三类医疗器械。开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品、医疗器械II类；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告；软件开发；销售第三类医疗器械以及依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。",
 *                 "changefield": "经营范围",
 *                 "changedate": "2019-02-11 00:00:00"
 *             },
 *             {
 *                 "changebefore": "1 向海龙 总经理",
 *                 "changeafter": "None",
 *                 "changefield": "董事（理事）、经理、监事",
 *                 "changedate": "2019-06-25 00:00:00"
 *             },
 *             {
 *                 "changebefore": "崔珊珊*,韦方",
 *                 "changeafter": "崔珊珊*,梁志祥",
 *                 "changefield": "董事（理事）、经理、监事",
 *                 "changedate": "2020-11-27 00:00:00"
 *             },
 *             {
 *                 "changebefore": "沈皓瑜",
 *                 "changeafter": "王湛",
 *                 "changefield": "法定代表人",
 *                 "changedate": "2011-07-28 00:00:00"
 *             },
 *             {
 *                 "changebefore": "1 王湛 总经理",
 *                 "changeafter": "1 向海龙 总经理",
 *                 "changefield": "董事（理事）、经理、监事",
 *                 "changedate": "2016-05-30 00:00:00"
 *             },
 *             {
 *                 "changebefore": "向海龙*",
 *                 "changeafter": "崔珊珊*,韦方",
 *                 "changefield": "董事（理事）、经理、监事",
 *                 "changedate": "2019-06-25 00:00:00"
 *             },
 *             {
 *                 "changebefore": "销售第三类医疗器械。开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品、医疗器械II类；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告；软件开发；销售第三类医疗器械以及依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。",
 *                 "changeafter": "销售第三类医疗器械。开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告；软件开发；技术开发、技术推广、技术转让；销售自产产品、医疗器械II类、电子产品、器件和元件、计算机、软件及辅助设备、灯具、五金交电、自行开发后的产品；计算机系统集成；委托加工生产通讯设备。销售第三类医疗器械以及依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。",
 *                 "changefield": "经营范围",
 *                 "changedate": "2019-12-05 00:00:00"
 *             },
 *             {
 *                 "changebefore": "开发、生产计算机软件；自产产品的技术咨询、技术服务；承接计算机网络系统工程；销售自产产品；货物进出口；技术进出口；代理进出口。",
 *                 "changeafter": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品；货物进出口；技术进出口；代理进出口。（未取得行政许可的项目除外）",
 *                 "changefield": "经营范围",
 *                 "changedate": "2012-07-11 00:00:00"
 *             },
 *             {
 *                 "changebefore": "",
 *                 "changeafter": "",
 *                 "changefield": "营业期限",
 *                 "changedate": "2019-12-05 00:00:00"
 *             },
 *             {
 *                 "changebefore": "开发、生产计算机软件；自产产品的技术咨询、技术服务；承接计算机网络系统工程；销售自产产品。",
 *                 "changeafter": "开发、生产计算机软件；自产产品的技术咨询、技术服务；承接计算机网络系统工程；销售自产产品；货物进出口；技术进出口；代理进出口。",
 *                 "changefield": "经营范围",
 *                 "changedate": "2011-07-28 00:00:00"
 *             },
 *             {
 *                 "changebefore": "1 沈皓瑜 总经理",
 *                 "changeafter": "1 王湛 总经理",
 *                 "changefield": "董事（理事）、经理、监事",
 *                 "changedate": "2011-07-28 00:00:00"
 *             },
 *             {
 *                 "changebefore": "王湛*",
 *                 "changeafter": "向海龙*",
 *                 "changefield": "董事（理事）、经理、监事",
 *                 "changedate": "2016-05-30 00:00:00"
 *             },
 *             {
 *                 "changebefore": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告。（依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。）",
 *                 "changeafter": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品、医疗器械II类；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告；软件开发；销售第三类医疗器械。（销售第三类医疗器械以及依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。）",
 *                 "changefield": "经营范围",
 *                 "changedate": "2019-02-11 00:00:00"
 *             },
 *             {
 *                 "changebefore": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品；货物进出口；技术进出口；代理进出口。（依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。）",
 *                 "changeafter": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告。（依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。）",
 *                 "changefield": "经营范围",
 *                 "changedate": "2016-08-26 00:00:00"
 *             },
 *             {
 *                 "changebefore": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品、医疗器械II类；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告；软件开发；销售第三类医疗器械。（销售第三类医疗器械以及依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。）",
 *                 "changeafter": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告；软件开发；技术开发、技术推广、技术转让；销售自产产品、医疗器械II类、电子产品、器件和元件、计算机、软件及辅助设备、灯具、五金交电、自行开发后的产品；计算机系统集成；委托加工生产通讯设备；销售第三类医疗器械。（销售第三类医疗器械以及依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。）",
 *                 "changefield": "经营范围",
 *                 "changedate": "2019-12-05 00:00:00"
 *             },
 *             {
 *                 "changebefore": "王湛",
 *                 "changeafter": "向海龙",
 *                 "changefield": "法定代表人",
 *                 "changedate": "2016-05-30 00:00:00"
 *             },
 *             {
 *                 "changebefore": "1 向海龙 总经理",
 *                 "changeafter": "None",
 *                 "changefield": "董事（理事）、经理、监事",
 *                 "changedate": "2019-06-25 00:00:00"
 *             },
 *             {
 *                 "changebefore": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品；货物进出口；技术进出口；代理进出口。依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。",
 *                 "changeafter": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；销售自产产品；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告。依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动。",
 *                 "changefield": "经营范围",
 *                 "changedate": "2016-08-26 00:00:00"
 *             }
 *         ],
 *         "industry": {
 *             "industry": "信息传输、软件和信息技术服务业",
 *             "subindustry": "互联网和相关服务"
 *         },
 *         "branches": [
 *             {
 *                 "companycode": "",
 *                 "companyname": "百度在线网络技术（北京）有限公司天津和平区分公司",
 *                 "authority": "天津市市场监督管理委员会",
 *                 "legalperson": "郭丽霞",
 *                 "creditno": "91120000MA06X3RTXX"
 *             }
 *         ],
 *         "exceptions": [],
 *         "mpledges": [],
 *         "spotchecks": [
 *             {
 *                 "date": "2017-10-22 00:00:00",
 *                 "no": "1",
 *                 "consequence": "正常",
 *                 "remark": "",
 *                 "type": "抽查",
 *                 "executiveorg": "北京市工商行政管理局海淀分局"
 *             }
 *         ],
 *         "partners": [
 *             {
 *                 "shoulddate": "2019-12-05 00:00:00",
 *                 "stockname": "百度控股有限公司",
 *                 "investtype": "货币",
 *                 "capidate": "",
 *                 "stocktype": "企业法人",
 *                 "stockrealcapital": "",
 *                 "stockcapital": "4520.0",
 *                 "investname": "",
 *                 "stockpercent": "1.0000"
 *             }
 *         ],
 *         "zhixingitems": [],
 *         "permissions": [
 *             {
 *                 "province": "",
 *                 "name": "高新技术企业认定证书",
 *                 "liandate": "",
 *                 "caseno": ""
 *             }
 *         ],
 *         "contactinfo": {
 *             "website": [],
 *             "phonenumber": "010-59928888",
 *             "email": "service-center@baidu.com"
 *         },
 *         "pledges": [],
 *         "employees": [
 *             {
 *                 "position": "总经理,执行董事",
 *                 "employeename": "崔珊珊"
 *             },
 *             {
 *                 "position": "监事",
 *                 "employeename": "梁志祥"
 *             }
 *         ],
 *         "base": {
 *             "isonstock": "0",
 *             "capital": "4520.000000万美元",
 *             "orgcode": "717743469",
 *             "stocknumber": "",
 *             "companystatus": "存续（在营、开业、在册）",
 *             "issuedate": "2020-11-27 00:00:00",
 *             "companyaddress": "北京市海淀区上地十街10号百度大厦三层",
 *             "keyno": "867bef5d172cbae117a5986883cf5c0e",
 *             "companycode": "110000410144104",
 *             "revokedate": "",
 *             "province": "BJ",
 *             "businessscope": "开发、生产计算机软件；提供相关技术咨询、技术服务、技术培训；承接计算机网络系统工程；货物进出口、技术进出口、代理进出口；设计、制作、代理、发布广告；软件开发；技术开发、技术推广、技术转让；销售自产产品、医疗器械II类、电子产品、器件和元件、计算机、软件及辅助设备、灯具、五金交电、自行开发后的产品；计算机系统集成；委托加工生产通讯设备；销售第三类医疗器械。（市场主体依法自主选择经营项目，开展经营活动；销售第三类医疗器械以及依法须经批准的项目，经相关部门批准后依批准的内容开展经营活动；不得从事国家和本市产业政策禁止和限制类项目的经营活动。）",
 *             "businessdatefrom": "2000-01-18 00:00:00",
 *             "stocktype": "",
 *             "companyname": "百度在线网络技术（北京）有限公司",
 *             "companytype": "有限责任公司(外国法人独资)",
 *             "authority": "北京市海淀区市场监督管理局",
 *             "legalperson": "崔珊珊",
 *             "creditno": "91110108717743469K",
 *             "establishdate": "2000-01-18 00:00:00",
 *             "businessdateto": ""
 *         },
 *         "taxcredititems": [
 *             {
 *                 "taxpayerno": "110108717743469",
 *                 "year": "2015",
 *                 "level": "A",
 *                 "taxpayername": "百度在线网络技术（北京）有限公司"
 *             },
 *
 *         ]
 *     },
 *     "log_id": 1585110490379986830
 * }
 *
 */
@NoArgsConstructor
@Data
public class BBusinesslicenseVerificationDetailedResp {


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

    @NoArgsConstructor
    @Data
    public static class WordsResultDTO {
        @JsonProperty("liquidation")
        private LiquidationDTO liquidation; // 公司清算信息
        @JsonProperty("penalties")
        private List<PenaltiesDTO> penalties;           // 行政处罚，每个数组可能包含多个object
        @JsonProperty("shixinitems")
        private List<?> shixinitems;            // 失信，每个数组可能包含多个object
        @JsonProperty("originalname")
        private List<?> originalname;           // 曾用名，每个数组可能包含多个object
        @JsonProperty("changes")
        private List<ChangesDTO> changes;           // 	企业变更
        @JsonProperty("industry")
        private IndustryDTO industry;
        @JsonProperty("branches")
        private List<BranchesDTO> branches;
        @JsonProperty("exceptions")
        private List<?> exceptions;
        @JsonProperty("mpledges")
        private List<?> mpledges;
        @JsonProperty("spotchecks")
        private List<SpotchecksDTO> spotchecks;
        @JsonProperty("partners")
        private List<PartnersDTO> partners;
        @JsonProperty("zhixingitems")
        private List<?> zhixingitems;
        @JsonProperty("permissions")
        private List<PermissionsDTO> permissions;
        @JsonProperty("contactinfo")
        private ContactinfoDTO contactinfo;
        @JsonProperty("pledges")
        private List<?> pledges;
        @JsonProperty("employees")
        private List<EmployeesDTO> employees;
        @JsonProperty("base")
        private BaseDTO base;
        @JsonProperty("taxcredititems")
        private List<TaxcredititemsDTO> taxcredititems;

        @NoArgsConstructor
        @Data
        public static class LiquidationDTO {
        }

        @NoArgsConstructor
        @Data
        public static class IndustryDTO {
            @JsonProperty("industry")
            private String industry;
            @JsonProperty("subindustry")
            private String subindustry;
        }

        @NoArgsConstructor
        @Data
        public static class ContactinfoDTO {
            @JsonProperty("website")
            private List<?> website;
            @JsonProperty("phonenumber")
            private String phonenumber;
            @JsonProperty("email")
            private String email;
        }

        @NoArgsConstructor
        @Data
        public static class BaseDTO {
            @JsonProperty("isonstock")
            private String isonstock;
            @JsonProperty("capital")
            private String capital;
            @JsonProperty("orgcode")
            private String orgcode;
            @JsonProperty("stocknumber")
            private String stocknumber;
            @JsonProperty("companystatus")
            private String companystatus;
            @JsonProperty("issuedate")
            private String issuedate;
            @JsonProperty("companyaddress")
            private String companyaddress;
            @JsonProperty("keyno")
            private String keyno;
            @JsonProperty("companycode")
            private String companycode;
            @JsonProperty("revokedate")
            private String revokedate;
            @JsonProperty("province")
            private String province;
            @JsonProperty("businessscope")
            private String businessscope;
            @JsonProperty("businessdatefrom")
            private String businessdatefrom;
            @JsonProperty("stocktype")
            private String stocktype;
            @JsonProperty("companyname")
            private String companyname;
            @JsonProperty("companytype")
            private String companytype;
            @JsonProperty("authority")
            private String authority;
            @JsonProperty("legalperson")
            private String legalperson;
            @JsonProperty("creditno")
            private String creditno;
            @JsonProperty("establishdate")
            private String establishdate;
            @JsonProperty("businessdateto")
            private String businessdateto;
        }

        @NoArgsConstructor
        @Data
        public static class PenaltiesDTO {
            @JsonProperty("officename")
            private String officename;
            @JsonProperty("penaltytype")
            private String penaltytype;
            @JsonProperty("remark")
            private String remark;
            @JsonProperty("penaltydate")
            private String penaltydate;
            @JsonProperty("docno")
            private String docno;
            @JsonProperty("publicdate")
            private String publicdate;
            @JsonProperty("content")
            private String content;
        }

        @NoArgsConstructor
        @Data
        public static class ChangesDTO {
            @JsonProperty("changebefore")
            private String changebefore;
            @JsonProperty("changeafter")
            private String changeafter;
            @JsonProperty("changefield")
            private String changefield;
            @JsonProperty("changedate")
            private String changedate;
        }

        @NoArgsConstructor
        @Data
        public static class BranchesDTO {
            @JsonProperty("companycode")
            private String companycode;
            @JsonProperty("companyname")
            private String companyname;
            @JsonProperty("authority")
            private String authority;
            @JsonProperty("legalperson")
            private String legalperson;
            @JsonProperty("creditno")
            private String creditno;
        }

        @NoArgsConstructor
        @Data
        public static class SpotchecksDTO {
            @JsonProperty("date")
            private String date;
            @JsonProperty("no")
            private String no;
            @JsonProperty("consequence")
            private String consequence;
            @JsonProperty("remark")
            private String remark;
            @JsonProperty("type")
            private String type;
            @JsonProperty("executiveorg")
            private String executiveorg;
        }

        @NoArgsConstructor
        @Data
        public static class PartnersDTO {
            @JsonProperty("shoulddate")
            private String shoulddate;
            @JsonProperty("stockname")
            private String stockname;
            @JsonProperty("investtype")
            private String investtype;
            @JsonProperty("capidate")
            private String capidate;
            @JsonProperty("stocktype")
            private String stocktype;
            @JsonProperty("stockrealcapital")
            private String stockrealcapital;
            @JsonProperty("stockcapital")
            private String stockcapital;
            @JsonProperty("investname")
            private String investname;
            @JsonProperty("stockpercent")
            private String stockpercent;
        }

        @NoArgsConstructor
        @Data
        public static class PermissionsDTO {
            @JsonProperty("province")
            private String province;
            @JsonProperty("name")
            private String name;
            @JsonProperty("liandate")
            private String liandate;
            @JsonProperty("caseno")
            private String caseno;
        }

        @NoArgsConstructor
        @Data
        public static class EmployeesDTO {
            @JsonProperty("position")
            private String position;
            @JsonProperty("employeename")
            private String employeename;
        }

        @NoArgsConstructor
        @Data
        public static class TaxcredititemsDTO {
            @JsonProperty("taxpayerno")
            private String taxpayerno;
            @JsonProperty("year")
            private String year;
            @JsonProperty("level")
            private String level;
            @JsonProperty("taxpayername")
            private String taxpayername;
        }
    }
}
