AverageAndGeneratingService.java 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  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.util.DateUtils;
  5. import com.gyee.generation.init.CacheContext;
  6. import com.gyee.generation.model.auto.*;
  7. import com.gyee.generation.util.realtimesource.IEdosUtil;
  8. import org.springframework.beans.factory.annotation.Value;
  9. import org.springframework.stereotype.Service;
  10. import javax.annotation.Resource;
  11. import java.util.*;
  12. /**
  13. * @ClassName : AverageAndGeneratingService
  14. * @Author : xieshengjie
  15. * @Date: 2022/3/22 10:42
  16. * @Description : 平均风速,平均功率,SCADA发电量
  17. */
  18. @Service
  19. public class AverageAndGeneratingService {
  20. private Date samedayZero;
  21. private Date monthFirstZero;
  22. private Date yearFirstZero;
  23. private Date currentDate;
  24. private List<ProBasicWindpowerstation> wpls;
  25. private Map<String, List<ProBasicProject>> wppromap;
  26. private Map<String, List<ProBasicLine>> prolinemap;
  27. private Map<String, List<ProBasicWindturbine>> linewtmap;
  28. private Date tomorrow;
  29. private List<ProBasicWindturbine> wtls;
  30. private Map<String, Map<String, ProBasicWppoint>> wppointmap;
  31. private Map<String, Map<String, ProBasicWppoint>> linepointmap;
  32. private Map<String, Map<String, ProBasicWppoint>> propointmap;
  33. private Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap;
  34. @Resource
  35. private IEdosUtil edosUtil;
  36. @Value("${typeOfElectric.direct}")
  37. private String direct;
  38. private void init(){
  39. samedayZero = DateUtils.getSamedayZero();
  40. monthFirstZero = DateUtils.getMonthFirstZero();
  41. yearFirstZero = DateUtils.getYearFirstZero();
  42. currentDate = DateUtils.getCurrentDate();
  43. wpls = CacheContext.wpls;
  44. wtls = CacheContext.wtls;
  45. wppromap = CacheContext.wppromap;
  46. prolinemap = CacheContext.prolinemap;
  47. wppointmap = CacheContext.wppointmap;
  48. linepointmap = CacheContext.linepointmap;
  49. propointmap = CacheContext.propointmap;
  50. wtpAimap = CacheContext.wtpAimap;
  51. linewtmap = CacheContext.linewtmap;
  52. tomorrow = DateUtils.addDays(samedayZero,1);
  53. }
  54. /**
  55. * 保存平均风速,平均功率,scada发电量实时计算点
  56. * @throws Exception
  57. */
  58. public void saveAvespeedAndAvepowerAndScada() throws Exception {
  59. init();
  60. List<PointData> resultList = new ArrayList<>();
  61. String monthbenchPoints = Contant.monthbenchPoints;
  62. wpls.stream().forEach(wp->{
  63. List<ProBasicProject> projects = wppromap.get(wp.getId());
  64. Map<String, ProBasicWppoint> wppointnewmap = wppointmap.get(wp.getId());
  65. ProBasicWppoint wppointnew = wppointnewmap.get(Contant.RPJFS);
  66. ProBasicWppoint ywppointnew = wppointnewmap.get(Contant.YPJFS);
  67. ProBasicWppoint nwppointnew = wppointnewmap.get(Contant.NPJFS);
  68. ProBasicWppoint powerwppointnew = wppointnewmap.get(Contant.RPJGL);
  69. ProBasicWppoint ypowerwppointnew = wppointnewmap.get(Contant.YPJGL);
  70. ProBasicWppoint npowerwppointnew = wppointnewmap.get(Contant.NPJGL);
  71. ProBasicWppoint fdlwppointnew = wppointnewmap.get(Contant.RFDL);
  72. ProBasicWppoint yfdlwppointnew = wppointnewmap.get(Contant.YFDL);
  73. ProBasicWppoint nfdlwppointnew = wppointnewmap.get(Contant.NFDL);
  74. ProBasicWppoint fnlylwppointnew = wppointnewmap.get(Contant.FNLYL);
  75. ProBasicWppoint jpeyhlwppointnew = wppointnewmap.get(Contant.JPEYHL);
  76. ProBasicWppoint jpeyhtwppointnew = wppointnewmap.get(Contant.JPEYHT);
  77. ProBasicWppoint jybmwppointnew = wppointnewmap.get(Contant.JYBM);
  78. ProBasicWppoint jyswppointnew = wppointnewmap.get(Contant.JYS);
  79. List<PointData> projectavespeedList = new ArrayList<>();
  80. List<PointData> yprojectavespeedList = new ArrayList<>();
  81. List<PointData> nprojectavespeedList = new ArrayList<>();
  82. List<PointData> projectavepowerList = new ArrayList<>();
  83. List<PointData> yprojectavepowerList = new ArrayList<>();
  84. List<PointData> nprojectavepowerList = new ArrayList<>();
  85. List<PointData> projectfdlList = new ArrayList<>();
  86. List<PointData> projectyfdlList = new ArrayList<>();
  87. List<PointData> projectnfdlList = new ArrayList<>();
  88. projects.stream().forEach(project -> {
  89. List<ProBasicLine> lines = prolinemap.get(project.getId());
  90. Map<String, ProBasicWppoint> projectpointnewmap = propointmap.get(project.getId());
  91. ProBasicWppoint projectpointnew = projectpointnewmap.get(Contant.RPJFS);
  92. ProBasicWppoint yprojectpointnew = projectpointnewmap.get(Contant.YPJFS);
  93. ProBasicWppoint nprojectpointnew = projectpointnewmap.get(Contant.NPJFS);
  94. ProBasicWppoint powerprojectpointnew = projectpointnewmap.get(Contant.RPJGL);
  95. ProBasicWppoint ypowerprojectpointnew = projectpointnewmap.get(Contant.YPJGL);
  96. ProBasicWppoint npowerprojectpointnew = projectpointnewmap.get(Contant.NPJGL);
  97. ProBasicWppoint fdlprojectpointnew = projectpointnewmap.get(Contant.RFDL);
  98. ProBasicWppoint yfdlprojectpointnew = projectpointnewmap.get(Contant.YFDL);
  99. ProBasicWppoint nfdlprojectpointnew = projectpointnewmap.get(Contant.NFDL);
  100. ProBasicWppoint fnlylprojectpointnew = projectpointnewmap.get(Contant.FNLYL);
  101. ProBasicWppoint jpeyhlprojectpointnew = projectpointnewmap.get(Contant.JPEYHL);
  102. ProBasicWppoint jpeyhtprojectpointnew = projectpointnewmap.get(Contant.JPEYHT);
  103. ProBasicWppoint jybmprojectpointnew = projectpointnewmap.get(Contant.JYBM);
  104. ProBasicWppoint jysprojectpointnew = projectpointnewmap.get(Contant.JYS);
  105. List<PointData> lineavespeedList = new ArrayList<>();
  106. List<PointData> ylineavespeedList = new ArrayList<>();
  107. List<PointData> nlineavespeedList = new ArrayList<>();
  108. List<PointData> lineavepowerList = new ArrayList<>();
  109. List<PointData> ylineavepowerList = new ArrayList<>();
  110. List<PointData> nlineavepowerList = new ArrayList<>();
  111. List<PointData> linefdlList = new ArrayList<>();
  112. List<PointData> ylinefdlList = new ArrayList<>();
  113. List<PointData> nlinefdlList = new ArrayList<>();
  114. lines.stream().forEach(line -> {
  115. List<ProBasicWindturbine> windturbines = linewtmap.get(line.getId());
  116. Map<String, ProBasicWppoint> linepointnewmap = linepointmap.get(line.getId());
  117. ProBasicWppoint linepointnew = linepointnewmap.get(Contant.RPJFS);
  118. ProBasicWppoint ylinepointnew = linepointnewmap.get(Contant.YPJFS);
  119. ProBasicWppoint nlinepointnew = linepointnewmap.get(Contant.NPJFS);
  120. ProBasicWppoint linepowerpointnew = linepointnewmap.get(Contant.RPJGL);
  121. ProBasicWppoint ylinepowerpointnew = linepointnewmap.get(Contant.YPJGL);
  122. ProBasicWppoint nlinepowerpointnew = linepointnewmap.get(Contant.NPJGL);
  123. ProBasicWppoint linefdlpointnew = linepointnewmap.get(Contant.RFDL);
  124. ProBasicWppoint ylinefdlpointnew = linepointnewmap.get(Contant.YFDL);
  125. ProBasicWppoint nlinefdlpointnew = linepointnewmap.get(Contant.NFDL);
  126. ProBasicWppoint linefnlylpointnew = linepointnewmap.get(Contant.FNLYL);
  127. ProBasicWppoint jpeyhlpointnew = linepointnewmap.get(Contant.JPEYHL);
  128. ProBasicWppoint jpeyhtpointnew = linepointnewmap.get(Contant.JPEYHT);
  129. ProBasicWppoint jybmpointnew = linepointnewmap.get(Contant.JYBM);
  130. ProBasicWppoint jyspointnew = linepointnewmap.get(Contant.JYS);
  131. List<PointData> wtavespeedList = new ArrayList<>();
  132. List<PointData> ywtavespeedList = new ArrayList<>();
  133. List<PointData> nwtavespeedList = new ArrayList<>();
  134. List<PointData> wtavepowerList = new ArrayList<>();
  135. List<PointData> ywtavepowerList = new ArrayList<>();
  136. List<PointData> nwtavepowerList = new ArrayList<>();
  137. List<PointData> rfdlList = new ArrayList<>();
  138. List<PointData> yfdlList = new ArrayList<>();
  139. List<PointData> nfdlList = new ArrayList<>();
  140. windturbines.stream().forEach(wt->{
  141. Map<String, ProBasicEquipmentPoint> windturbinetestingpointnewMap = wtpAimap.get(wt.getId());
  142. ProBasicEquipmentPoint aveSpeedPoint = windturbinetestingpointnewMap.get(Contant.RPJFS);
  143. ProBasicEquipmentPoint monthAveSpeedPoint = windturbinetestingpointnewMap.get(Contant.YPJFS);
  144. ProBasicEquipmentPoint yearAveSpeedPoint = windturbinetestingpointnewMap.get(Contant.NPJFS);
  145. ProBasicEquipmentPoint fjssfs = windturbinetestingpointnewMap.get(Contant.AI022);
  146. ProBasicEquipmentPoint avePowerPoint = windturbinetestingpointnewMap.get(Contant.RPJGL);
  147. ProBasicEquipmentPoint yavePowerPoint = windturbinetestingpointnewMap.get(Contant.YPJGL);
  148. ProBasicEquipmentPoint navePowerPoint = windturbinetestingpointnewMap.get(Contant.NPJGL);
  149. ProBasicEquipmentPoint fjssgl = windturbinetestingpointnewMap.get(Contant.AI130);
  150. ProBasicEquipmentPoint ai064 = windturbinetestingpointnewMap.get(Contant.AI064);
  151. ProBasicEquipmentPoint fjfdl = windturbinetestingpointnewMap.get(Contant.RFDL);
  152. ProBasicEquipmentPoint fjyfdl = windturbinetestingpointnewMap.get(Contant.YFDL);
  153. ProBasicEquipmentPoint fjnfdl = windturbinetestingpointnewMap.get(Contant.NFDL);
  154. ProBasicEquipmentPoint ai138 = windturbinetestingpointnewMap.get(Contant.AI138);
  155. ProBasicEquipmentPoint ai139 = windturbinetestingpointnewMap.get(Contant.AI139);
  156. try {
  157. //算发电量
  158. Double rfdl = 0.0;
  159. Double yfdl = 0.0;
  160. Double nfdl = 0.0;
  161. if (direct.contains(wt.getProjectId())){
  162. rfdl = edosUtil.getSectionData(ai064,tomorrow.getTime()).getPointValueInDouble();
  163. yfdl = edosUtil.getSectionData(ai138,tomorrow.getTime()).getPointValueInDouble();
  164. nfdl = edosUtil.getSectionData(ai139,tomorrow.getTime()).getPointValueInDouble();
  165. }else{
  166. Double currentValue = 0.0;
  167. Double samedayValue = 0.0;
  168. Double monthFirstValue = 0.0;
  169. Double yearFirstValue = 0.0;
  170. PointData realData = edosUtil.getSectionData(ai064,tomorrow.getTime());
  171. currentValue = realData.getPointValueInDouble();
  172. samedayValue = edosUtil.getSectionData(ai064,samedayZero.getTime()).getPointValueInDouble();
  173. monthFirstValue = edosUtil.getSectionData(ai064,monthFirstZero.getTime()).getPointValueInDouble();
  174. yearFirstValue = edosUtil.getSectionData(ai064,yearFirstZero.getTime()).getPointValueInDouble();
  175. rfdl = currentValue - samedayValue;
  176. yfdl = currentValue - monthFirstValue;
  177. nfdl = currentValue - yearFirstValue;
  178. }
  179. PointData fdlpointData = createPointData(fjfdl, rfdl);
  180. rfdlList.add(fdlpointData);
  181. PointData yfdlpointData = createPointData(fjyfdl, yfdl);
  182. yfdlList.add(yfdlpointData);
  183. PointData nfdlpointData = createPointData(fjnfdl, nfdl);
  184. yfdlList.add(nfdlpointData);
  185. //算平均风速
  186. List<PointData> ssfsList = edosUtil.getHistStat(fjssfs, samedayZero.getTime() / 1000, currentDate.getTime() / 1000, 1l, null, 2);
  187. Optional<PointData> ssfsFirst = ssfsList.stream().findFirst();
  188. if (ssfsFirst.isPresent()){
  189. PointData pointData = ssfsFirst.get();
  190. double inDouble = pointData.getPointValueInDouble();
  191. createWtPointData(aveSpeedPoint, pointData, inDouble);
  192. wtavespeedList.add(pointData);
  193. }
  194. //算月平均风速
  195. List<PointData> yssfsList = edosUtil.getHistStat(fjssfs, monthFirstZero.getTime() / 1000, currentDate.getTime() / 1000, 1l, null, 2);
  196. Optional<PointData> yssfsFirst = yssfsList.stream().findFirst();
  197. if (yssfsFirst.isPresent()){
  198. PointData pointData = yssfsFirst.get();
  199. double inDouble = pointData.getPointValueInDouble();
  200. createWtPointData(monthAveSpeedPoint, pointData, inDouble);
  201. ywtavespeedList.add(pointData);
  202. }
  203. //算年平均风速
  204. List<PointData> nssfsList = edosUtil.getHistStat(fjssfs, yearFirstZero.getTime() / 1000, currentDate.getTime() / 1000, 1l, null, 2);
  205. Optional<PointData> nssfsFirst = nssfsList.stream().findFirst();
  206. if (nssfsFirst.isPresent()){
  207. PointData pointData = nssfsFirst.get();
  208. double inDouble = pointData.getPointValueInDouble();
  209. createWtPointData(yearAveSpeedPoint, pointData, inDouble);
  210. nwtavespeedList.add(pointData);
  211. }
  212. //算平均功率
  213. List<PointData> ssglList = edosUtil.getHistStat(fjssgl, samedayZero.getTime() / 1000, currentDate.getTime() / 1000, 1l, null, 2);
  214. Optional<PointData> ssglFirst = ssglList.stream().findFirst();
  215. if (ssglFirst.isPresent()){
  216. PointData pointData = ssglFirst.get();
  217. double inDouble = pointData.getPointValueInDouble();
  218. createWtPointData(avePowerPoint, pointData, inDouble);
  219. wtavepowerList.add(pointData);
  220. }
  221. //算月平均功率
  222. List<PointData> yssglList = edosUtil.getHistStat(fjssgl, monthFirstZero.getTime() / 1000, currentDate.getTime() / 1000, 1l, null, 2);
  223. Optional<PointData> yssglFirst = yssglList.stream().findFirst();
  224. if (yssglFirst.isPresent()){
  225. PointData pointData = yssglFirst.get();
  226. double inDouble = pointData.getPointValueInDouble();
  227. createWtPointData(yavePowerPoint, pointData, inDouble);
  228. ywtavepowerList.add(pointData);
  229. }
  230. //算年平均功率
  231. List<PointData> nssglList = edosUtil.getHistStat(fjssgl, yearFirstZero.getTime() / 1000, currentDate.getTime() / 1000, 1l, null, 2);
  232. Optional<PointData> nssglFirst = nssglList.stream().findFirst();
  233. if (nssglFirst.isPresent()){
  234. PointData pointData = nssglFirst.get();
  235. double inDouble = pointData.getPointValueInDouble();
  236. createWtPointData(navePowerPoint, pointData, inDouble);
  237. nwtavepowerList.add(pointData);
  238. }
  239. } catch (Exception e) {
  240. e.printStackTrace();
  241. }
  242. });
  243. resultList.addAll(wtavespeedList);
  244. resultList.addAll(ywtavespeedList);
  245. resultList.addAll(nwtavespeedList);
  246. resultList.addAll(wtavepowerList);
  247. resultList.addAll(ywtavepowerList);
  248. resultList.addAll(nwtavepowerList);
  249. resultList.addAll(rfdlList);
  250. resultList.addAll(yfdlList);
  251. resultList.addAll(nfdlList);
  252. double linefdl = rfdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  253. double lineyfdl = yfdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  254. double linenfdl = nfdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  255. PointData fdlpoint = createWpPointData(linefdlpointnew, linefdl);
  256. PointData yfdlpoint = createWpPointData(ylinefdlpointnew, lineyfdl);
  257. PointData nfdlpoint = createWpPointData(nlinefdlpointnew, linenfdl);
  258. linefdlList.add(fdlpoint);
  259. ylinefdlList.add(yfdlpoint);
  260. nlinefdlList.add(nfdlpoint);
  261. //算节能减排
  262. double jpeyhl = lineyfdl * 0.0059;
  263. double jpeyht = lineyfdl * 0.8568;
  264. double jybm = lineyfdl * 0.37;
  265. double jys = lineyfdl * 3.05;
  266. PointData jpeyhlpoint = createWpPointData(jpeyhlpointnew, jpeyhl);
  267. PointData jpeyhtpoint = createWpPointData(jpeyhtpointnew, jpeyht);
  268. PointData jybmpoint = createWpPointData(jybmpointnew, jybm);
  269. PointData jyspoint = createWpPointData(jyspointnew, jys);
  270. resultList.add(jpeyhlpoint);
  271. resultList.add(jpeyhtpoint);
  272. resultList.add(jybmpoint);
  273. resultList.add(jyspoint);
  274. //算风能利用率
  275. List<String> pointList = new ArrayList<>();
  276. double ssdl = 0;
  277. Arrays.stream(monthbenchPoints.split(",")).forEach(code->{
  278. pointList.add(linepointnewmap.get(code).getCode());
  279. });
  280. try {
  281. List<PointData> ssdlList = edosUtil.getRealData(pointList);
  282. ssdl = ssdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  283. } catch (Exception e) {
  284. e.printStackTrace();
  285. }
  286. double fnlyl = (ssdl+lineyfdl)!=0?lineyfdl/(ssdl+lineyfdl):0;
  287. PointData fnlylpoint = createWpPointData(linefnlylpointnew, fnlyl);
  288. resultList.add(fnlylpoint);
  289. OptionalDouble average = wtavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  290. if (average.isPresent()){
  291. double linespeed = average.getAsDouble();
  292. PointData pointData = createWpPointData(linepointnew, linespeed);
  293. lineavespeedList.add(pointData);
  294. }
  295. OptionalDouble yaverage = ywtavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  296. if (yaverage.isPresent()){
  297. double linespeed = yaverage.getAsDouble();
  298. PointData pointData = createWpPointData(ylinepointnew, linespeed);
  299. ylineavespeedList.add(pointData);
  300. }
  301. OptionalDouble naverage = nwtavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  302. if (naverage.isPresent()){
  303. double linespeed = naverage.getAsDouble();
  304. PointData pointData = createWpPointData(nlinepointnew, linespeed);
  305. nlineavespeedList.add(pointData);
  306. }
  307. Double poweraverage = wtavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  308. PointData powerpointData = createWpPointData(linepowerpointnew, poweraverage);
  309. lineavepowerList.add(powerpointData);
  310. Double ypoweraverage = ywtavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  311. PointData ypowerpointData = createWpPointData(ylinepowerpointnew, ypoweraverage);
  312. ylineavepowerList.add(ypowerpointData);
  313. Double npoweraverage = nwtavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  314. PointData npowerpointData = createWpPointData(nlinepowerpointnew, npoweraverage);
  315. nlineavepowerList.add(npowerpointData);
  316. });
  317. OptionalDouble average = lineavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  318. OptionalDouble yaverage = ylineavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  319. OptionalDouble naverage = nlineavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  320. Double prorfdl = linefdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  321. Double proyfdl = ylinefdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  322. Double pronfdl = nlinefdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  323. resultList.addAll(lineavespeedList);
  324. resultList.addAll(ylineavespeedList);
  325. resultList.addAll(nlineavespeedList);
  326. resultList.addAll(lineavepowerList);
  327. resultList.addAll(ylineavepowerList);
  328. resultList.addAll(nlineavepowerList);
  329. resultList.addAll(linefdlList);
  330. resultList.addAll(ylinefdlList);
  331. resultList.addAll(nlinefdlList);
  332. //算节能减排
  333. double jpeyhl = proyfdl * 0.0059;
  334. double jpeyht = proyfdl * 0.8568;
  335. double jybm = proyfdl * 0.37;
  336. double jys = proyfdl * 3.05;
  337. PointData jpeyhlpoint = createWpPointData(jpeyhlprojectpointnew, jpeyhl);
  338. PointData jpeyhtpoint = createWpPointData(jpeyhtprojectpointnew, jpeyht);
  339. PointData jybmpoint = createWpPointData(jybmprojectpointnew, jybm);
  340. PointData jyspoint = createWpPointData(jysprojectpointnew, jys);
  341. resultList.add(jpeyhlpoint);
  342. resultList.add(jpeyhtpoint);
  343. resultList.add(jybmpoint);
  344. resultList.add(jyspoint);
  345. //算风能利用率
  346. List<String> pointList = new ArrayList<>();
  347. double ssdl = 0;
  348. Arrays.stream(monthbenchPoints.split(",")).forEach(code->{
  349. pointList.add(projectpointnewmap.get(code).getCode());
  350. });
  351. try {
  352. List<PointData> ssdlList = edosUtil.getRealData(pointList);
  353. ssdl = ssdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  354. } catch (Exception e) {
  355. e.printStackTrace();
  356. }
  357. double fnlyl = (ssdl+proyfdl)!=0?proyfdl/(ssdl+proyfdl):0;
  358. PointData fnlylpoint = createWpPointData(fnlylprojectpointnew, fnlyl);
  359. resultList.add(fnlylpoint);
  360. PointData rfdlpointData = createWpPointData(fdlprojectpointnew, prorfdl);
  361. PointData yfdlpointData = createWpPointData(yfdlprojectpointnew, proyfdl);
  362. PointData nfdlpointData = createWpPointData(nfdlprojectpointnew, pronfdl);
  363. projectfdlList.add(rfdlpointData);
  364. projectyfdlList.add(yfdlpointData);
  365. projectnfdlList.add(nfdlpointData);
  366. if (average.isPresent()){
  367. double projectspeed = average.getAsDouble();
  368. PointData pointData = createWpPointData(projectpointnew, projectspeed);
  369. projectavespeedList.add(pointData);
  370. }
  371. if (yaverage.isPresent()){
  372. double projectspeed = yaverage.getAsDouble();
  373. PointData pointData = createWpPointData(yprojectpointnew, projectspeed);
  374. yprojectavespeedList.add(pointData);
  375. }
  376. if (naverage.isPresent()){
  377. double projectspeed = naverage.getAsDouble();
  378. PointData pointData = createWpPointData(nprojectpointnew, projectspeed);
  379. nprojectavespeedList.add(pointData);
  380. }
  381. Double poweraverage = lineavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  382. Double ypoweraverage = ylineavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  383. Double npoweraverage = nlineavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  384. PointData powerpointData = createWpPointData(powerprojectpointnew, poweraverage);
  385. projectavepowerList.add(powerpointData);
  386. PointData ypowerpointData = createWpPointData(ypowerprojectpointnew, ypoweraverage);
  387. yprojectavepowerList.add(ypowerpointData);
  388. PointData npowerpointData = createWpPointData(npowerprojectpointnew, npoweraverage);
  389. nprojectavepowerList.add(npowerpointData);
  390. });
  391. resultList.addAll(projectfdlList);
  392. resultList.addAll(projectyfdlList);
  393. resultList.addAll(projectnfdlList);
  394. double fcrfdl = projectfdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  395. PointData fdlpointData = createWpPointData(fdlwppointnew, fcrfdl);
  396. resultList.add(fdlpointData);
  397. double fcyfdl = projectyfdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  398. PointData yfdlpointData = createWpPointData(yfdlwppointnew, fcyfdl);
  399. resultList.add(yfdlpointData);
  400. //算节能减排
  401. double jpeyhl = fcyfdl * 0.0059;
  402. double jpeyht = fcyfdl * 0.8568;
  403. double jybm = fcyfdl * 0.37;
  404. double jys = fcyfdl * 3.05;
  405. PointData jpeyhlpoint = createWpPointData(jpeyhlwppointnew, jpeyhl);
  406. PointData jpeyhtpoint = createWpPointData(jpeyhtwppointnew, jpeyht);
  407. PointData jybmpoint = createWpPointData(jybmwppointnew, jybm);
  408. PointData jyspoint = createWpPointData(jyswppointnew, jys);
  409. resultList.add(jpeyhlpoint);
  410. resultList.add(jpeyhtpoint);
  411. resultList.add(jybmpoint);
  412. resultList.add(jyspoint);
  413. //算风能利用率
  414. List<String> pointList = new ArrayList<>();
  415. double ssdl = 0;
  416. Arrays.stream(monthbenchPoints.split(",")).forEach(code->{
  417. pointList.add(wppointnewmap.get(code).getCode());
  418. });
  419. try {
  420. List<PointData> ssdlList = edosUtil.getRealData(pointList);
  421. ssdl = ssdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  422. } catch (Exception e) {
  423. e.printStackTrace();
  424. }
  425. double fnlyl = (ssdl+fcyfdl)!=0?fcyfdl/(ssdl+fcyfdl):0;
  426. PointData fnlylpoint = createWpPointData(fnlylwppointnew, fnlyl);
  427. resultList.add(fnlylpoint);
  428. double fcnfdl = projectnfdlList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  429. PointData nfdlpointData = createWpPointData(nfdlwppointnew, fcnfdl);
  430. resultList.add(nfdlpointData);
  431. OptionalDouble average = projectavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  432. resultList.addAll(projectavespeedList);
  433. if (average.isPresent()){
  434. double wpspeed = average.getAsDouble();
  435. PointData pointData = createWpPointData(wppointnew, wpspeed);
  436. resultList.add(pointData);
  437. }
  438. OptionalDouble yaverage = yprojectavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  439. resultList.addAll(yprojectavespeedList);
  440. if (yaverage.isPresent()){
  441. double wpspeed = yaverage.getAsDouble();
  442. PointData pointData = createWpPointData(ywppointnew, wpspeed);
  443. resultList.add(pointData);
  444. }
  445. OptionalDouble naverage = nprojectavespeedList.stream().mapToDouble(PointData::getPointValueInDouble).average();
  446. resultList.addAll(nprojectavespeedList);
  447. if (naverage.isPresent()){
  448. double wpspeed = naverage.getAsDouble();
  449. PointData pointData = createWpPointData(nwppointnew, wpspeed);
  450. resultList.add(pointData);
  451. }
  452. Double poweraverage = projectavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  453. resultList.addAll(projectavepowerList);
  454. PointData powerpointData = createWpPointData(powerwppointnew, poweraverage);
  455. resultList.add(powerpointData);
  456. Double ypoweraverage = yprojectavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  457. resultList.addAll(yprojectavepowerList);
  458. PointData ypowerpointData = createWpPointData(ypowerwppointnew, ypoweraverage);
  459. resultList.add(ypowerpointData);
  460. Double npoweraverage = nprojectavepowerList.stream().mapToDouble(PointData::getPointValueInDouble).sum();
  461. resultList.addAll(nprojectavepowerList);
  462. PointData npowerpointData = createWpPointData(npowerwppointnew, npoweraverage);
  463. resultList.add(npowerpointData);
  464. });
  465. edosUtil.sendMultiPoint(resultList);
  466. }
  467. private PointData createPointData(ProBasicEquipmentPoint fjfdl, Double rfdl) {
  468. PointData pointData = new PointData();
  469. pointData.setEdnaId(fjfdl.getCode());
  470. pointData.setPointName(fjfdl.getName());
  471. pointData.setPointTime(currentDate.getTime());
  472. pointData.setPointValueInDouble(rfdl);
  473. pointData.setPointValue(String.valueOf(rfdl));
  474. return pointData;
  475. }
  476. private PointData createWpPointData(ProBasicWppoint linepointnew, double linespeed) {
  477. PointData pointData = new PointData();
  478. pointData.setEdnaId(linepointnew.getCode());
  479. pointData.setPointTime(currentDate.getTime());
  480. pointData.setPointName(linepointnew.getName());
  481. pointData.setPointValue(String.valueOf(linespeed));
  482. pointData.setPointValueInDouble(linespeed);
  483. return pointData;
  484. }
  485. private void createWtPointData(ProBasicEquipmentPoint aveSpeedPoint, PointData pointData, double inDouble) {
  486. pointData.setEdnaId(aveSpeedPoint.getCode());
  487. pointData.setPointName(aveSpeedPoint.getName());
  488. pointData.setPointValueInDouble(inDouble);
  489. pointData.setPointValue(String.valueOf(inDouble));
  490. pointData.setPointTime(currentDate.getTime());
  491. }
  492. }