package com.gyee.generation.service; import com.gyee.common.contant.ContantXk; import com.gyee.common.model.DNAStatVal; import com.gyee.common.model.PointData; import com.gyee.generation.init.CacheContext; import com.gyee.generation.model.auto.ProBasicEquipmentPoint; import com.gyee.generation.model.auto.ProBasicEquipment; import com.gyee.generation.model.auto.ProBasicPowerstationPoint; import com.gyee.generation.model.auto.ProEconLineElectrical; import com.gyee.generation.model.vo.RealTimeParameterVo; import com.gyee.generation.model.vo.SLWindpowerVo; import com.gyee.generation.model.vo.StatData; import com.gyee.generation.service.auto.IProEconLineElectricalService; import com.gyee.generation.util.DateUtils; import com.gyee.generation.util.StringUtils; import com.gyee.generation.util.realtimesource.IEdosUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @Service public class LimitService { @Resource private IProEconLineElectricalService proEconLineElectricalService; @Resource private IEdosUtil edosUtil; // 受累 Map sl; Map slvalue; Map windSL; public void execStatuSL() throws Exception { if (sl == null) initsl(); else { Map slv = new HashMap(); Date dt =new Date(); Map rList = new HashMap(); for (SLWindpowerVo item : sl.values()) { //事故总 if (item.getACCIDENTSIGNAL().size() > 0) { for (String key : item.getACCIDENTSIGNAL().keySet()) { Double cx = 0.0; cx = edosUtil.getRealData(key).getPointValueInDouble(); if (cx == 1) { for (String windturbineid : item.getACCIDENTSIGNAL().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 3); } } } } //出线断路器判断 if (item.getNETOUTCODE().size() > 0) { for (String key : item.getNETOUTCODE().keySet()) { Double cx = 1.0; cx = edosUtil.getRealData(key).getPointValueInDouble(); if (cx == 0) { for (String windturbineid : item.getNETOUTCODE().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 4); } } } } else { //主变高压侧 if (item.getNETHIGHCODE().size() > 0) { for (String key : item.getNETHIGHCODE().keySet()) { Double cx = 1.0; cx = edosUtil.getRealData(key).getPointValueInDouble(); if (cx == 0) { for (String windturbineid : item.getNETHIGHCODE().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 4); } } else { if (item.getPTCURRENTCODE().containsKey(key) && item.getPTCURRENT().containsKey(key)) { String code = item.getPTCURRENTCODE().get(key); Double max = item.getPTCURRENT().get(key); cx =edosUtil.getRealData(code).getPointValueInDouble(); if (cx > max) { for (String windturbineid : item.getNETOUTCODE().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 4); } } } if (item.getPTVOLTAGECODE().containsKey(key) && item.getPTVOLTAGEHIGH().containsKey(key) && item.getPTVOLTAGELOW().containsKey(key)) { String code = item.getPTVOLTAGECODE().get(key); Double max = item.getPTVOLTAGEHIGH().get(key); Double min = item.getPTVOLTAGELOW().get(key); cx =edosUtil.getRealData(code).getPointValueInDouble(); if (cx > max || cx < min) { for (String windturbineid : item.getNETOUTCODE().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 4); } } } } } } } //主变高压侧断路器判断 if (item.getNETHIGHCODE().size() > 0) { for (String key : item.getNETHIGHCODE().keySet()) { Double cx = 1.0; cx =edosUtil.getRealData(key).getPointValueInDouble(); if (cx == 0) { for (String windturbineid : item.getNETHIGHCODE().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 2); } } } } //主变低压侧断路器判断 if (item.getNETLOWCODE().size() > 0) { for (String key : item.getNETLOWCODE().keySet()) { Double cx = 1.0; cx =edosUtil.getRealData(key).getPointValueInDouble(); if (cx == 0) { for (String windturbineid : item.getNETLOWCODE().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 2); } } } } //进线断路器判断 if (item.getLINECODE().size() > 0) { for (String key : item.getLINECODE().keySet()) { Double cx = 1.0; cx =edosUtil.getRealData(key).getPointValueInDouble(); if (cx == 0) { for (String windturbineid : item.getLINECODE().get(key)) { BuilderSL(dt, rList, key, windturbineid, slv, 2); } } } } } // List pols=new ArrayList<>(); for (String key : windSL.keySet()) { double t =edosUtil.getRealData(windSL.get(key).getNemCode()).getPointValueInDouble(); if (!slv.containsKey(key)) { if (slvalue.get(key) != 0) { slvalue.put(key,0); if (t == 2 || t == 3 || t == 4) { RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(windSL.get(key).getNemCode()); rt.setTime(dt); rt.setInsertValue(0.0); rList.put(key, rt); // PointData po=new PointData(); // po.setEdnaId(windSL.get(key).getId()); // po.setPointTime(dt.getTime()); // po.setPointValueInDouble(0.0); // pols.add(po); } } } } if (rList.size() > 0) { //批量插入测点 edosUtil.sendMultiRealTimeParamete(rList.values().stream().collect(Collectors.toList())); // ednaHelper.AddRealtimeEDNA(rList.Values.ToList()); } } } private void BuilderSL(Date dt, Map rList, String key, String windturbineid, Map slv, Integer i) { if (!slv.containsKey(windturbineid)) { slv.put(windturbineid, i); if (i != 3) { if (windSL.containsKey(windturbineid)) { if (slvalue.containsKey(windturbineid)) { if (slvalue.get(windturbineid) != i) { RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(windSL.get(windturbineid).getNemCode()); rt.setTime(dt); rt.setInsertValue(i); if (!rList.containsKey(windturbineid)) { slvalue.put(windturbineid,i); rList.put(windturbineid, rt); } } } } } } else { if (slv.get(windturbineid) == 3) { i = 3; } if (windSL.containsKey(windturbineid)) { if (slvalue.containsKey(windturbineid)) { if (slvalue.get(windturbineid) != i) { RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(windSL.get(windturbineid).getNemCode()); rt.setTime(dt); rt.setInsertValue(i); if (!rList.containsKey(windturbineid)) { slvalue.put(windturbineid,i); rList.put(windturbineid, rt); } } } } } } private void initsl() { sl = new HashMap(); slvalue = new HashMap(); //var electrical = entity.ProEconLineElectrical.ToList(); List wtls= CacheContext.wtls; Map> wtpAimap=CacheContext.wtpAimap; Map electrical = proEconLineElectricalService.list().stream().collect(Collectors.toMap(ProEconLineElectrical::getLineId, Function.identity())); wtls.stream().forEach(wt->{ if(wt.getWindpowerstationId().contains("FDC")) { Map windturbinetestingpointnewMap = wtpAimap.get(wt.getId()); if(windturbinetestingpointnewMap.containsKey(ContantXk.GPZT)) { ProBasicEquipmentPoint xdslPoint = windturbinetestingpointnewMap.get(ContantXk.GPZT); windSL.put(wt.getId(),xdslPoint); } } }); for (String key : windSL.keySet()) { if (!CacheContext.wtmap.containsKey(key)) { continue; } ProBasicEquipment item = CacheContext.wtmap.get(key); slvalue.put(item.getId(), 0); if (!electrical.containsKey(item.getLineId())) { continue; } ProEconLineElectrical line = electrical.get(item.getLineId()); if (sl.containsKey(item.getWindpowerstationId())) { SLWindpowerVo s = sl.get(item.getWindpowerstationId()); initialsl(item, line, s); } else { sl.put(item.getWindpowerstationId(), new SLWindpowerVo()); SLWindpowerVo s = sl.get(item.getWindpowerstationId()); s.setLINECODE(new HashMap>()); s.setNETLOWCODE(new HashMap>()); s.setNETHIGHCODE(new HashMap>()); s.setNETOUTCODE(new HashMap>()); s.setPTVOLTAGEHIGH(new HashMap()); s.setPTVOLTAGELOW(new HashMap()); s.setPTCURRENT(new HashMap()); s.setPTCURRENTCODE(new HashMap()); s.setPTVOLTAGECODE(new HashMap()); s.setACCIDENTSIGNAL(new HashMap>()); initialsl(item, line, s); } } } private static void initialsl(ProBasicEquipment windturbine, ProEconLineElectrical item, SLWindpowerVo s) { //进线断路器 if (s.getLINECODE().containsKey(item.getLineCode())) { List t = s.getLINECODE().get(item.getLineCode()); t.add(windturbine.getId()); } else { List t = new ArrayList(); t.add(windturbine.getId()); s.getLINECODE().put(item.getLineCode(), t); } //主变低压测 if (s.getNETLOWCODE().containsKey(item.getNetLowCode())) { List t = s.getNETLOWCODE().get(item.getNetLowCode()); t.add(windturbine.getId()); } else { List t = new ArrayList(); t.add(windturbine.getId()); s.getNETLOWCODE().put(item.getNetLowCode(), t); } //主变高压侧 if (s.getNETHIGHCODE().containsKey(item.getNetHighCode())) { List t = s.getNETHIGHCODE().get(item.getNetHighCode()); t.add(windturbine.getId()); } else { List t = new ArrayList(); t.add(windturbine.getId()); s.getNETHIGHCODE().put(item.getNetHighCode(), t); if (!s.getPTCURRENTCODE().containsKey(item.getNetHighCode())) { if (item.getPtcurrentCode() != null) { s.getPTCURRENTCODE().put(item.getNetHighCode(), item.getPtcurrentCode()); } } if (!s.getPTVOLTAGECODE().containsKey(item.getNetHighCode())) { if (item.getPtvoltageCode() != null) { s.getPTVOLTAGECODE().put(item.getNetHighCode(), item.getPtvoltageCode()); } } if (!s.getPTVOLTAGEHIGH().containsKey(item.getNetHighCode())) { if (item.getPtvoltageHigh() != null) { s.getPTVOLTAGEHIGH().put(item.getNetHighCode(), item.getPtvoltageHigh().doubleValue()); } } if (!s.getPTVOLTAGELOW().containsKey(item.getNetHighCode())) { if (item.getPtvoltageLow() != null) { s.getPTVOLTAGELOW().put(item.getNetHighCode(), item.getPtvoltageLow().doubleValue()); } } if (!s.getPTCURRENTCODE().containsKey(item.getNetHighCode())) { if (item.getPtcurrent() != null) { s.getPTCURRENT().put(item.getNetHighCode(), item.getPtcurrent().doubleValue()); } } } //出线 if (s.getNETOUTCODE().containsKey(item.getNetOutCode())) { List t = s.getNETOUTCODE().get(item.getNetOutCode()); t.add(windturbine.getId()); } else { List t = new ArrayList(); t.add(windturbine.getId()); s.getNETOUTCODE().put(item.getNetOutCode(), t); } //事故总 if (s.getACCIDENTSIGNAL().containsKey(item.getAccidentSignal())) { List t = s.getACCIDENTSIGNAL().get(item.getAccidentSignal()); t.add(windturbine.getId()); } else { List t = new ArrayList(); t.add(windturbine.getId()); s.getACCIDENTSIGNAL().put(item.getAccidentSignal(), t); } } //region AGC监视限电 //限电 static Map WindTurbineE; //shishi static Map WindturbineQXDic4; //限电状态 static Map> WindTurbineD; //限电受累 static Map> WindTurbineXDSL; //AGC限电指令 static Map WindPowerAGC; static Map WindPowerCXYG; static Map WindPowerZSGL; static Map WindPowerXDZT; static Map powerCache = new HashMap(); static Map timeCache = new HashMap(); public void execStatusAGCxd() throws Exception { if (WindTurbineE == null || WindTurbineD == null || WindPowerAGC == null) { WindTurbineD = new HashMap>(); List wtls= CacheContext.wtls; Map> wtpAimap=CacheContext.wtpAimap; wtls.stream().forEach(wt->{ Map windturbinetestingpointnewMap = wtpAimap.get(wt.getId()); if(windturbinetestingpointnewMap.containsKey(ContantXk.GPZT)) { ProBasicEquipmentPoint xdslPoint = windturbinetestingpointnewMap.get(ContantXk.GPZT); WindturbineXDSL.put(wt.getId(),xdslPoint); } }); Map> wppointmap =CacheContext.wppointmap; CacheContext.wpls.forEach(wp->{ Map wppMap = wppointmap.get(wp.getId()); if(wp.getId().contains("FDC")) { if(wppMap.containsKey(ContantXk.TPOINT_WP_AGC)) { ProBasicPowerstationPoint agcPoint = wppMap.get(ContantXk.TPOINT_WP_AGC); WindPowerAGC.put(wp.getId(),agcPoint); } if(wppMap.containsKey(ContantXk.TPOINT_WP_CXGL)) { ProBasicPowerstationPoint cxglPoint = wppMap.get(ContantXk.TPOINT_WP_CXGL); WindPowerCXYG.put(wp.getId(),cxglPoint); } if(wppMap.containsKey(ContantXk.SSZNHGLZS)) { ProBasicPowerstationPoint zsglPoint = wppMap.get(ContantXk.SSZNHGLZS); WindPowerZSGL.put(wp.getId(),zsglPoint); } if(wppMap.containsKey(ContantXk.XDZT)) { ProBasicPowerstationPoint xdztPoint = wppMap.get(ContantXk.XDZT); WindPowerXDZT.put(wp.getId(),xdztPoint); } } }); for (String key : WindPowerAGC.keySet()) { Map windD=new HashMap<>(); Map windturbinetestingpointnewMap = wtpAimap.get(key); if(windturbinetestingpointnewMap.containsKey(ContantXk.XDZT)) { ProBasicEquipmentPoint xdztPoint = windturbinetestingpointnewMap.get(ContantXk.XDZT); windD.put(key,xdztPoint); } if (windD != null) { WindTurbineD.put(key, windD); } powerCache.put(key, -1.0); } //风机转速限值1.5MV && 有功控制给定值2MV wtls.stream().forEach(wt->{ if(wt.getWindpowerstationId().contains("FDC")) { Map windturbinetestingpointnewMap = wtpAimap.get(wt.getId()); if(windturbinetestingpointnewMap.containsKey(ContantXk.XDZT)) { ProBasicEquipmentPoint xdclztPoint = windturbinetestingpointnewMap.get(ContantXk.XDZT); WindTurbineE.put(wt.getId(),xdclztPoint); } if(windturbinetestingpointnewMap.containsKey(ContantXk.SSQFZT)) { ProBasicEquipmentPoint rqfztPoint = windturbinetestingpointnewMap.get(ContantXk.SSQFZT); WindturbineQXDic4.put(wt.getId(),rqfztPoint); } } }); } else { Date time = new Date(); Date begin = DateUtils.addMinutes(time,-8); List projectRT = new ArrayList(); for (String item : WindPowerAGC.keySet()) { Double capacity = CacheContext.wpmap.get(item).getCapacity(); //读取AGC实时数据 Double windpoweragc = 0.0; if (WindPowerAGC.containsKey(item)) { windpoweragc =edosUtil.getRealData(WindPowerAGC.get(item).getNemCode()).getPointValueInDouble(); ; } //读取出线有功实时数据 Double windpowercxyg = 0.0; if (WindPowerCXYG.containsKey(item)) { windpowercxyg = edosUtil.getRealData(WindPowerCXYG.get(item).getNemCode()).getPointValueInDouble(); } // #region 读取历史数据 Double windpoweragcHis = 0.0; if (WindPowerAGC.containsKey(item)) { long pried= DateUtils.secondsDiff(begin,time); List hsls= edosUtil.getHistStat(WindPowerAGC.get(item).getNemCode(), begin.getTime()/1000, time.getTime()/1000, 1l,pried, StatData.AVG.getValue()); if(StringUtils.notEmp(hsls) && hsls.size()>0) { windpoweragcHis =hsls.get(0).getPointValueInDouble(); } } //读取出线有功历史数据 Double windpowercxygHis = 0.0; if (WindPowerCXYG.containsKey(item)) { long pried= DateUtils.secondsDiff(begin,time); List hsls= edosUtil.getHistStat(WindPowerCXYG.get(item).getNemCode(), begin.getTime()/1000, time.getTime()/1000, 1l,pried, StatData.AVG.getValue()); if(StringUtils.notEmp(hsls) && hsls.size()>0) { windpowercxygHis =hsls.get(0).getPointValueInDouble(); } } Double windpowerzsglHis = 0.0; if (WindPowerZSGL.containsKey(item)) { long pried= DateUtils.secondsDiff(begin,time); List hsls= edosUtil.getHistStat(WindPowerZSGL.get(item).getNemCode(), begin.getTime()/1000, time.getTime()/1000, 1l,pried, StatData.AVG.getValue()); if(StringUtils.notEmp(hsls) && hsls.size()>0) { windpowerzsglHis =hsls.get(0).getPointValueInDouble(); } } boolean k = false; //agc 硬限电 // 判断缓存有没有这个ID点 if (!powerCache.containsKey(item)) { continue; } //第一次初始化复制实时数据到缓存 if (powerCache.get(item) == -1) { powerCache.put(item,windpoweragc); } else if (powerCache.get(item) == windpoweragc) { //continue; k = true; } else { powerCache.put(item,windpoweragc); } //查看风场缓存中是否存在AGC信息 if (!CacheContext.wpmap.containsKey(item)) { continue; } if (!WindTurbineD.containsKey(item)) { continue; } windpoweragc = StringUtils.round(windpoweragc, 1); windpowercxyg = StringUtils.round(windpowercxyg, 1); capacity = StringUtils.round(capacity, 1); if (windpoweragc >= capacity) { for (String key : WindTurbineD.get(item).keySet()) { //String id = WindTurbineD[item][key].ID; //Double d = edosUtil.getRealData(id); //if (d == 1d) //{ //限电受累 String id2 = WindturbineXDSL.get(key).getNemCode(); Double xdsl = edosUtil.getRealData(id2).getPointValueInDouble(); Double val = 0.0; if (xdsl == 1) { val = 1.0; } RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(WindTurbineD.get(item).get(key).getNemCode()); rt.setTime(time); rt.setInsertValue(val); projectRT.add(rt); //} } RealTimeParameterVo fcrt = new RealTimeParameterVo(); fcrt.setPoint(WindPowerXDZT.get(item).getNemCode()); fcrt.setTime(time); fcrt.setInsertValue(0.0); projectRT.add(fcrt); } else { boolean b = false; if (windpowerzsglHis > capacity * 0.4) { if (windpowerzsglHis / windpoweragc > 1.5) { b = true; } if (windpoweragcHis <= windpowercxygHis) { b = true; } if (windpoweragcHis <= windpowerzsglHis * 0.75 && windpowercxygHis >= windpoweragcHis * 0.85) { b = true; } if (windpoweragcHis <= windpowerzsglHis * 0.85 && windpowercxygHis >= windpoweragcHis * 0.94) { b = true; } if (windpoweragcHis <= windpowerzsglHis && windpowercxygHis >= windpoweragcHis * 0.95) { b = true; } } else { if (k) { if (windpoweragcHis <= windpowercxygHis) { b = true; } if (windpoweragcHis <= windpowerzsglHis * 0.75 && windpowercxygHis >= windpoweragcHis * 0.94) { b = true; } } } // #region 新增短时间来回变化状态 if (b) { if (timeCache.containsKey(item)) { timeCache.put(item,time); } else { timeCache.put(item, time); } } else { if (timeCache.containsKey(item)) { Double minutes=DateUtils.minutesDiff2(time,timeCache.get(item)); if (minutes < 3) { if (windpoweragc - windpowercxyg<1.5) { b = true; } } } } // #endregion if (!b) { for (String key : WindTurbineD.get(item).keySet()) { //String id = WindTurbineD[item][key].ID; //Double d = edosUtil.getRealData(id); //if (d == 1d) //{ //限电受累 String id2 = WindturbineXDSL.get(key).getNemCode(); Double xdsl = edosUtil.getRealData(id2).getPointValueInDouble(); Double val = 0.0; if (xdsl == 1) { val = 1.0; } RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(WindTurbineD.get(item).get(key).getNemCode()); rt.setTime(time); rt.setInsertValue(val); projectRT.add(rt); //} } RealTimeParameterVo fcrt = new RealTimeParameterVo(); fcrt.setPoint(WindPowerXDZT.get(item).getNemCode()); fcrt.setTime(time); fcrt.setInsertValue(0.0); projectRT.add(fcrt); } else { RealTimeParameterVo fcrt = new RealTimeParameterVo(); fcrt.setPoint(WindPowerXDZT.get(item).getNemCode()); fcrt.setTime(time); fcrt.setInsertValue(1.0); projectRT.add(fcrt); for (String key : WindTurbineD.get(item).keySet()) { //限电状态 //String id = WindTurbineD[item][key].ID; //Double xd = edosUtil.getRealData(id); boolean tempb = false; if (CacheContext.wtmap.containsKey(key) && WindturbineQXDic4.containsKey(key)) { String modelid =CacheContext.wtmap.get(key).getModelId(); Double xz = 0.0; Double xz2 = 0.0; if (modelid.contains("UP77-1500") || modelid.contains("UP82-1500")) { xz = 17.3; xz2 = 1500.0; } else if (modelid.contains("UP100-3000")) { xz = 3000.0; xz2 = 3000.0; } else { xz = 2000.0; xz2 = 2000.0; } if (WindturbineQXDic4.containsKey(key)) { Double tempk = edosUtil.getRealData(WindturbineQXDic4.get(key).getNemCode()).getPointValueInDouble(); if (tempk >= 3) { tempb = true; } else { tempb = false; } } // #region 新增加 Map> wtpAimap =CacheContext.wtpAimap; Map windturbinetestingpointnewMap = wtpAimap.get(key); if(windturbinetestingpointnewMap.containsKey(ContantXk.CJ_SSFS)) { ProBasicEquipmentPoint xdztPoint = windturbinetestingpointnewMap.get(ContantXk.CJ_SSFS); Double rtbbb = edosUtil.getRealData(xdztPoint.getNemCode()).getPointValueInDouble(); if (rtbbb >= xz2 * 0.9) { tempb = false; } } } //限出力状态 String id1 = WindTurbineE.get(key).getNemCode(); Double xcl = edosUtil.getRealData(id1).getPointValueInDouble(); //限电受累 String id2 = WindturbineXDSL.get(key).getNemCode(); Double xdsl = edosUtil.getRealData(id2).getPointValueInDouble(); Double val = 0.0; if (xdsl == 1 || xcl == 1 || tempb) { val = 1.0; } RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(WindTurbineD.get(item).get(key).getNemCode()); rt.setTime(time); rt.setInsertValue(val); projectRT.add(rt); //if (d == 0d) //{ // boolean t = false; // if (statuspointDictionary.containsKey(key)) // { // Double start = edosUtil.getRealData(statuspointDictionary[key].ID); // if (start != 1) // { // t = true; // } // else // { // if (WindTurbineE.containsKey(key)) // { // String ids = WindTurbineE[key].ID; // if (ids != null && ids.Length > 0) // t = BuildRetValue(new String[] { ids }); // } // } // } // if (t) // { // var val = edosUtil.getRealData(WindTurbineD[item][key].ID); // if (val != 2 && val != 3 && val != 4 && val != 5) // { // RealTimeParameterVo rt = new RealTimeParameterVo(); // rt.point = WindTurbineD[item][key].ID; ; // rt.time = time; // rt.InsertValue = 1.0; // projectRT.Add(rt); // } // } //} } } } } if (projectRT.size() > 0) { edosUtil.sendMultiRealTimeParamete(projectRT); } } } private boolean BuildRetValue(String[] Ids) throws Exception { boolean b = false; // Double[] values = new Double[Ids.length]; List values=edosUtil.getRealData(Ids); // ednaHelper.GetRtValueList(Ids.Length, Ids, values); for (PointData item : values) { if (item.getPointValueInDouble() != 0) { b = true; break; } } return b; } List WindTurbineXD; Map WindturbineXDSL; public void execStatus2() throws Exception { if (WindTurbineXD == null || WindturbineXDSL == null) { List wtls= CacheContext.wtls; Map> wtpAimap=CacheContext.wtpAimap; wtls.stream().forEach(wt->{ Map windturbinetestingpointnewMap = wtpAimap.get(wt.getId()); if(windturbinetestingpointnewMap.containsKey(ContantXk.GPZT)) { ProBasicEquipmentPoint xdslPoint = windturbinetestingpointnewMap.get(ContantXk.GPZT); WindturbineXDSL.put(wt.getId(),xdslPoint); } if(windturbinetestingpointnewMap.containsKey(ContantXk.XDZT)) { ProBasicEquipmentPoint xdztPoint = windturbinetestingpointnewMap.get(ContantXk.XDZT); WindTurbineXD.add(xdztPoint); } }); } else { Date dt = new Date(); List insertRt = new ArrayList(); for (ProBasicEquipmentPoint xd : WindTurbineXD) { String key = xd.getWindturbineId(); // if (key == "KB01_010") // { // Console.WriteLine("1"); // } String point = xd.getNemCode();//重点注意!!!! Double val = 0.0; if (WindturbineXDSL.containsKey(key)) { Double ret = edosUtil.getRealData(WindturbineXDSL.get(key).getNemCode()).getPointValueInDouble(); if (ret == 1) { val = 1.0; } //else //{ // val = 0.0; //} } RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(point); rt.setTime(dt); rt.setInsertValue(val); insertRt.add(rt); } edosUtil.sendMultiRealTimeParamete(insertRt); } } Map> WindturbineQXDic; List WindTurbineQX; Map WindturbineQXDic2; Map WindturbineQXDic3; //Map WindturbineQXDic4; public void execStatus() throws Exception { if (WindTurbineQX == null || WindturbineQXDic == null) { WindturbineQXDic = new HashMap>(); //var disArr = entity.ProBasicEquipmentPoint.Where(it => it.UNIFORMCODE == "AI178" || it.UNIFORMCODE == "CJ_SCADA_YGSD").ToList(); //叶轮转速给定 AI134 限值17.4 //转矩给定 CJ_ZSGD 限值 95 (2MW 叫 变频器转矩给定 无用) //发电状态下的转速给定 AI178 限值17.4 //scada有功设定值 CJ_SCADA_YGSD 2MW 限值2000 3MW 限值3000 //实时欠发状态 SSQFZT List wtpointls=new ArrayList<>(); List wtls= CacheContext.wtls; Map> wtpAimap=CacheContext.wtpAimap; wtls.stream().forEach(wt->{ Map windturbinetestingpointnewMap = wtpAimap.get(wt.getId()); if(windturbinetestingpointnewMap.containsKey(ContantXk.CJ_YLZSGD)) { ProBasicEquipmentPoint point = windturbinetestingpointnewMap.get(ContantXk.CJ_YLZSGD); wtpointls.add(point); } if(windturbinetestingpointnewMap.containsKey(ContantXk.CJ_FDZTXZSGD)) { ProBasicEquipmentPoint point = windturbinetestingpointnewMap.get(ContantXk.CJ_FDZTXZSGD); wtpointls.add(point); } if(windturbinetestingpointnewMap.containsKey(ContantXk.CJ_SCADA_YGSD)) { ProBasicEquipmentPoint point = windturbinetestingpointnewMap.get(ContantXk.CJ_SCADA_YGSD); wtpointls.add(point); } // if(windturbinetestingpointnewMap.containsKey(ContantXk.CJ_ZSGD)) // { // ProBasicEquipmentPoint point = windturbinetestingpointnewMap.get(ContantXk.CJ_ZSGD); // WindturbineQXDic3.put(wt.getId(),point); // } // // if(windturbinetestingpointnewMap.containsKey(ContantXk.DI11139)) // { // ProBasicEquipmentPoint point = windturbinetestingpointnewMap.get(ContantXk.DI11139); // WindturbineQXDic2.put(wt.getNemCode(),point); // } // if(windturbinetestingpointnewMap.containsKey(ContantXk.DI10923)) // { // ProBasicEquipmentPoint point = windturbinetestingpointnewMap.get(ContantXk.DI10923); // WindturbineQXDic2.put(wt.getNemCode(),point); // } if(windturbinetestingpointnewMap.containsKey(ContantXk.XDZT)) { ProBasicEquipmentPoint point = windturbinetestingpointnewMap.get(ContantXk.XDZT); WindTurbineQX.add(point); } }); for (ProBasicEquipmentPoint dis : wtpointls) { if (!WindturbineQXDic.containsKey(dis.getWindturbineId())) { WindturbineQXDic.put(dis.getWindturbineId(), new ArrayList()); } WindturbineQXDic.get(dis.getWindturbineId()).add(dis.getNemCode()); } } else { Date dt =new Date(); List insertRt = new ArrayList(); for (ProBasicEquipmentPoint item : WindTurbineQX) { String key = item.getWindturbineId(); String windows = item.getWindpowerstationId(); //if (windows == "KB_FDC" || windows == "CL_FDC") //{ // Console.WriteLine(key); // continue; //} // if (key == "CL01_001" ) // { // Console.WriteLine(key); // // } String point = item.getNemCode();//重点注意!!!! Double val = 0.0; if (CacheContext.wtmap.containsKey(key) && WindturbineQXDic.containsKey(key)) { String modelid =CacheContext.wtmap.get(key).getModelId(); Double xz = 0.0; Double xz2 = 0.0; if (modelid.contains("UP77-1500") || modelid.contains("UP82-1500")) { xz = 17.3; xz2 = 1500.0; } else if (modelid.contains("UP100-3000")) { xz = 3000.0; xz2 = 3000.0; } else { xz = 2000.0; xz2 = 2000.0; } List lxIds = WindturbineQXDic.get(key); List dts=new ArrayList<>(); List vals1=edosUtil.getRealData(lxIds); boolean b = true; for (PointData va : vals1) { b = b && (va.getPointValueInDouble() >= xz); } if (WindturbineQXDic2.containsKey(key)) { PointData k = edosUtil.getRealData(WindturbineQXDic2.get(key).getNemCode()); b = b && (k.getPointValueInDouble() == 0); } //if (WindturbineQXDic3.containsKey(key)) //{ // var k = edosUtil.getRealData(WindturbineQXDic3[key].ID); // if (modelid.contains("UP77-1500") || modelid.contains("UP82-1500")) // { // if (k >= 90) // { // b = true; // } // else // { // b = false; // } // } //} val = b ? 0.0 : 1.0; RealTimeParameterVo rt = new RealTimeParameterVo(); rt.setPoint(point); rt.setTime(dt); rt.setInsertValue(val); insertRt.add(rt); } } edosUtil.sendMultiRealTimeParamete(insertRt); this.execStatusAGCxd(); //this.execStatuSL(); System.out.println(DateUtils.getFormat1().format(new Date())); Thread.sleep(1000); } } }