package com.gyee.runeconomy.init; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.gyee.common.model.StringUtils; import com.gyee.runeconomy.model.auto.*; import com.gyee.runeconomy.service.auto.*; import com.gyee.runeconomy.service.realtimelibrary.TheoreticalPowerService; import com.gyee.runeconomy.util.redis.RedisService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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); private final String QS = "0"; @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 IProBasicWindturbinePowerService proBasicWindturbinePowerService; @Resource private RedisService redisService; @Resource private IProBasicModelPowerService proBasicModelPowerService; @Resource private IProBasicSubStationService proBasicSubStationService; @Resource private IProBasicWeatherStationService proBasicWeatherStationService; @Resource private IProBasicSquareService proBasicSquareService; @Resource private IProBasicCompanyService proBasicCompanyService; @Resource private IProBasicRegionService proBasicRegionService; @Resource private IProBasicEnergyGroupService proBasicEnergyGroupService; @Resource private TheoreticalPowerService theoreticalPowerService; @Resource private IProBasicModelPowerRdService proBasicModelPowerRdService; @Resource private IProBasicPowerstationPointService proBasicPowerstationPointService; @Resource private IProBasicEquipmentPointService proBasicEquipmentPointService; 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 weawpls = new ArrayList<>(); public static List sqls = new ArrayList<>(); public static List wpls = new ArrayList<>(); public static List wplsf = new ArrayList<>(); public static List wplsG = new ArrayList<>(); //光电集合 public static List zwpls = new ArrayList<>(); public static List cpls = new ArrayList<>(); public static List rgls = new ArrayList<>(); public static List gpls = new ArrayList<>(); public static List powerpointls = new ArrayList<>(); public static List Equipmentpointls = 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 gpmap = new HashMap<>(); public static Map> cpwpmap = new HashMap<>(); public static Map> wpmapls = new HashMap<>(); public static Map> stationls = 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> projmap = 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 Map> cmwtlsmap = new HashMap<>(); public static Map> rgwtlsmap = new HashMap<>(); public static Map> cmwtmap = new HashMap<>(); public static Map> sqwtmap = new HashMap<>(); public static Map> wtpAimap = new HashMap<>();// 风电机测点AI表 public static Map> wtpointmap = new HashMap<>();//风机测点 public static Map> linepointmap =new HashMap<>(); public static Map> lnPointmap =new HashMap<>();//线路测点 public static Map> propointmap =new HashMap<>(); public static Map> pjPointmap =new HashMap<>(); //期次测点 public static Map> wppointmap =new HashMap<>(); public static Map> pointwpmap =new HashMap<>(); public static Map> subwppointmap =new HashMap<>(); public static Map> weatherwppointmap =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<>(); @Override public void run(String... args) throws Exception { logger.info("缓存开始------------------------------------------------------------"); 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->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); } } } List energyGroups = proBasicEnergyGroupService.list(); gpls = energyGroups.stream().filter(e->e.getIsAble()==1 && e.getId().endsWith("FGS")).collect(Collectors.toList()); if (!gpls.isEmpty()) { for(ProBasicEnergyGroup gp:gpls) { gpmap.put(gp.getId(),gp); if (redisService.hasKey(gp.getId()+"0")){ String cp0String = redisService.get(gp.getId()+"0"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp0String, new TypeReference>() { }); grouppointmap.put(gp.getId()+"0",stringWindpowerstationpointnewMap); } if (redisService.hasKey(gp.getId()+"-1")){ String cp1String = redisService.get(gp.getId()+"-1"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp1String, new TypeReference>() { }); grouppointmap.put(gp.getId()+"-1",stringWindpowerstationpointnewMap); } if (redisService.hasKey(gp.getId()+"-2")){ String cp2String = redisService.get(gp.getId()+"-2"); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(cp2String, new TypeReference>() { }); grouppointmap.put(gp.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); } } wtls = proBasicEquipmentService.list().stream().filter(i->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 (cmwtlsmap.containsKey(wt.getCompanyId())){ cmwtlsmap.get(wt.getCompanyId()).add(wt); }else { List cmls = new ArrayList<>(); cmls.add(wt); cmwtlsmap.put(wt.getCompanyId(),cmls); } if (rgwtlsmap.containsKey(wt.getRegionId())){ rgwtlsmap.get(wt.getRegionId()).add(wt); }else { List rgls = new ArrayList<>(); rgls.add(wt); rgwtlsmap.put(wt.getRegionId(),rgls); } if (sqwtmap.containsKey(wt.getSquareId())){ sqwtmap.get(wt.getSquareId()).add(wt); }else { List lnls = new ArrayList<>(); lnls.add(wt); sqwtmap.put(wt.getSquareId(),lnls); } if (cmwtmap.containsKey(wt.getCompanyId())){ cmwtmap.get(wt.getCompanyId()).put(wt.getId(),wt); }else { Map map=new HashMap<>(); map.put(wt.getId(),wt); cmwtmap.put(wt.getCompanyId(),map); } }); //初始化标杆风机 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-> 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); }); projmap = pjls.stream().collect(Collectors.groupingBy(ProBasicProject::getWindpowerstationId)); subwpls = proBasicSubStationService.list().stream().filter(i-> 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); }); weawpls = proBasicWeatherStationService.list().stream().filter(i-> i.getIsAble()==1).collect(Collectors.toList()); weawpls.stream().forEach(weather->{ String subString = redisService.get(weather.getId()); Map stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference>() { }); weatherwppointmap.put(weather.getId(),stringWindpowerstationpointnewMap); }); //线路 lnls = proBasicLineService.list().stream().filter(i-> StringUtils.isNotNull(pjmap.get(i.getProjectId())) && 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->i.getIsAble()==1).collect(Collectors.toList());; 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); } } meterpoints = proBasicMeterPointService.list().stream().filter(i->i.getIsAble()==1).collect(Collectors.toList()); meterpoints.stream().forEach(meterpoint -> { meterpointMap.put(meterpoint.getId(),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); }); if (!wpls.isEmpty()) { for (ProBasicPowerstation wp : wpls) { if (wp.getId().endsWith("FDC_STA")) { wplsf.add(wp); } if (wp.getId().endsWith("GDC_STA")) { wplsG.add(wp); } if(wpmapls.containsKey(wp.getId())) { List ls=wpmapls.get(wp.getId()); ls.add(wp); wpmapls.put(wp.getId(),ls); }else { List ls=new ArrayList<>(); ls.add(wp); wpmapls.put(wp.getId(),ls); } // if(wp.getWindType().equals(-1) && wp.getWindType().equals(-2)){ // List ls = stationls.get(wp.getWindType()); // stationls.put(wp.getWindType()+QS,ls); // } wpmap.put(wp.getId(),wp); } } Map items=null; powerpointls = proBasicPowerstationPointService.list().stream().filter(i ->i.getId() != null).collect(Collectors.toList()); if(powerpointls!=null && !powerpointls.isEmpty()){ for(int i=0;i(); pjPointmap.put(point.getWindpowerstationId(), items); items.put(point.getUniformCode(), point); } }else if(lnmap.containsKey(powerpointls.get(i).getWindpowerstationId())) { ProBasicPowerstationPoint point=powerpointls.get(i); if(lnPointmap.containsKey(point.getWindpowerstationId())){ items=lnPointmap.get(point.getWindpowerstationId()); items.put(point.getUniformCode(), point); } else{ items=new HashMap(); lnPointmap.put(point.getWindpowerstationId(), items); items.put(point.getUniformCode(), point); } }else { ProBasicPowerstationPoint point = powerpointls.get(i); if(pointwpmap.containsKey(point.getWindpowerstationId())){ items=pointwpmap.get(point.getWindpowerstationId()); items.put(point.getUniformCode(), point); } else{ items=new HashMap(); pointwpmap.put(point.getWindpowerstationId(), items); items.put(point.getUniformCode(), point); } } } } String llglString = redisService.get("ZLLGL"); theoreticalPowerMap = JSONObject.parseObject(llglString, new TypeReference>>() { }); llglString = redisService.get("ZLLGLLS"); theoreticalPowerList= JSONObject.parseObject(llglString, new TypeReference>() { }); String sszzt = redisService.get("SSZZT"); statusMap = JSONObject.parseObject(sszzt, new TypeReference>>() { }); logger.info("缓存结束------------------------------------------------------------"); } }