package com.gyee.generation.init; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.gyee.common.model.StringUtils; import com.gyee.generation.model.auto.*; import com.gyee.generation.service.auto.*; import com.gyee.generation.service.realtimelibrary.TheoreticalPowerService; import com.gyee.generation.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.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; @Value("${runWindpowerstation}") private String runWindpowerstation; public static List wtls = 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 Map pjmap = new HashMap<>(); public static Map lnmap = new HashMap<>(); public static Map rgmap = 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> 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<>(); @Override public void run(String... args) throws Exception { logger.info("缓存开始------------------------------------------------------------"); 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); } } } 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>() { }); wspointmap.put(p.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.getId(),equipmentmodel.getPowerProduction().doubleValue()); } wtmap.put(wt.getId(),wt); //标杆风机初始化 wtstandardmap.put(wt.getId(),wt.getId()); String wtString = redisService.get(wt.getId()); Map stringWindturbinetestingpointnewMap = JSONObject.parseObject(wtString, new TypeReference>() { }); 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); }); 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->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>() { }); 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); } }); } logger.info("缓存结束------------------------------------------------------------"); } }