package com.njzscloud.supervisory.hsoa.pojo.param;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;


/**
 * 建筑垃圾处置运输订单主实体
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class PushProvincialSaveParam {

    /**
     * 处置场接收信息DTO
     */
    @JsonProperty("handleInfoDTO")
    private HandleInfo handleInfo;

    /**
     * 审批信息DTO
     */
    @JsonProperty("reviewInfoDTO")
    private ReviewInfo reviewInfo;

    /**
     * 运输订单基础信息DTO
     */
    @JsonProperty("transportOrderDTO")
    private TransportOrder transportOrder;

    /**
     * 运输订单记录DTO
     */
    @JsonProperty("transportOrderRecordDTO")
    private TransportOrderRecord transportOrderRecord;

    /**
     * 处置场接收信息DTO
     */
    @Getter
    @Setter
    @ToString
    @Accessors(chain = true)
    public static class HandleInfo {

        /**
         * 核准日期
         */
        private String approveDate;

        /**
         * 核准人姓名
         */
        private String approveUserName;

        /**
         * 创建时间
         */
        private LocalDateTime createTime;

        /**
         * 创建人
         */
        private String createrName;

        /**
         * 处置场编码
         */
        private String disposalSiteCode;

        /**
         * 处置场名称
         */
        private String disposalSiteName;

        /**
         * 处置工艺
         */
        private String handleCraft;

        /**
         * 处置许可证名称
         */
        private String handleLicenseName;

        /**
         * 处置许可证编码
         */
        private String handleLicenseNum;

        /**
         * 处置方式（回填、填埋、资源化利用、焚烧、其他）
         */
        private String handleMethod;

        /**
         * 处置场纬度
         */
        private String latitude;

        /**
         * 终端处置场处置许可证附件路径
         */
        @JsonProperty("HANDLE_LICENSE_FILE")
        private String handleLicenseFile;

        /**
         * 处置许可证结束有效期
         */
        private String licenseValidEndDate;

        /**
         * 处置许可证开始有效期
         */
        private String licenseValidStartDate;

        /**
         * 联系电话
         */
        private String linkPhone;

        /**
         * 处置场经度
         */
        private String longitude;

        /**
         * 批准(监督)单位名称
         */
        private String superviseUnitName;

        /**
         * 更新时间
         */
        private String updateTime;

        /**
         * 更新人
         */
        private String updaterName;

        /**
         * 终端处置场处置凭证附件路径（勘料照片）
         */

        @JsonProperty("HANDLE_VOUCHER_FILE")
        private String handleVoucherFile;

        /**
         * 重量（单位: 吨）
         */
        private String weight;
    }

    /**
     * 审批信息DTO
     */
    @Getter
    @Setter
    @ToString
    @Accessors(chain = true)
    public static class ReviewInfo {

        /**
         * 城管部门所属区域名称
         */
        private String cgAreaName;

        /**
         * 城管部门审批意见
         */
        private String cgReviewOpinion;

        /**
         * 城管部门审批时间
         */
        private LocalDateTime cgReviewTime;

        /**
         * 城管部门审批人所属部门编码
         */
        private String cgUnitCode;

        /**
         * 城管部门审批人所属部门名称
         */
        private String cgUnitName;

        /**
         * 城管部门审批人id
         */
        private String cgUserId;

        /**
         * 城管部门审批人名称
         */
        private String cgUserName;

        /**
         * 创建时间
         */
        private LocalDateTime createTime;

        /**
         * 创建人
         */
        private String createrName;

        /**
         * 交通部门所属区域名称
         */
        private String jtAreaName;

        /**
         * 交通部门审批意见
         */
        private String jtReviewOpinion;

        /**
         * 交通部门审批时间
         */
        private String jtReviewTime;

        /**
         * 交通部门审批人所属部门编码
         */
        private String jtUnitCode;

        /**
         * 交通部门审批人所属部门名称
         */
        private String jtUnitName;

        /**
         * 交通部门审批人id
         */
        private String jtUserId;

        /**
         * 交通部门审批人名称
         */
        private String jtUserName;

        /**
         * 交通部门审批附件路径
         */
        @JsonProperty("JT_REVIEW_FILE")
        private String jtReviewFile;

        /**
         * 城管部门审批附件路径
         */
        @JsonProperty("CG_REVIEW_FILE")
        private String cgReviewFile;

        /**
         * 更新时间
         */
        private String updateTime;

        /**
         * 更新人
         */
        private String updaterName;
    }

    /**
     * 运输订单基础信息DTO
     */
    @Getter
    @Setter
    @ToString
    @Accessors(chain = true)
    public static class TransportOrder {

        /**
         * 地址
         */
        private String address;

        /**
         * 预约结束日期（yyyy-mm-dd）
         */
        private String appointmentEndDate;

        /**
         * 预约结束时间（hh: mm）
         */
        private String appointmentEndTime;

        /**
         * 预约开始日期（yyyy-mm-dd）
         */
        private String appointmentStartDate;

        /**
         * 预约开始时间（hh: mm）
         */
        private String appointmentStartTime;

        /**
         * 所属区编码
         */
        private String areaCode;

        /**
         * 所属区名称
         */
        private String areaName;

        /**
         * 所属市编码
         */
        private String cityCode;

        /**
         * 所属市名称
         */
        private String cityName;

        /**
         * 建设工程(用地)规划许可证号
         */
        private String constructionLandLicenseNum;

        /**
         * 建设单位统一社会信用代码
         */
        private String constructionUnitCreditCode;

        /**
         * 建设单位负责人
         */
        private String constructionUnitDirector;

        /**
         * 建设单位名称
         */
        private String constructionUnitName;

        /**
         * 建设单位联系电话
         */
        private String constructionUnitPhone;

        /**
         * 创建时间
         */
        private String createTime;

        /**
         * 创建人
         */
        private String createrName;

        /**
         * 排放源（产废单位）
         */
        private String emissionSource;

        /**
         * 清运企业联系人
         */
        private String enterpriseHead;

        /**
         * 预估重量（单位: 吨）
         */
        private String estimateWeight;

        /**
         * 垃圾产出的许可证名称
         */
        private String garbageProductionLicenseName;

        /**
         * 垃圾产出的许可证编号
         */
        private String garbageProductionLicenseNum;

        /**
         * 垃圾现场照片路径（多个路径用逗号分隔）
         */
        @JsonProperty("GARBAGE_SCENE_FILE")
        private String garbageSceneFile;

        /**
         * 清运企业联系人电话
         */
        private String headContact;

        /**
         * 纬度（产废单位）
         */
        private String latitude;

        /**
         * 经度（产废单位）
         */
        private String longitude;

        /**
         * 订单编号（新的编号方式）
         */
        private String orderNumber;

        /**
         * 订单状态（90: 已处置（终端处置场提交处置表单，整个流程结束））
         */
        private Integer orderStatus;

        /**
         * 订单类型（1: 个人居民 2: 居委物业 3: 沿街商铺 4: 建筑工地）
         */
        private Integer orderType;

        /**
         * 工程名称（项目名称）
         */
        private String projectName;

        /**
         * 清运企业注册地址
         */
        private String registerAddress;

        /**
         * 建筑工地清运预约现场联系人
         */
        private String sceneLinkName;

        /**
         * 建筑工地清运预约现场联系电话
         */
        private String sceneLinkPhone;

        /**
         * 所属街道编码
         */
        private String streetCode;

        /**
         * 所属街道名称
         */
        private String streetName;

        /**
         * 清运企业id
         */
        private String transportationEnterpriseId;

        /**
         * 清运企业名称
         */
        private String transportationEnterpriseName;

        /**
         * 垃圾类型编码（1: 工程渣土 2: 工程泥浆 3: 工程垃圾 4: 拆除垃圾 5: 装修垃圾）
         */
        private String wasteTypeCode;

        /**
         * 垃圾类型名称（1: 工程渣土 2: 工程泥浆 3: 工程垃圾 4: 拆除垃圾 5: 装修垃圾）
         */
        private String wasteTypeName;

        /**
         * 施工单位统一社会信用代码
         */
        private String workUnitCreditCode;

        /**
         * 施工单位负责人
         */
        private String workUnitDirector;

        /**
         * 施工单位名称
         */
        private String workUnitName;

        /**
         * 施工单位联系电话
         */
        private String workUnitPhone;
    }

    /**
     * 运输订单记录DTO
     */
    @Getter
    @Setter
    @ToString
    @Accessors(chain = true)
    public static class TransportOrderRecord {

        /**
         * 消纳单位名称
         */
        private String absorptionUnitName;

        /**
         * 审批状态（3: 已审批）
         */
        private Integer auditStatus;

        /**
         * 运输车辆车牌号
         */
        private String carNo;

        /**
         * 消纳单位类型（1: 中转站  3: 资源利用企业 4: 消纳场）
         */
        private String absorptionUnitType;

        /**
         * 消纳单位编码
         */
        private String absorptionUnitCode;

        /**
         * 创建时间（yyyy-MM-dd HH: mm: ss）
         */
        private String createTime;

        /**
         * 运输司机驾驶证号
         */
        private String driverLicense;

        /**
         * 企业联系人
         */
        private String enterpriseHead;

        /**
         * 企业运输的许可证名称
         */
        private String enterpriseTransportLicenseName;

        /**
         * 企业运输的许可证编号
         */
        private String enterpriseTransportLicenseNum;

        /**
         * 预估重量（单位: 吨）
         */
        private String estimateWeight;

        /**
         * 司机实际结束运输时间
         */
        private LocalDateTime haulageEndTimeStr;

        /**
         * 司机实际开始运输时间
         */
        private LocalDateTime haulageStartTimeStr;

        /**
         * 联系人电话
         */
        private String headContact;

        /**
         * 运输许可证照片路径
         */
        @JsonProperty("TRANS_LICENSE_FILE")
        private String transLicenseFile;

        /**
         * 垃圾装车前附件路径
         */
        @JsonProperty("GARBAGE_LOAD_BEFORE_FILE")
        private String garbageLoadBeforeFile;

        /**
         * 垃圾装车后附件路径
         */
        @JsonProperty("GARBAGE_LOAD_AFTER_FILE")
        private String garbageLoadAfterFile;

        /**
         * 运输许可证有效期起止（格式：yyyy-MM-dd-yyyy-MM-dd）
         */
        private String licenseValidityPeriodDateRange;

        /**
         * 企业运输的许可证结束有效期
         */
        private String licenseValidityPeriodEndDate;

        /**
         * 企业运输的许可证开始有效期
         */
        private String licenseValidityPeriodStartDate;

        /**
         * 运输路线
         */
        private String route;

        /**
         * 批准(监督)单位名称
         */
        private String superviseUnitName;

        /**
         * 运输日期范围（格式：yyyy-MM-dd-yyyy-MM-dd）
         */
        private String transportDateRange;

        /**
         * 运输结束日期
         */
        private String transportEndDate;

        /**
         * 运输开始日期
         */
        private String transportStartDate;

        /**
         * 清运企业id
         */
        private String transportationEnterpriseId;

        /**
         * 清运企业名称
         */
        private String transportationEnterpriseName;

        /**
         * 修改时间
         */
        private String updateTime;

        /**
         * 修改人名称
         */
        private String updaterName;
    }
}
