package com.gyee.frame.service;

import com.gyee.frame.common.spring.Constant;
import com.gyee.frame.model.auto.WindTurbineTestingPointAi;
import com.gyee.frame.model.auto.WindTurbineTestingPointDi;
import com.gyee.frame.model.custom.PointData;
import com.gyee.frame.model.custom.PointVo;
import com.gyee.frame.util.IRealTimeDataBaseUtil;
import com.gyee.frame.util.RealTimeDataBaseFactory;
import com.gyee.frame.util.StringUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;

@Service
public class FaultPlaybackService  {

    @Resource
    private WindTurbineTestingPointAiService windTurbineTestingPointAiService;
    @Resource
    private WindTurbineTestingPointDiService windTurbineTestingPointDiService;


    IRealTimeDataBaseUtil realApiUtil = RealTimeDataBaseFactory.createRealTimeDataBase();

    private String SIMPLE_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    public Map<String, Object> getDataValue(String wtId, String[] pointids, Date stopTime) throws Exception {

        Map<String, Object> resultmap = new HashMap<>();

        Map<String, Object> namemap = new HashMap<>();

        Map<String, Object> timemap = new HashMap<>();

        Map<String, Object> datamap = new HashMap<>();

        SimpleDateFormat df = new SimpleDateFormat(SIMPLE_DATETIME_FORMAT);


        String[][] points = new String[pointids.length][20];


        Map<String, WindTurbineTestingPointDi> dimap = queryWindTurbineTestingPointDisByWtId(wtId);

        Calendar cal = Calendar.getInstance();
        cal.setTime(stopTime);
        cal.set(Calendar.SECOND, 0);
        cal.add(Calendar.MINUTE, -10);

        Date beginDate = cal.getTime();
        cal.add(Calendar.MINUTE, 12);
        Date endDate = cal.getTime();

        int length=36;//原来720
        String[] datetime = new String[length];

        Calendar  c = Calendar.getInstance();
        c.setTime(stopTime);
        for(int i=0;i<length;i++)
        {
            SimpleDateFormat df1 =new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");

            datetime[i] = df1.format(c.getTime());
            c.add(Calendar.SECOND,20);
        }

        for (int i = 0; i < pointids.length; i++) {


                if (dimap.containsKey(pointids[i])) {

                    WindTurbineTestingPointDi di = dimap.get(pointids[i]);
                    String[] value = new String[length];
                    if (null != di) {

                        List<PointData> ails = realApiUtil.getHistoryDatasSnap(di.getId(), beginDate.getTime() / 1000, endDate.getTime() / 1000, (long)length, 20L);
                        if(ails.size()==1){
                            for(int i1=0;i1<length;i1++){
                                ails.add(ails.get(0));
                            }
                        }
                        if (!ails.isEmpty()) {
                            for (int j = 0; j < length; j++) {
//                                cal.setTimeInMillis(ails.get(j).getPointTime() * 1000);
//                                SimpleDateFormat df1 =new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
//                                datetime[j] = df1.format(cal.getTime());
                                value[j] = String.valueOf(StringUtils.round(ails.get(j).getPointValueInDouble(), 2));
                            }
                        }
                        namemap.put(pointids[i], di.getName());
//                        timemap.put("datetime", datetime);
                        points[i]=value;
                    }
                }else
                {
                    WindTurbineTestingPointAi ai =windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(wtId, pointids[i]);
                    String[] value = new String[length];
                    if (null != ai && StringUtils.notEmp(ai.getId())) {

                        List<PointData> ails = realApiUtil.getHistoryDatasSnap(ai, beginDate.getTime() / 1000, endDate.getTime() / 1000, (long)length, 20L);

                        if (!ails.isEmpty()) {
                            for (int j = 0; j < length; j++) {
//                                SimpleDateFormat df1 =new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
//
//                                cal.setTimeInMillis(ails.get(j).getPointTime() * 1000);
//                                datetime[j] = df1.format(cal.getTime());
                                value[j] = String.valueOf(StringUtils.round(ails.get(j).getPointValueInDouble(), 2));
                            }
                        }
                        namemap.put(pointids[i], ai.getName());
//                        timemap.put("datetime", datetime);
                        points[i]=value;
                    }
                }

            datamap.put(pointids[i], points[i]);

        }

        resultmap.put("datas", datamap);
        resultmap.put("datetime", datetime);
        resultmap.put("names", namemap);

        return resultmap;
    }
    // AI001 机舱震动X方向
    // AI002 机舱震动y方向
    // AI003 机舱震动最大偏移值
    // AI006 风速2
    // AI008 风向1
    // AI010 25秒风向
    // AI011 60秒风向
    // AI012 转速
    // AI015 转速2
    // AI016 转子位置
    // AI018 主系统液压
    // AI019 转子刹车系统液压
    // AI024 60秒钟平均风速
    // AI025 10分钟平均风速
    // AI026 60s平均风向1
    // AI027 60s平均风向2
    // AI029 25s平均风向2
    // AI030 10分钟平均桨距叶片位置
    // AI031 10秒平均桨距叶片位置
    // AI032 1秒平均桨距叶片位置
    // AI034 偏航位置
    // AI037 服务控制变桨位置设定值
    // AI038 齿轮箱输入轴1温度
    // AI039 齿轮箱输出轴2温度
    // AI040 齿轮箱入口油温
    // AI041 齿轮箱油温
    // AI042 齿轮箱冷却水温度
    // AI043 齿轮箱润滑油滤网入口压力
    // AI044 齿轮箱润滑油滤网出口压力
    // AI045 发电机U1绕组温度
    // AI046 发电机U2绕组温度
    // AI047 发电机V1绕组温度
    // AI048 发电机V2绕组温度
    // AI049 发电机W1绕组温度
    // AI050 发电机W2绕组温度
    // AI051 控制器桨距转速限值
    // AI052 发电机轴承a温度
    // AI054 发电机冷却风温度
    // AI055 发电机滑环温度
    // AI056 机舱外温度
    // AI057 机舱温度
    // AI058 绕组电压1
    // AI059 绕组电压2
    // AI060 绕组电压3
    // AI061 绕组电流1
    // AI062 绕组电流2
    // AI063 绕组电流3
    // AI064 发电量
    // AI065 电网功率
    // AI067 功率因数
    // AI069 塔底柜温度
    // AI070 塔顶柜温度
    // AI071 叶轮侧主轴轴承温度
    // AI072 齿轮箱侧主轴轴承温度
    // AI086 叶片2位置
    // AI087 叶片3位置
    // AI088 变桨叶片1位置冗余值
    // AI120 桨距角给定值
    // AI121 控制器转矩设定值
    // AI225 pitch_Atech_SG1_error_code_2
    // AI227 pitch_Atech_SG2_error_code_1
    // AI229 pitch_Atech_SG2_error_code_3
    // AI234 塔底柜温度2
    // AI235 塔底柜温度3
    // AI113 电容器温度1
    // AI114 电容器温度2
    // AI115 电容器温度3
    // AI237 电容器电压2
    // AI238 电容器电压3
    // AI240 变频器温度2
    // AI241 变频器温度3
    // AI243 电机温度2
    // AI244 电机温度3
    // AI246 供电电流2
    // AI249 桨距角2
    // AI250 桨距角3
    // AI251 变桨目标位置1
    // AI253 变桨目标位置3
    // AI260 变桨1#电机电流
    // AI261 变桨2#电机电流
    // AI263 变桨1轮毂温度
    // AI264 变桨2轮毂温度
    // AI128 变频器电机转速
    // AI130 变频器功率
    // AI131 变频器无功功率
    // AI132 变频器转矩设定值
    // AI133 变频器发电机转矩
    // AI135 无功功率设定值
    // AI139 停泵压力
    // AI140 主压力最低限
    // AI141 转子刹车压力最低限
    // AI142 系统压力最大限
    // AI144 偏航角度限值
    // DI013 维护开关动作
    // DI020 转换器复位
    // DI759 润滑反馈状态1
    // DI764 变桨1紧急请求
    // DI043 发电机条件满足
    // DI051 控制停机
    // DI060 禁止偏航
    // DI075 启动空冷风扇1
    // DI099 机舱柜急停
    // DI101 复位安全系统
    // DI113 右偏航动作
    // DI178 LCL温度故障
    // DI189 变流器状态类故障
    // DI200 变流器DDCS通讯故障
    // DI263 齿轮箱油温超限故障
    // DI322 UPS使用故障
    // DI326 通讯站点电压类故障
    // DI350 风速仪传感器2故障
    // DI352 风向标传感器2故障
    // DI384 安全链总故障
    // DI657 变桨桨叶1的95°限位开关动作
    // DI661 变桨处于手动操作模式

    public List<PointVo> queryPointVos(String wtId, int bjlx, int cdlx) {

        List<PointVo> ls = new ArrayList<>();

        if (StringUtils.notEmp(wtId)) {

            if (bjlx == 0) {
                List<WindTurbineTestingPointAi> ails = queryWindTurbineTestingPointAis(wtId);

                if ((cdlx == 0 || cdlx == 1) && !ails.isEmpty()) {
                    for (WindTurbineTestingPointAi ai : ails) {
                        PointVo vo = new PointVo();
                        vo.setId(ai.getId());
                        vo.setCode(ai.getCode());
                        vo.setModelid(ai.getModelid());
                        vo.setName(ai.getName());
                        vo.setUniformcode(ai.getUniformcode());
                        vo.setWindpowerstationid(ai.getWindpowerstationid());
                        vo.setWindturbineid(ai.getWindturbineid());

                        ls.add(vo);
                    }
                }

                List<WindTurbineTestingPointDi> dils = queryWindTurbineTestingPointDis(wtId);

                if ((cdlx == 0 || cdlx == 2) && !dils.isEmpty()) {
                    for (WindTurbineTestingPointDi di : dils) {
                        PointVo vo = new PointVo();
                        vo.setId(di.getId());
                        vo.setCode(di.getCode());
                        vo.setModelid(di.getModelid());
                        vo.setName(di.getName());
                        vo.setUniformcode(di.getUniformcode());
                        vo.setWindpowerstationid(di.getWindpowerstationid());
                        vo.setWindturbineid(di.getWindturbineid());

                        ls.add(vo);
                    }
                }
            } else {
                List<WindTurbineTestingPointAi> ails = queryWindTurbineTestingPointAisByPart(wtId, bjlx);
                if ((cdlx == 0 || cdlx == 1) && !ails.isEmpty()) {
                    for (WindTurbineTestingPointAi ai : ails) {
                        PointVo vo = new PointVo();
                        vo.setId(ai.getId());
                        vo.setCode(ai.getCode());
                        vo.setModelid(ai.getModelid());
                        vo.setName(ai.getName());
                        vo.setUniformcode(ai.getUniformcode());
                        vo.setWindpowerstationid(ai.getWindpowerstationid());
                        vo.setWindturbineid(ai.getWindturbineid());

                        ls.add(vo);
                    }
                }

                List<WindTurbineTestingPointDi> dils = queryWindTurbineTestingPointDisByPart(wtId, bjlx);

                if ((cdlx == 0 || cdlx == 2) && !dils.isEmpty()) {
                    for (WindTurbineTestingPointDi di : dils) {
                        PointVo vo = new PointVo();
                        vo.setId(di.getId());
                        vo.setCode(di.getCode());
                        vo.setModelid(di.getModelid());
                        vo.setName(di.getName());
                        vo.setUniformcode(di.getUniformcode());
                        vo.setWindpowerstationid(di.getWindpowerstationid());
                        vo.setWindturbineid(di.getWindturbineid());

                        ls.add(vo);
                    }
                }
            }

        }
        return ls;
    }

    private List<WindTurbineTestingPointAi> queryWindTurbineTestingPointAis(String wtId) {

        List<WindTurbineTestingPointAi> list = new ArrayList<>();

        List<String> uids = new ArrayList<>();
        uids.add("AI001");
        uids.add("AI002");
        uids.add("AI003");
        uids.add("AI006");
        uids.add("AI008");
        uids.add("AI010");
        uids.add("AI011");
        uids.add("AI012");
        uids.add("AI015");
        uids.add("AI016");
        uids.add("AI018");
        uids.add("AI019");
        uids.add("AI022");
        uids.add("AI024");
        uids.add("AI025");
        uids.add("AI026");
        uids.add("AI027");
        uids.add("AI029");
        uids.add("AI030");
        uids.add("AI031");
        uids.add("AI032");
        uids.add("AI034");
        uids.add("AI037");
        uids.add("AI038");
        uids.add("AI039");
        uids.add("AI040");
        uids.add("AI041");
        uids.add("AI042");
        uids.add("AI043");
        uids.add("AI044");
        uids.add("AI045");
        uids.add("AI046");
        uids.add("AI047");
        uids.add("AI048");
        uids.add("AI049");
        uids.add("AI050");
        uids.add("AI051");
        uids.add("AI052");
        uids.add("AI054");
        uids.add("AI055");
        uids.add("AI056");
        uids.add("AI057");
        uids.add("AI058");
        uids.add("AI059");
        uids.add("AI060");
        uids.add("AI061");
        uids.add("AI062");
        uids.add("AI063");
        uids.add("AI064");
        uids.add("AI065");
        uids.add("AI067");
        uids.add("AI069");
        uids.add("AI070");
        uids.add("AI071");
        uids.add("AI072");
        uids.add("AI086");
        uids.add("AI087");
        uids.add("AI088");
        uids.add("AI120");
        uids.add("AI121");
        uids.add("AI225");
        uids.add("AI227");
        uids.add("AI229");
        uids.add("AI234");
        uids.add("AI235");
        uids.add("AI113");
        uids.add("AI114");
        uids.add("AI115");
        uids.add("AI237");
        uids.add("AI238");
        uids.add("AI240");
        uids.add("AI241");
        uids.add("AI243");
        uids.add("AI244");
        uids.add("AI246");
        uids.add("AI249");
        uids.add("AI250");
        uids.add("AI251");
        uids.add("AI253");
        uids.add("AI260");
        uids.add("AI261");
        uids.add("AI263");
        uids.add("AI264");
        uids.add("AI128");
        uids.add("AI130");
        uids.add("AI131");
        uids.add("AI132");
        uids.add("AI133");
        uids.add("AI135");
        uids.add("AI139");
        uids.add("AI140");
        uids.add("AI141");
        uids.add("AI142");
        uids.add("AI144");

        if (StringUtils.notEmp(wtId)) {
           for(String str:uids)
           {
               WindTurbineTestingPointAi ai =windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(wtId, str);
               if(StringUtils.notEmp(ai) && StringUtils.notEmp(ai.getId()))
               {
                   list.add(ai);
               }
           }
        }
        return list;
    }

    private List<WindTurbineTestingPointDi> queryWindTurbineTestingPointDis(String wtId) {

        List<WindTurbineTestingPointDi> list = new ArrayList<>();

        List<String> uids = new ArrayList<>();
        uids.add("DI013");
        uids.add("DI020");
        uids.add("DI759");
        uids.add("DI764");
        uids.add("DI043");
        uids.add("DI051");
        uids.add("DI060");
        uids.add("DI075");
        uids.add("DI099");
        uids.add("DI101");
        uids.add("DI113");
        uids.add("DI178");
        uids.add("DI189");
        uids.add("DI200");
        uids.add("DI263");
        uids.add("DI322");
        uids.add("DI326");
        uids.add("DI350");
        uids.add("DI352");
        uids.add("DI384");
        uids.add("DI657");
        uids.add("DI661");

        if (StringUtils.notEmp(wtId)) {

            list = windTurbineTestingPointDiService.getWindTurbineTestingPointDi2List(wtId,uids);
        }
        return list;
    }

    private List<WindTurbineTestingPointAi> queryWindTurbineTestingPointAisByPart(String wtId, int bjlx) {

        List<WindTurbineTestingPointAi> list = new ArrayList<>();

        if (StringUtils.notEmp(wtId)) {

            List<String> codels = new ArrayList<String>();

            codels.add(Constant.TPOINT_WT_FJSSFS);// 风速
            codels.add(Constant.TPOINT_WT_60FX);// 60秒风向
            codels.add(Constant.TPOINT_WT_60PJFS);// 风机60秒平均风速

            switch (bjlx) {
                case 3:// 变桨
                    codels.add(Constant.TPOINT_WT_1MPJJJY);// 1秒平均桨距叶片位置
                    codels.add(Constant.TPOINT_WT_PHWZ);// 偏航位置
                    codels.add(Constant.TPOINT_WT_BJLGWD1);// 变桨1轮毂温度
                    codels.add(Constant.TPOINT_WT_BJLGWD2);// 变桨2轮毂温度
                    codels.add(Constant.TPOINT_WT_BJLGWD3);// 变桨3轮毂温度
                    codels.add(Constant.TPOINT_WT_BPQDJZS);// 变频器电机转速
                    codels.add(Constant.TPOINT_WT_BPQGL);// 变频器功率
                    codels.add(Constant.TPOINT_WT_BPQWGGL);// 变频器无功功率
                    break;
                case 1:// 齿轮箱
                    codels.add(Constant.TPOINT_WT_DWZWD);// 齿轮箱轴1温度
                    codels.add(Constant.TPOINT_WT_GWZWD);// 齿轮箱轴2温度
                    codels.add(Constant.TPOINT_WT_CLXRKYW);// 齿轮箱入口油温
                    codels.add(Constant.TPOINT_WT_CLXWD);// 齿轮箱油温
                    codels.add(Constant.TPOINT_WT_CLXRHYLW);// 齿轮箱润滑油滤网出口压力
                    codels.add(Constant.TPOINT_WT_YLCZZWD);// 叶轮侧主轴轴承温度
                    codels.add(Constant.TPOINT_WT_CLXCZZWD);// 齿轮箱侧主轴轴承温度
                    break;
                case 2:// 发电机
                    codels.add(Constant.TPOINT_WT_U1YZWD);// 发电机U1绕组温度
                    codels.add(Constant.TPOINT_WT_U2YZWD);// 发电机U2绕组温度
                    codels.add(Constant.TPOINT_WT_V1YZWD);// 发电机V1绕组温度
                    codels.add(Constant.TPOINT_WT_V2YZWD);// 发电机V2绕组温度
                    codels.add(Constant.TPOINT_WT_W1YZWD);// 发电机W1绕组温度
                    codels.add(Constant.TPOINT_WT_W2YZWD);// 发电机W2绕组温度
                    codels.add(Constant.TPOINT_WT_FDJZCAWD);// 发电机轴承A温度
                    codels.add(Constant.TPOINT_WT_FDJZCBWD);// 发电机轴承B温度
                    codels.add(Constant.TPOINT_WT_JCWWD);// 机舱外温度
                    codels.add(Constant.TPOINT_WT_JCWD);// 机舱温度
                    codels.add(Constant.TPOINT_WT_U1YZDY);// 绕组电压1
                    codels.add(Constant.TPOINT_WT_U2YZDY);// 绕组电压2
                    codels.add(Constant.TPOINT_WT_U3YZDY);// 绕组电压3
                    codels.add(Constant.TPOINT_WT_U1YZDL);// 绕组电流1
                    codels.add(Constant.TPOINT_WT_U2YZDL);// 绕组电流2
                    codels.add(Constant.TPOINT_WT_U3YZDL);// 绕组电流3
                    codels.add(Constant.TPOINT_WT_DWGL);// 电网功率
                    codels.add(Constant.TPOINT_WT_DWWGGL);// 电网无功功率
                    codels.add(Constant.TPOINT_WT_GLYS);// 功率因数
                    codels.add(Constant.TPOINT_WT_DRQWD1);// 电容器温度1
                    codels.add(Constant.TPOINT_WT_DRQWD2);// 电容器温度2
                    codels.add(Constant.TPOINT_WT_DRQWD3);// 电容器温度3
                    codels.add(Constant.TPOINT_WT_BLQWD);// 变桨变流器温度
                    codels.add(Constant.TPOINT_WT_BLQWD2);// 变频器温度2
                    codels.add(Constant.TPOINT_WT_BLQWD3);// 变频器温度3
                    codels.add(Constant.TPOINT_WT_DJWD);// 伺服电机温度
                    codels.add(Constant.TPOINT_WT_DJWD2);// 电机温度2
                    codels.add(Constant.TPOINT_WT_DJWD3);// 电机温度3
                    break;
                default:
                    break;
            }

            if (StringUtils.notEmp(wtId)) {
                for(String str:codels)
                {
                    WindTurbineTestingPointAi ai =windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(wtId, str);
                    if(StringUtils.notEmp(ai) && StringUtils.notEmp(ai.getId()))
                    {
                        list.add(ai);
                    }
                }
            }
        }
        return list;
    }

    private List<WindTurbineTestingPointDi> queryWindTurbineTestingPointDisByPart(String wtId, int bjlx) {

        List<WindTurbineTestingPointDi> list = new ArrayList<>();

        if (StringUtils.notEmp(wtId)) {

            List<String> codels = new ArrayList<String>();

            switch (bjlx) {
                case 1:// 变桨
                    codels.add("DI605");// 变桨超级电容类故障
                    codels.add("DI606");// 变桨超级电容电压高故障
                    codels.add("DI607");// 变桨桨叶1超级电容电压高故障
                    codels.add("DI608");// 变桨桨叶2超级电容电压高故障
                    codels.add("DI609");// 变桨桨叶3超级电容电压高故障
                    codels.add("DI610");// 变桨超级电容电压低故障
                    codels.add("DI611");// 变桨桨叶1超级电容电压低故障
                    codels.add("DI612");// 变桨桨叶2超级电容电压低故障
                    codels.add("DI613");// 变桨桨叶3超级电容电压低故障
                    codels.add("DI614");// 变桨超级电容温度高故障
                    codels.add("DI615");// 变桨桨叶1超级电容温度高故障
                    codels.add("DI616");// 变桨桨叶2超级电容温度高故障
                    codels.add("DI617");// 变桨桨叶3超级电容温度高故障
                    codels.add("DI630");// 变桨温度类故障
                    codels.add("DI631");// 变桨轴箱温度低故障
                    codels.add("DI632");// 变桨桨叶1轴箱温度低故障
                    codels.add("DI633");// 变桨桨叶2轴箱温度低故障
                    codels.add("DI634");// 变桨桨叶3轴箱温度低故障
                    codels.add("DI635");// 变桨轴箱温度高故障
                    codels.add("DI636");// 变桨桨叶1轴箱温度高故障
                    codels.add("DI637");// 变桨桨叶2轴箱温度高故障
                    codels.add("DI638");// 变桨桨叶3轴箱温度高故障
                    codels.add("DI639");// 变桨电机类故障
                    codels.add("DI640");// 变桨电机温度高故障
                    codels.add("DI641");// 变桨桨叶1电机温度高故障
                    codels.add("DI642");// 变桨桨叶2电机温度高故障
                    codels.add("DI643");// 变桨桨叶3电机温度高故障
                    break;
                case 2:// 齿轮箱
                    codels.add("DI261");// 齿轮箱输入轴1温度故障
                    codels.add("DI262");// 齿轮箱输出轴2温度故障
                    codels.add("DI263");// 齿轮箱油温超限故障
                    codels.add("DI264");// 齿轮箱入口油温超限故障
                    codels.add("DI265");// 齿轮箱冷却水温度超限故障
                    codels.add("DI266");// 齿轮箱冷却水压力故障
                    codels.add("DI270");// 齿轮箱入口和出口油压压差故障
                    break;
                case 3:// 发电机
                    codels.add("DI143");// INU类故障
                    codels.add("DI144");// 变流器类总故障
                    codels.add("DI145");// 转子侧变流器故障
                    codels.add("DI146");// 转子侧变流器电压故障
                    codels.add("DI147");// 转子侧变流器电流故障
                    codels.add("DI148");// 转子侧变流器温度故障
                    codels.add("DI149");// 其它转子侧变流器故障
                    codels.add("DI150");// INU过温故障
                    codels.add("DI151");// INU接地故障
                    codels.add("DI152");// INU启动故障
                    codels.add("DI153");// INU其它故障
                    codels.add("DI154");// ISU类故障
                    codels.add("DI155");// 网侧变流器故障
                    codels.add("DI156");// 网侧变流器电压故障
                    codels.add("DI157");// 网侧变流器电流故障
                    codels.add("DI158");// 网侧变流器温度故障
                    codels.add("DI159");// 其它网侧变流器故障
                    codels.add("DI160");// ISU过流
                    codels.add("DI161");// ISU过温
                    codels.add("DI166");// 变流器监视类故障
                    codels.add("DI167");// 线电压过压
                    codels.add("DI168");// 线电压欠压
                    codels.add("DI169");// 线电压超频
                    codels.add("DI170");// 线电压欠频
                    codels.add("DI171");// 直流母线过压
                    codels.add("DI172");// 直流母线欠压
                    codels.add("DI173");// 定子过流
                    codels.add("DI174");// 转子过流
                    // codels.add("DI236");//发电机类总故障
                    codels.add("DI237");// 发电机绕组温度超限类故障
                    codels.add("DI238");// 发电机U1绕组温度超限故障
                    codels.add("DI239");// 发电机U2绕组温度超限故障
                    codels.add("DI240");// 发电机V1绕组温度超限故障
                    codels.add("DI241");// 发电机V2绕组温度超限故障
                    codels.add("DI242");// 发电机W1绕组温度超限故障
                    codels.add("DI243");// 发电机W2绕组温度超限故障
                    codels.add("DI244");// 发电机轴承类温度超限故障
                    codels.add("DI245");// 发电机轴承a温度超限故障
                    codels.add("DI246");// 发电机轴承b温度超限故障
                    codels.add("DI255");// 发电机过压故障
                    break;
                default:
                    break;
            }

            if (StringUtils.notEmp(wtId)) {

                list = windTurbineTestingPointDiService.getWindTurbineTestingPointDi2List(wtId,codels);
            }
        }
        return list;
    }

    private Map<String, WindTurbineTestingPointDi> queryWindTurbineTestingPointDisByWtId(String wtId) {

        Map<String, WindTurbineTestingPointDi> map = new HashMap<String, WindTurbineTestingPointDi>();
        List<WindTurbineTestingPointDi> list = new ArrayList<>();

        if (StringUtils.notEmp(wtId)) {


            list = windTurbineTestingPointDiService.getWindTurbineTestingPointDi2List(wtId);

            if(!list.isEmpty())
            {
                for(WindTurbineTestingPointDi di:list)
                {
                    map.put(di.getUniformcode(), di);
                }
            }
        }
        return map;
    }
}
