WindPowerInfo1Service.java 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323
  1. package com.gyee.generation.service;//package com.gyee.generation.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.gyee.common.model.PointData;
  4. import com.gyee.common.model.StringUtils;
  5. import com.gyee.generation.init.CacheContext;
  6. import com.gyee.generation.model.auto.*;
  7. import com.gyee.generation.model.vo.CompanyType;
  8. import com.gyee.generation.model.vo.Location;
  9. import com.gyee.generation.model.vo.WpType;
  10. import com.gyee.generation.service.auto.IProEconAnalysisSubtableBottomService;
  11. import com.gyee.generation.service.auto.IProEconEquipmentInfoDay1Service;
  12. import com.gyee.generation.service.auto.IProEconPowerstationInfoDay1Service;
  13. import com.gyee.generation.util.DateUtils;
  14. import com.gyee.generation.util.realtimesource.IEdosUtil;
  15. import com.gyee.generation.util.statisticcs.Initial;
  16. import org.springframework.beans.factory.annotation.Value;
  17. import org.springframework.boot.ApplicationArguments;
  18. import org.springframework.boot.ApplicationRunner;
  19. import org.springframework.stereotype.Service;
  20. import javax.annotation.Resource;
  21. import java.text.SimpleDateFormat;
  22. import java.time.Instant;
  23. import java.time.LocalDate;
  24. import java.time.LocalDateTime;
  25. import java.time.ZoneId;
  26. import java.util.*;
  27. import java.util.stream.Collectors;
  28. @Service
  29. public class WindPowerInfo1Service {
  30. // @Override
  31. // public void run(ApplicationArguments args) throws Exception {
  32. // Date date = new Date();
  33. // writegf(date);
  34. // }
  35. // private static final Logger logger = LoggerFactory.getLogger(WindPowerInfo1Service.class);
  36. @Resource
  37. private IEdosUtil edosUtil;
  38. @Resource
  39. private IProEconPowerstationInfoDay1Service proEconPowerstationInfoDay1Service;
  40. @Resource
  41. private IProEconEquipmentInfoDay1Service proEconEquipmentInfoDay1Service;
  42. @Value("${ndgfzb.gf}")
  43. private String gf;
  44. @Resource
  45. private IProEconAnalysisSubtableBottomService iProEconAnalysisSubtableBottomService;
  46. /**
  47. * 计算区域日信息
  48. */
  49. public void calRegionInfoDay(Date recordDate) throws Exception {
  50. Calendar c = Calendar.getInstance();
  51. c.setTime(recordDate);
  52. if (c.get(Calendar.HOUR_OF_DAY) == 0 && c.get(Calendar.MINUTE) == 0) {
  53. c.add(Calendar.DAY_OF_MONTH, -1);
  54. }
  55. recordDate = DateUtils.truncate(c.getTime());
  56. QueryWrapper<ProEconPowerstationInfoDay1> queryWrapper = new QueryWrapper<>();
  57. queryWrapper.eq("record_date", DateUtils.truncate(recordDate)).eq("location", Location.cp.getValue());
  58. List<ProEconPowerstationInfoDay1> wpinfodayls = proEconPowerstationInfoDay1Service.list(queryWrapper);
  59. // .stream()
  60. // .filter(i -> i.getRecordDate().compareTo(DateUtils.truncate(recordDate)) == 0
  61. //// && CacheContext.wpmap.containsKey(i.getWindpowerstationId())
  62. // && i.getLocation().equals(Location.cp.getValue()))
  63. // .collect(Collectors.toList());
  64. if (!wpinfodayls.isEmpty()) {
  65. Map<String, Map<String, List<ProEconPowerstationInfoDay1>>> rgmap = new HashMap<>();
  66. for (ProEconPowerstationInfoDay1 wpinfo : wpinfodayls) {
  67. if (rgmap.containsKey(wpinfo.getRegionId())) {
  68. Map<String, List<ProEconPowerstationInfoDay1>> map = rgmap.get(wpinfo.getRegionId());
  69. List<ProEconPowerstationInfoDay1> qbls = map.get(CompanyType.qb.id);
  70. List<ProEconPowerstationInfoDay1> fdls = map.get(CompanyType.fd.id);
  71. List<ProEconPowerstationInfoDay1> gfls = map.get(CompanyType.gf.id);
  72. if (wpinfo.getForeignKeyId().contains("-1")) {
  73. fdls.add(wpinfo);
  74. } else if (wpinfo.getForeignKeyId().contains("-2")) {
  75. gfls.add(wpinfo);
  76. } else if (wpinfo.getForeignKeyId().contains("0")) {
  77. qbls.add(wpinfo);
  78. }
  79. } else {
  80. Map<String, List<ProEconPowerstationInfoDay1>> map = new HashMap<>();
  81. List<ProEconPowerstationInfoDay1> qbls = new ArrayList<>();
  82. List<ProEconPowerstationInfoDay1> gfls = new ArrayList<>();
  83. List<ProEconPowerstationInfoDay1> fdls = new ArrayList<>();
  84. if (wpinfo.getForeignKeyId().contains("-1")) {
  85. fdls.add(wpinfo);
  86. } else if (wpinfo.getForeignKeyId().contains("-2")) {
  87. gfls.add(wpinfo);
  88. } else if (wpinfo.getForeignKeyId().contains("0")) {
  89. qbls.add(wpinfo);
  90. }
  91. map.put(CompanyType.qb.id, qbls);
  92. map.put(CompanyType.fd.id, fdls);
  93. map.put(CompanyType.gf.id, gfls);
  94. rgmap.put(wpinfo.getRegionId(), map);
  95. }
  96. }
  97. //判断是否有重复记录,先删除重复记录
  98. QueryWrapper<ProEconPowerstationInfoDay1> queryWrapper2 = new QueryWrapper<>();
  99. queryWrapper2.eq("record_date", DateUtils.truncate(recordDate)).eq("location", Location.rg.getValue());
  100. List<String> idls = proEconPowerstationInfoDay1Service.list(queryWrapper2)
  101. .stream()
  102. // .filter(i -> i.getRecordDate().compareTo(DateUtils.truncate(recordDate)) == 0
  103. //// && CacheContext.wpmap.containsKey(i.getWindpowerstationId())
  104. // && i.getLocation().equals(Location.rg.getValue()))
  105. .map(ProEconPowerstationInfoDay1::getId)
  106. .collect(Collectors.toList());
  107. if (idls.size() > 0) {
  108. proEconPowerstationInfoDay1Service.removeByIds(idls);
  109. }
  110. for (Map.Entry<String, Map<String, List<ProEconPowerstationInfoDay1>>> entry : rgmap.entrySet()) {
  111. Map<String, List<ProEconPowerstationInfoDay1>> map = entry.getValue();
  112. List<ProEconPowerstationInfoDay1> qbls = map.get(CompanyType.qb.id);
  113. List<ProEconPowerstationInfoDay1> fdls = map.get(CompanyType.fd.id);
  114. List<ProEconPowerstationInfoDay1> gfls = map.get(CompanyType.gf.id);
  115. // if(CacheContext.cpwpmap.size()==qbls.size())
  116. // {
  117. ProEconPowerstationInfoDay1 qb = new ProEconPowerstationInfoDay1();
  118. ProEconPowerstationInfoDay1 fd = new ProEconPowerstationInfoDay1();
  119. ProEconPowerstationInfoDay1 gf = new ProEconPowerstationInfoDay1();
  120. if (CacheContext.rgmap.containsKey(entry.getKey())) {
  121. ProBasicRegion cp = CacheContext.rgmap.get(entry.getKey());
  122. gf.setRegionId(cp.getId());
  123. gf.setRecordDate(DateUtils.truncate(recordDate));
  124. gf.setForeignKeyId(cp.getId() + "-2");
  125. gf.setLocation(Location.rg.getValue());
  126. fd.setRegionId(cp.getId());
  127. fd.setRecordDate(DateUtils.truncate(recordDate));
  128. fd.setForeignKeyId(cp.getId() + "-1");
  129. fd.setLocation(Location.rg.getValue());
  130. qb.setRegionId(cp.getId());
  131. qb.setRecordDate(DateUtils.truncate(recordDate));
  132. qb.setForeignKeyId(cp.getId() + "0");
  133. qb.setLocation(Location.rg.getValue());
  134. Initial.initial(qb);
  135. Initial.initial(fd);
  136. Initial.initial(gf);
  137. //计算区域级全部
  138. calCp(qb, qbls);
  139. //计算公司级风电场站
  140. calCp(fd, fdls);
  141. //计算公司级光电场站
  142. calCp(gf, gfls);
  143. proEconPowerstationInfoDay1Service.save(qb);
  144. proEconPowerstationInfoDay1Service.save(fd);
  145. proEconPowerstationInfoDay1Service.save(gf);
  146. }
  147. // }else
  148. // {
  149. // logger.debug("公司所属场站数量与保存的场站日信息数量不一致,未进行{0}统计-------结束", entry.getKey());
  150. //
  151. // }
  152. }
  153. }
  154. }
  155. /**
  156. * 计算公司日信息
  157. */
  158. public void calCompanyInfoDay(Date recordDate) {
  159. Calendar c = Calendar.getInstance();
  160. c.setTime(recordDate);
  161. if (c.get(Calendar.HOUR_OF_DAY) == 0 && c.get(Calendar.MINUTE) == 0) {
  162. c.add(Calendar.DAY_OF_MONTH, -1);
  163. }
  164. recordDate = DateUtils.truncate(c.getTime());
  165. QueryWrapper<ProEconPowerstationInfoDay1> queryWrapper = new QueryWrapper<>();
  166. queryWrapper.eq("record_date", DateUtils.truncate(recordDate)).eq("location", Location.wp.getValue());
  167. List<ProEconPowerstationInfoDay1> wpinfodayls = proEconPowerstationInfoDay1Service.list(queryWrapper);
  168. // .stream()
  169. // .filter(i -> i.getRecordDate().compareTo(DateUtils.truncate(recordDate)) == 0
  170. // && i.getLocation().equals(Location.wp.getValue()))
  171. // .collect(Collectors.toList());
  172. if (!wpinfodayls.isEmpty()) {
  173. Map<String, Map<String, List<ProEconPowerstationInfoDay1>>> cpmap = new HashMap<>();
  174. for (ProEconPowerstationInfoDay1 wpinfo : wpinfodayls) {
  175. if (cpmap.containsKey(wpinfo.getCompanyId())) {
  176. Map<String, List<ProEconPowerstationInfoDay1>> map = cpmap.get(wpinfo.getCompanyId());
  177. List<ProEconPowerstationInfoDay1> qbls = map.get(CompanyType.qb.id);
  178. List<ProEconPowerstationInfoDay1> fdls = map.get(CompanyType.fd.id);
  179. List<ProEconPowerstationInfoDay1> gfls = map.get(CompanyType.gf.id);
  180. if (wpinfo.getWindpowerstationId().contains(WpType.FDC.id)) {
  181. fdls.add(wpinfo);
  182. } else {
  183. gfls.add(wpinfo);
  184. }
  185. qbls.add(wpinfo);
  186. } else {
  187. Map<String, List<ProEconPowerstationInfoDay1>> map = new HashMap<>();
  188. List<ProEconPowerstationInfoDay1> qbls = new ArrayList<>();
  189. List<ProEconPowerstationInfoDay1> gfls = new ArrayList<>();
  190. List<ProEconPowerstationInfoDay1> fdls = new ArrayList<>();
  191. if (wpinfo.getWindpowerstationId().contains(WpType.FDC.id)) {
  192. fdls.add(wpinfo);
  193. } else {
  194. gfls.add(wpinfo);
  195. }
  196. qbls.add(wpinfo);
  197. map.put(CompanyType.qb.id, qbls);
  198. map.put(CompanyType.fd.id, fdls);
  199. map.put(CompanyType.gf.id, gfls);
  200. cpmap.put(wpinfo.getCompanyId(), map);
  201. }
  202. }
  203. //判断是否有重复记录,先删除重复记录
  204. QueryWrapper<ProEconPowerstationInfoDay1> queryWrapper2 = new QueryWrapper<>();
  205. queryWrapper2.eq("record_date", DateUtils.truncate(recordDate)).eq("location", Location.cp.getValue());
  206. List<String> idls = proEconPowerstationInfoDay1Service.list(queryWrapper2).stream()
  207. // .filter(i -> i.getRecordDate().compareTo(DateUtils.truncate(recordDate)) == 0
  208. // && i.getLocation().equals(Location.cp.getValue()))
  209. .map(ProEconPowerstationInfoDay1::getId)
  210. .collect(Collectors.toList());
  211. if (idls.size() > 0) {
  212. proEconPowerstationInfoDay1Service.removeByIds(idls);
  213. }
  214. for (Map.Entry<String, Map<String, List<ProEconPowerstationInfoDay1>>> entry : cpmap.entrySet()) {
  215. Map<String, List<ProEconPowerstationInfoDay1>> map = entry.getValue();
  216. List<ProEconPowerstationInfoDay1> qbls = map.get(CompanyType.qb.id);
  217. List<ProEconPowerstationInfoDay1> fdls = map.get(CompanyType.fd.id);
  218. List<ProEconPowerstationInfoDay1> gfls = map.get(CompanyType.gf.id);
  219. // if(CacheContext.cpwpmap.size()==qbls.size())
  220. // {
  221. ProEconPowerstationInfoDay1 qb = new ProEconPowerstationInfoDay1();
  222. ProEconPowerstationInfoDay1 fd = new ProEconPowerstationInfoDay1();
  223. ProEconPowerstationInfoDay1 gf = new ProEconPowerstationInfoDay1();
  224. if (CacheContext.cpmap.containsKey(entry.getKey())) {
  225. ProBasicCompany cp = CacheContext.cpmap.get(entry.getKey());
  226. gf.setRegionId(cp.getRegionId());
  227. gf.setCompanyId(cp.getId());
  228. gf.setRecordDate(DateUtils.truncate(recordDate));
  229. gf.setForeignKeyId(cp.getId() + "-2");
  230. gf.setLocation(Location.cp.getValue());
  231. fd.setRegionId(cp.getRegionId());
  232. fd.setCompanyId(cp.getId());
  233. fd.setRecordDate(DateUtils.truncate(recordDate));
  234. fd.setForeignKeyId(cp.getId() + "-1");
  235. fd.setLocation(Location.cp.getValue());
  236. qb.setRegionId(cp.getRegionId());
  237. qb.setCompanyId(cp.getId());
  238. qb.setRecordDate(DateUtils.truncate(recordDate));
  239. qb.setForeignKeyId(cp.getId() + "0");
  240. qb.setLocation(Location.cp.getValue());
  241. Initial.initial(qb);
  242. Initial.initial(fd);
  243. Initial.initial(gf);
  244. //计算公司级全部场站
  245. calCp(qb, qbls);
  246. //计算公司级风电场站
  247. calCp(fd, fdls);
  248. //计算公司级光电场站
  249. calCp(gf, gfls);
  250. proEconPowerstationInfoDay1Service.save(qb);
  251. proEconPowerstationInfoDay1Service.save(fd);
  252. proEconPowerstationInfoDay1Service.save(gf);
  253. }
  254. // }else
  255. // {
  256. // logger.debug("公司所属场站数量与保存的场站日信息数量不一致,未进行{0}统计-------结束", entry.getKey());
  257. //
  258. // }
  259. }
  260. }
  261. }
  262. private void calCp(ProEconPowerstationInfoDay1 pewp, List<ProEconPowerstationInfoDay1> ls) {
  263. if (!ls.isEmpty()) {
  264. // DoubleSummaryStatistics summaryStatistics=ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRzdfs).summaryStatistics();
  265. // //日最大风速
  266. // pewp.setRzdfs(summaryStatistics.getMax());
  267. // //日最小风速
  268. // summaryStatistics=ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRzxfs).summaryStatistics();
  269. // pewp.setRzxfs(summaryStatistics.getMin());
  270. // //日平均风速
  271. // summaryStatistics=ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRpjfs).summaryStatistics();
  272. // pewp.setRpjfs(summaryStatistics.getAverage());
  273. //
  274. // summaryStatistics=ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRzdgl).summaryStatistics();
  275. // //日最大功率
  276. // pewp.setRzdgl(summaryStatistics.getMax());
  277. // //日最小功率
  278. // summaryStatistics=ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRzxgl).summaryStatistics();
  279. // pewp.setRzxgl(summaryStatistics.getMin());
  280. // //日平均功率
  281. // summaryStatistics=ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRpjgl).summaryStatistics();
  282. // pewp.setRpjgl(summaryStatistics.getAverage());
  283. //日发电量
  284. DoubleSummaryStatistics summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRfdl).summaryStatistics();
  285. pewp.setRfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  286. //日可用电量
  287. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRkydl).summaryStatistics();
  288. pewp.setRkydl(StringUtils.round(summaryStatistics.getSum(), 2));
  289. //日理论发电量
  290. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRllfdl).summaryStatistics();
  291. pewp.setRllfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  292. //日故障损失电量
  293. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRgzssdl).summaryStatistics();
  294. pewp.setRgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  295. //日场内受累故障损失电量
  296. pewp.setRcnslgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  297. //日检修损失电量
  298. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRjxssdl).summaryStatistics();
  299. pewp.setRjxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  300. //日场内受累检修损失电量
  301. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRcnsljxssdl).summaryStatistics();
  302. pewp.setRcnsljxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  303. //日待机损失电量
  304. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRdjssdl).summaryStatistics();
  305. pewp.setRdjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  306. //日缺陷降出力损失电量
  307. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRqxjclssdl).summaryStatistics();
  308. pewp.setRqxjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  309. //日手动停机损失电量
  310. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRsdtjssdl).summaryStatistics();
  311. pewp.setRsdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  312. //日性能损失电量
  313. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRxnssdl).summaryStatistics();
  314. pewp.setRxnssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  315. //日限电停机损失电量
  316. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRxdtjssdl).summaryStatistics();
  317. pewp.setRxdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  318. //日限电降出力损失电量
  319. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRxdjclssdl).summaryStatistics();
  320. pewp.setRxdjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  321. //日场外受累电网损失电量
  322. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRcwsldwssdl).summaryStatistics();
  323. pewp.setRcwsldwssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  324. //日场外受累天气损失电量
  325. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRcwsltqssdl).summaryStatistics();
  326. pewp.setRcwsltqssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  327. //日增发电量
  328. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRzfdl).summaryStatistics();
  329. pewp.setRzfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  330. //日欠发电量
  331. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRqfdl).summaryStatistics();
  332. pewp.setRqfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  333. //日自耗电
  334. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getRzhd).summaryStatistics();
  335. pewp.setRzhd(StringUtils.round(summaryStatistics.getSum(), 2));
  336. //月发电量
  337. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYfdl).summaryStatistics();
  338. pewp.setYfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  339. //月可用电量
  340. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYkydl).summaryStatistics();
  341. pewp.setYkydl(StringUtils.round(summaryStatistics.getSum(), 2));
  342. //月理论发电量
  343. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYllfdl).summaryStatistics();
  344. pewp.setYllfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  345. //月故障损失电量
  346. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYgzssdl).summaryStatistics();
  347. pewp.setYgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  348. //月场内受累故障损失电量
  349. pewp.setYcnslgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  350. //月检修损失电量
  351. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYjxssdl).summaryStatistics();
  352. pewp.setYjxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  353. //月场内受累检修损失电量
  354. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYcnsljxssdl).summaryStatistics();
  355. pewp.setYcnsljxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  356. //月待机损失电量
  357. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYdjssdl).summaryStatistics();
  358. pewp.setYdjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  359. //月缺陷降出力损失电量
  360. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYqxjclssdl).summaryStatistics();
  361. pewp.setYqxjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  362. //月手动停机损失电量
  363. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYsdtjssdl).summaryStatistics();
  364. pewp.setYsdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  365. //月性能损失电量
  366. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYxnssdl).summaryStatistics();
  367. pewp.setYxnssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  368. //月限电停机损失电量
  369. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYxdtjssdl).summaryStatistics();
  370. pewp.setYxdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  371. //月限电降出力损失电量
  372. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYxdjclssdl).summaryStatistics();
  373. pewp.setYxdjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  374. //月场外受累电网损失电量
  375. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYcwsldwssdl).summaryStatistics();
  376. pewp.setYcwsldwssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  377. //月场外受累天气损失电量
  378. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYcwsltqssdl).summaryStatistics();
  379. pewp.setYcwsltqssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  380. //月增发电量
  381. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYzfdl).summaryStatistics();
  382. pewp.setYzfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  383. //月欠发电量
  384. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYqfdl).summaryStatistics();
  385. pewp.setYqfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  386. //月自耗电
  387. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getYzhd).summaryStatistics();
  388. pewp.setYzhd(StringUtils.round(summaryStatistics.getSum(), 2));
  389. //年发电量
  390. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNfdl).summaryStatistics();
  391. pewp.setNfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  392. //年可用电量
  393. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNkydl).summaryStatistics();
  394. pewp.setNkydl(StringUtils.round(summaryStatistics.getSum(), 2));
  395. //年理论发电量
  396. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNllfdl).summaryStatistics();
  397. pewp.setNllfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  398. //年故障损失电量
  399. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNgzssdl).summaryStatistics();
  400. pewp.setNgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  401. //年场内受累故障损失电量
  402. pewp.setNcnslgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  403. //年检修损失电量
  404. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNjxssdl).summaryStatistics();
  405. pewp.setNjxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  406. //年场内受累检修损失电量
  407. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNcnsljxssdl).summaryStatistics();
  408. pewp.setNcnsljxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  409. //年待机损失电量
  410. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNdjssdl).summaryStatistics();
  411. pewp.setNdjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  412. //年缺陷降出力损失电量
  413. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNqxjclssdl).summaryStatistics();
  414. pewp.setNqxjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  415. //年手动停机损失电量
  416. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNsdtjssdl).summaryStatistics();
  417. pewp.setNsdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  418. //年性能损失电量
  419. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNxnssdl).summaryStatistics();
  420. pewp.setNxnssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  421. //年限电停机损失电量
  422. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNxdtjssdl).summaryStatistics();
  423. pewp.setNxdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  424. //年限电降出力损失电量
  425. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNxdjclssdl).summaryStatistics();
  426. pewp.setNxdjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  427. //年场外受累电网损失电量
  428. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNcwsldwssdl).summaryStatistics();
  429. pewp.setNcwsldwssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  430. //年场外受累天气损失电量
  431. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNcwsltqssdl).summaryStatistics();
  432. pewp.setNcwsltqssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  433. //年增发电量
  434. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNzfdl).summaryStatistics();
  435. pewp.setNzfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  436. //年欠发电量
  437. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNqfdl).summaryStatistics();
  438. pewp.setNqfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  439. //年自耗电
  440. summaryStatistics = ls.stream().mapToDouble(ProEconPowerstationInfoDay1::getNzhd).summaryStatistics();
  441. pewp.setNzhd(StringUtils.round(summaryStatistics.getSum(), 2));
  442. }
  443. }
  444. /**
  445. * 计算场站日信息
  446. */
  447. public void calWindpowerInfoDay(Date recordDate) throws Exception {
  448. Calendar c = Calendar.getInstance();
  449. c.setTime(recordDate);
  450. if (c.get(Calendar.HOUR_OF_DAY) == 0 && c.get(Calendar.MINUTE) == 0) {
  451. c.add(Calendar.DAY_OF_MONTH, -1);
  452. }
  453. recordDate = DateUtils.truncate(c.getTime());
  454. Map<String, List<ProEconEquipmentInfoDay1>> pep1map = new HashMap<>();
  455. QueryWrapper<ProEconEquipmentInfoDay1> queryWrapper2 = new QueryWrapper<>();
  456. queryWrapper2.eq("record_date", DateUtils.truncate(recordDate));
  457. List<ProEconEquipmentInfoDay1> pep1ls = proEconEquipmentInfoDay1Service.list(queryWrapper2);
  458. if (!pep1ls.isEmpty()) {
  459. for (ProEconEquipmentInfoDay1 pep : pep1ls) {
  460. if (pep1map.containsKey(pep.getWindpowerstationId())) {
  461. List<ProEconEquipmentInfoDay1> pepls = pep1map.get(pep.getWindpowerstationId());
  462. pepls.add(pep);
  463. } else {
  464. List<ProEconEquipmentInfoDay1> pepls = new ArrayList<>();
  465. pepls.add(pep);
  466. pep1map.put(pep.getWindpowerstationId(), pepls);
  467. }
  468. }
  469. }
  470. List<String> wpls = new ArrayList<>();
  471. List<ProEconPowerstationInfoDay1> dayls = new ArrayList<>();
  472. for (ProBasicPowerstation wp : CacheContext.wpls) {
  473. if (CacheContext.wppointmap.containsKey(wp.getId())) {
  474. Map<String, ProBasicPowerstationPoint> pointmap = CacheContext.wppointmap.get(wp.getId());
  475. ProEconPowerstationInfoDay1 pewp = new ProEconPowerstationInfoDay1();
  476. Initial.initial(pewp);
  477. pewp.setRegionId(wp.getRegionId());
  478. pewp.setCompanyId(wp.getCompanyId());
  479. pewp.setRecordDate(DateUtils.truncate(recordDate));
  480. pewp.setForeignKeyId(wp.getId());
  481. pewp.setWindpowerstationId(wp.getId());
  482. pewp.setLocation(Location.wp.getValue());
  483. String type = null;
  484. if (wp.getId().contains("FDC")) {
  485. type = "FDC";
  486. } else {
  487. type = "GDC";
  488. }
  489. extracted(wp.getId(), type, pewp, pep1map);
  490. //*******************************************年信息统计*********************************************************/
  491. dayls.add(pewp);
  492. // proEconPowerstationInfoDay1Service.save(pewp);
  493. wpls.add(wp.getId());
  494. }
  495. }
  496. //判断是否有重复记录,先删除重复记录
  497. QueryWrapper<ProEconPowerstationInfoDay1> queryWrapper = new QueryWrapper<>();
  498. queryWrapper.eq("record_date", DateUtils.truncate(recordDate))
  499. .in("windpowerstation_id", wpls)
  500. .eq("location", Location.wp.getValue());
  501. List<String> idls = proEconPowerstationInfoDay1Service.list(queryWrapper).stream()
  502. // .filter(i -> i.getRecordDate().compareTo(DateUtils.truncate(recordDate)) == 0
  503. // && CacheContext.wpmap.containsKey(i.getWindpowerstationId())
  504. // && i.getLocation().equals(Location.wp.getValue()))
  505. .map(ProEconPowerstationInfoDay1::getId)
  506. .collect(Collectors.toList());
  507. if (idls.size() > 0) {
  508. proEconPowerstationInfoDay1Service.removeByIds(idls);
  509. }
  510. List<ProEconPowerstationInfoDay1> templs = new ArrayList<>();
  511. for (ProEconPowerstationInfoDay1 vo : dayls) {
  512. templs.add(vo);
  513. if (templs.size() == 1000) {
  514. proEconPowerstationInfoDay1Service.saveBatch(templs);
  515. templs = new ArrayList<>();
  516. }
  517. }
  518. if (!templs.isEmpty()) {
  519. proEconPowerstationInfoDay1Service.saveBatch(templs);
  520. }
  521. // proEconPowerstationInfoDay1Service.saveBatch(dayls);
  522. }
  523. /**
  524. * 计算项目日信息
  525. */
  526. public void calProjectInfoDay(Date recordDate) throws Exception {
  527. Calendar c = Calendar.getInstance();
  528. c.setTime(recordDate);
  529. if (c.get(Calendar.HOUR_OF_DAY) == 0 && c.get(Calendar.MINUTE) == 0) {
  530. c.add(Calendar.DAY_OF_MONTH, -1);
  531. }
  532. recordDate = DateUtils.truncate(c.getTime());
  533. Map<String, List<ProEconEquipmentInfoDay1>> pep1map = new HashMap<>();
  534. QueryWrapper<ProEconEquipmentInfoDay1> queryWrapper2 = new QueryWrapper<>();
  535. queryWrapper2.eq("record_date", DateUtils.truncate(recordDate));
  536. List<ProEconEquipmentInfoDay1> pep1ls = proEconEquipmentInfoDay1Service.list(queryWrapper2);
  537. if (!pep1ls.isEmpty()) {
  538. for (ProEconEquipmentInfoDay1 pep : pep1ls) {
  539. if (pep1map.containsKey(pep.getProjectId())) {
  540. List<ProEconEquipmentInfoDay1> pepls = pep1map.get(pep.getProjectId());
  541. pepls.add(pep);
  542. } else {
  543. List<ProEconEquipmentInfoDay1> pepls = new ArrayList<>();
  544. pepls.add(pep);
  545. pep1map.put(pep.getProjectId(), pepls);
  546. }
  547. }
  548. }
  549. List<String> pjls = new ArrayList<>();
  550. List<ProEconPowerstationInfoDay1> dayls = new ArrayList<>();
  551. for (ProBasicProject pj : CacheContext.pjls) {
  552. if (CacheContext.propointmap.containsKey(pj.getId())) {
  553. Map<String, ProBasicPowerstationPoint> pointmap = CacheContext.propointmap.get(pj.getId());
  554. String type = null;
  555. ProEconPowerstationInfoDay1 pewp = new ProEconPowerstationInfoDay1();
  556. Initial.initial(pewp);
  557. if (CacheContext.wpmap.containsKey(pj.getWindpowerstationId())) {
  558. ProBasicPowerstation wp = CacheContext.wpmap.get(pj.getWindpowerstationId());
  559. pewp.setRegionId(wp.getRegionId());
  560. pewp.setCompanyId(wp.getCompanyId());
  561. if (wp.getId().contains("FDC")) {
  562. type = "FDC";
  563. } else {
  564. type = "GDC";
  565. }
  566. }
  567. pewp.setForeignKeyId(pj.getId());
  568. pewp.setWindpowerstationId(pj.getWindpowerstationId());
  569. pewp.setProjectId(pj.getId());
  570. pewp.setLocation(Location.pj.getValue());
  571. pewp.setRecordDate(DateUtils.truncate(recordDate));
  572. extracted(pj.getId(), type, pewp, pep1map);
  573. dayls.add(pewp);
  574. // proEconPowerstationInfoDay1Service.save(pewp);
  575. pjls.add(pj.getWindpowerstationId());
  576. }
  577. }
  578. //判断是否有重复记录,先删除重复记录
  579. QueryWrapper<ProEconPowerstationInfoDay1> queryWrapper = new QueryWrapper<>();
  580. queryWrapper.eq("record_date", DateUtils.truncate(recordDate))
  581. .in("windpowerstation_id", pjls)
  582. .eq("location", Location.pj.getValue());
  583. List<String> idls = proEconPowerstationInfoDay1Service.list(queryWrapper).stream()
  584. // .filter(i -> i.getRecordDate().compareTo(DateUtils.truncate(recordDate)) == 0
  585. // && CacheContext.pjmap.containsKey(i.getProjectId())
  586. // && i.getLocation().equals(Location.pj.getValue()))
  587. .map(ProEconPowerstationInfoDay1::getId)
  588. .collect(Collectors.toList());
  589. if (idls.size() > 0) {
  590. proEconPowerstationInfoDay1Service.removeByIds(idls);
  591. }
  592. List<ProEconPowerstationInfoDay1> templs = new ArrayList<>();
  593. for (ProEconPowerstationInfoDay1 vo : dayls) {
  594. templs.add(vo);
  595. if (templs.size() == 1000) {
  596. proEconPowerstationInfoDay1Service.saveBatch(templs);
  597. templs = new ArrayList<>();
  598. }
  599. }
  600. if (!templs.isEmpty()) {
  601. proEconPowerstationInfoDay1Service.saveBatch(templs);
  602. }
  603. // proEconPowerstationInfoDay1Service.saveBatch(dayls);
  604. }
  605. /**
  606. * 计算线路日信息
  607. */
  608. public void calLineInfoDay(Date recordDate) throws Exception {
  609. Calendar c = Calendar.getInstance();
  610. c.setTime(recordDate);
  611. if (c.get(Calendar.HOUR_OF_DAY) == 0 && c.get(Calendar.MINUTE) == 0) {
  612. c.add(Calendar.DAY_OF_MONTH, -1);
  613. }
  614. recordDate = DateUtils.truncate(c.getTime());
  615. Map<String, List<ProEconEquipmentInfoDay1>> pep1map = new HashMap<>();
  616. QueryWrapper<ProEconEquipmentInfoDay1> queryWrapper2 = new QueryWrapper<>();
  617. queryWrapper2.eq("record_date", DateUtils.truncate(recordDate));
  618. List<ProEconEquipmentInfoDay1> pep1ls = proEconEquipmentInfoDay1Service.list(queryWrapper2);
  619. if (!pep1ls.isEmpty()) {
  620. for (ProEconEquipmentInfoDay1 pep : pep1ls) {
  621. if (pep1map.containsKey(pep.getLineId())) {
  622. List<ProEconEquipmentInfoDay1> pepls = pep1map.get(pep.getLineId());
  623. pepls.add(pep);
  624. } else {
  625. List<ProEconEquipmentInfoDay1> pepls = new ArrayList<>();
  626. pepls.add(pep);
  627. pep1map.put(pep.getLineId(), pepls);
  628. }
  629. }
  630. }
  631. List<String> lnls = new ArrayList<>();
  632. List<ProEconPowerstationInfoDay1> dayls = new ArrayList<>();
  633. for (ProBasicLine ln : CacheContext.lnls) {
  634. if (CacheContext.linepointmap.containsKey(ln.getId())) {
  635. Map<String, ProBasicPowerstationPoint> pointmap = CacheContext.linepointmap.get(ln.getId());
  636. String type = null;
  637. ProEconPowerstationInfoDay1 pewp = new ProEconPowerstationInfoDay1();
  638. if (CacheContext.pjmap.containsKey(ln.getProjectId())) {
  639. ProBasicProject pj = CacheContext.pjmap.get(ln.getProjectId());
  640. if (CacheContext.wpmap.containsKey(pj.getWindpowerstationId())) {
  641. ProBasicPowerstation wp = CacheContext.wpmap.get(pj.getWindpowerstationId());
  642. pewp.setRegionId(wp.getRegionId());
  643. pewp.setCompanyId(wp.getCompanyId());
  644. pewp.setWindpowerstationId(wp.getId());
  645. if (wp.getId().contains("FDC")) {
  646. type = "FDC";
  647. } else {
  648. type = "GDC";
  649. }
  650. }
  651. }
  652. Initial.initial(pewp);
  653. pewp.setForeignKeyId(ln.getId());
  654. pewp.setLineId(ln.getId());
  655. pewp.setLocation(Location.ln.getValue());
  656. pewp.setProjectId(ln.getProjectId());
  657. pewp.setRecordDate(DateUtils.truncate(recordDate));
  658. extracted(ln.getId(), type, pewp, pep1map);
  659. dayls.add(pewp);
  660. // proEconPowerstationInfoDay1Service.save(pewp);
  661. if (CacheContext.pjmap.containsKey(ln.getProjectId())) {
  662. lnls.add(CacheContext.pjmap.get(ln.getProjectId()).getWindpowerstationId());
  663. }
  664. }
  665. }
  666. //判断是否有重复记录,先删除重复记录
  667. QueryWrapper<ProEconPowerstationInfoDay1> queryWrapper = new QueryWrapper<>();
  668. queryWrapper.eq("record_date", DateUtils.truncate(recordDate))
  669. .in("windpowerstation_id", lnls)
  670. .eq("location", Location.ln.getValue());
  671. List<String> idls = proEconPowerstationInfoDay1Service.list(queryWrapper).stream()
  672. // .filter(i -> i.getRecordDate().compareTo(DateUtils.truncate(recordDate)) == 0
  673. // && CacheContext.lnmap.containsKey(i.getLineId())
  674. // && i.getLocation().equals(Location.ln.getValue()))
  675. .map(ProEconPowerstationInfoDay1::getId)
  676. .collect(Collectors.toList());
  677. if (idls.size() > 0) {
  678. proEconPowerstationInfoDay1Service.removeByIds(idls);
  679. }
  680. List<ProEconPowerstationInfoDay1> templs = new ArrayList<>();
  681. for (ProEconPowerstationInfoDay1 vo : dayls) {
  682. templs.add(vo);
  683. if (templs.size() == 1000) {
  684. proEconPowerstationInfoDay1Service.saveBatch(templs);
  685. templs = new ArrayList<>();
  686. }
  687. }
  688. if (!templs.isEmpty()) {
  689. proEconPowerstationInfoDay1Service.saveBatch(templs);
  690. }
  691. // proEconPowerstationInfoDay1Service.saveBatch(dayls);
  692. }
  693. private void extracted(String id, String type, ProEconPowerstationInfoDay1 pewp, Map<String, List<ProEconEquipmentInfoDay1>> pep1map) throws Exception {
  694. //*******************************************日信息统计*********************************************************/
  695. if (pep1map.containsKey(id) && type != null) {
  696. List<ProEconEquipmentInfoDay1> pep1ls = pep1map.get(id);
  697. if (!pep1ls.isEmpty()) {
  698. DoubleSummaryStatistics summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRzdfs).summaryStatistics();
  699. //日最大风速
  700. pewp.setRzdfs(summaryStatistics.getMax());
  701. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRzxfs).summaryStatistics();
  702. //日最小风速
  703. pewp.setRzxfs(summaryStatistics.getMin());
  704. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRpjfs).summaryStatistics();
  705. //日平均风速
  706. if (type.equals("FDC")) {
  707. pewp.setRpjfs(summaryStatistics.getAverage());
  708. } else {
  709. pewp.setRpjfs(pep1ls.get(0).getRpjfs());
  710. }
  711. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRzdgl).summaryStatistics();
  712. //日最大功率
  713. pewp.setRzdgl(summaryStatistics.getMax());
  714. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRzxgl).summaryStatistics();
  715. //日最小功率
  716. pewp.setRzxgl(summaryStatistics.getMin());
  717. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRpjgl).summaryStatistics();
  718. //日平均功率
  719. pewp.setRpjgl(summaryStatistics.getAverage());
  720. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRfdl).summaryStatistics();
  721. //日发电量
  722. pewp.setRfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  723. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRkydl).summaryStatistics();
  724. //日可用电量
  725. pewp.setRkydl(StringUtils.round(summaryStatistics.getSum(), 2));
  726. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRllfdl).summaryStatistics();
  727. //日理论发电量
  728. pewp.setRllfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  729. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRgzssdl).summaryStatistics();
  730. //日故障损失电量
  731. pewp.setRgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  732. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRcnslgzssdl).summaryStatistics();
  733. //日场内受累故障损失电量
  734. pewp.setRcnslgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  735. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRjxssdl).summaryStatistics();
  736. //日检修损失电量
  737. pewp.setRjxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  738. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRcnsljxssdl).summaryStatistics();
  739. //日场内受累检修损失电量
  740. pewp.setRcnsljxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  741. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRdjssdl).summaryStatistics();
  742. //日待机损失电量
  743. pewp.setRdjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  744. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRqxjclssdl).summaryStatistics();
  745. //日缺陷降出力损失电量
  746. pewp.setRqxjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  747. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRsdtjssdl).summaryStatistics();
  748. //日手动停机损失电量
  749. pewp.setRsdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  750. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRxnssdl).summaryStatistics();
  751. //日性能损失电量
  752. pewp.setRxnssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  753. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRxdtjssdl).summaryStatistics();
  754. //日限电停机损失电量
  755. pewp.setRxdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  756. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRxdjclssdl).summaryStatistics();
  757. //日限电降出力损失电量
  758. pewp.setRxdjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  759. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRcwsldwssdl).summaryStatistics();
  760. //日场外受累电网损失电量
  761. pewp.setRcwsldwssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  762. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRcwsltqssdl).summaryStatistics();
  763. //日场外受累天气损失电量
  764. pewp.setRcwsltqssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  765. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRzfdl).summaryStatistics();
  766. //日增发电量
  767. pewp.setRzfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  768. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRqfdl).summaryStatistics();
  769. //日欠发电量
  770. pewp.setRqfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  771. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getRzhd).summaryStatistics();
  772. //日自耗电
  773. pewp.setRzhd(StringUtils.round(summaryStatistics.getSum(), 2));
  774. }
  775. }
  776. //*******************************************日信息统计*********************************************************/
  777. //*******************************************月信息统计*********************************************************/
  778. if (pep1map.containsKey(id)) {
  779. List<ProEconEquipmentInfoDay1> pep1ls = pep1map.get(id);
  780. if (!pep1ls.isEmpty()) {
  781. DoubleSummaryStatistics summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYzdfs).summaryStatistics();
  782. //月最大风速
  783. pewp.setYzdfs(summaryStatistics.getMax());
  784. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYzxfs).summaryStatistics();
  785. //月最小风速
  786. pewp.setYzxfs(summaryStatistics.getMin());
  787. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYpjfs).summaryStatistics();
  788. //日平均风速
  789. if (type.equals("FDC")) {
  790. //月平均风速
  791. pewp.setYpjfs(summaryStatistics.getAverage());
  792. } else {
  793. //月平均风速
  794. pewp.setYpjfs(pep1ls.get(0).getYpjfs());
  795. }
  796. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYzdgl).summaryStatistics();
  797. //月最大功率
  798. pewp.setYzdgl(summaryStatistics.getMax());
  799. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYzxgl).summaryStatistics();
  800. //月最小功率
  801. pewp.setYzxgl(summaryStatistics.getMin());
  802. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYpjgl).summaryStatistics();
  803. //月平均功率
  804. pewp.setYpjgl(summaryStatistics.getAverage());
  805. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYfdl).summaryStatistics();
  806. //月发电量
  807. pewp.setYfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  808. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYkydl).summaryStatistics();
  809. //月可用电量
  810. pewp.setYkydl(StringUtils.round(summaryStatistics.getSum(), 2));
  811. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYllfdl).summaryStatistics();
  812. //月理论发电量
  813. pewp.setYllfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  814. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYgzssdl).summaryStatistics();
  815. //月故障损失电量
  816. pewp.setYgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  817. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYcnslgzssdl).summaryStatistics();
  818. //月场内受累故障损失电量
  819. pewp.setYcnslgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  820. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYjxssdl).summaryStatistics();
  821. //月检修损失电量
  822. pewp.setYjxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  823. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYcnsljxssdl).summaryStatistics();
  824. //月场内受累检修损失电量
  825. pewp.setYcnsljxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  826. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYdjssdl).summaryStatistics();
  827. //月待机损失电量
  828. pewp.setYdjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  829. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYqxjclssdl).summaryStatistics();
  830. //月缺陷降出力损失电量
  831. pewp.setYqxjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  832. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYsdtjssdl).summaryStatistics();
  833. //月手动停机损失电量
  834. pewp.setYsdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  835. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYxnssdl).summaryStatistics();
  836. //月性能损失电量
  837. pewp.setYxnssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  838. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYxdtjssdl).summaryStatistics();
  839. //月限电停机损失电量
  840. pewp.setYxdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  841. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYxdjclssdl).summaryStatistics();
  842. //月限电降出力损失电量
  843. pewp.setYxdjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  844. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYcwsldwssdl).summaryStatistics();
  845. //月场外受累电网损失电量
  846. pewp.setYcwsldwssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  847. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYcwsltqssdl).summaryStatistics();
  848. //月场外受累天气损失电量
  849. pewp.setYcwsltqssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  850. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYzfdl).summaryStatistics();
  851. //月增发电量
  852. pewp.setYzfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  853. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYqfdl).summaryStatistics();
  854. //月欠发电量
  855. pewp.setYqfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  856. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getYzhd).summaryStatistics();
  857. //月自耗电
  858. pewp.setYzhd(StringUtils.round(summaryStatistics.getSum(), 2));
  859. }
  860. }
  861. ///*******************************************月信息统计*********************************************************/
  862. //*******************************************年信息统计*********************************************************/
  863. if (pep1map.containsKey(id)) {
  864. List<ProEconEquipmentInfoDay1> pep1ls = pep1map.get(id);
  865. if (!pep1ls.isEmpty()) {
  866. DoubleSummaryStatistics summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNzdfs).summaryStatistics();
  867. //年最大风速
  868. pewp.setNzdfs(summaryStatistics.getMax());
  869. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNzxfs).summaryStatistics();
  870. //年最小风速
  871. pewp.setNzxfs(summaryStatistics.getMin());
  872. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNpjfs).summaryStatistics();
  873. if (type.equals("FDC")) {
  874. //年平均风速
  875. pewp.setNpjfs(summaryStatistics.getAverage());
  876. } else {
  877. //年平均风速
  878. pewp.setNpjfs(pep1ls.get(0).getNpjfs());
  879. // pewp.setNpjfs(summaryStatistics.getSum());
  880. }
  881. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNzdgl).summaryStatistics();
  882. //年最大功率
  883. pewp.setNzdgl(summaryStatistics.getMax());
  884. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNzxgl).summaryStatistics();
  885. //年最小功率
  886. pewp.setNzxgl(summaryStatistics.getMin());
  887. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNpjgl).summaryStatistics();
  888. //年平均功率
  889. pewp.setNpjgl(summaryStatistics.getAverage());
  890. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNfdl).summaryStatistics();
  891. //年发电量
  892. pewp.setNfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  893. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNkydl).summaryStatistics();
  894. //年可用电量
  895. pewp.setNkydl(StringUtils.round(summaryStatistics.getSum(), 2));
  896. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNllfdl).summaryStatistics();
  897. //年理论发电量
  898. pewp.setNllfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  899. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNgzssdl).summaryStatistics();
  900. //年故障损失电量
  901. pewp.setNgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  902. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNcnslgzssdl).summaryStatistics();
  903. //年场内受累故障损失电量
  904. pewp.setNcnslgzssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  905. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNjxssdl).summaryStatistics();
  906. //年检修损失电量
  907. pewp.setNjxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  908. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNcnsljxssdl).summaryStatistics();
  909. //年场内受累检修损失电量
  910. pewp.setNcnsljxssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  911. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNdjssdl).summaryStatistics();
  912. //年待机损失电量
  913. pewp.setNdjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  914. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNqxjclssdl).summaryStatistics();
  915. //年缺陷降出力损失电量
  916. pewp.setNqxjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  917. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNsdtjssdl).summaryStatistics();
  918. //年手动停机损失电量
  919. pewp.setNsdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  920. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNxnssdl).summaryStatistics();
  921. //年性能损失电量
  922. pewp.setNxnssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  923. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNxdtjssdl).summaryStatistics();
  924. //年限电停机损失电量
  925. pewp.setNxdtjssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  926. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNxdjclssdl).summaryStatistics();
  927. //年限电降出力损失电量
  928. pewp.setNxdjclssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  929. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNcwsldwssdl).summaryStatistics();
  930. //年场外受累电网损失电量
  931. pewp.setNcwsldwssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  932. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNcwsltqssdl).summaryStatistics();
  933. //年场外受累天气损失电量
  934. pewp.setNcwsltqssdl(StringUtils.round(summaryStatistics.getSum(), 2));
  935. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNzfdl).summaryStatistics();
  936. //年增发电量
  937. pewp.setNzfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  938. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNqfdl).summaryStatistics();
  939. //年欠发电量
  940. pewp.setNqfdl(StringUtils.round(summaryStatistics.getSum(), 2));
  941. summaryStatistics = pep1ls.stream().mapToDouble(ProEconEquipmentInfoDay1::getNzhd).summaryStatistics();
  942. //年自耗电
  943. pewp.setNzhd(StringUtils.round(summaryStatistics.getSum(), 2));
  944. }
  945. }
  946. }
  947. private void setPowerandSpeedYear(ProEconPowerstationInfoDay1 pewp) {
  948. //年最大风速
  949. pewp.setNzdfs(pewp.getRzdfs());
  950. //年最小风速
  951. pewp.setNzxfs(pewp.getRzxfs());
  952. //年平均风速
  953. pewp.setNpjfs(pewp.getRpjfs());
  954. //年最大功率
  955. pewp.setNzdgl(pewp.getRzdgl());
  956. //年最小功率
  957. pewp.setNzxgl(pewp.getRzxgl());
  958. //年平均功率
  959. pewp.setNpjgl(pewp.getRpjgl());
  960. }
  961. private void setPowerandSpeedMonth(ProEconPowerstationInfoDay1 pewp) {
  962. //月最大风速
  963. pewp.setYzdfs(pewp.getRzdfs());
  964. //月最小风速
  965. pewp.setYzxfs(pewp.getRzxfs());
  966. //月平均风速
  967. pewp.setYpjfs(pewp.getRpjfs());
  968. //月最大功率
  969. pewp.setYzdgl(pewp.getRzdgl());
  970. //月最小功率
  971. pewp.setYzxgl(pewp.getRzxgl());
  972. //月平均功率
  973. pewp.setYpjgl(pewp.getRpjgl());
  974. }
  975. public void writegf(Date date) throws Exception {
  976. LocalDate localDate = LocalDateTime.now().toLocalDate();
  977. String[] split = gf.split(",");
  978. List<String> str = new ArrayList<>(Arrays.asList(split));
  979. List<PointData> realData = edosUtil.getRealData(str);
  980. QueryWrapper<ProEconAnalysisSubtableBottom> qw = new QueryWrapper<>();
  981. qw.lambda().eq(ProEconAnalysisSubtableBottom::getRecordDate, localDate);
  982. List<ProEconAnalysisSubtableBottom> sel = iProEconAnalysisSubtableBottomService.sel(qw);
  983. List<ProEconAnalysisSubtableBottom> ls = null;
  984. if (null == sel || sel.isEmpty()) {
  985. ls = new ArrayList<>();
  986. for (PointData real : realData) {
  987. ProEconAnalysisSubtableBottom pb = new ProEconAnalysisSubtableBottom();
  988. pb.setRecordDate(new Date(real.getPointTime()));
  989. String[] split1 = real.getPointName().split("\\.");
  990. if ("曙光储能电站".equals(split1[2]) || "宁东33光伏场站".equals(split1[2])) {
  991. pb.setWpid("GJNY_NXGS_SGB_GDC_STA");
  992. } else if ("霞光储能电站".equals(split1[2]) || "宁东32光伏场站".equals(split1[2])) {
  993. pb.setWpid("GJNY_NXGS_XGB_GDC_STA");
  994. } else if ("电度表".equals(split1[3]) ) {
  995. pb.setWpid("NX_FGS_HA_FDC_STA");
  996. }else {
  997. pb.setWpid("GJNY_NXGS_QZB_GDC_STA");
  998. }
  999. pb.setMeterId(real.getPointName());
  1000. pb.setMeterName(real.getPointName());
  1001. pb.setStopCode(real.getPointValueInDouble());
  1002. pb.setStopCodeModify(real.getPointValueInDouble());
  1003. ls.add(pb);
  1004. }
  1005. } else {
  1006. ls = new ArrayList<>();
  1007. for (PointData real : realData) {
  1008. for (ProEconAnalysisSubtableBottom s : sel) {
  1009. if (real.getPointName().equals(s.getMeterId())) {
  1010. ProEconAnalysisSubtableBottom pb = new ProEconAnalysisSubtableBottom();
  1011. pb.setId(s.getId());
  1012. pb.setStopCode(real.getPointValueInDouble());
  1013. pb.setStopCodeModify(real.getPointValueInDouble());
  1014. pb.setRecordDate(new Date(real.getPointTime()));
  1015. pb.setMeterName(real.getPointName());
  1016. pb.setMeterId(real.getPointName());
  1017. ls.add(pb);
  1018. }
  1019. }
  1020. }
  1021. }
  1022. boolean b = iProEconAnalysisSubtableBottomService.batchAdd(ls);
  1023. }
  1024. }