package com.mosty.sjzx.service.impl;

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

import java.util.List;

@NoArgsConstructor
@Data
public class Test {


    @JsonProperty("DispositionNotificationListObject")
    private DispositionNotificationListObjectDTO dispositionNotificationListObject;

    @NoArgsConstructor
    @Data
    public static class DispositionNotificationListObjectDTO {
        @JsonProperty("DispositionNotificationObject")
        private List<DispositionNotificationObjectDTO> dispositionNotificationObject;

        @NoArgsConstructor
        @Data
        public static class DispositionNotificationObjectDTO {
            @JsonProperty("PriorityLevel")
            private Integer priorityLevel;
            @JsonProperty("NotificationID")
            private String notificationID;
            @JsonProperty("DispositionID")
            private String dispositionID;
            @JsonProperty("ApplicantOrg")
            private String applicantOrg;
            @JsonProperty("DispositionFaceObject")
            private DispositionFaceObjectDTO dispositionFaceObject;
            @JsonProperty("TriggerTime")
            private String triggerTime;
            @JsonProperty("Title")
            private String title;
            @JsonProperty("Reason")
            private String reason;
            @JsonProperty("FaceObject")
            private FaceObjectDTO faceObject;

            @NoArgsConstructor
            @Data
            public static class DispositionFaceObjectDTO {
                @JsonProperty("FaceID")
                private String faceID;
                @JsonProperty("DepotId")
                private String depotId;
                @JsonProperty("DepotName")
                private String depotName;
                @JsonProperty("GenderCode")
                private Integer genderCode;
                @JsonProperty("InfoKind")
                private Integer infoKind;
                @JsonProperty("SourceID")
                private String sourceID;
                @JsonProperty("SubImageList")
                private SubImageListDTO subImageList;
                @JsonProperty("DepotType")
                private String depotType;
                @JsonProperty("Sid")
                private String sid;

                @NoArgsConstructor
                @Data
                public static class SubImageListDTO {
                    @JsonProperty("SubImageInfoObject")
                    private List<SubImageInfoObjectDTO> subImageInfoObject;

                    @NoArgsConstructor
                    @Data
                    public static class SubImageInfoObjectDTO {
                        @JsonProperty("Type")
                        private Integer type;
                        @JsonProperty("StoragePath")
                        private String storagePath;
                        @JsonProperty("EventSort")
                        private Integer eventSort;
                        @JsonProperty("Data")
                        private String data;
                        @JsonProperty("FileFormat")
                        private String fileFormat;
                    }
                }
            }

            @NoArgsConstructor
            @Data
            public static class FaceObjectDTO {
                @JsonProperty("FaceAppearTime")
                private String faceAppearTime;
                @JsonProperty("Latitude")
                private Double latitude;
                @JsonProperty("SubImageList")
                private SubImageListDTO subImageList;
                @JsonProperty("CapStyle")
                private String capStyle;
                @JsonProperty("IsSuspectedTerrorist")
                private Integer isSuspectedTerrorist;
                @JsonProperty("RightBtmY")
                private Integer rightBtmY;
                @JsonProperty("IsCriminalInvolved")
                private Integer isCriminalInvolved;
                @JsonProperty("RightBtmX")
                private Integer rightBtmX;
                @JsonProperty("IsSuspiciousPerson")
                private Integer isSuspiciousPerson;
                @JsonProperty("Similaritydegree")
                private Double similaritydegree;
                @JsonProperty("LocationMarkTime")
                private String locationMarkTime;
                @JsonProperty("Age")
                private Integer age;
                @JsonProperty("FaceID")
                private String faceID;
                @JsonProperty("GenderCode")
                private String genderCode;
                @JsonProperty("EthicCode")
                private String ethicCode;
                @JsonProperty("AgeLowerLimit")
                private Integer ageLowerLimit;
                @JsonProperty("Attitude")
                private Integer attitude;
                @JsonProperty("QualityScore")
                private Double qualityScore;
                @JsonProperty("DeviceID")
                private String deviceID;
                @JsonProperty("SourceID")
                private String sourceID;
                @JsonProperty("IsVictim")
                private Integer isVictim;
                @JsonProperty("LeftTopY")
                private Integer leftTopY;
                @JsonProperty("LeftTopX")
                private Integer leftTopX;
                @JsonProperty("Longitude")
                private Double longitude;
                @JsonProperty("FaceDisAppearTime")
                private String faceDisAppearTime;
                @JsonProperty("IsDriver")
                private Integer isDriver;
                @JsonProperty("IsForeigner")
                private Integer isForeigner;
                @JsonProperty("InfoKind")
                private Integer infoKind;
                @JsonProperty("AgeUpLimit")
                private Integer ageUpLimit;
                @JsonProperty("GlassStyle")
                private String glassStyle;
                @JsonProperty("MaskStyle")
                private Integer maskStyle;
                @JsonProperty("CoatColor")
                private String coatColor;
                @JsonProperty("ShotTime")
                private String shotTime;
                @JsonProperty("IsDetainees")
                private Integer isDetainees;
                @JsonProperty("DeviceName")
                private String deviceName;

                @NoArgsConstructor
                @Data
                public static class SubImageListDTO {
                    @JsonProperty("SubImageInfoObject")
                    private List<SubImageInfoObjectDTO> subImageInfoObject;

                    @NoArgsConstructor
                    @Data
                    public static class SubImageInfoObjectDTO {
                        @JsonProperty("Type")
                        private String type;
                        @JsonProperty("StoragePath")
                        private String storagePath;
                        @JsonProperty("DeviceID")
                        private String deviceID;
                        @JsonProperty("ImageID")
                        private String imageID;
                        @JsonProperty("EventSort")
                        private Integer eventSort;
                        @JsonProperty("Data")
                        private String data;
                        @JsonProperty("Height")
                        private Integer height;
                        @JsonProperty("ShotTime")
                        private String shotTime;
                        @JsonProperty("FileFormat")
                        private String fileFormat;
                        @JsonProperty("Width")
                        private Integer width;
                    }
                }
            }
        }
    }
}
