package com.gyee.frame.service.websocket;


import com.gyee.frame.common.spring.Constant;
import com.gyee.frame.common.spring.InitialRunner;
import com.gyee.frame.model.auto.*;
import com.gyee.frame.model.custom.PointData;
import com.gyee.frame.service.WindTurbineTestingPointAiService;
import com.gyee.frame.service.WindTurbineTestingPointDiService;
import com.gyee.frame.service.WindturbineinfodayService;
import com.gyee.frame.util.DateUtils;
import com.gyee.frame.util.IRealTimeDataBaseUtil;
import com.gyee.frame.util.MathUtil;
import com.gyee.frame.util.StringUtils;
import com.gyee.frame.util.golden.EdosUtil;
import org.springframework.stereotype.Service;

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

@Service
public class WtInfoPushService {

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

    @Resource
    private WindturbineinfodayService windturbineinfodayService;

    IRealTimeDataBaseUtil realApiUtil = new EdosUtil();

    String QS_FDC = "QS_FDC";

    public Map<String, Object> genreSetMap() throws Exception {

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

        map.put("MG01_01", findWtInfo("MG01_01"));
        map.put("SG01_01", findWtInfo("SG01_01"));
        map.put("XG01_01", findWtInfo("XG01_01"));
        map.put("NG01_01", findWtInfo("NG01_01"));
        map.put("QG01_01", findWtInfo("QG01_01"));
        return map;

    }

    public List<Map<String, Object>> genreSetMap(String wpId) throws Exception {

        List<Map<String, Object>> map = findWtInfoList(wpId);

        return map;

    }

    public Map<String, Object> findWtInfo(String id) throws Exception {

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

        if (StringUtils.notEmp(id)) {

            if (InitialRunner.wtmap.containsKey(id)) {

                Windturbine wt = InitialRunner.wtmap.get(id);

                map.put("model", wt.getModelid());
                map.put("wpid", wt.getWindpowerstationid());
                map.put("pjid", wt.getProjectid());
                map.put("lnid", wt.getLineid());

                Double sjgl = 0.0;
                Double bzgl = 0.0;
                Double yfgl = 0.0;

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

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

                Map<String, Integer> bjnamemap = new HashMap<>();
                Map<String, Integer> clxnamemap = new HashMap<>();
                Map<String, Integer> fdjnamemap = new HashMap<>();
                Map<String, Integer> phnamemap = new HashMap<>();
                Map<String, Integer> yynamemap = new HashMap<>();
                Map<String, Integer> jcnamemap = new HashMap<>();
                Map<String, Integer> jczbnamemap = new HashMap<>();

                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.TPOINT_WT_FJKYL).getId());// 可利用率
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.TPOINT_WT_RFDL).getId());// 日发电量
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.TPOINT_WT_LLGL).getId());// 风机理论功率
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.TPOINT_WT_YFGL).getId());// 风机应发功率
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.TPOINT_WT_RFDLBZ).getId());// 日理论发电量
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.TPOINT_WT_RFDLZS).getId());//  日应发电量
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.FJZT).getId());// 风机状态
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.TPOINT_WT_PJGL).getId());// 平均风速功率
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RGZSSDL).getId());// 风机日故障损失电量
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RJXSSDL).getId());// 风机日检修损失电量
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RQFSSDL).getId());// 风机日欠发损失电量
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RXDSSDL).getId());// 风机日限电损失电量
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RGZSSDL).getId());// 日场内受累检修
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RJXSSDL).getId());// 日场内受累故障
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RQFSSDL).getId());// 日场外受累电网
                zbls.add(windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, Constant.RXDSSDL).getId());// 日场外受累天气

                keyls.add("FJKYL");// 可利用率
                keyls.add("RFDL");// 日发电量
                keyls.add("LLGL");// 风机理论功率
                keyls.add("YFGL");// 风机应发功率
                keyls.add("RFDLBZ");// 日理论发电量
                keyls.add("RFDLZS");//  日应发电量
                keyls.add("FJZT");// 风机状态
                keyls.add("PJGL");// 平均风速功率
                keyls.add("RGZSSDL");// 风机日故障损失电量
                keyls.add("RJXSSDL");// 风机日检修损失电量
                keyls.add("RQFSSDL");// 风机日欠发损失电量
                keyls.add("RXDSSDL");// 风机日限电损失电量
                keyls.add("RGZSSDL");// 日场内受累检修
                keyls.add("RJXSSDL");// 日场内受累故障
                keyls.add("RQFSSDL");// 日场外受累电网
                keyls.add("RXDSSDL");// 日场外受累天气


/*********************************************************************变桨*********************************************************************************/

                List<String> uids = new ArrayList<>();
                List<String> msls = new ArrayList<>();

                if (wt.getWindpowerstationid().equals(QS_FDC)) {

                    uids.add(Constant.TPOINT_WT_RYBMQ1);
                    uids.add(Constant.TPOINT_WT_RYBMQ2);
                    uids.add(Constant.TPOINT_WT_RYBMQ3);
                    uids.add(Constant.TPOINT_WT_BJSD1);
                    uids.add(Constant.TPOINT_WT_BJSD2);
                    uids.add(Constant.TPOINT_WT_BJSD3);
                    uids.add(Constant.QSTPOINT_WT_U1YZDL);
                    uids.add(Constant.QSTPOINT_WT_U2YZDL);
                    uids.add(Constant.QSTPOINT_WT_U3YZDL);
                    uids.add(Constant.QSTPOINT_WT_U1YZDY);
                    uids.add(Constant.QSTPOINT_WT_U2YZDY);
                    uids.add(Constant.QSTPOINT_WT_U3YZDY);

                } else {

                    uids.add(Constant.TPOINT_WT_RYBMQ1);
                    uids.add(Constant.TPOINT_WT_RYBMQ2);
                    uids.add(Constant.TPOINT_WT_RYBMQ3);
                    uids.add(Constant.TPOINT_WT_BJSD1);
                    uids.add(Constant.TPOINT_WT_BJSD2);
                    uids.add(Constant.TPOINT_WT_BJSD3);
                    uids.add(Constant.TPOINT_WT_U1YZDL);
                    uids.add(Constant.TPOINT_WT_U2YZDL);
                    uids.add(Constant.TPOINT_WT_U3YZDL);
                    uids.add(Constant.TPOINT_WT_U1YZDY);
                    uids.add(Constant.TPOINT_WT_U2YZDY);
                    uids.add(Constant.TPOINT_WT_U3YZDY);

                }



                msls.add("RYBMQ1");
                msls.add("RYBMQ2");
                msls.add("RYBMQ3");
                msls.add("BJSD1");
                msls.add("BJSD2");
                msls.add("BJSD3");
                msls.add("U1YZDL");
                msls.add("U2YZDL");
                msls.add("U3YZDL");
                msls.add("U1YZDY");
                msls.add("U2YZDY");
                msls.add("U3YZDY");



                initialpoint(id, zbls, keyls, bjnamemap,uids,msls);


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

                unicodels.add(Constant.TPOINT_WT_YP1XW91);
                unicodels.add(Constant.TPOINT_WT_YP2XW91);
                unicodels.add(Constant.TPOINT_WT_YP3XW91);
                unicodels.add(Constant.TPOINT_WT_YP1XW95);
                unicodels.add(Constant.TPOINT_WT_YP2XW95);
                unicodels.add(Constant.TPOINT_WT_YP3XW95);

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

                unmsls.add("YP1XW91");
                unmsls.add("YP2XW91");
                unmsls.add("YP3XW91");
                unmsls.add("YP1XW95");
                unmsls.add("YP2XW95");
                unmsls.add("YP3XW95");

                InitalDiMap(id, zbls, keyls, bjnamemap, unicodels, unmsls);

/**************************************************************************齿轮箱*****************************************************************************/

                msls=new ArrayList<>();
                uids=new ArrayList<>();
                uids.add(Constant.TPOINT_WT_RHYLWRKYL);
                uids.add(Constant.TPOINT_WT_RHYLWCKYL);
                uids.add(Constant.TPOINT_WT_CLXSRZ1WD);
                uids.add(Constant.TPOINT_WT_CLXRHYJRBH);
                uids.add(Constant.TPOINT_WT_CLXRHYLWYC);
                uids.add(Constant.TPOINT_WT_CLXRKYW);

                msls.add("RHYLWRKYL");
                msls.add("RHYLWCKYL");
                msls.add("CLXSRZ1WD");
                msls.add("CLXRHYJRBH");
                msls.add("CLXRHYLWYC");
                msls.add("CLXRKYW");

                initialpoint(id, zbls, keyls, clxnamemap,uids,msls);

                unicodels = new ArrayList<>();

                unicodels.add(Constant.TPOINT_WT_CLXYW);
                unicodels.add(Constant.TPOINT_WT_CLXRHYYL);
                unicodels.add(Constant.TPOINT_WT_CLXRHBDJBH);
                unicodels.add(Constant.TPOINT_WT_CLXRHYJRBH);
                unicodels.add(Constant.TPOINT_WT_CLXRHYLWYC);
                unicodels.add(Constant.TPOINT_WT_CLXYJRQBH);
                unicodels.add(Constant.TPOINT_WT_QDCLXRHJRQ);
                unicodels.add(Constant.TPOINT_WT_QDCLXRHGSBA);
                unicodels.add(Constant.TPOINT_WT_QDCLXRHGSBB);
                unicodels.add(Constant.TPOINT_WT_QDCLXYBJRQ);


                unmsls = new ArrayList<>();

                unmsls.add("CLXYW");
                unmsls.add("CLXRHYYL");
                unmsls.add("CLXRHBDJBH");
                unmsls.add("CLXRHYJRBH");
                unmsls.add("CLXRHYLWYC");
                unmsls.add("CLXYJRQBH");
                unmsls.add("QDCLXRHJRQ");
                unmsls.add("QDCLXRHGSBA");
                unmsls.add("QDCLXRHGSBB");
                unmsls.add("QDCLXYBJRQ");

                InitalDiMap(id, zbls, keyls, clxnamemap, unicodels, unmsls);


/***********************************************************************发电机********************************************************************************/

                msls=new ArrayList<>();
                uids=new ArrayList<>();
                if (wt.getWindpowerstationid().equals(QS_FDC)) {

                    uids.add(Constant.QSTPOINT_WT_U1YZWD);
                    uids.add(Constant.QSTPOINT_WT_V1YZWD);
                    uids.add(Constant.QSTPOINT_WT_W1YZWD);
                    uids.add(Constant.TPOINT_WT_FDJZCAWD);
                    uids.add(Constant.TPOINT_WT_FDJZCBWD);
                    uids.add(Constant.TPOINT_WT_FDJLQFWD);
                    uids.add(Constant.TPOINT_WT_FDJHHWD);


                } else {

                    uids.add(Constant.TPOINT_WT_U1YZWD);
                    uids.add(Constant.TPOINT_WT_V1YZWD);
                    uids.add(Constant.TPOINT_WT_W1YZWD);
                    uids.add(Constant.TPOINT_WT_FDJZCAWD);
                    uids.add(Constant.TPOINT_WT_FDJZCBWD);
                    uids.add(Constant.TPOINT_WT_FDJLQFWD);
                    uids.add(Constant.TPOINT_WT_FDJHHWD);

                }

                msls.add("U1YZWD");
                msls.add("V1YZWD");
                msls.add("W1YZWD");
                msls.add("FDJZCAWD");
                msls.add("FDJZCBWD");
                msls.add("FDJLQFWD");
                msls.add("FDJHHWD");

                initialpoint(id, zbls, keyls, fdjnamemap,uids,msls);

                unicodels = new ArrayList<>();

                unicodels.add(Constant.TPOINT_WT_FDJJRQBHZC);
                unicodels.add(Constant.TPOINT_WT_QDFDJJRQ);
                unicodels.add(Constant.TPOINT_WT_FDJDSMS);
                unicodels.add(Constant.TPOINT_WT_QDKLFS1);
                unicodels.add(Constant.TPOINT_WT_QDKLFS2);
                unicodels.add(Constant.TPOINT_WT_KLFSBH1);
                unicodels.add(Constant.TPOINT_WT_KLFSBH2);
                unicodels.add(Constant.TPOINT_WT_QDSLFS1);
                unicodels.add(Constant.TPOINT_WT_QDSLFSBH1);
                unicodels.add(Constant.TPOINT_WT_LQSYL);
                unicodels.add(Constant.TPOINT_WT_FDJRHYBYW);
                unicodels.add(Constant.TPOINT_WT_QDFDJRHYB);


                unmsls = new ArrayList<>();

                unmsls.add("FDJJRQBHZC");
                unmsls.add("QDFDJJRQ");
                unmsls.add("FDJDSMS");
                unmsls.add("QDKLFS1");
                unmsls.add("QDKLFS2");
                unmsls.add("KLFSBH1");
                unmsls.add("KLFSBH2");
                unmsls.add("QDSLFS1");
                unmsls.add("QDSLFSBH1");
                unmsls.add("LQSYL");
                unmsls.add("FDJRHYBYW");
                unmsls.add("QDFDJRHYB");

                InitalDiMap(id, zbls, keyls, fdjnamemap, unicodels, unmsls);

/*********************************************************************偏航**********************************************************************************/


                msls=new ArrayList<>();
                uids=new ArrayList<>();
                if (wt.getWindpowerstationid().equals(QS_FDC)) {

                    uids.add(Constant.TPOINT_WT_DFJD);
                    uids.add(Constant.QSTPOINT_WT_PHWZ);

                } else {

                    uids.add(Constant.TPOINT_WT_DFJD);
                    uids.add(Constant.TPOINT_WT_PHWZ);

                }

                msls.add("DFJD");
                msls.add("PHWZ");
                initialpoint(id, zbls, keyls, phnamemap,uids,msls);

                unicodels = new ArrayList<>();

                unicodels.add(Constant.TPOINT_WT_PHZJX);
                unicodels.add(Constant.TPOINT_WT_PHYJX);
                unicodels.add(Constant.TPOINT_WT_PHRQDQZC);
                unicodels.add(Constant.TPOINT_WT_ZPHDZ);
                unicodels.add(Constant.TPOINT_WT_PHDSCDK);
                unicodels.add(Constant.TPOINT_WT_YPHDZ);
                unicodels.add(Constant.TPOINT_WT_PHRQDQDZ);
                unicodels.add(Constant.TPOINT_WT_PHRQDQSN);
                unicodels.add(Constant.TPOINT_WT_PHBMQZL);
                unicodels.add(Constant.TPOINT_WT_JLDZ);
                unicodels.add(Constant.TPOINT_WT_PHCGQMTOK);
                unicodels.add(Constant.TPOINT_WT_PHCGQOK);
                unicodels.add(Constant.TPOINT_WT_PHZCRHYW);
                unicodels.add(Constant.TPOINT_WT_PHRHBZCBH);
                unicodels.add(Constant.TPOINT_WT_PHDJ1BH);
                unicodels.add(Constant.TPOINT_WT_PHDJ2BH);
                unicodels.add(Constant.TPOINT_WT_PHDJ3BH);
                unicodels.add(Constant.TPOINT_WT_PHDJ4BH);

                unmsls = new ArrayList<>();

                unmsls.add("PHZJX");
                unmsls.add("PHYJX");
                unmsls.add("PHRQDQZC");
                unmsls.add("ZPHDZ");
                unmsls.add("PHDSCDK");
                unmsls.add("YPHDZ");
                unmsls.add("PHRQDQDZ");
                unmsls.add("PHRQDQSN");
                unmsls.add("PHBMQZL");
                unmsls.add("JLDZ");
                unmsls.add("PHCGQMTOK");
                unmsls.add("PHCGQOK");
                unmsls.add("PHZCRHYW");
                unmsls.add("PHRHBZCBH");
                unmsls.add("PHDJ1BH");
                unmsls.add("PHDJ2BH");
                unmsls.add("PHDJ3BH");
                unmsls.add("PHDJ4BH");

                InitalDiMap(id, zbls, keyls, phnamemap, unicodels, unmsls);
/****************************************************************液压***************************************************************************************/

                msls=new ArrayList<>();
                uids=new ArrayList<>();
                uids.add(Constant.TPOINT_WT_YYXTYY);
                uids.add(Constant.TPOINT_WT_ZZSCXTYY);
                uids.add(Constant.TPOINT_WT_FDJLQSWD);
                uids.add(Constant.TPOINT_WT_YYYW);

                msls.add("YYXTYY");
                msls.add("ZZSCXTYY");
                msls.add("FDJLQSWD");
                msls.add("YYYW");
                initialpoint(id, zbls, keyls, yynamemap,uids,msls);

                unicodels = new ArrayList<>();

                unicodels.add(Constant.TPOINT_WT_YYYWDCX);
                unicodels.add(Constant.TPOINT_WT_YYYYW);
                unicodels.add(Constant.TPOINT_WT_YLSCYY);
                unicodels.add(Constant.TPOINT_WT_YYBDJBH);
                unicodels.add(Constant.TPOINT_WT_YYYJRQBH);


                unmsls = new ArrayList<>();

                unmsls.add("YYYWDCX");
                unmsls.add("YYYYW");
                unmsls.add("YLSCYY");
                unmsls.add("YYBDJBH");
                unmsls.add("YYYJRQBH");

                InitalDiMap(id, zbls, keyls, yynamemap, unicodels, unmsls);
/***********************************************************************机舱********************************************************************************/



                msls=new ArrayList<>();
                uids=new ArrayList<>();

                if (wt.getWindpowerstationid().equals(QS_FDC)) {

                    uids.add(Constant.TPOINT_WT_YPWZ1);
                    uids.add(Constant.TPOINT_WT_YPWZ2);
                    uids.add(Constant.TPOINT_WT_YPWZ3);
                    uids.add(Constant.TPOINT_WT_FJSSFS);
                    uids.add(Constant.TPOINT_WT_FJGL);
                    uids.add(Constant.TPOINT_WT_GLYS);
                    uids.add(Constant.QSTPOINT_WT_BJJD1);
                    uids.add(Constant.TPOINT_WT_FJPL);
                    uids.add(Constant.TPOINT_WT_WGGL);
                    uids.add(Constant.TPOINT_WT_FJFX);
                    uids.add(Constant.TPOINT_WT_YLZS);
                    uids.add(Constant.QSTPOINT_WT_FDJZS);
                    uids.add(Constant.TPOINT_WT_JCWWD);
                    uids.add(Constant.TPOINT_WT_JCWD);
                    uids.add(Constant.TPOINT_WT_TDGWD);
                    uids.add(Constant.TPOINT_WT_JCGWD);


                } else {

                    uids.add(Constant.TPOINT_WT_YPWZ1);
                    uids.add(Constant.TPOINT_WT_YPWZ2);
                    uids.add(Constant.TPOINT_WT_YPWZ3);
                    uids.add(Constant.TPOINT_WT_FJSSFS);
                    uids.add(Constant.TPOINT_WT_FJGL);
                    uids.add(Constant.TPOINT_WT_GLYS);
                    uids.add(Constant.TPOINT_WT_BJJD1);
                    uids.add(Constant.TPOINT_WT_FJPL);
                    uids.add(Constant.TPOINT_WT_WGGL);
                    uids.add(Constant.TPOINT_WT_FJFX);
                    uids.add(Constant.TPOINT_WT_YLZS);
                    uids.add(Constant.TPOINT_WT_FDJZS);
                    uids.add(Constant.TPOINT_WT_JCWWD);
                    uids.add(Constant.TPOINT_WT_JCWD);
                    uids.add(Constant.TPOINT_WT_TDGWD);
                    uids.add(Constant.TPOINT_WT_JCGWD);



                }

                msls.add("YPWZ1");
                msls.add("YPWZ2");
                msls.add("YPWZ3");
                msls.add("FJSSFS");
                msls.add("FJGL");
                msls.add("GLYS");
                msls.add("BJJD1");
                msls.add("FJPL");
                msls.add("WGGL");
                msls.add("FJFX");
                msls.add("YLZS");
                msls.add("FDJZS");
                msls.add("JCWWD");
                msls.add("JCWD");
                msls.add("TDGWD");
                msls.add("JCGWD");

                initialpoint(id, zbls, keyls, jcnamemap,uids,msls);

                unicodels = new ArrayList<>();

                unicodels.add(Constant.TPOINT_WT_YYYYW2);
                unicodels.add(Constant.TPOINT_WT_YYYWDCX2);
                unicodels.add(Constant.TPOINT_WT_YLSCYY2);
                unicodels.add(Constant.TPOINT_WT_YYBDJBH2);
                unicodels.add(Constant.TPOINT_WT_YYYJRQBH2);
                unicodels.add(Constant.TPOINT_WT_CLXYW2);
                unicodels.add(Constant.TPOINT_WT_CLXRHYYL2);
                unicodels.add(Constant.TPOINT_WT_CLXRHYJRBH2);
                unicodels.add(Constant.TPOINT_WT_FDJJRQBHZC2);
                unicodels.add(Constant.TPOINT_WT_LQSYL2);


                unmsls = new ArrayList<>();

                unmsls.add("YYYYW2");
                unmsls.add("YYYWDCX2");
                unmsls.add("YLSCYY2");
                unmsls.add("YYBDJBH2");
                unmsls.add("YYYJRQBH2");
                unmsls.add("CLXYW2");
                unmsls.add("CLXRHYYL2");
                unmsls.add("CLXRHYJRBH2");
                unmsls.add("FDJJRQBHZC2");
                unmsls.add("LQSYL2");

                InitalDiMap(id, zbls, keyls, jcnamemap, unicodels, unmsls);

/*******************************************************************************************************************************************************/

                Map<String, Double> jczbmap = new HashMap<>();
                Map<String, Double> bjmap = new HashMap<>();
                Map<String, Double> clxmap = new HashMap<>();
                Map<String, Double> fdjmap = new HashMap<>();
                Map<String, Double> phmap = new HashMap<>();
                Map<String, Double> yymap = new HashMap<>();
                Map<String, Double> jcmap = new HashMap<>();


                List<PointData> zblist = realApiUtil.getRealData(zbls);


                if (!zblist.isEmpty() && zblist.size() == zbls.size() && keyls.size() == zbls.size()) {
/**************************************************************基础指标***********************************************************************************/
                    jczbmap.put(keyls.get(0), MathUtil.twoBit(zblist.get(0).getPointValueInDouble()));// 可利用率
                    double rfdl = MathUtil.twoBit(zblist.get(1).getPointValueInDouble());
                    jczbmap.put(keyls.get(1), rfdl);// 日发电量
                    jczbmap.put(keyls.get(2), MathUtil.twoBit(zblist.get(2).getPointValueInDouble()));// 风机理论功率
                    jczbmap.put(keyls.get(3), MathUtil.twoBit(zblist.get(3).getPointValueInDouble()));// 风机应发功率
                    jczbmap.put(keyls.get(4), MathUtil.twoBit(zblist.get(4).getPointValueInDouble()));// 日理论发电量
                    jczbmap.put(keyls.get(5), MathUtil.twoBit(zblist.get(5).getPointValueInDouble()));// 日应发电量
                    jczbmap.put(keyls.get(6), MathUtil.twoBit(zblist.get(6).getPointValueInDouble()));// 风机状态
                    jczbmap.put(keyls.get(7), MathUtil.twoBit(zblist.get(7).getPointValueInDouble()));// 平均风速功率
                    double rssdl = 0.0;
                    double rgzss = MathUtil.twoBit(zblist.get(8).getPointValueInDouble());
                    double rjxss = MathUtil.twoBit(zblist.get(9).getPointValueInDouble());
                    double rxnss = MathUtil.twoBit(zblist.get(10).getPointValueInDouble());
                    double rxdss = MathUtil.twoBit(zblist.get(11).getPointValueInDouble());

                    double rlzssdl = MathUtil.twoBit(zblist.get(12).getPointValueInDouble()); // 日场内受累检修
                    double rszssdl = MathUtil.twoBit(zblist.get(13).getPointValueInDouble()); // 日场内受累故障
                    double rwzssdl = MathUtil.twoBit(zblist.get(14).getPointValueInDouble()); // 日场外受累电网
                    double rtzssdl = MathUtil.twoBit(zblist.get(15).getPointValueInDouble()); // 日场外受累天气

                    jczbmap.put(keyls.get(8), StringUtils.round(rgzss + rlzssdl, 2));// 日故障损失电量
                    jczbmap.put(keyls.get(9), StringUtils.round(rjxss + rszssdl, 2));// 日维护损失电量
                    jczbmap.put(keyls.get(10), rxnss);// 日欠发损失电量

                    jczbmap.put(keyls.get(11), rxdss);// 日限电损失电量
                    jczbmap.put(keyls.get(12), StringUtils.round(rwzssdl + rtzssdl, 2));// 日受累损失电量

                    rssdl = rgzss + rjxss + rxnss + rxdss + rwzssdl + rtzssdl + rszssdl + rlzssdl;

                    jczbmap.put("RSSDL", StringUtils.round(rssdl, 2));// 风机日损失电量

                    jczbmap.put("RLLFDL", StringUtils.round(rssdl + rfdl, 2));// 风机日理论电量
/**************************************************************基础指标***********************************************************************************/

/**************************************************************变桨***********************************************************************************/


                    for(int i=0;i<keyls.size();i++)
                    {
                        if(bjnamemap.containsKey(keyls.get(i)))
                        {
                            int num=bjnamemap.get(keyls.get(i));
                            bjmap.put(keyls.get(i), MathUtil.twoBit(zblist.get(num).getPointValueInDouble()));//
                        }

                        if(clxnamemap.containsKey(keyls.get(i)))
                        {
                            int num=clxnamemap.get(keyls.get(i));
                            clxmap.put(keyls.get(i), MathUtil.twoBit(zblist.get(num).getPointValueInDouble()));//
                        }

                        if(fdjnamemap.containsKey(keyls.get(i)))
                        {
                            int num=fdjnamemap.get(keyls.get(i));
                            fdjmap.put(keyls.get(i), MathUtil.twoBit(zblist.get(num).getPointValueInDouble()));//
                        }

                        if(phnamemap.containsKey(keyls.get(i)))
                        {
                            int num=phnamemap.get(keyls.get(i));
                            phmap.put(keyls.get(i), MathUtil.twoBit(zblist.get(num).getPointValueInDouble()));//
                        }

                        if(yynamemap.containsKey(keyls.get(i)))
                        {
                            int num=yynamemap.get(keyls.get(i));
                            yymap.put(keyls.get(i), MathUtil.twoBit(zblist.get(num).getPointValueInDouble()));//
                        }

                        if(jcnamemap.containsKey(keyls.get(i)))
                        {
                            int num=jcnamemap.get(keyls.get(i));
                            jcmap.put(keyls.get(i), MathUtil.twoBit(zblist.get(num).getPointValueInDouble()));//
                        }
                    }

/**************************************************************齿轮箱***********************************************************************************/



/**************************************************************发电机***********************************************************************************/


/**************************************************************偏航***********************************************************************************/

/**************************************************************液压***********************************************************************************/




/**************************************************************机舱***********************************************************************************/


                    if (jcnamemap.containsKey(Constant.TPOINT_WT_FDJZS)) {
                        Equipmentmodel model = InitialRunner.mlmap.get(wt.getModelid());
                        int num=jcnamemap.get(Constant.TPOINT_WT_FDJZS);
                        Double fdjzs = (zblist.get(num).getPointValueInDouble());
                        if (model.getPowerproduction() == 2000) {
                            jcmap.put("FDJZS", StringUtils.round(fdjzs * 9.55, 2));// 发电机转速
                        } else {
                            jcmap.put("FDJZS", fdjzs);// 发电机转速
                        }
                    }


 /**************************************************************基础指标***********************************************************************************/
                } else {

                }

                map.put("jczbmap", jczbmap);
                map.put("bjmap", bjmap);
                map.put("clxmap", clxmap);

                map.put("fdjmap", fdjmap);
                map.put("phmap", phmap);

                map.put("yymap", yymap);
                map.put("jcmap", jcmap);

/**********************************************************************************************************************************************************/


            }


/*************************************************关系库指标**************************************************************/

            Map<String, Double> gxkmap = new HashMap<>();
            Date date = DateUtils.truncate(new Date());
            List<WindTurbineInfoDay> wtdls = windturbineinfodayService.getWindturbineinfo(id, date);
            if (!wtdls.isEmpty()) {
                WindTurbineInfoDay wd = wtdls.get(0);
                gxkmap.put("ndxkyss", wd.getYeardxkyxs());
                gxkmap.put("nsbklyl", wd.getYearsbklyl());
                gxkmap.put("ydxkyss", wd.getMonthdxkyxs());
                gxkmap.put("ysbklyl", wd.getMonthsbklyl());

                gxkmap.put("yyxxs", wd.getMonthruntime());
                gxkmap.put("ygzxs", wd.getMonthfaulttime());
                gxkmap.put("yjxxs", wd.getMonthmaintaintime());
                gxkmap.put("ytjxs", wd.getMonhtstoptime());

            } else {
                gxkmap.put("ndxkyss", 0.0);
                gxkmap.put("nsbklyl", 0.0);
                gxkmap.put("ydxkyss", 0.0);
                gxkmap.put("ysbklyl", 0.0);

                gxkmap.put("yyxxs", 0.0);
                gxkmap.put("ygzxs", 0.0);
                gxkmap.put("yjxxs", 0.0);
                gxkmap.put("ytjxs", 0.0);
            }

            map.put("gxkmap", gxkmap);

/*************************************************关系库指标**************************************************************/
        }

        return map;
    }

    private void InitalDiMap(String id, List<String> zbls, List<String> keyls, Map<String, Integer> map, List<String> unicodels, List<String> unmsls) {
        if(unmsls.size()==unicodels.size())
        {
            Map<String,String> tempmap=new HashMap<>();
            for(int i=0;i<unmsls.size();i++)
            {
                tempmap.put(unicodels.get(i),unmsls.get(i));
            }
            List<WindTurbineTestingPointDi2> list = windTurbineTestingPointDiService.getWindTurbineTestingPointDi2List(id, unicodels);

            if (!list.isEmpty()) {

                for (int i=0;i<list.size();i++) {
                    WindTurbineTestingPointDi2 di=list.get(i);
                    if(map.containsKey(di.getUniformcode()))
                    {
                        continue;
                    }
                    if(null!=di.getId())
                    {
                        zbls.add(di.getId());//
                        if(tempmap.containsKey(di.getUniformcode()))
                        {
                            keyls.add(tempmap.get(di.getUniformcode()));
                            map.put(tempmap.get(di.getUniformcode()),zbls.size()-1);
                        }

                    }
                }
            }
        }
    }

    private void initialpoint(String id, List<String> zbls, List<String> keyls, Map<String, Integer> bjnamemap,List<String> uids ,List<String> msls) {

        if(msls.size()==uids.size())
        {
            for(int i=0;i<uids.size();i++)
            {
                WindTurbineTestingPointAi2 point= windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, uids.get(i));
                if(null!=point && null!=point.getId())
                {
                    zbls.add(point.getId());//
                    keyls.add(msls.get(i));//
                    bjnamemap.put(msls.get(i),zbls.size()-1);
                }
            }
        }


    }
//    private void initialpoint(String id, List<String> zbls, List<String> keyls, Map<String, Integer> bjnamemap,List<String> uids) {
//
//        for(String uid:uids)
//        {
//            WindTurbineTestingPointAi2 point= windTurbineTestingPointAiService.getWindTurbineTestingPointAi2(id, uid);
//            if(null!=point && null!=point.getId())
//            {
//                zbls.add(point.getId());//
//              // keyls.add(point.getUniformcode());//
//                bjnamemap.put(point.getUniformcode(),zbls.size()-1);
//            }
//        }
//
//    }



    public List<Map<String, Object>> findWtInfoList(String wpId) throws Exception {

        List<Map<String, Object>> vos=new ArrayList<>();

        if (StringUtils.notEmp(wpId)) {

            if (InitialRunner.wp_wtmap.containsKey(wpId)) {

                List<Windturbine> wtls=InitialRunner.wp_wtmap.get(wpId);

                for(Windturbine wt:wtls)
                {
                    String id=wt.getId();


                    List<String> msls = new ArrayList<>();
                    List<String> zbls = new ArrayList<>();
                    List<String> keyls = new ArrayList<>();
                    List<String> uids = new ArrayList<>();
                    Map<String, Integer> namemap = new HashMap<>();

                    uids.add(Constant.TPOINT_WT_FDJLQFWD);//冷却风温度
                    uids.add(Constant.TPOINT_WT_FJGL);//有功功率
                    uids.add(Constant.TPOINT_WT_YYYW);//液压油温
                    uids.add(Constant.PCS_WD);//PSC温度


                    msls.add("FDJLQFWD");//冷却风温度
                    msls.add("FJGL");//有功功率
                    msls.add("YYYW");//液压油温
                    msls.add("PCS_WD");//PSC温度
                    if (wt.getWindpowerstationid().equals(QS_FDC)) {
                        uids.add(Constant.QSTPOINT_WT_U1YZWD);//U1绕组温度
                        uids.add(Constant.QSTPOINT_WT_V1YZWD);//V1绕组温度
                        uids.add(Constant.QSTPOINT_WT_W1YZWD);//W1绕组温度

                        msls.add("U1YZWD");//U1绕组温度
                        msls.add("V1YZWD");//V1绕组温度
                        msls.add("W1YZWD");//W1绕组温度
                    }else
                    {
                        uids.add(Constant.TPOINT_WT_U1YZWD);//U1绕组温度
                        uids.add(Constant.TPOINT_WT_V1YZWD);//V1绕组温度
                        uids.add(Constant.TPOINT_WT_W1YZWD);//W1绕组温度

                        msls.add("U1YZWD");//U1绕组温度
                        msls.add("V1YZWD");//V1绕组温度
                        msls.add("W1YZWD");//W1绕组温度
                    }
                    uids.add(Constant.TPOINT_WT_U2YZWD);//U2绕组温度
                    uids.add(Constant.TPOINT_WT_V2YZWD);//V2绕组温度
                    uids.add(Constant.TPOINT_WT_W2YZWD);//W2绕组温度
                    uids.add(Constant.TPOINT_WT_FDJZCAWD);//发电机轴承A温度
                    uids.add(Constant.TPOINT_WT_FDJZCBWD);//发电机轴承B温度
                    uids.add(Constant.TPOINT_WT_CLXWD);//齿轮箱油温
                    uids.add(Constant.TPOINT_WT_CLXSRZ1WD);//齿轮箱输入轴1温度
                    uids.add(Constant.TPOINT_WT_CLXSRZ2WD);//齿轮箱输入轴2温度
                    uids.add(Constant.TPOINT_WT_JCWD);//机舱温度
                    uids.add(Constant.TPOINT_WT_JCWWD);//机舱外温度
                    uids.add(Constant.TPOINT_WT_FDJHHWD);//发电机滑环温度


                    msls.add("U2YZWD");//U2绕组温度
                    msls.add("V2YZWD");//V2绕组温度
                    msls.add("W2YZWD");//W2绕组温度
                    msls.add("FDJZCAWD");//发电机轴承A温度
                    msls.add("FDJZCBWD");//发电机轴承B温度
                    msls.add("CLXWD");//齿轮箱油温
                    msls.add("CLXSRZ1WD");//齿轮箱输入轴1温度
                    msls.add("CLXSRZ2WD");//齿轮箱输入轴2温度
                    msls.add("JCWD");//机舱温度
                    msls.add("JCWWD");//机舱外温度
                    msls.add("FDJHHWD");//发电机滑环温度
                    
                    
                    initialpoint(id, zbls, keyls, namemap,uids,msls);
/*******************************************************************************************************************************************************/

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

                    zbmap.put("model", wt.getModelid());
                    zbmap.put("wpid", wt.getWindpowerstationid());
                    zbmap.put("pjid", wt.getProjectid());
                    zbmap.put("lnid", wt.getLineid());
                    zbmap.put("code", wt.getCode());
                    List<PointData> zblist = realApiUtil.getRealData(zbls);


                    if (!zblist.isEmpty() && zblist.size() == zbls.size() && keyls.size() == zbls.size()) {
/**************************************************************基础指标***********************************************************************************/



                        for(int i=0;i<keyls.size();i++)
                        {
                            if(namemap.containsKey(keyls.get(i)))
                            {
                                int num=namemap.get(keyls.get(i));
                                zbmap.put(keyls.get(i), MathUtil.twoBit(zblist.get(num).getPointValueInDouble()));//
                            }

                        }


/**************************************************************基础指标***********************************************************************************/


                    } else {

                    }

                    for(String str:msls)
                    {
                        if(!zbmap.containsKey(str))
                        {
                            zbmap.put(str,null);
                        }
                    }
                    vos.add(zbmap);

                }
            }



        }

        return vos;
    }

}


