package com.jiayue.ipfcst.fileupload.util;

import ch.qos.logback.classic.Logger;
import com.jiayue.ipfcst.common.data.entity.UploadFileLog;
import com.jiayue.ipfcst.fileupload.IEC102.NettyParent;
import com.jiayue.ipfcst.fileupload.dto.Validate102Dto;
import lombok.extern.slf4j.Slf4j;

import java.util.*;

/**
 * 上报文件公用变量
 *
 * @author xsl
 * @version 3.0
 */
@Slf4j
public class FileConstant {
  /*待上报文件的缓存变量，Map<上报对象编号-文件类型-文件名,文件本地路径及文件名>*/
  public static Map<String, UploadFileLog> readyUploadFileMap = new Hashtable<String, UploadFileLog>();
  /*文件上报次数累计的缓存变量，Map<上报对象编号-文件类型-文件名,上报次数>*/
  public static Map<String, FileMutableInteger> uploadCountMap = new Hashtable<String, FileMutableInteger>();
  /*文件上报次数累计的缓存变量，山东专用>*/
  public static Map<String, FileMutableInteger> sdUploadCountMap = new Hashtable<String, FileMutableInteger>();
  /*文件内容缓存变量，Map<上报对象编号-文件类型-文件名,16进制文件内容>*/
  public static Map<String, String> fileContentMap = new Hashtable<String, String>();
  /*文件内容及内容位置缓存变量，Map<上报对象编号-文件类型-文件名,map<16进制文件内容,内容在原来来文件的位置>>*/
  public static Map<String, Map<String,String>> fileContentByIdxMap = new Hashtable<String, Map<String,String>>();
  /*netty服务实例集合<通道主键ID，netty服务端实例>*/
  public static Map<String, NettyParent> nettyInstanceMap = new Hashtable<String,NettyParent>();
  /*通道状态集合<上报对象id-通道id，通讯状态> 通讯状态：1通0不通*/
  public static Map<String,String> channelStatusMap = new Hashtable<String,String>();
  /*下载文件内容缓存变量，Map<上报对象编号-文件类型,16进制文件内容>*/
  public static Map<String, String> downLoadFileContentMap = new Hashtable<String, String>();
  public static Map<String, Logger> uploadLogMap = new HashMap<>();
  /*验证对方报文回复正确性<通道主键ID，下一次交互的传输原因>*/
  public static Map<String,Validate102Dto> validateMessage = new HashMap<>();
  /*遇到不正常回复时，将文件暂时放入再次上报变量，Map<上报对象编号-文件类型-文件名,"">*/
  public static Map<String, String> againUploadFileMap = new Hashtable<String, String>();
  /*文件对应的生成时间，Map<上报对象编号-文件类型-文件名,日志表主键ID>*/
  public static Map<String, Integer> fileShouldMomentMap = new Hashtable<String, Integer>();
  /*文件包次数Map<上报对象编号-文件类型-文件名,包次数>*/
  public static Map<String, String> filePackageNumMap = new Hashtable<String, String>();
  /*保存102哪个通道在连接Map<Ip,端口>*/
  public static Map<String, Integer> channelIpPortMap = new Hashtable<String, Integer>();
  /*通道状态集合<上报对象id，状态> 通讯状态：1通0不通*/
  public static Map<String,Long> channelTimeMap = new Hashtable<String,Long>();
}
