package com.ruoyi.lsfx.domain.response;

import lombok.Data;
import java.util.List;
import java.util.Map;

/**
 * 上传文件响应(完整版,匹配新文档2.5节)
 */
@Data
public class UploadFileResponse {

    /** 返回码 */
    private String code;

    /** 状态 */
    private String status;

    /** 成功标识 */
    private Boolean successResponse;

    /** 响应数据 */
    private UploadData data;

    @Data
    public static class UploadData {
        /** 账号映射信息(key为logId) */
        private Map<String, List<AccountInfo>> accountsOfLog;

        /** 上传日志列表 */
        private List<UploadLogItem> uploadLogList;

        /** 上传状态 */
        private Integer uploadStatus;
    }

    @Data
    public static class AccountInfo {
        /** 所属银行 */
        private String bank;

        /** 账号名称 */
        private String accountName;

        /** 账号 */
        private String accountNo;

        /** 币种 */
        private String currency;
    }

    @Data
    public static class UploadLogItem {
        /** 账号列表 */
        private List<String> accountNoList;

        /** 银行名称 */
        private String bankName;

        /** 数据类型信息 [格式, 分隔符] */
        private List<String> dataTypeInfo;

        /** 下载文件名 */
        private String downloadFileName;

        /** 企业名称列表 */
        private List<String> enterpriseNameList;

        /** 文件包ID */
        private String filePackageId;

        /** 文件大小(字节) */
        private Long fileSize;

        /** 上传用户ID */
        private Integer fileUploadBy;

        /** 上传用户名 */
        private String fileUploadByUserName;

        /** 上传时间 */
        private String fileUploadTime;

        /** 企业ID */
        private Integer leId;

        /** 文件ID(重要) */
        private Integer logId;

        /** 日志元数据 */
        private String logMeta;

        /** 日志类型 */
        private String logType;

        /** 登录企业ID */
        private Integer loginLeId;

        /** 真实银行名称 */
        private String realBankName;

        /** 行数 */
        private Integer rows;

        /** 来源 */
        private String source;

        /** 状态(-5表示成功) */
        private Integer status;

        /** 模板名称 */
        private String templateName;

        /** 总记录数 */
        private Integer totalRecords;

        /** 交易结束日期ID */
        private Integer trxDateEndId;

        /** 交易开始日期ID */
        private Integer trxDateStartId;

        /** 上传文件名 */
        private String uploadFileName;

        /** 上传状态描述 */
        private String uploadStatusDesc;
    }
}
