StatusService.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723
  1. package com.gyee.generation.service;
  2. import com.gyee.common.contant.Contant;
  3. import com.gyee.common.model.PointData;
  4. import com.gyee.common.model.StringUtils;
  5. import com.gyee.common.util.DateUtils;
  6. import com.gyee.generation.init.CacheContext;
  7. import com.gyee.generation.model.auto.*;
  8. import com.gyee.generation.util.realtimesource.IEdosUtil;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.stereotype.Service;
  11. import javax.annotation.Resource;
  12. import java.util.*;
  13. import java.util.concurrent.atomic.AtomicInteger;
  14. import java.util.stream.Collectors;
  15. /**
  16. * @ClassName : StatusService
  17. * @Author : xieshengjie
  18. * @Date: 2022/3/28 14:22
  19. * @Description : 状态计算
  20. */
  21. @Service
  22. public class StatusService {
  23. private Map<String, List<Windturbinestatusdi>> statusMap;
  24. private List<Windturbine> wtls;
  25. private List<Project> projects;
  26. private Map<String, Map<String, Windturbinetestingpointnew>> wtpAimap;
  27. private Map<String,Map<String, Windpowerstationpointnew>> linepointmap;
  28. private Map<String,Map<String, Windpowerstationpointnew>> propointmap;
  29. private Map<String,Map<String, Windpowerstationpointnew>> wppointmap;
  30. private Date currentDate;
  31. private List<Windpowerstation> wpls;
  32. private List<Line> lines;
  33. private Map<String, Equipmentmodel> modelMap;
  34. public static Map<String,List<Project>> wppromap;
  35. public static Map<String,List<Line>> prolinemap;
  36. public static Map<String,List<Windturbine>> linewtmap;
  37. @Resource
  38. private IEdosUtil edosUtil;
  39. // @Resource
  40. // private IEdosUtil edosUtilTd;
  41. @Value("${clauStatus.ai}")
  42. private String clauStatusAi;
  43. @Value("${clauStatus.di}")
  44. private String clauStatusDi;
  45. @Value("${second}")
  46. private String second;
  47. @Value("${AI134}")
  48. private String AI134;
  49. @Value("${AI178}")
  50. private String AI178;
  51. public void init(){
  52. statusMap = CacheContext.statusMap;
  53. wtls = CacheContext.wtls;
  54. wpls = CacheContext.wpls;
  55. lines = CacheContext.lines;
  56. projects = CacheContext.projects;
  57. wtpAimap = CacheContext.wtpAimap;
  58. linepointmap = CacheContext.linepointmap;
  59. propointmap = CacheContext.propointmap;
  60. wppointmap = CacheContext.wppointmap;
  61. currentDate = DateUtils.getCurrentDate();
  62. modelMap = CacheContext.modelMap;
  63. wppromap = CacheContext.wppromap;
  64. prolinemap = CacheContext.prolinemap;
  65. linewtmap = CacheContext.linewtmap;
  66. }
  67. /**
  68. * 计算状态
  69. * @throws Exception
  70. */
  71. public void calculateStatus() throws Exception {
  72. init();
  73. List<PointData> resultList = new ArrayList<>();
  74. projects.stream().forEach(project->{
  75. wtls.stream().filter(i->i.getProjectid().equals(project.getId())).forEach(wt->{
  76. Map<String, Windturbinetestingpointnew> stringWindturbinetestingpointnewMap = wtpAimap.get(wt.getId());
  77. Windturbinetestingpointnew ztmxPoint = stringWindturbinetestingpointnewMap.get(Contant.ZTMX);
  78. Windturbinetestingpointnew fj5tPoint = stringWindturbinetestingpointnewMap.get(Contant.FJ5T);
  79. Windturbinetestingpointnew ai130 = stringWindturbinetestingpointnewMap.get(Contant.AI130);
  80. String[] interruption = Contant.INTERRUPTION.split(",");
  81. List<String> interruptionList = new ArrayList<>();
  82. Arrays.stream(interruption).forEach(i->{
  83. Windturbinetestingpointnew windturbinetestingpointnew = stringWindturbinetestingpointnewMap.get(i);
  84. if (!windturbinetestingpointnew.getCode().equals("INITIAL")){
  85. interruptionList.add(windturbinetestingpointnew.getCode());
  86. }
  87. });
  88. Double status = 1.0;
  89. Double mxstatus = 2.0;
  90. try {
  91. if (StringUtils.isEmpty(interruptionList)){
  92. mxstatus = 12.0;
  93. status = 3.0;
  94. }
  95. else {
  96. List<PointData> interruptionRealData = edosUtil.getRealData(interruptionList);
  97. List<PointData> collect = interruptionRealData.stream().filter(i -> (currentDate.getTime() - i.getPointTime()) / 1000 > Integer.parseInt(second)).collect(Collectors.toList());
  98. if (collect.size()!=interruptionRealData.size()){
  99. Double ztmx = edosUtil.getRealData(ztmxPoint).getPointValueInDouble();
  100. if (ztmx == 7 || ztmx == 9 || ztmx == 10 || ztmx == 11 || ztmx == 4 || ztmx == 5 ){ //手打状态
  101. mxstatus = ztmx;
  102. }
  103. if (clauStatusAi.contains(wt.getProjectid())){
  104. //多状态根据一个点来判断
  105. Optional<Windturbinestatusdi> first = statusMap.get(wt.getId()).stream().filter(w -> w.getUniformcode().equals(Contant.AI422)).findFirst();
  106. if (first.isPresent()){
  107. Windturbinestatusdi windturbinestatusdi = first.get();
  108. if (wt.getModelid().equals("EN141/2.65") || wt.getModelid().equals("EN141/3.2")){
  109. //远景
  110. int pointValueInDouble = (int) edosUtil.getRealData(windturbinestatusdi.getId()).getPointValueInDouble();
  111. switch (pointValueInDouble){
  112. case 1:
  113. case 4:
  114. mxstatus = 1.0;
  115. break;
  116. case 2:
  117. mxstatus = 6.0;
  118. break;
  119. case 3:
  120. mxstatus = 11.0;
  121. break;
  122. case 5:
  123. case 6:
  124. mxstatus = 2.0;
  125. break;
  126. case 7:
  127. mxstatus = 4.0;
  128. break;
  129. case 8:
  130. mxstatus = 12.0;
  131. break;
  132. case 9:
  133. mxstatus = 0.0;
  134. break;
  135. case 10:
  136. mxstatus = 10.0;
  137. break;
  138. case 11:
  139. case 12:
  140. mxstatus = 8.0;
  141. break;
  142. }
  143. }else {
  144. //联合动力
  145. double pointValueInDouble = edosUtil.getRealData(windturbinestatusdi.getId()).getPointValueInDouble();
  146. switch ((int) pointValueInDouble){
  147. case 0:
  148. mxstatus = 12.0;
  149. break;
  150. case 1:
  151. mxstatus = 6.0;
  152. break;
  153. case 2:
  154. mxstatus = 8.0;
  155. break;
  156. case 3:
  157. mxstatus = 0.0;
  158. break;
  159. case 4:
  160. case 5:
  161. mxstatus = 2.0;
  162. break;
  163. case 6:
  164. mxstatus = 1.0;
  165. break;
  166. default:
  167. mxstatus = 2.0;
  168. }
  169. }
  170. }
  171. }
  172. if (clauStatusDi.contains(wt.getProjectid())){
  173. //每个状态一个状态点
  174. List<Windturbinestatusdi> windturbinestatusdis = statusMap.get(wt.getId()).stream().filter(w -> w.getUniformcode().equals(Contant.MX000) || w.getUniformcode().equals(Contant.MX002) || w.getUniformcode().equals(Contant.MX004) || w.getUniformcode().equals(Contant.MX006) || w.getUniformcode().equals(Contant.MX008)).collect(Collectors.toList());
  175. for(Windturbinestatusdi w : windturbinestatusdis){
  176. PointData realData = edosUtil.getRealData(w.getId());
  177. if (realData.getPointValueInDouble()==1){
  178. mxstatus = Double.parseDouble(w.getTypeid());
  179. break;
  180. }
  181. }
  182. }
  183. if (mxstatus == 2){
  184. boolean isJcl = isJcl(wt, stringWindturbinetestingpointnewMap);
  185. double power = edosUtil.getRealData(ai130).getPointValueInDouble();
  186. if (power<=0){
  187. mxstatus=0.0;
  188. }else if (isJcl){
  189. mxstatus = 3.0;
  190. }
  191. }
  192. }else{
  193. //离线
  194. mxstatus = 12.0;
  195. }
  196. if (mxstatus == 0 || mxstatus == 1){
  197. status = 0.0;
  198. }else if(mxstatus == 2 || mxstatus == 3){
  199. status = 1.0;
  200. }else if(mxstatus == 4 || mxstatus == 5){
  201. status = 5.0;
  202. }else if(mxstatus == 6 || mxstatus == 7){
  203. status = 2.0;
  204. }else if(mxstatus == 8 || mxstatus == 9){
  205. status = 4.0;
  206. }else if(mxstatus == 10 || mxstatus == 11){
  207. status = 6.0;
  208. }else if(mxstatus == 12){
  209. status = 3.0;
  210. }
  211. }
  212. PointData ztmx = createPointData(ztmxPoint, mxstatus);
  213. PointData fj5t = createPointData(fj5tPoint, status);
  214. resultList.add(ztmx);
  215. resultList.add(fj5t);
  216. } catch (Exception e) {
  217. e.printStackTrace();
  218. }
  219. });
  220. });
  221. // edosUtilTd.sendMultiPoint(resultList);
  222. edosUtil.sendMultiPoint(resultList);
  223. }
  224. /**
  225. * 计算状态台数
  226. */
  227. public void calculateStatusNumber() throws Exception {
  228. init();
  229. List<PointData> resultList = new ArrayList<>();
  230. wpls.stream().forEach(wp->{
  231. List<Project> projects = wppromap.get(wp.getId());
  232. Map<String, Windpowerstationpointnew> wpmap = wppointmap.get(wp.getId());
  233. AtomicInteger wpdjnum = new AtomicInteger();
  234. AtomicInteger wptjnum = new AtomicInteger();
  235. AtomicInteger wpfdnum = new AtomicInteger();
  236. AtomicInteger wpfdjclnum = new AtomicInteger();
  237. AtomicInteger wpxdjclnum = new AtomicInteger();
  238. AtomicInteger wpxdtjnum = new AtomicInteger();
  239. AtomicInteger wpgznum = new AtomicInteger();
  240. AtomicInteger wpcngznum = new AtomicInteger();
  241. AtomicInteger wpjxnum = new AtomicInteger();
  242. AtomicInteger wpcnjxnum = new AtomicInteger();
  243. AtomicInteger wpdwslnum = new AtomicInteger();
  244. AtomicInteger wphjslnum = new AtomicInteger();
  245. AtomicInteger wplxnum = new AtomicInteger();
  246. //六种
  247. AtomicInteger wpdjts = new AtomicInteger();
  248. AtomicInteger wpgzts = new AtomicInteger();
  249. AtomicInteger wptxzd = new AtomicInteger();
  250. AtomicInteger wpwhtj = new AtomicInteger();
  251. AtomicInteger wpxdts = new AtomicInteger();
  252. AtomicInteger wpyxts = new AtomicInteger();
  253. AtomicInteger wpslts = new AtomicInteger();
  254. projects.stream().forEach(project->{
  255. List<Line> lineList = prolinemap.get(project.getId());
  256. Map<String, Windpowerstationpointnew> projectmap = propointmap.get(project.getId());
  257. AtomicInteger prodjnum = new AtomicInteger();
  258. AtomicInteger protjnum = new AtomicInteger();
  259. AtomicInteger profdnum = new AtomicInteger();
  260. AtomicInteger profdjclnum = new AtomicInteger();
  261. AtomicInteger proxdjclnum = new AtomicInteger();
  262. AtomicInteger proxdtjnum = new AtomicInteger();
  263. AtomicInteger progznum = new AtomicInteger();
  264. AtomicInteger procngznum = new AtomicInteger();
  265. AtomicInteger projxnum = new AtomicInteger();
  266. AtomicInteger procnjxnum = new AtomicInteger();
  267. AtomicInteger prodwslnum = new AtomicInteger();
  268. AtomicInteger prohjslnum = new AtomicInteger();
  269. AtomicInteger prolxnum = new AtomicInteger();
  270. //六种
  271. AtomicInteger prodjts = new AtomicInteger();
  272. AtomicInteger progzts = new AtomicInteger();
  273. AtomicInteger protxzd = new AtomicInteger();
  274. AtomicInteger prowhtj = new AtomicInteger();
  275. AtomicInteger proxdts = new AtomicInteger();
  276. AtomicInteger proyxts = new AtomicInteger();
  277. AtomicInteger proslts = new AtomicInteger();
  278. lineList.stream().forEach(line->{
  279. List<Windturbine> windturbines = linewtmap.get(line.getId());
  280. Map<String, Windpowerstationpointnew> linemap = linepointmap.get(line.getId());
  281. AtomicInteger djnum = new AtomicInteger();
  282. AtomicInteger tjnum = new AtomicInteger();
  283. AtomicInteger fdnum = new AtomicInteger();
  284. AtomicInteger fdjclnum = new AtomicInteger();
  285. AtomicInteger xdjclnum = new AtomicInteger();
  286. AtomicInteger xdtjnum = new AtomicInteger();
  287. AtomicInteger gznum = new AtomicInteger();
  288. AtomicInteger cngznum = new AtomicInteger();
  289. AtomicInteger jxnum = new AtomicInteger();
  290. AtomicInteger cnjxnum = new AtomicInteger();
  291. AtomicInteger dwslnum = new AtomicInteger();
  292. AtomicInteger hjslnum = new AtomicInteger();
  293. AtomicInteger lxnum = new AtomicInteger();
  294. //六种
  295. AtomicInteger djts = new AtomicInteger();
  296. AtomicInteger gzts = new AtomicInteger();
  297. AtomicInteger txzd = new AtomicInteger();
  298. AtomicInteger whtj = new AtomicInteger();
  299. AtomicInteger xdts = new AtomicInteger();
  300. AtomicInteger yxts = new AtomicInteger();
  301. AtomicInteger slts = new AtomicInteger();
  302. windturbines.stream().forEach(wt->{
  303. Windturbinetestingpointnew windturbinetestingpointnew = wtpAimap.get(wt.getId()).get(Contant.ZTMX);
  304. try {
  305. double valueInDouble = edosUtil.getRealData(windturbinetestingpointnew).getPointValueInDouble();
  306. switch ((int) valueInDouble){
  307. case 0:
  308. djnum.getAndIncrement();
  309. break;
  310. case 1:
  311. tjnum.getAndIncrement();
  312. break;
  313. case 2:
  314. fdnum.getAndIncrement();
  315. break;
  316. case 3:
  317. fdjclnum.getAndIncrement();
  318. break;
  319. case 4:
  320. xdjclnum.getAndIncrement();
  321. break;
  322. case 5:
  323. xdtjnum.getAndIncrement();
  324. break;
  325. case 6:
  326. gznum.getAndIncrement();
  327. break;
  328. case 7:
  329. cngznum.getAndIncrement();
  330. break;
  331. case 8:
  332. jxnum.getAndIncrement();
  333. break;
  334. case 9:
  335. cnjxnum.getAndIncrement();
  336. break;
  337. case 10:
  338. dwslnum.getAndIncrement();
  339. break;
  340. case 11:
  341. hjslnum.getAndIncrement();
  342. break;
  343. case 12:
  344. lxnum.getAndIncrement();
  345. break;
  346. default:
  347. fdnum.getAndIncrement();
  348. }
  349. } catch (Exception e) {
  350. e.printStackTrace();
  351. }
  352. });
  353. //待机台数0
  354. Windpowerstationpointnew djnumPointNew = linemap.get(Contant.DJNUM);
  355. PointData djnumPoint = createWpPoint(djnum, djnumPointNew);
  356. prodjnum.addAndGet(djnum.intValue());
  357. resultList.add(djnumPoint);
  358. //停机台数1
  359. Windpowerstationpointnew tjnumPointNew = linemap.get(Contant.TJNUM);
  360. PointData tjnumPoint = createWpPoint(tjnum, tjnumPointNew);
  361. protjnum.addAndGet(tjnum.intValue());
  362. resultList.add(tjnumPoint);
  363. //待机台数6-0
  364. djts.addAndGet(djnum.intValue()+tjnum.intValue());
  365. Windpowerstationpointnew djtsPointNew = linemap.get(Contant.DJTS);
  366. PointData djtsPoint = createWpPoint(djts, djtsPointNew);
  367. resultList.add(djtsPoint);
  368. //运行台数2
  369. Windpowerstationpointnew fdnumPointNew = linemap.get(Contant.FDNUM);
  370. PointData fdnumPoint = createWpPoint(fdnum, fdnumPointNew);
  371. profdnum.addAndGet(fdnum.intValue());
  372. resultList.add(fdnumPoint);
  373. //降出力台数3
  374. Windpowerstationpointnew fdjclnumPointNew = linemap.get(Contant.FDJCLNUM);
  375. PointData fdjclnumPoint = createWpPoint(fdjclnum, fdjclnumPointNew);
  376. profdjclnum.addAndGet(fdjclnum.intValue());
  377. resultList.add(fdjclnumPoint);
  378. //运行台数6-1
  379. yxts.addAndGet(fdnum.intValue()+fdjclnum.intValue());
  380. Windpowerstationpointnew yxtsPointNew = linemap.get(Contant.YXTS);
  381. PointData yxtsPoint = createWpPoint(yxts, yxtsPointNew);
  382. resultList.add(yxtsPoint);
  383. //限电降出力台数4
  384. Windpowerstationpointnew xdjclnumPointNew = linemap.get(Contant.XDJCLNUM);
  385. PointData xdjclnumPoint = createWpPoint(xdjclnum, xdjclnumPointNew);
  386. proxdjclnum.addAndGet(xdjclnum.intValue());
  387. resultList.add(xdjclnumPoint);
  388. //限电停机台数5
  389. Windpowerstationpointnew xdtjnumPointNew = linemap.get(Contant.XDTJNUM);
  390. PointData xdtjnumPoint = createWpPoint(xdtjnum, xdtjnumPointNew);
  391. proxdtjnum.addAndGet(xdtjnum.intValue());
  392. resultList.add(xdtjnumPoint);
  393. //限电台数6-5
  394. xdts.addAndGet(xdjclnum.intValue()+xdtjnum.intValue());
  395. Windpowerstationpointnew xdtsPointNew = linemap.get(Contant.XDTS);
  396. PointData xdtsPoint = createWpPoint(xdts, xdtsPointNew);
  397. resultList.add(xdtsPoint);
  398. //故障台数6
  399. Windpowerstationpointnew gznumPointNew = linemap.get(Contant.GZNUM);
  400. PointData gznumPoint = createWpPoint(gznum, gznumPointNew);
  401. progznum.addAndGet(gznum.intValue());
  402. resultList.add(gznumPoint);
  403. //故障受累台数7
  404. Windpowerstationpointnew cngznumPointNew = linemap.get(Contant.CNGZNUM);
  405. PointData cngznumPoint = createWpPoint(cngznum, cngznumPointNew);
  406. procngznum.addAndGet(cngznum.intValue());
  407. resultList.add(cngznumPoint);
  408. //检修台数8
  409. Windpowerstationpointnew jxnumPointNew = linemap.get(Contant.JXNUM);
  410. PointData jxnumPoint = createWpPoint(jxnum, jxnumPointNew);
  411. projxnum.addAndGet(jxnum.intValue());
  412. resultList.add(jxnumPoint);
  413. //检修受累台数9
  414. Windpowerstationpointnew cnjxnumPointNew = linemap.get(Contant.CNJXNUM);
  415. PointData cnjxnumPoint = createWpPoint(cnjxnum, cnjxnumPointNew);
  416. procnjxnum.addAndGet(cnjxnum.intValue());
  417. resultList.add(cnjxnumPoint);
  418. //检修台数6-4
  419. whtj.addAndGet(jxnum.intValue()+cnjxnum.intValue());
  420. Windpowerstationpointnew whtjPointNew = linemap.get(Contant.WHTJ);
  421. PointData whtjPoint = createWpPoint(whtj, whtjPointNew);
  422. resultList.add(whtjPoint);
  423. //电网受累台数10
  424. Windpowerstationpointnew dwslnumPointNew = linemap.get(Contant.DWSLNUM);
  425. PointData dwslnumPoint = createWpPoint(dwslnum, dwslnumPointNew);
  426. prodwslnum.addAndGet(dwslnum.intValue());
  427. resultList.add(dwslnumPoint);
  428. //环境受累台数11
  429. Windpowerstationpointnew hjslnumPointNew = linemap.get(Contant.HJSLNUM);
  430. PointData hjslnumPoint = createWpPoint(hjslnum, hjslnumPointNew);
  431. prohjslnum.addAndGet(hjslnum.intValue());
  432. resultList.add(hjslnumPoint);
  433. //故障台数6-2
  434. gzts.addAndGet(gznum.intValue()+cngznum.intValue());
  435. Windpowerstationpointnew gztsPointNew = linemap.get(Contant.GZTJ);
  436. PointData gztjPoint = createWpPoint(gzts, gztsPointNew);
  437. resultList.add(gztjPoint);
  438. //受累台数6-6
  439. slts.addAndGet(dwslnum.intValue()+hjslnum.intValue());
  440. Windpowerstationpointnew sltsPointNew = linemap.get(Contant.SLTS);
  441. PointData sltjPoint = createWpPoint(slts, sltsPointNew);
  442. resultList.add(sltjPoint);
  443. //离线台数12
  444. Windpowerstationpointnew lxnumPointNew = linemap.get(Contant.LXNUM);
  445. Windpowerstationpointnew txzdPointNew = linemap.get(Contant.TXZD);
  446. PointData lxnumPoint = createWpPoint(lxnum, lxnumPointNew);
  447. PointData txzdPoint = createWpPoint(lxnum, txzdPointNew);
  448. prolxnum.addAndGet(lxnum.intValue());
  449. resultList.add(lxnumPoint);
  450. resultList.add(txzdPoint);
  451. });
  452. //待机台数0
  453. Windpowerstationpointnew djnumPointNew = projectmap.get(Contant.DJNUM);
  454. PointData djnumPoint = createWpPoint(prodjnum, djnumPointNew);
  455. wpdjnum.addAndGet(prodjnum.intValue());
  456. resultList.add(djnumPoint);
  457. //停机台数1
  458. Windpowerstationpointnew tjnumPointNew = projectmap.get(Contant.TJNUM);
  459. PointData tjnumPoint = createWpPoint(protjnum, tjnumPointNew);
  460. wptjnum.addAndGet(protjnum.intValue());
  461. resultList.add(tjnumPoint);
  462. //待机台数6-0
  463. Windpowerstationpointnew djtsPointNew = projectmap.get(Contant.DJTS);
  464. prodjts.addAndGet(prodjnum.intValue()+protjnum.intValue());
  465. PointData djtsPoint = createWpPoint(prodjts, djtsPointNew);
  466. resultList.add(djtsPoint);
  467. //运行台数2
  468. Windpowerstationpointnew fdnumPointNew = projectmap.get(Contant.FDNUM);
  469. PointData fdnumPoint = createWpPoint(profdnum, fdnumPointNew);
  470. wpfdnum.addAndGet(profdnum.intValue());
  471. resultList.add(fdnumPoint);
  472. //降出力台数3
  473. Windpowerstationpointnew fdjclnumPointNew = projectmap.get(Contant.FDJCLNUM);
  474. PointData fdjclnumPoint = createWpPoint(profdjclnum, fdjclnumPointNew);
  475. wpfdjclnum.addAndGet(profdjclnum.intValue());
  476. resultList.add(fdjclnumPoint);
  477. //运行台数6-1
  478. Windpowerstationpointnew yxtsPointNew = projectmap.get(Contant.YXTS);
  479. proyxts.addAndGet(profdnum.intValue()+profdjclnum.intValue());
  480. PointData yxtsPoint = createWpPoint(proyxts, yxtsPointNew);
  481. resultList.add(yxtsPoint);
  482. //限电降出力台数4
  483. Windpowerstationpointnew xdjclnumPointNew = projectmap.get(Contant.XDJCLNUM);
  484. PointData xdjclnumPoint = createWpPoint(proxdjclnum, xdjclnumPointNew);
  485. wpxdjclnum.addAndGet(proxdjclnum.intValue());
  486. resultList.add(xdjclnumPoint);
  487. //限电停机台数5
  488. Windpowerstationpointnew xdtjnumPointNew = projectmap.get(Contant.XDTJNUM);
  489. PointData xdtjnumPoint = createWpPoint(proxdtjnum, xdtjnumPointNew);
  490. wpxdtjnum.addAndGet(proxdtjnum.intValue());
  491. resultList.add(xdtjnumPoint);
  492. //限电台数6-5
  493. Windpowerstationpointnew xdtsPointNew = projectmap.get(Contant.XDTS);
  494. proxdts.addAndGet(proxdjclnum.intValue()+proxdtjnum.intValue());
  495. PointData xdtsPoint = createWpPoint(proxdts, xdtsPointNew);
  496. resultList.add(xdtsPoint);
  497. //故障台数6
  498. Windpowerstationpointnew gznumPointNew = projectmap.get(Contant.GZNUM);
  499. PointData gznumPoint = createWpPoint(progznum, gznumPointNew);
  500. wpgznum.addAndGet(progznum.intValue());
  501. resultList.add(gznumPoint);
  502. //故障受累台数7
  503. Windpowerstationpointnew cngznumPointNew = projectmap.get(Contant.CNGZNUM);
  504. PointData cngznumPoint = createWpPoint(procngznum, cngznumPointNew);
  505. wpcngznum.addAndGet(procngznum.intValue());
  506. resultList.add(cngznumPoint);
  507. //检修台数8
  508. Windpowerstationpointnew jxnumPointNew = projectmap.get(Contant.JXNUM);
  509. PointData jxnumPoint = createWpPoint(projxnum, jxnumPointNew);
  510. wpjxnum.addAndGet(projxnum.intValue());
  511. resultList.add(jxnumPoint);
  512. //检修受累台数9
  513. Windpowerstationpointnew cnjxnumPointNew = projectmap.get(Contant.CNJXNUM);
  514. PointData cnjxnumPoint = createWpPoint(procnjxnum, cnjxnumPointNew);
  515. wpcnjxnum.addAndGet(procnjxnum.intValue());
  516. resultList.add(cnjxnumPoint);
  517. //检修台数6-4
  518. Windpowerstationpointnew jxtsPointNew = projectmap.get(Contant.WHTJ);
  519. prowhtj.addAndGet(projxnum.intValue()+procnjxnum.intValue());
  520. PointData jxtsPoint = createWpPoint(prowhtj, jxtsPointNew);
  521. resultList.add(jxtsPoint);
  522. //电网受累台数10
  523. Windpowerstationpointnew dwslnumPointNew = projectmap.get(Contant.DWSLNUM);
  524. PointData dwslnumPoint = createWpPoint(prodwslnum, dwslnumPointNew);
  525. wpdwslnum.addAndGet(prodwslnum.intValue());
  526. resultList.add(dwslnumPoint);
  527. //环境受累台数11
  528. Windpowerstationpointnew hjslnumPointNew = projectmap.get(Contant.HJSLNUM);
  529. PointData hjslnumPoint = createWpPoint(prohjslnum, hjslnumPointNew);
  530. wphjslnum.addAndGet(prohjslnum.intValue());
  531. resultList.add(hjslnumPoint);
  532. //故障台数6-2
  533. Windpowerstationpointnew gztsPointNew = projectmap.get(Contant.GZTJ);
  534. progzts.addAndGet(progznum.intValue()+procngznum.intValue());
  535. PointData gztsPoint = createWpPoint(progzts, gztsPointNew);
  536. resultList.add(gztsPoint);
  537. //受累台数6-6
  538. Windpowerstationpointnew sltsPointNew = projectmap.get(Contant.SLTS);
  539. proslts.addAndGet(prodwslnum.intValue()+prohjslnum.intValue());
  540. PointData sltsPoint = createWpPoint(proslts, sltsPointNew);
  541. resultList.add(sltsPoint);
  542. //离线台数12
  543. Windpowerstationpointnew lxnumPointNew = projectmap.get(Contant.LXNUM);
  544. Windpowerstationpointnew txzdPointNew = projectmap.get(Contant.TXZD);
  545. PointData lxnumPoint = createWpPoint(prolxnum, lxnumPointNew);
  546. PointData txzdPoint = createWpPoint(prolxnum, txzdPointNew);
  547. wplxnum.addAndGet(prolxnum.intValue());
  548. resultList.add(lxnumPoint);
  549. resultList.add(txzdPoint);
  550. });
  551. //待机台数0
  552. Windpowerstationpointnew djnumPointNew = wpmap.get(Contant.DJNUM);
  553. PointData djnumPoint = createWpPoint(wpdjnum, djnumPointNew);
  554. resultList.add(djnumPoint);
  555. //停机台数1
  556. Windpowerstationpointnew tjnumPointNew = wpmap.get(Contant.TJNUM);
  557. PointData tjnumPoint = createWpPoint(wptjnum, tjnumPointNew);
  558. resultList.add(tjnumPoint);
  559. //待机台数6-0
  560. Windpowerstationpointnew djtsPointNew = wpmap.get(Contant.DJTS);
  561. wpdjts.addAndGet(wpdjnum.intValue()+wptjnum.intValue());
  562. PointData djtsPoint = createWpPoint(wpdjts, djtsPointNew);
  563. resultList.add(djtsPoint);
  564. //运行台数2
  565. Windpowerstationpointnew fdnumPointNew = wpmap.get(Contant.FDNUM);
  566. PointData fdnumPoint = createWpPoint(wpfdnum, fdnumPointNew);
  567. resultList.add(fdnumPoint);
  568. //降出力台数3
  569. Windpowerstationpointnew fdjclnumPointNew = wpmap.get(Contant.FDJCLNUM);
  570. PointData fdjclnumPoint = createWpPoint(wpfdjclnum, fdjclnumPointNew);
  571. resultList.add(fdjclnumPoint);
  572. //运行台数6-1
  573. Windpowerstationpointnew yxtsPointNew = wpmap.get(Contant.YXTS);
  574. wpyxts.addAndGet(wpfdnum.intValue()+wpfdjclnum.intValue());
  575. PointData yxtsPoint = createWpPoint(wpyxts, yxtsPointNew);
  576. resultList.add(yxtsPoint);
  577. //限电降出力台数4
  578. Windpowerstationpointnew xdjclnumPointNew = wpmap.get(Contant.XDJCLNUM);
  579. PointData xdjclnumPoint = createWpPoint(wpxdjclnum, xdjclnumPointNew);
  580. resultList.add(xdjclnumPoint);
  581. //限电停机台数5
  582. Windpowerstationpointnew xdtjnumPointNew = wpmap.get(Contant.XDTJNUM);
  583. PointData xdtjnumPoint = createWpPoint(wpxdtjnum, xdtjnumPointNew);
  584. resultList.add(xdtjnumPoint);
  585. //限电台数6-5
  586. Windpowerstationpointnew xdtsPointNew = wpmap.get(Contant.XDTS);
  587. wpxdts.addAndGet(wpxdjclnum.intValue()+wpxdtjnum.intValue());
  588. PointData xdtsPoint = createWpPoint(wpxdts, xdtsPointNew);
  589. resultList.add(xdtsPoint);
  590. //故障台数6
  591. Windpowerstationpointnew gznumPointNew = wpmap.get(Contant.GZNUM);
  592. PointData gznumPoint = createWpPoint(wpgznum, gznumPointNew);
  593. resultList.add(gznumPoint);
  594. //故障受累台数7
  595. Windpowerstationpointnew cngznumPointNew = wpmap.get(Contant.CNGZNUM);
  596. PointData cngznumPoint = createWpPoint(wpcngznum, cngznumPointNew);
  597. resultList.add(cngznumPoint);
  598. //检修台数8
  599. Windpowerstationpointnew jxnumPointNew = wpmap.get(Contant.JXNUM);
  600. PointData jxnumPoint = createWpPoint(wpjxnum, jxnumPointNew);
  601. resultList.add(jxnumPoint);
  602. //检修受累台数9
  603. Windpowerstationpointnew cnjxnumPointNew = wpmap.get(Contant.CNJXNUM);
  604. PointData cnjxnumPoint = createWpPoint(wpcnjxnum, cnjxnumPointNew);
  605. resultList.add(cnjxnumPoint);
  606. //检修台数6-4
  607. Windpowerstationpointnew jxtsPointNew = wpmap.get(Contant.WHTJ);
  608. wpwhtj.addAndGet(wpjxnum.intValue()+wpcnjxnum.intValue());
  609. PointData jxtsPoint = createWpPoint(wpwhtj, jxtsPointNew);
  610. resultList.add(jxtsPoint);
  611. //电网受累台数10
  612. Windpowerstationpointnew dwslnumPointNew = wpmap.get(Contant.DWSLNUM);
  613. PointData dwslnumPoint = createWpPoint(wpdwslnum, dwslnumPointNew);
  614. resultList.add(dwslnumPoint);
  615. //环境受累台数11
  616. Windpowerstationpointnew hjslnumPointNew = wpmap.get(Contant.HJSLNUM);
  617. PointData hjslnumPoint = createWpPoint(wphjslnum, hjslnumPointNew);
  618. resultList.add(hjslnumPoint);
  619. //故障台数6-2
  620. Windpowerstationpointnew gztsPointNew = wpmap.get(Contant.GZTJ);
  621. wpgzts.addAndGet(wpgznum.intValue()+wpcngznum.intValue());
  622. PointData gztsPoint = createWpPoint(wpgzts, gztsPointNew);
  623. resultList.add(gztsPoint);
  624. //受累台数6-6
  625. Windpowerstationpointnew sltsPointNew = wpmap.get(Contant.SLTS);
  626. wpslts.addAndGet(wpdwslnum.intValue()+wphjslnum.intValue());
  627. PointData sltsPoint = createWpPoint(wpslts, sltsPointNew);
  628. resultList.add(sltsPoint);
  629. //离线台数12
  630. Windpowerstationpointnew lxnumPointNew = wpmap.get(Contant.LXNUM);
  631. Windpowerstationpointnew txzdPointNew = wpmap.get(Contant.TXZD);
  632. PointData lxnumPoint = createWpPoint(wplxnum, lxnumPointNew);
  633. PointData txzdPoint = createWpPoint(wplxnum, txzdPointNew);
  634. resultList.add(lxnumPoint);
  635. resultList.add(txzdPoint);
  636. });
  637. edosUtil.sendMultiPoint(resultList);
  638. }
  639. private PointData createWpPoint(AtomicInteger tjnum, Windpowerstationpointnew tjnumPoint) {
  640. PointData pointData = new PointData();
  641. pointData.setEdnaId(tjnumPoint.getCode());
  642. pointData.setPointName(tjnumPoint.getName());
  643. pointData.setPointTime(currentDate.getTime());
  644. pointData.setPointValue(String.valueOf(tjnum.doubleValue()));
  645. pointData.setPointValueInDouble(tjnum.doubleValue());
  646. return pointData;
  647. }
  648. /**
  649. * 判断是否降出力
  650. * @param wt
  651. * @param stringWindturbinetestingpointnewMap
  652. * @return
  653. * @throws Exception
  654. */
  655. private boolean isJcl(Windturbine wt, Map<String, Windturbinetestingpointnew> stringWindturbinetestingpointnewMap) throws Exception {
  656. boolean isJcl = false;
  657. Windturbinetestingpointnew ai134point = stringWindturbinetestingpointnewMap.get(Contant.AI134);
  658. Windturbinetestingpointnew ai178point = stringWindturbinetestingpointnewMap.get(Contant.AI178);
  659. Windturbinetestingpointnew ai443point = stringWindturbinetestingpointnewMap.get(Contant.AI443);
  660. if (!ai134point.getCode().equals("INITIAL")){
  661. Double realData = edosUtil.getRealData(ai134point).getPointValueInDouble();
  662. if (realData<Double.parseDouble(AI134)){
  663. isJcl = true;
  664. }
  665. }
  666. if (!ai178point.getCode().equals("INITIAL")){
  667. Double realData = edosUtil.getRealData(ai178point).getPointValueInDouble();
  668. if (realData<Double.parseDouble(AI178)){
  669. isJcl = true;
  670. }
  671. }
  672. if (!ai443point.getCode().equals("INITIAL")){
  673. Double realData = edosUtil.getRealData(ai443point).getPointValueInDouble();
  674. if (realData<modelMap.get(wt.getModelid()).getPowerproduction()){
  675. isJcl = true;
  676. }
  677. }
  678. return isJcl;
  679. }
  680. private PointData createPointData(Windturbinetestingpointnew ztmxPoint, Double mxstatus) {
  681. PointData pointData = new PointData();
  682. pointData.setEdnaId(ztmxPoint.getCode());
  683. pointData.setPointName(ztmxPoint.getName());
  684. pointData.setPointTime(currentDate.getTime());
  685. pointData.setPointValue(String.valueOf(mxstatus));
  686. pointData.setPointValueInDouble(mxstatus);
  687. return pointData;
  688. }
  689. }