12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283 |
- 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<String, SLWindpowerVo> sl;
- Map<String, Integer> slvalue;
- Map<String, ProBasicEquipmentPoint> windSL;
- public void execStatuSL() throws Exception {
- if (sl == null)
- initsl();
- else
- {
- Map<String, Integer> slv = new HashMap<String, Integer>();
- Date dt =new Date();
- Map<String, RealTimeParameterVo> rList = new HashMap<String, RealTimeParameterVo>();
- 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<PointData> 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<String, RealTimeParameterVo> rList, String key, String windturbineid, Map<String, Integer> 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<String, SLWindpowerVo>();
- slvalue = new HashMap<String, Integer>();
- //var electrical = entity.ProEconLineElectrical.ToList();
- List<ProBasicEquipment> wtls= CacheContext.wtls;
- Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap=CacheContext.wtpAimap;
- Map<String, ProEconLineElectrical> electrical = proEconLineElectricalService.list().stream().collect(Collectors.toMap(ProEconLineElectrical::getLineId, Function.identity()));
- wtls.stream().forEach(wt->{
- if(wt.getWindpowerstationId().contains("FDC"))
- {
- Map<String, ProBasicEquipmentPoint> 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<String, List<String>>());
- s.setNETLOWCODE(new HashMap<String, List<String>>());
- s.setNETHIGHCODE(new HashMap<String, List<String>>());
- s.setNETOUTCODE(new HashMap<String, List<String>>());
- s.setPTVOLTAGEHIGH(new HashMap<String, Double>());
- s.setPTVOLTAGELOW(new HashMap<String, Double>());
- s.setPTCURRENT(new HashMap<String, Double>());
- s.setPTCURRENTCODE(new HashMap<String, String>());
- s.setPTVOLTAGECODE(new HashMap<String, String>());
- s.setACCIDENTSIGNAL(new HashMap<String, List<String>>());
- initialsl(item, line, s);
- }
- }
- }
- private static void initialsl(ProBasicEquipment windturbine, ProEconLineElectrical item, SLWindpowerVo s)
- {
- //进线断路器
- if (s.getLINECODE().containsKey(item.getLineCode()))
- {
- List<String> t = s.getLINECODE().get(item.getLineCode());
- t.add(windturbine.getId());
- }
- else
- {
- List<String> t = new ArrayList<String>();
- t.add(windturbine.getId());
- s.getLINECODE().put(item.getLineCode(), t);
- }
- //主变低压测
- if (s.getNETLOWCODE().containsKey(item.getNetLowCode()))
- {
- List<String> t = s.getNETLOWCODE().get(item.getNetLowCode());
- t.add(windturbine.getId());
- }
- else
- {
- List<String> t = new ArrayList<String>();
- t.add(windturbine.getId());
- s.getNETLOWCODE().put(item.getNetLowCode(), t);
- }
- //主变高压侧
- if (s.getNETHIGHCODE().containsKey(item.getNetHighCode()))
- {
- List<String> t = s.getNETHIGHCODE().get(item.getNetHighCode());
- t.add(windturbine.getId());
- }
- else
- {
- List<String> t = new ArrayList<String>();
- 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<String> t = s.getNETOUTCODE().get(item.getNetOutCode());
- t.add(windturbine.getId());
- }
- else
- {
- List<String> t = new ArrayList<String>();
- t.add(windturbine.getId());
- s.getNETOUTCODE().put(item.getNetOutCode(), t);
- }
- //事故总
- if (s.getACCIDENTSIGNAL().containsKey(item.getAccidentSignal()))
- {
- List<String> t = s.getACCIDENTSIGNAL().get(item.getAccidentSignal());
- t.add(windturbine.getId());
- }
- else
- {
- List<String> t = new ArrayList<String>();
- t.add(windturbine.getId());
- s.getACCIDENTSIGNAL().put(item.getAccidentSignal(), t);
- }
- }
- //region AGC监视限电
- //限电
- static Map<String, ProBasicEquipmentPoint> WindTurbineE;
- //shishi
- static Map<String, ProBasicEquipmentPoint> WindturbineQXDic4;
- //限电状态
- static Map<String, Map<String, ProBasicEquipmentPoint>> WindTurbineD;
- //限电受累
- static Map<String, Map<String, ProBasicEquipmentPoint>> WindTurbineXDSL;
- //AGC限电指令
- static Map<String, ProBasicPowerstationPoint> WindPowerAGC;
- static Map<String, ProBasicPowerstationPoint> WindPowerCXYG;
- static Map<String, ProBasicPowerstationPoint> WindPowerZSGL;
- static Map<String, ProBasicPowerstationPoint> WindPowerXDZT;
- static Map<String, Double> powerCache = new HashMap<String, Double>();
- static Map<String, Date> timeCache = new HashMap<String, Date>();
- public void execStatusAGCxd() throws Exception {
- if (WindTurbineE == null || WindTurbineD == null || WindPowerAGC == null)
- {
- WindTurbineD = new HashMap<String, Map<String, ProBasicEquipmentPoint>>();
- List<ProBasicEquipment> wtls= CacheContext.wtls;
- Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap=CacheContext.wtpAimap;
- wtls.stream().forEach(wt->{
- Map<String, ProBasicEquipmentPoint> windturbinetestingpointnewMap = wtpAimap.get(wt.getId());
- if(windturbinetestingpointnewMap.containsKey(ContantXk.GPZT))
- {
- ProBasicEquipmentPoint xdslPoint = windturbinetestingpointnewMap.get(ContantXk.GPZT);
- WindturbineXDSL.put(wt.getId(),xdslPoint);
- }
- });
- Map<String,Map<String, ProBasicPowerstationPoint>> wppointmap =CacheContext.wppointmap;
- CacheContext.wpls.forEach(wp->{
- Map<String, ProBasicPowerstationPoint> 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<String, ProBasicEquipmentPoint> windD=new HashMap<>();
- Map<String, ProBasicEquipmentPoint> 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<String, ProBasicEquipmentPoint> 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<RealTimeParameterVo> projectRT = new ArrayList<RealTimeParameterVo>();
- 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<PointData> 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<PointData> 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<PointData> 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<String,Map<String, ProBasicEquipmentPoint>> wtpAimap =CacheContext.wtpAimap;
- Map<String, ProBasicEquipmentPoint> 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<PointData> values=edosUtil.getRealData(Ids);
- // ednaHelper.GetRtValueList(Ids.Length, Ids, values);
- for (PointData item : values)
- {
- if (item.getPointValueInDouble() != 0)
- {
- b = true;
- break;
- }
- }
- return b;
- }
- List<ProBasicEquipmentPoint> WindTurbineXD;
- Map<String, ProBasicEquipmentPoint> WindturbineXDSL;
- public void execStatus2() throws Exception {
- if (WindTurbineXD == null || WindturbineXDSL == null)
- {
- List<ProBasicEquipment> wtls= CacheContext.wtls;
- Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap=CacheContext.wtpAimap;
- wtls.stream().forEach(wt->{
- Map<String, ProBasicEquipmentPoint> 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<RealTimeParameterVo> insertRt = new ArrayList<RealTimeParameterVo>();
- 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<String, List<String>> WindturbineQXDic;
- List<ProBasicEquipmentPoint> WindTurbineQX;
- Map<String, ProBasicEquipmentPoint> WindturbineQXDic2;
- Map<String, ProBasicEquipmentPoint> WindturbineQXDic3;
- //Map<String, ProBasicEquipmentPoint> WindturbineQXDic4;
- public void execStatus() throws Exception {
- if (WindTurbineQX == null || WindturbineQXDic == null)
- {
- WindturbineQXDic = new HashMap<String, List<String>>();
- //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<ProBasicEquipmentPoint> wtpointls=new ArrayList<>();
- List<ProBasicEquipment> wtls= CacheContext.wtls;
- Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap=CacheContext.wtpAimap;
- wtls.stream().forEach(wt->{
- Map<String, ProBasicEquipmentPoint> 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<String>());
- }
- WindturbineQXDic.get(dis.getWindturbineId()).add(dis.getNemCode());
- }
- }
- else
- {
- Date dt =new Date();
- List<RealTimeParameterVo> insertRt = new ArrayList<RealTimeParameterVo>();
- 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<String> lxIds = WindturbineQXDic.get(key);
- List<Date> dts=new ArrayList<>();
- List<PointData> 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);
- }
- }
- }
|