package com.njcn.advance.pojo.dto.waveAnalysis;

import java.util.LinkedList;
import java.util.List;

public class AnalyWaveModel {

    /********************************
     * 解析Comtrate文件相关实体类
     * @author yexb 转ww C#代码
     **********************************/

    // 模拟量通道记录类
    public static class tagOneChannleCfg {
        // 通道序号
        public int nIndex;
        // 通道名称
        public String szChannleName;
        // 相位名称
        public String szPhasicName;
        // 监视的通道名称
        public String szMonitoredChannleName;
        // 通道的单位
        public String szUnitName;
        // 通道的系数
        public float fCoefficent;
        // 通道的便宜量
        public float fOffset;
        // 起始采样时间的偏移量
        public float fTimeOffset;
        // 采样值的最小值
        public int nMin;
        // 采样值的最大值
        public int nMax;
        // 一次变比
        public float fPrimary;
        // 二次变比
        public float fSecondary;
        // 一次值还是二次值标志
        public String szValueType;
    }

    // 数字量通道记录类
    public static class tagOneChannleCfg_digital {
        // 通道序号
        public int nIndex;
        // 通道名称
        public String szChannleName;
        // 相位名称
        public String szPhasicName;
        // 监视的通道名称
        public String szMonitoredChannleName;
        // 通道的单位
        public int Initial;

    }

    // 配置文件总类
    public static class tagComtradeCfg {
        public int nChannelNum;
        public int nPhasic;// 模拟量通道的个数 yexibao 2020-12-15
        public int nAnalogNum;// 模拟量通道的个数 WW 2013-05-15
        public int nDigitalNum;// 数字量通道的个数 WW 2013-05-15
        public List<tagOneChannleCfg> OneChannleCfg;
        public List<tagOneChannleCfg_digital> OneChannleCfgDig;

        public tagComtradeCfg() {
            OneChannleCfg = new LinkedList<tagOneChannleCfg>();
            OneChannleCfgDig = new LinkedList<tagOneChannleCfg_digital>();
        }
    }

    public static class tagOneRate{
        // 1秒钟内的采样点数
        public long nOneSample;
        // 总采样点数
        public long nSampleNum;
    }

    // 采样总结构
    public static class tagRates {
        public int nRates;
        public List<tagOneRate> OneRate;

        public tagRates() {
            OneRate = new LinkedList<tagOneRate>();
        }
    }

    // 采样值结构
    public static class tagOneValue {
        // 数据点时间
        public String szTime;
        // 数据点序号
        public int nIndex;
        // int nValueNum; WW 2013-05-15
        // 模拟量数据个数
        public int nAnalogValueNum;
        // 数字量数据个数
        public int nDigitalValueNum;
        // 数据区
        // float fValue[8];
        public List<Float> fValue;// WW 2013-05-15 原来的8通道也是仅考虑了单路的情况，如果遇到多路这里会超出
        public List<Byte> DigitalValue;// WW 2013-05-15

        public tagOneValue() {
            fValue = new LinkedList<Float>();
            DigitalValue = new LinkedList<Byte>();
        }
    }

    // 采样值总结构
    public static class tagValue {
        // 数据个数
        public int nValueNum;
        // 数据区
        public List<tagOneValue> OneValueList;

        public tagValue() {
            OneValueList = new LinkedList<tagOneValue>();
        }
    }

    public static class tagWave {
        // 标识 1-二次值的事件波形  2-二次值的RMS  3-一次值的事件波形  4-一次值的RMS
        //标识 5-二次值的事件波形  6-二次值的RMS  7-一次值的事件波形  8-一次值的RMS
        private int type;
        // 相别
        private int phaseType;// 0:A相；1：B相；2：c相
        // X坐标值
        private int xvalue;
        // y坐标值
        private float yvalue;

        public int getType() {
            return type;
        }

        public void setType(int type) {
            this.type = type;
        }

        public int getPhaseType() {
            return phaseType;
        }

        public void setPhaseType(int phaseType) {
            this.phaseType = phaseType;
        }

        public int getXvalue() {
            return xvalue;
        }

        public void setXvalue(int xvalue) {
            this.xvalue = xvalue;
        }

        public float getYvalue() {
            return yvalue;
        }

        public void setYvalue(float yvalue) {
            this.yvalue = yvalue;
        }
    }
    //增加返回值描述
    public static class tagDataValue {
        //波形对应的标题
        private List<String> tmpWaveTitle;
        //波形对应的值
        private List<List<Float>> listWaveData;
        //波形对应的相别数量
        private int iPhasic;

        public List<String> getTmpWaveTitle() {
            return tmpWaveTitle;
        }

        public void setTmpWaveTitle(List<String> tmpWaveTitle) {
            this.tmpWaveTitle = tmpWaveTitle;
        }

        public List<List<Float>> getListWaveData() {
            return listWaveData;
        }

        public void setListWaveData(List<List<Float>> listWaveData) {
            this.listWaveData = listWaveData;
        }

        public int getiPhasic() {
            return iPhasic;
        }

        public void setiPhasic(int iPhasic) {
            this.iPhasic = iPhasic;
        }
    }
}
