package com.gyee.alarm.init; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.gyee.alarm.model.vo.AlarmVo; import com.gyee.common.model.PointData; import com.gyee.common.model.StringUtils; import com.gyee.alarm.model.auto.*; import com.gyee.alarm.service.auto.*; import com.gyee.alarm.service.realtimelibrary.TheoreticalPowerService; import com.gyee.alarm.util.redis.RedisService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** * @ClassName : CacheContext * @Author : xieshengjie * @Date: 2021/5/18 9:35 * @Description : 缓存 */ @Component public class CacheContext implements CommandLineRunner { Logger logger = LoggerFactory.getLogger(CacheContext.class); @Resource private IProBasicEquipmentService proBasicEquipmentService; @Resource private IProBasicLineService proBasicLineService; @Resource private IProBasicProjectService proBasicProjectService; @Resource private IProBasicPowerstationService proBasicWindpowerstationService; @Resource private IProBasicMeterPointService proBasicMeterPointService; @Resource private IProEconEquipmentmodelService proEconEquipmentmodelService; @Resource private IProEconWtPowerCurveFittingService proEconWtPowerCurveFittingService; @Resource private IProBasicWindturbinePowerService proBasicWindturbinePowerService; @Resource private RedisService redisService; @Resource private IProBasicModelPowerService proBasicModelPowerService; @Resource private IProBasicSubStationService proBasicSubStationService; @Resource private IProBasicSquareService proBasicSquareService; @Resource private IProBasicCompanyService proBasicCompanyService; @Resource private IProBasicRegionService proBasicRegionService; @Resource private TheoreticalPowerService theoreticalPowerService; @Resource private IProBasicModelPowerRdService proBasicModelPowerRdService; @Resource private IProBasicWeatherStationService proBasicWeatherStationService; @Resource private IProBasicBranchService proBasicBranchService; @Resource private IProBasicEnergyGroupService proBasicEnergyGroupService; @Resource private IProEconStateAiService proEconStateAiService; @Resource private IProBasicStatusPointService proBasicStatusPointService; @Value("${runWindpowerstation}") private String runWindpowerstation; public static List alarmVoList = new ArrayList<>(); public static List wtls = new ArrayList<>(); public static List wt_fjls = new ArrayList<>(); public static List pjls = new ArrayList<>(); public static List lnls = new ArrayList<>(); public static List subwpls = new ArrayList<>(); public static List wswpls = new ArrayList<>(); public static List sqls = new ArrayList<>(); public static List wpls = new ArrayList<>(); public static List zwpls = new ArrayList<>(); public static List cpls = new ArrayList<>(); public static List rgls = new ArrayList<>(); public static List egls = new ArrayList<>(); public static Map pjmap = new HashMap<>(); public static Map lnmap = new HashMap<>(); public static Map rgmap = new HashMap<>(); public static Map egmap = new HashMap<>(); public static Map cpmap = new HashMap<>(); public static Map> cpwpmap = new HashMap<>(); public static Map> rgcpmap = new HashMap<>(); public static Map sqmap = new HashMap<>(); public static Map wpmap = new HashMap<>(); public static List meterpoints = new ArrayList<>(); public static Map meterpointMap = new HashMap<>(); public static Map> wppromap = new HashMap<>(); public static Map> prolinemap = new HashMap<>(); public static Map> wpwtmap = new HashMap<>(); public static Map> pjwtmap = new HashMap<>(); public static Map> lnwtmap = new HashMap<>(); public static List wsls=new ArrayList<>(); public static Map> poWsStationMap = new HashMap<>(); public static Map> sqwtmap = new HashMap<>(); public static Map> wtpAimap = new HashMap<>();// 风电机测点AI表 public static Map> linepointmap =new HashMap<>(); public static Map> propointmap =new HashMap<>(); public static Map> wppointmap =new HashMap<>(); public static Map> subwppointmap =new HashMap<>(); public static Map> wswppointmap =new HashMap<>(); public static Map> companypointmap =new HashMap<>(); public static Map> regionpointmap =new HashMap<>(); public static Map> grouppointmap =new HashMap<>(); public static Map> zbzglMap = new HashMap<>(); public static Map modelMap = new HashMap<>(); public static Map> zzsglMap = new HashMap<>(); public static Map modelpower = new HashMap<>(); public static Map wtstandardmap = new HashMap<>(); public static Map wtmap = new HashMap<>(); public static Map> modelpowermap = new TreeMap<>(); public static List mpls=new ArrayList<>(); public static List equipmentmodels=new ArrayList<>(); public static Map> subWtsMap = new HashMap<>(); public static List theoreticalPowerList=new ArrayList<>(); public static Map> theoreticalPowerMap = new HashMap<>(); //理论,保证功率 public static Map> curveFittingPowerMap = new HashMap<>(); //自算,最优功率 public static Map> statusMap = new HashMap<>(); public static Map> wspointmap =new HashMap<>(); public static Map> zlpointmap =new HashMap<>(); public static Map> aistateMap = new HashMap<>(); public static Map redisDbMap = new HashMap<>(); public static List pointdis = new ArrayList<>(); public static Map< String,Map> pointdismap = new HashMap<>(); public static Map> wtDataValueMap = new ConcurrentHashMap<>();// 设备实时数据 public static Map> wpDataValueMap =new ConcurrentHashMap<>();// 场站实时数据 public static Map> wsDataValueMap =new ConcurrentHashMap<>();// 升压站实时数据 public static List wtPointList = new ArrayList<>();// 设备测点集合 public static List wpPointList =new ArrayList<>(); //场站测点集合 public static List wsPointList =new ArrayList<>(); //升压站测点集合 @Override public void run(String... args) throws Exception { logger.info("缓存开始------------------------------------------------------------"); // if(redisService.hasKey(("alarmVoList"))) // { // String alarmVoListStr = redisService.get("alarmVoList"); // alarmVoList = JSONObject.parseObject(alarmVoListStr, new TypeReference>() { // }); // // } List runWpids = Arrays.asList(runWindpowerstation.split(",")); logger.info(runWpids.get(0)+"------------------"+runWpids.size()); wsls= proBasicWeatherStationService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList()); if(!wsls.isEmpty()) { for(ProBasicWeatherStation ws:wsls) { if(poWsStationMap.containsKey(ws.getWindpowerstationId())) { List ls=poWsStationMap.get(ws.getWindpowerstationId()); ls.add(ws); poWsStationMap.put(ws.getWindpowerstationId(),ls); }else { List ls=new ArrayList<>(); ls.add(ws); poWsStationMap.put(ws.getWindpowerstationId(),ls); } } } theoreticalPowerList= proBasicModelPowerRdService.list(); equipmentmodels = proEconEquipmentmodelService.list(); equipmentmodels.stream().forEach(e->{ modelMap.put(e.getId(),e); }); mpls=proBasicModelPowerService.list(); mpls.sort(Comparator.comparing(ProBasicModelPower::getSpeed)); if(!mpls.isEmpty()) { for(ProBasicModelPower mp:mpls) { if(modelpowermap.containsKey(mp.getModelId())) { Map tempmap=modelpowermap.get(mp.getModelId()); tempmap.put(mp.getSpeed(),mp); }else { Map tempmap=new HashMap<>(); tempmap.put(mp.getSpeed(),mp); modelpowermap.put(mp.getModelId(),tempmap); } } } sqls=proBasicSquareService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList()); if (!sqls.isEmpty()) { for(ProBasicSquare sq:sqls) { sqmap.put(sq.getId(),sq); } } cpls=proBasicCompanyService.list().stream().filter(i->i.getIsAble().equals(1)).collect(Collectors.toList()); if (!cpls.isEmpty()) { for(ProBasicCompany sq:cpls) { cpmap.put(sq.getId(),sq); if (redisService.hasKey(sq.getId()+"0")){ String cp0String = redisService.get(sq.getId()+"0"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp0String, new TypeReference>() { }); companypointmap.put(sq.getId()+"0",stringWindpowerstationpointnewMap); } if (redisService.hasKey(sq.getId()+"-1")){ String cp1String = redisService.get(sq.getId()+"-1"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp1String, new TypeReference>() { }); companypointmap.put(sq.getId()+"-1",stringWindpowerstationpointnewMap); } if (redisService.hasKey(sq.getId()+"-2")){ String cp2String = redisService.get(sq.getId()+"-2"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp2String, new TypeReference>() { }); companypointmap.put(sq.getId()+"-2",stringWindpowerstationpointnewMap); } } } rgls=proBasicRegionService.list().stream().filter(i->i.getIsAble()==1).collect(Collectors.toList()); if (!rgls.isEmpty()) { for(ProBasicRegion sq:rgls) { rgmap.put(sq.getId(),sq); if (redisService.hasKey(sq.getId()+"0")){ String cp0String = redisService.get(sq.getId()+"0"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp0String, new TypeReference>() { }); regionpointmap.put(sq.getId()+"0",stringWindpowerstationpointnewMap); } if (redisService.hasKey(sq.getId()+"-1")){ String cp1String = redisService.get(sq.getId()+"-1"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp1String, new TypeReference>() { }); regionpointmap.put(sq.getId()+"-1",stringWindpowerstationpointnewMap); } if (redisService.hasKey(sq.getId()+"-2")){ String cp2String = redisService.get(sq.getId()+"-2"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp2String, new TypeReference>() { }); regionpointmap.put(sq.getId()+"-2",stringWindpowerstationpointnewMap); } } } egls=proBasicEnergyGroupService.list().stream().filter(i->i.getIsAble()==1 && !i.getParentid().equals("0")).collect(Collectors.toList()); if (!egls.isEmpty()) { for(ProBasicEnergyGroup sq:egls) { egmap.put(sq.getId(),sq); if (redisService.hasKey(sq.getId()+"0")){ String eg0String = redisService.get(sq.getId()+"0"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(eg0String, new TypeReference>() { }); grouppointmap.put(sq.getId()+"0",stringWindpowerstationpointnewMap); } if (redisService.hasKey(sq.getId()+"-1")){ String eg1String = redisService.get(sq.getId()+"-1"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(eg1String, new TypeReference>() { }); grouppointmap.put(sq.getId()+"-1",stringWindpowerstationpointnewMap); } if (redisService.hasKey(sq.getId()+"-2")){ String eg2String = redisService.get(sq.getId()+"-2"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(eg2String, new TypeReference>() { }); grouppointmap.put(sq.getId()+"-2",stringWindpowerstationpointnewMap); } } } for(ProBasicCompany cp:cpls) { if (rgcpmap.containsKey(cp.getRegionId())){ rgcpmap.get(cp.getRegionId()).add(cp); }else { List wps = new ArrayList<>(); wps.add(cp); rgcpmap.put(cp.getRegionId(),wps); } } for(ProBasicPowerstation wp:wpls) { if (cpwpmap.containsKey(wp.getCompanyId())){ cpwpmap.get(wp.getCompanyId()).add(wp); }else { List wps = new ArrayList<>(); wps.add(wp); cpwpmap.put(wp.getCompanyId(),wps); } } wsls.stream().forEach(p->{ String wsString = redisService.get(p.getId()); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(wsString, new TypeReference>() { }); for(Map.Entry entry : stringWindpowerstationpointnewMap.entrySet()){ wsPointList.add(entry.getValue()); } wspointmap.put(p.getId(),stringWindpowerstationpointnewMap); }); // //支路 // List basicBranches = proBasicBranchService.list(); // if (basicBranches!=null && basicBranches.size()>0){ // basicBranches.stream().forEach(b->{ // String wsString = redisService.get(b.getId()); // Map stringWindpowerstationpointnewMap = JSONObject.parseObject(wsString, new TypeReference>() { // }); // zlpointmap.put(b.getId(),stringWindpowerstationpointnewMap); // }); // } wtls = proBasicEquipmentService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsable()==1).collect(Collectors.toList()); logger.info(wtls.size()+""); wtls.forEach(wt->{ if(modelMap.containsKey(wt.getModelId())) { ProEconEquipmentmodel equipmentmodel = modelMap.get(wt.getModelId()); modelpower.put(wt.getModelId(),equipmentmodel.getPowerProduction().doubleValue()); } if(wt.getId().contains("_F_")) { wt_fjls.add(wt); } wtmap.put(wt.getId(),wt); //标杆风机初始化 wtstandardmap.put(wt.getId(),wt.getId()); String wtString = redisService.get(wt.getId()); Map stringWindturbinetestingpointnewMap = JSONObject.parseObject(wtString, new TypeReference>() { }); for(Map.Entry entry : stringWindturbinetestingpointnewMap.entrySet()){ wtPointList.add(entry.getValue()); } wtpAimap.put(wt.getId(),stringWindturbinetestingpointnewMap); if (wpwtmap.containsKey(wt.getWindpowerstationId())){ wpwtmap.get(wt.getWindpowerstationId()).add(wt); }else { List wps = new ArrayList<>(); wps.add(wt); wpwtmap.put(wt.getWindpowerstationId(),wps); } if (pjwtmap.containsKey(wt.getProjectId())){ pjwtmap.get(wt.getProjectId()).add(wt); }else { List pjs = new ArrayList<>(); pjs.add(wt); pjwtmap.put(wt.getProjectId(),pjs); } if (lnwtmap.containsKey(wt.getLineId())){ lnwtmap.get(wt.getLineId()).add(wt); }else { List lnls = new ArrayList<>(); lnls.add(wt); lnwtmap.put(wt.getLineId(),lnls); } if (sqwtmap.containsKey(wt.getSquareId())){ sqwtmap.get(wt.getSquareId()).add(wt); }else { List lnls = new ArrayList<>(); lnls.add(wt); sqwtmap.put(wt.getSquareId(),lnls); } }); //初始化标杆风机 for(ProBasicEquipment wt:wtls) { if(wpwtmap.containsKey(wt.getLineId())) { List wts=wpwtmap.get(wt.getLineId()); for(ProBasicEquipment w:wts) { if(StringUtils.notEmp(w.getIsStandard()) && w.getIsStandard()!=0) { wtstandardmap.put(wt.getId(),w.getId()); break; } } } if(pjwtmap.containsKey(wt.getLineId())) { List wts=pjwtmap.get(wt.getLineId()); for(ProBasicEquipment w:wts) { if(StringUtils.notEmp(w.getIsStandard()) && w.getIsStandard()!=0) { wtstandardmap.put(wt.getId(),w.getId()); break; } } } if(lnwtmap.containsKey(wt.getLineId())) { List wts=lnwtmap.get(wt.getLineId()); for(ProBasicEquipment w:wts) { if(StringUtils.notEmp(w.getIsStandard()) && w.getIsStandard()!=0) { wtstandardmap.put(wt.getId(),w.getId()); break; } } } } pjls = proBasicProjectService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList()); pjls.stream().forEach(p->{ pjmap.put(p.getId(),p); if (wppromap.containsKey(p.getWindpowerstationId())){ wppromap.get(p.getWindpowerstationId()).add(p); }else { List prolist = new ArrayList<>(); prolist.add(p); wppromap.put(p.getWindpowerstationId(),prolist); } String pjString = redisService.get(p.getId()); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(pjString, new TypeReference>() { }); propointmap.put(p.getId(),stringWindpowerstationpointnewMap); }); subwpls = proBasicSubStationService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList()); subwpls.stream().forEach(sub->{ String subString = redisService.get(sub.getId()); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference>() { }); subwppointmap.put(sub.getId(),stringWindpowerstationpointnewMap); List collect = wtls.stream().filter(wt -> wt.getSubstationId().equals(sub.getId())).collect(Collectors.toList()); subWtsMap.put(sub.getId(),collect); }); wswpls = proBasicWeatherStationService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList()); wswpls.stream().forEach(ws->{ String subString = redisService.get(ws.getId()); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference>() { }); wswppointmap.put(ws.getId(),stringWindpowerstationpointnewMap); // List collect = wtls.stream().filter(wt -> wt.getSubstationId().equals(sub.getId())).collect(Collectors.toList()); // subWtsMap.put(sub.getId(),collect); }); List proEconStateAis = proEconStateAiService.list(); proEconStateAis.stream().forEach(ai->{ if (aistateMap.containsKey(ai.getModelid())){ aistateMap.get(ai.getModelid()).put(ai.getOriginalState(),ai.getMappingState()); }else { Map stateMap = new HashMap<>(); stateMap.put(ai.getOriginalState(),ai.getMappingState()); aistateMap.put(ai.getModelid(),stateMap); } }); lnls = proBasicLineService.list().stream().filter(i-> StringUtils.isNotNull(pjmap.get(i.getProjectId())) && runWpids.contains(pjmap.get(i.getProjectId()).getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList()); lnls.stream().forEach(l->{ lnmap.put(l.getId(),l); if (prolinemap.containsKey(l.getProjectId())){ prolinemap.get(l.getProjectId()).add(l); }else { List lineList = new ArrayList<>(); lineList.add(l); prolinemap.put(l.getProjectId(),lineList); } String lnString = redisService.get(l.getId()); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(lnString, new TypeReference>() { }); linepointmap.put(l.getId(),stringWindpowerstationpointnewMap); }); zwpls = proBasicWindpowerstationService.list().stream().filter(i->runWpids.contains(i.getId())&& i.getIsAble()==1).collect(Collectors.toList()); wpls = proBasicWindpowerstationService.list().stream().filter(i->runWpids.contains(i.getId()) && i.getIsAble()==1).collect(Collectors.toList());; meterpoints = proBasicMeterPointService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList()); meterpoints.stream().forEach(meterpoint -> { meterpointMap.put(meterpoint.getNemCode(),meterpoint); }); wpls.stream().forEach(wp->{ wpmap.put(wp.getId(),wp); String wpString = redisService.get(wp.getId()); Map stringMapMap = JSONObject.parseObject(wpString, new TypeReference>() { }); for(Map.Entry entry : stringMapMap.entrySet()){ wpPointList.add(entry.getValue()); } wppointmap.put(wp.getId(),stringMapMap); }); // String llglString = redisService.get("ZLLGL"); // theoreticalPowerMap = JSONObject.parseObject(llglString, new TypeReference>>() { // }); String sszzt = redisService.get("SSZZT"); statusMap = JSONObject.parseObject(sszzt, new TypeReference>>() { }); // List econWtPowerCurveFittings = proEconWtPowerCurveFittingService.list(); // if (StringUtils.isNotNull(econWtPowerCurveFittings)){ // econWtPowerCurveFittings.stream().forEach(curveFitting->{ // if (curveFittingPowerMap.containsKey(curveFitting.getWindturbineId())){ // curveFittingPowerMap.get(curveFitting.getWindturbineId()).put(curveFitting.getSpeed(),curveFitting); // }else { // Map powerMap = new HashMap<>(); // powerMap.put(curveFitting.getSpeed(),curveFitting); // curveFittingPowerMap.put(curveFitting.getWindturbineId(),powerMap); // } // }); // } // for (int i = 0; i < 9; i++) { // Set keys = redisService.keys(i); // // for (String key : keys) { // redisDbMap.put(key, i); // } // } // // pointdis = proBasicStatusPointService.list(); // // Map items = null; // if (pointdis != null && !pointdis.isEmpty()) { // for (int i = 0; i < pointdis.size(); i++) { // ProBasicStatusPoint point = pointdis.get(i); // if (pointdismap.containsKey(point.getWindturbineId())) { // items = pointdismap.get(point.getWindturbineId()); // items.put(point.getUniformCode(), point); // } else { // items = new HashMap(); // pointdismap.put(point.getWindturbineId(), items); // items.put(point.getUniformCode(), point); // } // // } // } logger.info("缓存结束------------------------------------------------------------"); } }