GenerateBackPassDataService.java 74 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316
  1. package com.jiayue.ipfcst.client.service;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.http.HttpRequest;
  4. import cn.hutool.http.HttpResponse;
  5. import cn.hutool.json.JSONArray;
  6. import cn.hutool.json.JSONObject;
  7. import com.fasterxml.jackson.core.JsonProcessingException;
  8. import com.fasterxml.jackson.databind.ObjectMapper;
  9. import com.jiayue.ipfcst.client.service.impl.JiaYueWindPowerDqResultFD0002CoverServiceImpl;
  10. import com.jiayue.ipfcst.client.utils.GzipUtil;
  11. import com.jiayue.ipfcst.client.utils.JsonBeanUtil;
  12. import com.jiayue.ipfcst.client.utils.TimeUtils;
  13. import com.jiayue.ipfcst.common.core.exception.BusinessException;
  14. import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
  15. import com.jiayue.ipfcst.common.core.util.DateTimeUtil;
  16. import com.jiayue.ipp.common.data.entity.*;
  17. import lombok.Data;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.scheduling.annotation.Async;
  20. import org.springframework.scheduling.annotation.EnableAsync;
  21. import org.springframework.scheduling.annotation.Scheduled;
  22. import org.springframework.stereotype.Service;
  23. import java.io.*;
  24. import java.math.BigDecimal;
  25. import java.math.RoundingMode;
  26. import java.text.SimpleDateFormat;
  27. import java.time.LocalDate;
  28. import java.time.LocalDateTime;
  29. import java.time.ZoneId;
  30. import java.util.*;
  31. import java.util.Date;
  32. import java.util.stream.Collectors;
  33. /**
  34. * 生成回传数据
  35. *
  36. * @Author: tl
  37. * @Date: 2023/6/29 9:47
  38. */
  39. @Service
  40. @Slf4j
  41. @EnableAsync
  42. public class GenerateBackPassDataService {
  43. private final WindPowerReal15MinFD0001Service windPowerReal15MinFD0001Service;
  44. private final WindPowerReal15MinFD0002Service windPowerReal15MinFD0002Service;
  45. private final WindPowerReal15MinFD0003Service windPowerReal15MinFD0003Service;
  46. private final WindPowerReal15MinFD0004Service windPowerReal15MinFD0004Service;
  47. private final WindPowerReal15MinFD0005Service windPowerReal15MinFD0005Service;
  48. private final WindPowerReal15MinFD0006Service windPowerReal15MinFD0006Service;
  49. private final WindPowerReal15MinFD0007Service windPowerReal15MinFD0007Service;
  50. private final WindPowerReal15MinFD0029Service windPowerReal15MinFD0029Service;
  51. private final WindPowerReal15MinFD0030Service windPowerReal15MinFD0030Service;
  52. private final WindPowerReal15MinFD0031Service windPowerReal15MinFD0031Service;
  53. private final PvPowerReal15MinGF0001Service pvPowerReal15MinGF0001Service;
  54. private final PvPowerReal15MinGF0002Service pvPowerReal15MinGF0002Service;
  55. private final PvPowerReal15MinGF0012Service pvPowerReal15MinGF0012Service;
  56. private final PvPowerReal15MinGF0013Service pvPowerReal15MinGF0013Service;
  57. private static final String IMAGE_TYPE = "jpg";
  58. private static final String PLACE = "-0.99|";
  59. private static final Long oneDay = 3600 * 24 * 1000L - 1000L;
  60. private static final Integer packSize = 2000;
  61. private final JiaYueWindPowerDqResultCoverFD0001Service jiaYueWindPowerDqResultCoverFD0001Service;
  62. private final JiaYueWindPowerDqResultCoverFD0002Service jiaYueWindPowerDqResultCoverFD0002Service;
  63. private final JiaYueWindPowerDqResultCoverFD0003Service jiaYueWindPowerDqResultCoverFD0003Service;
  64. private final JiaYueWindPowerDqResultCoverFD0004Service jiaYueWindPowerDqResultCoverFD0004Service;
  65. private final JiaYueWindPowerDqResultCoverFD0005Service jiaYueWindPowerDqResultCoverFD0005Service;
  66. private final JiaYueWindPowerDqResultCoverFD0006Service jiaYueWindPowerDqResultCoverFD0006Service;
  67. private final JiaYueWindPowerDqResultCoverFD0007Service jiaYueWindPowerDqResultCoverFD0007Service;
  68. private final JiaYueWindPowerDqResultCoverFD0029Service jiaYueWindPowerDqResultCoverFD0029Service;
  69. private final JiaYueWindPowerDqResultCoverFD0030Service jiaYueWindPowerDqResultCoverFD0030Service;
  70. private final JiaYueWindPowerDqResultCoverFD0031Service jiaYueWindPowerDqResultCoverFD0031Service;
  71. private final JiaYueWindPowerDqResultCoverGF0001Service jiaYueWindPowerDqResultCoverGF0001Service;
  72. private final JiaYueWindPowerDqResultCoverGF0002Service jiaYueWindPowerDqResultCoverGF0002Service;
  73. private final JiaYueWindPowerDqResultCoverGF0012Service jiaYueWindPowerDqResultCoverGF0012Service;
  74. private final JiaYueWindPowerDqResultCoverGF0013Service jiaYueWindPowerDqResultCoverGF0013Service;
  75. private final JiaYueWindPowerCdqResultCoverFD0001Service jiaYueWindPowerCdqResultCoverFD0001Service;
  76. private final JiaYueWindPowerCdqResultCoverFD0002Service jiaYueWindPowerCdqResultCoverFD0002Service;
  77. private final JiaYueWindPowerCdqResultCoverFD0003Service jiaYueWindPowerCdqResultCoverFD0003Service;
  78. private final JiaYueWindPowerCdqResultCoverFD0004Service jiaYueWindPowerCdqResultCoverFD0004Service;
  79. private final JiaYueWindPowerCdqResultCoverFD0005Service jiaYueWindPowerCdqResultCoverFD0005Service;
  80. private final JiaYueWindPowerCdqResultCoverFD0006Service jiaYueWindPowerCdqResultCoverFD0006Service;
  81. private final JiaYueWindPowerCdqResultCoverFD0007Service jiaYueWindPowerCdqResultCoverFD0007Service;
  82. private final JiaYueWindPowerCdqResultCoverFD0029Service jiaYueWindPowerCdqResultCoverFD0029Service;
  83. private final JiaYueWindPowerCdqResultCoverFD0030Service jiaYueWindPowerCdqResultCoverFD0030Service;
  84. private final JiaYueWindPowerCdqResultCoverFD0031Service jiaYueWindPowerCdqResultCoverFD0031Service;
  85. private final JiaYueWindPowerCdqResultCoverGF0001Service jiaYueWindPowerCdqResultCoverGF0001Service;
  86. private final JiaYueWindPowerCdqResultCoverGF0002Service jiaYueWindPowerCdqResultCoverGF0002Service;
  87. private final JiaYueWindPowerCdqResultCoverGF0012Service jiaYueWindPowerCdqResultCoverGF0012Service;
  88. private final JiaYueWindPowerCdqResultCoverGF0013Service jiaYueWindPowerCdqResultCoverGF0013Service;
  89. public GenerateBackPassDataService(PvPowerReal15MinGF0001Service pvPowerReal15MinGF0001Service,PvPowerReal15MinGF0002Service pvPowerReal15MinGF0002Service,PvPowerReal15MinGF0012Service pvPowerReal15MinGF0012Service,PvPowerReal15MinGF0013Service pvPowerReal15MinGF0013Service,WindPowerReal15MinFD0001Service windPowerReal15MinFD0001Service,WindPowerReal15MinFD0002Service windPowerReal15MinFD0002Service,WindPowerReal15MinFD0003Service windPowerReal15MinFD0003Service,WindPowerReal15MinFD0004Service windPowerReal15MinFD0004Service,WindPowerReal15MinFD0005Service windPowerReal15MinFD0005Service,
  90. WindPowerReal15MinFD0006Service windPowerReal15MinFD0006Service,WindPowerReal15MinFD0007Service windPowerReal15MinFD0007Service,WindPowerReal15MinFD0029Service windPowerReal15MinFD0029Service,WindPowerReal15MinFD0030Service windPowerReal15MinFD0030Service,WindPowerReal15MinFD0031Service windPowerReal15MinFD0031Service,JiaYueWindPowerDqResultCoverGF0001Service jiaYueWindPowerDqResultCoverGF0001Service,JiaYueWindPowerDqResultCoverGF0002Service jiaYueWindPowerDqResultCoverGF0002Service,JiaYueWindPowerDqResultCoverGF0012Service jiaYueWindPowerDqResultCoverGF0012Service,JiaYueWindPowerDqResultCoverGF0013Service jiaYueWindPowerDqResultCoverGF0013Service,JiaYueWindPowerDqResultCoverFD0001Service jiaYueWindPowerDqResultCoverFD0001Service,JiaYueWindPowerDqResultCoverFD0002Service jiaYueWindPowerDqResultCoverFD0002Service,
  91. JiaYueWindPowerDqResultCoverFD0003Service jiaYueWindPowerDqResultCoverFD0003Service,JiaYueWindPowerDqResultCoverFD0004Service jiaYueWindPowerDqResultCoverFD0004Service,JiaYueWindPowerDqResultCoverFD0005Service jiaYueWindPowerDqResultCoverFD0005Service,JiaYueWindPowerDqResultCoverFD0006Service jiaYueWindPowerDqResultCoverFD0006Service,
  92. JiaYueWindPowerDqResultCoverFD0007Service jiaYueWindPowerDqResultCoverFD0007Service,JiaYueWindPowerDqResultCoverFD0029Service jiaYueWindPowerDqResultCoverFD0029Service,JiaYueWindPowerDqResultCoverFD0030Service jiaYueWindPowerDqResultCoverFD0030Service,JiaYueWindPowerDqResultCoverFD0031Service jiaYueWindPowerDqResultCoverFD0031Service,JiaYueWindPowerCdqResultCoverGF0001Service jiaYueWindPowerCdqResultCoverGF0001Service,JiaYueWindPowerCdqResultCoverGF0002Service jiaYueWindPowerCdqResultCoverGF0002Service,JiaYueWindPowerCdqResultCoverGF0012Service jiaYueWindPowerCdqResultCoverGF0012Service,JiaYueWindPowerCdqResultCoverGF0013Service jiaYueWindPowerCdqResultCoverGF0013Service,JiaYueWindPowerCdqResultCoverFD0001Service jiaYueWindPowerCdqResultCoverFD0001Service,JiaYueWindPowerCdqResultCoverFD0002Service jiaYueWindPowerCdqResultCoverFD0002Service,
  93. JiaYueWindPowerCdqResultCoverFD0003Service jiaYueWindPowerCdqResultCoverFD0003Service,JiaYueWindPowerCdqResultCoverFD0004Service jiaYueWindPowerCdqResultCoverFD0004Service,JiaYueWindPowerCdqResultCoverFD0005Service jiaYueWindPowerCdqResultCoverFD0005Service,JiaYueWindPowerCdqResultCoverFD0006Service jiaYueWindPowerCdqResultCoverFD0006Service,
  94. JiaYueWindPowerCdqResultCoverFD0007Service jiaYueWindPowerCdqResultCoverFD0007Service,JiaYueWindPowerCdqResultCoverFD0029Service jiaYueWindPowerCdqResultCoverFD0029Service,JiaYueWindPowerCdqResultCoverFD0030Service jiaYueWindPowerCdqResultCoverFD0030Service,JiaYueWindPowerCdqResultCoverFD0031Service jiaYueWindPowerCdqResultCoverFD0031Service){
  95. this.windPowerReal15MinFD0001Service = windPowerReal15MinFD0001Service;
  96. this.windPowerReal15MinFD0002Service = windPowerReal15MinFD0002Service;
  97. this.windPowerReal15MinFD0003Service = windPowerReal15MinFD0003Service;
  98. this.windPowerReal15MinFD0004Service = windPowerReal15MinFD0004Service;
  99. this.windPowerReal15MinFD0005Service = windPowerReal15MinFD0005Service;
  100. this.windPowerReal15MinFD0006Service = windPowerReal15MinFD0006Service;
  101. this.windPowerReal15MinFD0007Service = windPowerReal15MinFD0007Service;
  102. this.windPowerReal15MinFD0029Service = windPowerReal15MinFD0029Service;
  103. this.windPowerReal15MinFD0030Service = windPowerReal15MinFD0030Service;
  104. this.windPowerReal15MinFD0031Service = windPowerReal15MinFD0031Service;
  105. this.pvPowerReal15MinGF0001Service = pvPowerReal15MinGF0001Service;
  106. this.pvPowerReal15MinGF0002Service = pvPowerReal15MinGF0002Service;
  107. this.pvPowerReal15MinGF0012Service = pvPowerReal15MinGF0012Service;
  108. this.pvPowerReal15MinGF0013Service = pvPowerReal15MinGF0013Service;
  109. this.jiaYueWindPowerDqResultCoverFD0001Service = jiaYueWindPowerDqResultCoverFD0001Service;
  110. this.jiaYueWindPowerDqResultCoverFD0002Service = jiaYueWindPowerDqResultCoverFD0002Service;
  111. this.jiaYueWindPowerDqResultCoverFD0003Service = jiaYueWindPowerDqResultCoverFD0003Service;
  112. this.jiaYueWindPowerDqResultCoverFD0004Service = jiaYueWindPowerDqResultCoverFD0004Service;
  113. this.jiaYueWindPowerDqResultCoverFD0005Service = jiaYueWindPowerDqResultCoverFD0005Service;
  114. this.jiaYueWindPowerDqResultCoverFD0006Service = jiaYueWindPowerDqResultCoverFD0006Service;
  115. this.jiaYueWindPowerDqResultCoverFD0007Service = jiaYueWindPowerDqResultCoverFD0007Service;
  116. this.jiaYueWindPowerDqResultCoverFD0029Service = jiaYueWindPowerDqResultCoverFD0029Service;
  117. this.jiaYueWindPowerDqResultCoverFD0030Service = jiaYueWindPowerDqResultCoverFD0030Service;
  118. this.jiaYueWindPowerDqResultCoverFD0031Service = jiaYueWindPowerDqResultCoverFD0031Service;
  119. this.jiaYueWindPowerDqResultCoverGF0001Service = jiaYueWindPowerDqResultCoverGF0001Service;
  120. this.jiaYueWindPowerDqResultCoverGF0002Service = jiaYueWindPowerDqResultCoverGF0002Service;
  121. this.jiaYueWindPowerDqResultCoverGF0012Service = jiaYueWindPowerDqResultCoverGF0012Service;
  122. this.jiaYueWindPowerDqResultCoverGF0013Service = jiaYueWindPowerDqResultCoverGF0013Service;
  123. this.jiaYueWindPowerCdqResultCoverFD0001Service = jiaYueWindPowerCdqResultCoverFD0001Service;
  124. this.jiaYueWindPowerCdqResultCoverFD0002Service = jiaYueWindPowerCdqResultCoverFD0002Service;
  125. this.jiaYueWindPowerCdqResultCoverFD0003Service = jiaYueWindPowerCdqResultCoverFD0003Service;
  126. this.jiaYueWindPowerCdqResultCoverFD0005Service = jiaYueWindPowerCdqResultCoverFD0005Service;
  127. this.jiaYueWindPowerCdqResultCoverFD0004Service = jiaYueWindPowerCdqResultCoverFD0004Service;
  128. this.jiaYueWindPowerCdqResultCoverFD0006Service = jiaYueWindPowerCdqResultCoverFD0006Service;
  129. this.jiaYueWindPowerCdqResultCoverFD0007Service = jiaYueWindPowerCdqResultCoverFD0007Service;
  130. this.jiaYueWindPowerCdqResultCoverFD0029Service = jiaYueWindPowerCdqResultCoverFD0029Service;
  131. this.jiaYueWindPowerCdqResultCoverFD0030Service = jiaYueWindPowerCdqResultCoverFD0030Service;
  132. this.jiaYueWindPowerCdqResultCoverFD0031Service = jiaYueWindPowerCdqResultCoverFD0031Service;
  133. this.jiaYueWindPowerCdqResultCoverGF0001Service = jiaYueWindPowerCdqResultCoverGF0001Service;
  134. this.jiaYueWindPowerCdqResultCoverGF0002Service = jiaYueWindPowerCdqResultCoverGF0002Service;
  135. this.jiaYueWindPowerCdqResultCoverGF0012Service = jiaYueWindPowerCdqResultCoverGF0012Service;
  136. this.jiaYueWindPowerCdqResultCoverGF0013Service = jiaYueWindPowerCdqResultCoverGF0013Service;
  137. }
  138. /**
  139. * 每天凌晨一点零五分生成回传短期、超短期。实际功率数据
  140. * @return
  141. */
  142. @Scheduled(cron = "0 5 1,12,18 * * *")
  143. @Async
  144. public Map<String, Object> generateQRCode() {
  145. Map<String, Object> map = new HashMap<>();
  146. try {
  147. List<ElectricField> electricFieldList = new ArrayList<>();
  148. ElectricField electricField = new ElectricField();
  149. electricField.setStationCode("J00770");
  150. electricField.setSign("FD0001");
  151. ElectricField electricField2 = new ElectricField();
  152. electricField2.setStationCode("J00941");
  153. electricField2.setSign("FD0002");
  154. ElectricField electricField3 = new ElectricField();
  155. electricField3.setStationCode("J00942");
  156. electricField3.setSign("FD0003");
  157. // 新增宁夏吴忠石窖沟电站
  158. ElectricField electricField4 = new ElectricField();
  159. electricField4.setStationCode("J00988");
  160. electricField4.setSign("FD0004");
  161. ElectricField electricField5 = new ElectricField();
  162. electricField5.setStationCode("J00929");
  163. electricField5.setSign("FD0005");
  164. ElectricField electricField6 = new ElectricField();
  165. electricField6.setStationCode("J00930");
  166. electricField6.setSign("FD0006");
  167. ElectricField electricField7 = new ElectricField();
  168. electricField7.setStationCode("J00931");
  169. electricField7.setSign("FD0007");
  170. ElectricField electricField29 = new ElectricField();
  171. electricField29.setStationCode("J01034");
  172. electricField29.setSign("FD0029");
  173. ElectricField electricField30 = new ElectricField();
  174. electricField30.setStationCode("J01033");
  175. electricField30.setSign("FD0030");
  176. ElectricField electricField31 = new ElectricField();
  177. electricField30.setStationCode("J01043");
  178. electricField30.setSign("FD0031");
  179. // 光伏电站
  180. ElectricField electricFieldGF0001 = new ElectricField();
  181. electricFieldGF0001.setStationCode("J01056");
  182. electricFieldGF0001.setSign("GF0001");
  183. ElectricField electricFieldGF0002 = new ElectricField();
  184. electricFieldGF0002.setStationCode("J01057");
  185. electricFieldGF0002.setSign("GF0002");
  186. ElectricField electricFieldGF0012 = new ElectricField();
  187. electricFieldGF0012.setStationCode("J01061");
  188. electricFieldGF0012.setSign("GF0012");
  189. ElectricField electricFieldGF0013 = new ElectricField();
  190. electricFieldGF0013.setStationCode("J01062");
  191. electricFieldGF0013.setSign("GF0013");
  192. electricFieldList.add(electricField);
  193. electricFieldList.add(electricField2);
  194. electricFieldList.add(electricField3);
  195. electricFieldList.add(electricField4);
  196. electricFieldList.add(electricField5);
  197. electricFieldList.add(electricField6);
  198. electricFieldList.add(electricField7);
  199. electricFieldList.add(electricField29);
  200. electricFieldList.add(electricField30);
  201. electricFieldList.add(electricField31);
  202. electricFieldList.add(electricFieldGF0001);
  203. electricFieldList.add(electricFieldGF0002);
  204. electricFieldList.add(electricFieldGF0012);
  205. electricFieldList.add(electricFieldGF0013);
  206. //
  207. // // 开始日期和结束日期
  208. // LocalDate startDate = LocalDate.of(2024, 1, 2);
  209. // LocalDate endDate = LocalDate.of(2024, 8, 13);
  210. //
  211. // // 存储结果的列表
  212. // List<Date> dateList = new ArrayList<>();
  213. //
  214. // // 遍历日期范围
  215. // LocalDate currentDate = startDate;
  216. // while (!currentDate.isAfter(endDate)) {
  217. // // 获取当天的00:00
  218. // LocalDateTime startOfDay = currentDate.atStartOfDay();
  219. //
  220. // // 转换为Date
  221. // Date startOfDayDate = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
  222. //
  223. // // 添加到列表中
  224. // dateList.add(startOfDayDate);
  225. // currentDate = currentDate.plusDays(1);
  226. // }
  227. //
  228. // for (int i = 0; i < dateList.size(); i++) {
  229. for (int j = 0; j < electricFieldList.size(); j++) {
  230. // map = generateQR(electricFieldList.get(j), dateList.get(i));
  231. map = generateQR(electricFieldList.get(j));
  232. toJson(map);
  233. // Thread.sleep(1000);
  234. }
  235. // }
  236. log.info("任务执行完成!");
  237. } catch (Exception e) {
  238. e.printStackTrace();
  239. log.error("生成二维码失败");
  240. // 处理生成二维码失败的情况
  241. }
  242. return map;
  243. }
  244. public void prettyPrintJson(String json) {
  245. try {
  246. TaskResultRequestVO taskResultRequestVO = new TaskResultRequestVO();
  247. log.info("开始回传二维码数据,文件名:{}");
  248. taskResultRequestVO.setTaskResult(String.join("", json));
  249. String url = "https://api.jiayuepowertech.com:8080/task/result";
  250. // 构造请求对象
  251. HttpRequest request = HttpRequest.put(url).body(JsonBeanUtil.beanToJson(taskResultRequestVO));
  252. // 发送请求并获取响应对象
  253. HttpResponse response = request.execute();
  254. log.info("回传二维码数据状态=》{}", response.body());
  255. } catch (Exception e) {
  256. log.info("回传二维码数据失败");
  257. e.printStackTrace();
  258. }
  259. }
  260. @Data
  261. class TaskResultRequestVO {
  262. private static final long serialVersionUID = 1L;
  263. private String taskResult;
  264. }
  265. /**
  266. * @return
  267. */
  268. /**
  269. * 查询回传短期、超短期、实际功率所需数据
  270. * @param electricField
  271. * @return
  272. */
  273. public Map<String, Object> generateQR(ElectricField electricField) {
  274. Long time = new Date().getTime() - 60 * 60 * 24 * 1000L;
  275. // 获取昨日开始时间结束时间
  276. Date startTime = new Date(TimeUtils.getDayStartTime(time));
  277. Date endTime = new Date(startTime.getTime() + 60 * 60 * 24 * 1000L - 1000L);
  278. Map<String, Object> map = new HashMap<>();
  279. try {
  280. //各个二维码显示设置
  281. Map<String, List<String>> dqMap = new TreeMap<>();
  282. Map<String, List<String>> cdqMap = new HashMap<>();
  283. Map<String, List<String>> rpMap = new HashMap<>();
  284. //超短期 stationData-QR T00003-ust-点位
  285. List<String> ust = generateUltraShortTermContent(startTime.getTime(), startTime.getTime() + 3600 * 24 * 1000L - 1000, electricField);
  286. cdqMap.put("超短期第1点数据", ust);
  287. //短期
  288. List<String> st = generateShortTermContent(startTime.getTime()- 3600 * 24 * 1000L, endTime.getTime()- 3600 * 24 * 1000L, electricField);
  289. //二维码名字
  290. StringBuilder name = new StringBuilder("E1短期");
  291. dqMap.put(name.toString(), st);
  292. //实际功率stationData-QR T00003-rp
  293. List<String> rp = generateRealPowerCodeContent(startTime.getTime(), endTime.getTime(), electricField);
  294. rpMap.put("实际功率", rp);
  295. map.put("ultraShortTerm", cdqMap);
  296. map.put("shortTerm", dqMap);
  297. map.put("realPower", rpMap);
  298. } catch (Exception e) {
  299. e.printStackTrace();
  300. }
  301. return map;
  302. }
  303. /**
  304. * 实际功率二维码内容生成
  305. *
  306. * @param startTime 开始时间
  307. * @param endTime 结束时间
  308. * @return 二维码生成内容集
  309. * @throws IOException io异常
  310. * @throws BusinessException 业务异常
  311. */
  312. public List<String> generateRealPowerCodeContent(Long startTime, Long endTime, ElectricField electricField) throws IOException, BusinessException {
  313. long timeStep = 900000L;
  314. if (startTime % timeStep != 0) {
  315. startTime = startTime - (startTime % timeStep) + timeStep;
  316. }
  317. StringBuilder content = new StringBuilder();
  318. StringBuilder instContent = new StringBuilder();
  319. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  320. StringBuilder stringBuilder = new StringBuilder();
  321. //T00003-rp|2023-04-14
  322. stringBuilder.append(electricField.getStationCode()).append("-").append("rp").append("|").append(sdf.format(startTime)).append("|");
  323. List<WindPowerReal15MinFD0001> windPowerReal15MinFD0001List = new ArrayList<>();
  324. List<WindPowerReal15MinFD0002> windPowerReal15MinFD0002List = new ArrayList<>();
  325. List<WindPowerReal15MinFD0003> windPowerReal15MinFD0003List = new ArrayList<>();
  326. List<WindPowerReal15MinFD0004> windPowerReal15MinFD0004List = new ArrayList<>();
  327. List<WindPowerReal15MinFD0005> windPowerReal15MinFD0005List = new ArrayList<>();
  328. List<WindPowerReal15MinFD0006> windPowerReal15MinFD0006List = new ArrayList<>();
  329. List<WindPowerReal15MinFD0007> windPowerReal15MinFD0007List = new ArrayList<>();
  330. List<WindPowerReal15MinFD0029> windPowerReal15MinFD0029List = new ArrayList<>();
  331. List<WindPowerReal15MinFD0030> windPowerReal15MinFD0030List = new ArrayList<>();
  332. List<WindPowerReal15MinFD0031> windPowerReal15MinFD0031List = new ArrayList<>();
  333. List<PvPowerReal15MinGF0001> pvPowerReal15MinGF0001List = new ArrayList<>();
  334. List<PvPowerReal15MinGF0002> pvPowerReal15MinGF0002List = new ArrayList<>();
  335. List<PvPowerReal15MinGF0012> pvPowerReal15MinGF0012List = new ArrayList<>();
  336. List<PvPowerReal15MinGF0013> pvPowerReal15MinGF0013List = new ArrayList<>();
  337. switch (electricField.getSign()){
  338. case "FD0001":
  339. windPowerReal15MinFD0001List = windPowerReal15MinFD0001Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  340. break;
  341. case "FD0002":
  342. windPowerReal15MinFD0002List = windPowerReal15MinFD0002Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  343. break;
  344. case "FD0003":
  345. windPowerReal15MinFD0003List = windPowerReal15MinFD0003Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  346. break;
  347. case "FD0004":
  348. windPowerReal15MinFD0004List = windPowerReal15MinFD0004Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  349. break;
  350. case "FD0005":
  351. windPowerReal15MinFD0005List = windPowerReal15MinFD0005Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  352. break;
  353. case "FD0006":
  354. windPowerReal15MinFD0006List = windPowerReal15MinFD0006Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  355. break;
  356. case "FD0007":
  357. windPowerReal15MinFD0007List = windPowerReal15MinFD0007Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  358. break;
  359. case "FD0029":
  360. windPowerReal15MinFD0029List = windPowerReal15MinFD0029Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  361. break;
  362. case "FD0030":
  363. windPowerReal15MinFD0030List = windPowerReal15MinFD0030Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  364. break;
  365. case "FD0031":
  366. windPowerReal15MinFD0031List = windPowerReal15MinFD0031Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  367. break;
  368. case "GF0001":
  369. pvPowerReal15MinGF0001List = pvPowerReal15MinGF0001Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  370. break;
  371. case "GF0002":
  372. pvPowerReal15MinGF0002List = pvPowerReal15MinGF0002Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  373. break;
  374. case "GF0012":
  375. pvPowerReal15MinGF0012List = pvPowerReal15MinGF0012Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  376. break;
  377. case "GF0013":
  378. pvPowerReal15MinGF0013List = pvPowerReal15MinGF0013Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000));
  379. break;
  380. default:
  381. break;
  382. }
  383. for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + timeStep) {
  384. long finalTime = stepTime;
  385. if (electricField.getSign().equals("FD0001")) {
  386. List<WindPowerReal15MinFD0001> filterList = windPowerReal15MinFD0001List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  387. BigDecimal avg = new BigDecimal(0);
  388. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  389. for (WindPowerReal15MinFD0001 p : filterList) {
  390. avg = avg.add(new BigDecimal(p.getValue()));
  391. }
  392. if (!filterList.isEmpty()) {
  393. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  394. instContent.append(filterList.get(0).getValue()).append("|");
  395. } else {
  396. content.append(PLACE);
  397. instContent.append(PLACE);
  398. }
  399. }
  400. if (electricField.getSign().equals("FD0002")) {
  401. List<WindPowerReal15MinFD0002> filterList = windPowerReal15MinFD0002List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  402. BigDecimal avg = new BigDecimal(0);
  403. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  404. for (WindPowerReal15MinFD0002 p : filterList) {
  405. avg = avg.add(new BigDecimal(p.getValue()));
  406. }
  407. if (!filterList.isEmpty()) {
  408. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  409. instContent.append(filterList.get(0).getValue()).append("|");
  410. } else {
  411. content.append(PLACE);
  412. instContent.append(PLACE);
  413. }
  414. }
  415. if (electricField.getSign().equals("FD0003")) {
  416. List<WindPowerReal15MinFD0003> filterList = windPowerReal15MinFD0003List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  417. BigDecimal avg = new BigDecimal(0);
  418. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  419. for (WindPowerReal15MinFD0003 p : filterList) {
  420. avg = avg.add(new BigDecimal(p.getValue()));
  421. }
  422. if (!filterList.isEmpty()) {
  423. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  424. instContent.append(filterList.get(0).getValue()).append("|");
  425. } else {
  426. content.append(PLACE);
  427. instContent.append(PLACE);
  428. }
  429. }
  430. if (electricField.getSign().equals("FD0004")) {
  431. List<WindPowerReal15MinFD0004> filterList = windPowerReal15MinFD0004List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  432. BigDecimal avg = new BigDecimal(0);
  433. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  434. for (WindPowerReal15MinFD0004 p : filterList) {
  435. avg = avg.add(new BigDecimal(p.getValue()));
  436. }
  437. if (!filterList.isEmpty()) {
  438. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  439. instContent.append(filterList.get(0).getValue()).append("|");
  440. } else {
  441. content.append(PLACE);
  442. instContent.append(PLACE);
  443. }
  444. }
  445. if (electricField.getSign().equals("FD0005")) {
  446. List<WindPowerReal15MinFD0005> filterList = windPowerReal15MinFD0005List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  447. BigDecimal avg = new BigDecimal(0);
  448. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  449. for (WindPowerReal15MinFD0005 p : filterList) {
  450. avg = avg.add(new BigDecimal(p.getValue()));
  451. }
  452. if (!filterList.isEmpty()) {
  453. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  454. instContent.append(filterList.get(0).getValue()).append("|");
  455. } else {
  456. content.append(PLACE);
  457. instContent.append(PLACE);
  458. }
  459. }
  460. if (electricField.getSign().equals("FD0006")) {
  461. List<WindPowerReal15MinFD0006> filterList = windPowerReal15MinFD0006List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  462. BigDecimal avg = new BigDecimal(0);
  463. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  464. for (WindPowerReal15MinFD0006 p : filterList) {
  465. avg = avg.add(new BigDecimal(p.getValue()));
  466. }
  467. if (!filterList.isEmpty()) {
  468. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  469. instContent.append(filterList.get(0).getValue()).append("|");
  470. } else {
  471. content.append(PLACE);
  472. instContent.append(PLACE);
  473. }
  474. }
  475. if (electricField.getSign().equals("FD0007")) {
  476. List<WindPowerReal15MinFD0007> filterList = windPowerReal15MinFD0007List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  477. BigDecimal avg = new BigDecimal(0);
  478. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  479. for (WindPowerReal15MinFD0007 p : filterList) {
  480. avg = avg.add(new BigDecimal(p.getValue()));
  481. }
  482. if (!filterList.isEmpty()) {
  483. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  484. instContent.append(filterList.get(0).getValue()).append("|");
  485. } else {
  486. content.append(PLACE);
  487. instContent.append(PLACE);
  488. }
  489. }
  490. if (electricField.getSign().equals("FD0029")) {
  491. List<WindPowerReal15MinFD0029> filterList = windPowerReal15MinFD0029List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  492. BigDecimal avg = new BigDecimal(0);
  493. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  494. for (WindPowerReal15MinFD0029 p : filterList) {
  495. avg = avg.add(new BigDecimal(p.getActivePower()));
  496. }
  497. if (!filterList.isEmpty()) {
  498. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  499. instContent.append(filterList.get(0).getActivePower()).append("|");
  500. } else {
  501. content.append(PLACE);
  502. instContent.append(PLACE);
  503. }
  504. }
  505. if (electricField.getSign().equals("FD0030")) {
  506. List<WindPowerReal15MinFD0030> filterList = windPowerReal15MinFD0030List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  507. BigDecimal avg = new BigDecimal(0);
  508. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  509. for (WindPowerReal15MinFD0030 p : filterList) {
  510. avg = avg.add(new BigDecimal(p.getValue()));
  511. }
  512. if (!filterList.isEmpty()) {
  513. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  514. instContent.append(filterList.get(0).getValue()).append("|");
  515. } else {
  516. content.append(PLACE);
  517. instContent.append(PLACE);
  518. }
  519. }
  520. if (electricField.getSign().equals("FD0031")) {
  521. List<WindPowerReal15MinFD0031> filterList = windPowerReal15MinFD0031List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  522. BigDecimal avg = new BigDecimal(0);
  523. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  524. for (WindPowerReal15MinFD0031 p : filterList) {
  525. avg = avg.add(new BigDecimal(p.getValue()));
  526. }
  527. if (!filterList.isEmpty()) {
  528. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  529. instContent.append(filterList.get(0).getValue()).append("|");
  530. } else {
  531. content.append(PLACE);
  532. instContent.append(PLACE);
  533. }
  534. }
  535. if (electricField.getSign().equals("GF0001")) {
  536. List<PvPowerReal15MinGF0001> filterList = pvPowerReal15MinGF0001List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  537. BigDecimal avg = new BigDecimal(0);
  538. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  539. for (PvPowerReal15MinGF0001 p : filterList) {
  540. avg = avg.add(new BigDecimal(p.getActivePower()));
  541. }
  542. if (!filterList.isEmpty()) {
  543. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  544. instContent.append(filterList.get(0).getActivePower()).append("|");
  545. } else {
  546. content.append(PLACE);
  547. instContent.append(PLACE);
  548. }
  549. }
  550. if (electricField.getSign().equals("GF0002")) {
  551. List<PvPowerReal15MinGF0002> filterList = pvPowerReal15MinGF0002List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  552. BigDecimal avg = new BigDecimal(0);
  553. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  554. for (PvPowerReal15MinGF0002 p : filterList) {
  555. avg = avg.add(new BigDecimal(p.getActivePower()));
  556. }
  557. if (!filterList.isEmpty()) {
  558. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  559. instContent.append(filterList.get(0).getActivePower()).append("|");
  560. } else {
  561. content.append(PLACE);
  562. instContent.append(PLACE);
  563. }
  564. }
  565. if (electricField.getSign().equals("GF0012")) {
  566. List<PvPowerReal15MinGF0012> filterList = pvPowerReal15MinGF0012List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  567. BigDecimal avg = new BigDecimal(0);
  568. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  569. for (PvPowerReal15MinGF0012 p : filterList) {
  570. avg = avg.add(new BigDecimal(p.getActivePower()));
  571. }
  572. if (!filterList.isEmpty()) {
  573. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  574. instContent.append(filterList.get(0).getActivePower()).append("|");
  575. } else {
  576. content.append(PLACE);
  577. instContent.append(PLACE);
  578. }
  579. }
  580. if (electricField.getSign().equals("GF0013")) {
  581. List<PvPowerReal15MinGF0013> filterList = pvPowerReal15MinGF0013List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  582. BigDecimal avg = new BigDecimal(0);
  583. //取前15分钟的平均值 13:30取13:16-13:30的平均值
  584. for (PvPowerReal15MinGF0013 p : filterList) {
  585. avg = avg.add(new BigDecimal(p.getActivePower()));
  586. }
  587. if (!filterList.isEmpty()) {
  588. content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|");
  589. instContent.append(filterList.get(0).getActivePower()).append("|");
  590. } else {
  591. content.append(PLACE);
  592. instContent.append(PLACE);
  593. }
  594. }
  595. }
  596. stringBuilder.append(content);
  597. stringBuilder.append(instContent);
  598. List<String> qrCodeContents = GzipUtil.pubZipList(stringBuilder.toString(), packSize);
  599. List<String> result = new ArrayList<>();
  600. String taskNo = getTaskNo(electricField);
  601. for (int i = 0; i < qrCodeContents.size(); i++) {
  602. JSONObject jsonObject = new JSONObject();
  603. jsonObject.putOnce("taskNo", taskNo);
  604. jsonObject.putOnce("taskType", "stationData-QR");
  605. jsonObject.putOnce("partNo", i + 1);
  606. jsonObject.putOnce("partTotal", qrCodeContents.size());
  607. jsonObject.putOnce("data", qrCodeContents.get(i));
  608. result.add(i, jsonObject.toString());
  609. }
  610. return result;
  611. }
  612. /**
  613. * 上报短期二维码内容生成
  614. *
  615. * @param startTime 开始时间
  616. * @param endTime 结束时间
  617. * @return 二维码生成内容集
  618. * @throws IOException IO异常
  619. * @throws BusinessException 业务异常
  620. */
  621. public List<String> generateShortTermContent(Long startTime, Long endTime, ElectricField electricField) throws IOException, BusinessException {
  622. long timeStep = 900000L;
  623. if (startTime % timeStep != 0) {
  624. startTime = startTime - (startTime % timeStep) + timeStep;
  625. }
  626. StringBuilder content = new StringBuilder();
  627. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  628. StringBuilder name = new StringBuilder("E1");
  629. content.append(electricField.getStationCode()).append("-").append("st").append("-").append(name).append("|");
  630. List<Long> lDate = DateMomentUtil.getEveryDay(startTime+24 * 60 * 60 * 1000 , startTime + 48 * 60 * 60 * 1000 - 1000L);
  631. for (int i = 0; i < lDate.size(); i++) {
  632. content.append(sdf.format(lDate.get(i)));
  633. if (i != lDate.size() - 1) {
  634. content.append(",");
  635. } else {
  636. content.append("|");
  637. }
  638. }
  639. List<JiaYueWindPowerDqResultCoverFD0001> jiaYueWindPowerDqResultCoverFD0001List = new ArrayList<>();
  640. List<JiaYueWindPowerDqResultCoverFD0002> jiaYueWindPowerDqResultCoverFD0002List = new ArrayList<>();
  641. List<JiaYueWindPowerDqResultCoverFD0003> jiaYueWindPowerDqResultCoverFD0003List = new ArrayList<>();
  642. List<JiaYueWindPowerDqResultCoverFD0004> jiaYueWindPowerDqResultCoverFD0004List = new ArrayList<>();
  643. List<JiaYueWindPowerDqResultCoverFD0005> jiaYueWindPowerDqResultCoverFD0005List = new ArrayList<>();
  644. List<JiaYueWindPowerDqResultCoverFD0006> jiaYueWindPowerDqResultCoverFD0006List = new ArrayList<>();
  645. List<JiaYueWindPowerDqResultCoverFD0007> jiaYueWindPowerDqResultCoverFD0007List = new ArrayList<>();
  646. List<JiaYueWindPowerDqResultCoverFD0029> jiaYueWindPowerDqResultCoverFD0029List = new ArrayList<>();
  647. List<JiaYueWindPowerDqResultCoverFD0030> jiaYueWindPowerDqResultCoverFD0030List = new ArrayList<>();
  648. List<JiaYueWindPowerDqResultCoverFD0031> jiaYueWindPowerDqResultCoverFD0031List = new ArrayList<>();
  649. List<JiaYueWindPowerDqResultCoverGF0001> jiaYueWindPowerDqResultCoverGF0001List = new ArrayList<>();
  650. List<JiaYueWindPowerDqResultCoverGF0002> jiaYueWindPowerDqResultCoverGF0002List = new ArrayList<>();
  651. List<JiaYueWindPowerDqResultCoverGF0012> jiaYueWindPowerDqResultCoverGF0012List = new ArrayList<>();
  652. List<JiaYueWindPowerDqResultCoverGF0013> jiaYueWindPowerDqResultCoverGF0013List = new ArrayList<>();
  653. switch (electricField.getSign()){
  654. case "FD0001":
  655. jiaYueWindPowerDqResultCoverFD0001List = jiaYueWindPowerDqResultCoverFD0001Service.findByDataDate(new Date(startTime));
  656. break;
  657. case "FD0002":
  658. jiaYueWindPowerDqResultCoverFD0002List = jiaYueWindPowerDqResultCoverFD0002Service.findByDataDate(new Date(startTime));
  659. break;
  660. case "FD0003":
  661. jiaYueWindPowerDqResultCoverFD0003List = jiaYueWindPowerDqResultCoverFD0003Service.findByDataDate(new Date(startTime));
  662. break;
  663. case "FD0004":
  664. jiaYueWindPowerDqResultCoverFD0004List = jiaYueWindPowerDqResultCoverFD0004Service.findByDataDate(new Date(startTime));
  665. break;
  666. case "FD0005":
  667. jiaYueWindPowerDqResultCoverFD0005List = jiaYueWindPowerDqResultCoverFD0005Service.findByDataDate(new Date(startTime));
  668. break;
  669. case "FD0006":
  670. jiaYueWindPowerDqResultCoverFD0006List = jiaYueWindPowerDqResultCoverFD0006Service.findByDataDate(new Date(startTime));
  671. break;
  672. case "FD0007":
  673. jiaYueWindPowerDqResultCoverFD0007List = jiaYueWindPowerDqResultCoverFD0007Service.findByDataDate(new Date(startTime));
  674. break;
  675. case "FD0029":
  676. jiaYueWindPowerDqResultCoverFD0029List = jiaYueWindPowerDqResultCoverFD0029Service.findByDataDate(new Date(startTime));
  677. break;
  678. case "FD0030":
  679. jiaYueWindPowerDqResultCoverFD0030List = jiaYueWindPowerDqResultCoverFD0030Service.findByDataDate(new Date(startTime));
  680. break;
  681. case "FD0031":
  682. jiaYueWindPowerDqResultCoverFD0031List = jiaYueWindPowerDqResultCoverFD0031Service.findByDataDate(new Date(startTime));
  683. break;
  684. case "GF0001":
  685. jiaYueWindPowerDqResultCoverGF0001List = jiaYueWindPowerDqResultCoverGF0001Service.findByDataDate(new Date(startTime));
  686. break;
  687. case "GF0002":
  688. jiaYueWindPowerDqResultCoverGF0002List = jiaYueWindPowerDqResultCoverGF0002Service.findByDataDate(new Date(startTime));
  689. break;
  690. case "GF0012":
  691. jiaYueWindPowerDqResultCoverGF0012List = jiaYueWindPowerDqResultCoverGF0012Service.findByDataDate(new Date(startTime));
  692. break;
  693. case "GF0013":
  694. jiaYueWindPowerDqResultCoverGF0013List = jiaYueWindPowerDqResultCoverGF0013Service.findByDataDate(new Date(startTime));
  695. break;
  696. default:
  697. break;
  698. }
  699. for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + timeStep) {
  700. long finalTime = stepTime;
  701. if (electricField.getSign().equals("FD0001")) {
  702. List<JiaYueWindPowerDqResultCoverFD0001> filterList = jiaYueWindPowerDqResultCoverFD0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  703. if (!filterList.isEmpty()) {
  704. content.append(filterList.get(0).getActivePower()).append("|");
  705. } else {
  706. content.append(PLACE);
  707. }
  708. }
  709. if (electricField.getSign().equals("FD0002")) {
  710. List<JiaYueWindPowerDqResultCoverFD0002> filterList = jiaYueWindPowerDqResultCoverFD0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList());
  711. if (!filterList.isEmpty()) {
  712. content.append(filterList.get(0).getActivePower()).append("|");
  713. } else {
  714. content.append(PLACE);
  715. }
  716. }
  717. if (electricField.getSign().equals("FD0003")) {
  718. List<JiaYueWindPowerDqResultCoverFD0003> filterList = jiaYueWindPowerDqResultCoverFD0003List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList());
  719. if (!filterList.isEmpty()) {
  720. content.append(filterList.get(0).getActivePower()).append("|");
  721. } else {
  722. content.append(PLACE);
  723. }
  724. }
  725. if (electricField.getSign().equals("FD0004")) {
  726. List<JiaYueWindPowerDqResultCoverFD0004> filterList = jiaYueWindPowerDqResultCoverFD0004List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  727. if (!filterList.isEmpty()) {
  728. content.append(filterList.get(0).getActivePower()).append("|");
  729. } else {
  730. content.append(PLACE);
  731. }
  732. }
  733. if (electricField.getSign().equals("FD0005")) {
  734. List<JiaYueWindPowerDqResultCoverFD0005> filterList = jiaYueWindPowerDqResultCoverFD0005List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  735. if (!filterList.isEmpty()) {
  736. content.append(filterList.get(0).getActivePower()).append("|");
  737. } else {
  738. content.append(PLACE);
  739. }
  740. }
  741. if (electricField.getSign().equals("FD0006")) {
  742. List<JiaYueWindPowerDqResultCoverFD0006> filterList = jiaYueWindPowerDqResultCoverFD0006List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  743. if (!filterList.isEmpty()) {
  744. content.append(filterList.get(0).getActivePower()).append("|");
  745. } else {
  746. content.append(PLACE);
  747. }
  748. }
  749. if (electricField.getSign().equals("FD0007")) {
  750. List<JiaYueWindPowerDqResultCoverFD0007> filterList = jiaYueWindPowerDqResultCoverFD0007List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  751. if (!filterList.isEmpty()) {
  752. content.append(filterList.get(0).getActivePower()).append("|");
  753. } else {
  754. content.append(PLACE);
  755. }
  756. }
  757. if (electricField.getSign().equals("FD0029")) {
  758. List<JiaYueWindPowerDqResultCoverFD0029> filterList = jiaYueWindPowerDqResultCoverFD0029List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  759. if (!filterList.isEmpty()) {
  760. content.append(filterList.get(0).getActivePower()).append("|");
  761. } else {
  762. content.append(PLACE);
  763. }
  764. }
  765. if (electricField.getSign().equals("FD0030")) {
  766. List<JiaYueWindPowerDqResultCoverFD0030> filterList = jiaYueWindPowerDqResultCoverFD0030List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  767. if (!filterList.isEmpty()) {
  768. content.append(filterList.get(0).getActivePower()).append("|");
  769. } else {
  770. content.append(PLACE);
  771. }
  772. }
  773. if (electricField.getSign().equals("FD0031")) {
  774. List<JiaYueWindPowerDqResultCoverFD0031> filterList = jiaYueWindPowerDqResultCoverFD0031List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  775. if (!filterList.isEmpty()) {
  776. content.append(filterList.get(0).getActivePower()).append("|");
  777. } else {
  778. content.append(PLACE);
  779. }
  780. }
  781. if (electricField.getSign().equals("GF0001")) {
  782. List<JiaYueWindPowerDqResultCoverGF0001> filterList = jiaYueWindPowerDqResultCoverGF0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  783. if (!filterList.isEmpty()) {
  784. content.append(filterList.get(0).getActivePower()).append("|");
  785. } else {
  786. content.append(PLACE);
  787. }
  788. }
  789. if (electricField.getSign().equals("GF0002")) {
  790. List<JiaYueWindPowerDqResultCoverGF0002> filterList = jiaYueWindPowerDqResultCoverGF0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  791. if (!filterList.isEmpty()) {
  792. content.append(filterList.get(0).getActivePower()).append("|");
  793. } else {
  794. content.append(PLACE);
  795. }
  796. }
  797. if (electricField.getSign().equals("GF0012")) {
  798. List<JiaYueWindPowerDqResultCoverGF0012> filterList = jiaYueWindPowerDqResultCoverGF0012List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  799. if (!filterList.isEmpty()) {
  800. content.append(filterList.get(0).getActivePower()).append("|");
  801. } else {
  802. content.append(PLACE);
  803. }
  804. }
  805. if (electricField.getSign().equals("GF0013")) {
  806. List<JiaYueWindPowerDqResultCoverGF0013> filterList = jiaYueWindPowerDqResultCoverGF0013List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  807. if (!filterList.isEmpty()) {
  808. content.append(filterList.get(0).getActivePower()).append("|");
  809. } else {
  810. content.append(PLACE);
  811. }
  812. }
  813. }
  814. List<String> qrCodeContents1 = GzipUtil.pubZipList(content.toString(), packSize);
  815. List<String> result = new ArrayList<>();
  816. String taskNo = getTaskNo(electricField);
  817. for (int i = 0; i < qrCodeContents1.size(); i++) {
  818. JSONObject jsonObject = new JSONObject();
  819. jsonObject.putOnce("taskNo", taskNo);
  820. jsonObject.putOnce("taskType", "stationData-QR");
  821. jsonObject.putOnce("partNo", i + 1);
  822. jsonObject.putOnce("partTotal", qrCodeContents1.size());
  823. jsonObject.putOnce("data", qrCodeContents1.get(i));
  824. result.add(i, jsonObject.toString());
  825. }
  826. return result;
  827. }
  828. /**
  829. * 上报超短期二维码内容生成
  830. *
  831. * @param startTime 开始时间
  832. * @param endTime 结束时间
  833. * @return 二维码生成内容集
  834. * @throws IOException IO异常
  835. * @throws BusinessException 业务异常
  836. */
  837. public List<String> generateUltraShortTermContent(Long startTime, Long endTime, ElectricField electricField) throws IOException, BusinessException {
  838. long timeStep = 900000L;
  839. if (startTime % timeStep != 0) {
  840. startTime = startTime - (startTime % timeStep) + timeStep;
  841. }
  842. StringBuilder content = new StringBuilder();
  843. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  844. content.append(electricField.getStationCode()).append("-").append("ust").append("-").append(1).append("|");
  845. List<Long> lDate = DateMomentUtil.getEveryDay(startTime, endTime);
  846. for (int i = 0; i < lDate.size(); i++) {
  847. content.append(sdf.format(lDate.get(i)));
  848. if (i != lDate.size() - 1) {
  849. content.append(",");
  850. } else {
  851. content.append("|");
  852. }
  853. }
  854. List<JiaYueWindPowerCdqResultCoverFD0001> jiaYueWindPowerCdqResultCoverFD0001List = new ArrayList<>();
  855. List<JiaYueWindPowerCdqResultCoverFD0002> jiaYueWindPowerCdqResultCoverFD0002List = new ArrayList<>();
  856. List<JiaYueWindPowerCdqResultCoverFD0003> jiaYueWindPowerCdqResultCoverFD0003List = new ArrayList<>();
  857. List<JiaYueWindPowerCdqResultCoverFD0004> jiaYueWindPowerCdqResultCoverFD0004List = new ArrayList<>();
  858. List<JiaYueWindPowerCdqResultCoverFD0005> jiaYueWindPowerCdqResultCoverFD0005List = new ArrayList<>();
  859. List<JiaYueWindPowerCdqResultCoverFD0006> jiaYueWindPowerCdqResultCoverFD0006List = new ArrayList<>();
  860. List<JiaYueWindPowerCdqResultCoverFD0007> jiaYueWindPowerCdqResultCoverFD0007List = new ArrayList<>();
  861. List<JiaYueWindPowerCdqResultCoverFD0029> jiaYueWindPowerCdqResultCoverFD0029List = new ArrayList<>();
  862. List<JiaYueWindPowerCdqResultCoverFD0030> jiaYueWindPowerCdqResultCoverFD0030List = new ArrayList<>();
  863. List<JiaYueWindPowerCdqResultCoverFD0031> jiaYueWindPowerCdqResultCoverFD0031List = new ArrayList<>();
  864. List<JiaYueWindPowerCdqResultCoverGF0001> jiaYueWindPowerCdqResultCoverGF0001List = new ArrayList<>();
  865. List<JiaYueWindPowerCdqResultCoverGF0002> jiaYueWindPowerCdqResultCoverGF0002List = new ArrayList<>();
  866. List<JiaYueWindPowerCdqResultCoverGF0012> jiaYueWindPowerCdqResultCoverGF0012List = new ArrayList<>();
  867. List<JiaYueWindPowerCdqResultCoverGF0013> jiaYueWindPowerCdqResultCoverGF0013List = new ArrayList<>();
  868. switch (electricField.getSign()){
  869. case "FD0001":
  870. jiaYueWindPowerCdqResultCoverFD0001List = jiaYueWindPowerCdqResultCoverFD0001Service.findByDataDate(new Date(startTime));
  871. break;
  872. case "FD0002":
  873. jiaYueWindPowerCdqResultCoverFD0002List = jiaYueWindPowerCdqResultCoverFD0002Service.findByDataDate(new Date(startTime));
  874. break;
  875. case "FD0003":
  876. jiaYueWindPowerCdqResultCoverFD0003List = jiaYueWindPowerCdqResultCoverFD0003Service.findByDataDate(new Date(startTime));
  877. break;
  878. case "FD0004":
  879. jiaYueWindPowerCdqResultCoverFD0004List = jiaYueWindPowerCdqResultCoverFD0004Service.findByDataDate(new Date(startTime));
  880. break;
  881. case "FD0005":
  882. jiaYueWindPowerCdqResultCoverFD0005List = jiaYueWindPowerCdqResultCoverFD0005Service.findByDataDate(new Date(startTime));
  883. break;
  884. case "FD0006":
  885. jiaYueWindPowerCdqResultCoverFD0006List = jiaYueWindPowerCdqResultCoverFD0006Service.findByDataDate(new Date(startTime));
  886. break;
  887. case "FD0007":
  888. jiaYueWindPowerCdqResultCoverFD0007List = jiaYueWindPowerCdqResultCoverFD0007Service.findByDataDate(new Date(startTime));
  889. break;
  890. case "FD0029":
  891. jiaYueWindPowerCdqResultCoverFD0029List = jiaYueWindPowerCdqResultCoverFD0029Service.findByDataDate(new Date(startTime));
  892. break;
  893. case "FD0030":
  894. jiaYueWindPowerCdqResultCoverFD0030List = jiaYueWindPowerCdqResultCoverFD0030Service.findByDataDate(new Date(startTime));
  895. break;
  896. case "FD0031":
  897. jiaYueWindPowerCdqResultCoverFD0031List = jiaYueWindPowerCdqResultCoverFD0031Service.findByDataDate(new Date(startTime));
  898. break;
  899. case "GF0001":
  900. jiaYueWindPowerCdqResultCoverGF0001List = jiaYueWindPowerCdqResultCoverGF0001Service.findByDataDate(new Date(startTime));
  901. break;
  902. case "GF0002":
  903. jiaYueWindPowerCdqResultCoverGF0002List = jiaYueWindPowerCdqResultCoverGF0002Service.findByDataDate(new Date(startTime));
  904. break;
  905. case "GF0012":
  906. jiaYueWindPowerCdqResultCoverGF0012List = jiaYueWindPowerCdqResultCoverGF0012Service.findByDataDate(new Date(startTime));
  907. break;
  908. case "GF0013":
  909. jiaYueWindPowerCdqResultCoverGF0013List = jiaYueWindPowerCdqResultCoverGF0013Service.findByDataDate(new Date(startTime));
  910. break;
  911. default:
  912. break;
  913. }
  914. for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + timeStep) {
  915. long finalTime = stepTime;
  916. if (electricField.getSign().equals("FD0001")) {
  917. List<JiaYueWindPowerCdqResultCoverFD0001> filterList = jiaYueWindPowerCdqResultCoverFD0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  918. if (!filterList.isEmpty()) {
  919. content.append(filterList.get(0).getActivePower()).append("|");
  920. } else {
  921. content.append(PLACE);
  922. }
  923. }
  924. if (electricField.getSign().equals("FD0002")) {
  925. List<JiaYueWindPowerCdqResultCoverFD0002> filterList = jiaYueWindPowerCdqResultCoverFD0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList());
  926. if (!filterList.isEmpty()) {
  927. content.append(filterList.get(0).getActivePower()).append("|");
  928. } else {
  929. content.append(PLACE);
  930. }
  931. }
  932. if (electricField.getSign().equals("FD0003")) {
  933. List<JiaYueWindPowerCdqResultCoverFD0003> filterList = jiaYueWindPowerCdqResultCoverFD0003List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList());
  934. if (!filterList.isEmpty()) {
  935. content.append(filterList.get(0).getActivePower()).append("|");
  936. } else {
  937. content.append(PLACE);
  938. }
  939. }
  940. if (electricField.getSign().equals("FD0004")) {
  941. List<JiaYueWindPowerCdqResultCoverFD0004> filterList = jiaYueWindPowerCdqResultCoverFD0004List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  942. if (!filterList.isEmpty()) {
  943. content.append(filterList.get(0).getActivePower()).append("|");
  944. } else {
  945. content.append(PLACE);
  946. }
  947. }
  948. if (electricField.getSign().equals("FD0005")) {
  949. List<JiaYueWindPowerCdqResultCoverFD0005> filterList = jiaYueWindPowerCdqResultCoverFD0005List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  950. if (!filterList.isEmpty()) {
  951. content.append(filterList.get(0).getActivePower()).append("|");
  952. } else {
  953. content.append(PLACE);
  954. }
  955. }
  956. if (electricField.getSign().equals("FD0006")) {
  957. List<JiaYueWindPowerCdqResultCoverFD0006> filterList = jiaYueWindPowerCdqResultCoverFD0006List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  958. if (!filterList.isEmpty()) {
  959. content.append(filterList.get(0).getActivePower()).append("|");
  960. } else {
  961. content.append(PLACE);
  962. }
  963. }
  964. if (electricField.getSign().equals("FD0007")) {
  965. List<JiaYueWindPowerCdqResultCoverFD0007> filterList = jiaYueWindPowerCdqResultCoverFD0007List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  966. if (!filterList.isEmpty()) {
  967. content.append(filterList.get(0).getActivePower()).append("|");
  968. } else {
  969. content.append(PLACE);
  970. }
  971. }
  972. if (electricField.getSign().equals("FD0029")) {
  973. List<JiaYueWindPowerCdqResultCoverFD0029> filterList = jiaYueWindPowerCdqResultCoverFD0029List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  974. if (!filterList.isEmpty()) {
  975. content.append(filterList.get(0).getActivePower()).append("|");
  976. } else {
  977. content.append(PLACE);
  978. }
  979. }
  980. if (electricField.getSign().equals("FD0030")) {
  981. List<JiaYueWindPowerCdqResultCoverFD0030> filterList = jiaYueWindPowerCdqResultCoverFD0030List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  982. if (!filterList.isEmpty()) {
  983. content.append(filterList.get(0).getActivePower()).append("|");
  984. } else {
  985. content.append(PLACE);
  986. }
  987. }
  988. if (electricField.getSign().equals("FD0031")) {
  989. List<JiaYueWindPowerCdqResultCoverFD0031> filterList = jiaYueWindPowerCdqResultCoverFD0031List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  990. if (!filterList.isEmpty()) {
  991. content.append(filterList.get(0).getActivePower()).append("|");
  992. } else {
  993. content.append(PLACE);
  994. }
  995. }
  996. if (electricField.getSign().equals("GF0001")) {
  997. List<JiaYueWindPowerCdqResultCoverGF0001> filterList = jiaYueWindPowerCdqResultCoverGF0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  998. if (!filterList.isEmpty()) {
  999. content.append(filterList.get(0).getActivePower()).append("|");
  1000. } else {
  1001. content.append(PLACE);
  1002. }
  1003. }
  1004. if (electricField.getSign().equals("GF0002")) {
  1005. List<JiaYueWindPowerCdqResultCoverGF0002> filterList = jiaYueWindPowerCdqResultCoverGF0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  1006. if (!filterList.isEmpty()) {
  1007. content.append(filterList.get(0).getActivePower()).append("|");
  1008. } else {
  1009. content.append(PLACE);
  1010. }
  1011. }
  1012. if (electricField.getSign().equals("GF0012")) {
  1013. List<JiaYueWindPowerCdqResultCoverGF0012> filterList = jiaYueWindPowerCdqResultCoverGF0012List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  1014. if (!filterList.isEmpty()) {
  1015. content.append(filterList.get(0).getActivePower()).append("|");
  1016. } else {
  1017. content.append(PLACE);
  1018. }
  1019. }
  1020. if (electricField.getSign().equals("GF0013")) {
  1021. List<JiaYueWindPowerCdqResultCoverGF0013> filterList = jiaYueWindPowerCdqResultCoverGF0013List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList());
  1022. if (!filterList.isEmpty()) {
  1023. content.append(filterList.get(0).getActivePower()).append("|");
  1024. } else {
  1025. content.append(PLACE);
  1026. }
  1027. }
  1028. }
  1029. List<String> qrCodeContents1 = GzipUtil.pubZipList(content.toString(), packSize);
  1030. List<String> result = new ArrayList<>();
  1031. String taskNo = getTaskNo(electricField);
  1032. for (int i = 0; i < qrCodeContents1.size(); i++) {
  1033. JSONObject jsonObject = new JSONObject();
  1034. jsonObject.putOnce("taskNo", taskNo);
  1035. jsonObject.putOnce("taskType", "stationData-QR");
  1036. jsonObject.putOnce("partNo", i + 1);
  1037. jsonObject.putOnce("partTotal", qrCodeContents1.size());
  1038. jsonObject.putOnce("data", qrCodeContents1.get(i));
  1039. result.add(i, jsonObject.toString());
  1040. }
  1041. return result;
  1042. }
  1043. /**
  1044. * 获取taskNo编号
  1045. *
  1046. * @param electricField 场站对象
  1047. * @return 编号
  1048. */
  1049. private String getTaskNo(ElectricField electricField) {
  1050. Date date = DateUtil.date();
  1051. return electricField.getStationCode() + DateUtil.format(date, "yyMMddHHmmss");
  1052. }
  1053. /**
  1054. * 生成回传短期、超短期、实际功率json文件
  1055. * @param map
  1056. */
  1057. public void toJson(Map<String, Object> map) {
  1058. map.entrySet().stream().forEach(entry -> {
  1059. Map<String, Object> value = (Map<String, Object>) entry.getValue();
  1060. value.entrySet().stream().forEach(entry1 -> {
  1061. ObjectMapper objectMapper = new ObjectMapper();
  1062. JSONArray jsonArray = new JSONArray(entry1.getValue().toString());// 将entry1.getValue()转换为JSON数组
  1063. JSONObject jsonObject = jsonArray.getJSONObject(0);// 获取数组中的第一个JSONObject对象
  1064. String json = null;
  1065. String prettyPrintJson = null;
  1066. try {
  1067. json = objectMapper.writeValueAsString(jsonObject);
  1068. Object formattedJson = objectMapper.readValue(json, Object.class);
  1069. prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(formattedJson);
  1070. } catch (JsonProcessingException e) {
  1071. e.printStackTrace();
  1072. }
  1073. this.prettyPrintJson(prettyPrintJson);
  1074. });
  1075. });
  1076. // }
  1077. }
  1078. /**
  1079. * 这几个表清除所有数据,在进行数据同步(基础信息表)
  1080. */
  1081. // @Scheduled(cron = "0 30 0 * * ?")
  1082. // @Scheduled(cron = "0 48 2 * * ?")
  1083. public void synchronizeInfoData() {
  1084. log.info("---------------------------开始同步基础信息---------------------------");
  1085. // // 数据类型信息表
  1086. // List<DataTypeInfo> dataTypeInfoList = dataTypeInfoService.get();
  1087. // // 查询本地所有数据
  1088. // List<DataTypeInfo> dataTypeInfos = dataTypeInfoService.getAll();
  1089. // if (dataTypeInfos != null && dataTypeInfos.size() > 0) {
  1090. // // 先删除数据
  1091. // dataTypeInfoService.deleteAll();
  1092. // }
  1093. // // 将远端数据插入到本地
  1094. // dataTypeInfoService.put(dataTypeInfoList);
  1095. // // 风电场基本信息表(厂商专供)
  1096. // List<WindFarmInfoEncryption> windFarmInfoEncryptionList = windFarmInfoEncryptionService.get();
  1097. // // 查询本地所有数据
  1098. // List<WindFarmInfoEncryption> windFarmInfoEncryptions = windFarmInfoEncryptionService.getAll();
  1099. // if (windFarmInfoEncryptions != null && windFarmInfoEncryptions.size() > 0) {
  1100. // // 先删除数据
  1101. // windFarmInfoEncryptionService.deleteAll();
  1102. // }
  1103. // windFarmInfoEncryptionService.put(windFarmInfoEncryptionList);
  1104. // // 测风塔信息
  1105. // List<WindTowerInfo> windTowerInfoList = windTowerInfoService.get();
  1106. // // 查询本地所有数据
  1107. // List<WindTowerInfo> windTowerInfos = windTowerInfoService.getAll();
  1108. // if (windTowerInfos != null && windTowerInfos.size() > 0) {
  1109. // // 先删除数据
  1110. // windTowerInfoService.deleteAll();
  1111. // }
  1112. // windTowerInfoService.put(windTowerInfoList);
  1113. // // 风电机组基本信息表
  1114. // List<WindUnitInfo> windUnitInfoList = windUnitInfoService.get();
  1115. // // 查询本地所有数据
  1116. // List<WindUnitInfo> windUnitInfos = windUnitInfoService.getAll();
  1117. // if (windUnitInfos != null && windUnitInfos.size() > 0) {
  1118. // // 先删除数据
  1119. // windUnitInfoService.deleteAll();
  1120. // }
  1121. // windUnitInfoService.put(windUnitInfoList);
  1122. // // 风电机组型号基本信息表
  1123. // List<WindUnitModelInfo> windUnitModelInfoList = windUnitModelInfoService.get();
  1124. // // 查询本地所有数据
  1125. // List<WindUnitModelInfo> windUnitModelInfos = windUnitModelInfoService.getAll();
  1126. // if (windUnitModelInfos != null && windUnitModelInfos.size() > 0) {
  1127. // // 先删除数据
  1128. // windUnitModelInfoService.deleteAll();
  1129. // }
  1130. // windUnitModelInfoService.put(windUnitModelInfoList);
  1131. // List<WindUnitModelWsAndPower> windUnitModelWsAndPowerList = windUnitModelWsAndPowerService.get();
  1132. // // 查询本地所有数据
  1133. // List<WindUnitModelWsAndPower> windUnitModelWsAndPowers = windUnitModelWsAndPowerService.getAll();
  1134. // if (windUnitModelWsAndPowers != null && windUnitModelWsAndPowers.size() > 0) {
  1135. // // 先删除数据
  1136. // windUnitModelWsAndPowerService.deleteAll();
  1137. // }
  1138. // windUnitModelWsAndPowerService.put(windUnitModelWsAndPowerList);
  1139. log.info("---------------------------同步基础信息结束---------------------------");
  1140. }
  1141. /**
  1142. * 这几个表每天同步昨天的数据
  1143. */
  1144. // @Scheduled(cron = "0 48 2 * * ?")
  1145. public void synchronizeRealData() {
  1146. log.info("---------------------------开始同步昨日数据---------------------------");
  1147. long time = System.currentTimeMillis() - 86400000l;
  1148. // 获取startTime和endTime
  1149. Date startTime = DateTimeUtil.getDayStartTime(time);
  1150. Date endTime = DateTimeUtil.getDayLastTime(time);
  1151. // List<WindTowerCdqResultCover> windTowerCdqResultCoverList = windTowerCdqResultCoverService.get(startTime, endTime);
  1152. // windTowerCdqResultCoverService.put(windTowerCdqResultCoverList);
  1153. //
  1154. // List<WindPowerCdqResultCover> windPowerCdqResultCoverList = windPowerCdqResultCoverService.get(startTime, endTime);
  1155. // windPowerCdqResultCoverService.put(windPowerCdqResultCoverList);
  1156. //
  1157. // List<WindPowerDqResultCover> windPowerDqResultCoverList = windPowerDqResultCoverService.get(startTime, endTime);
  1158. // windPowerDqResultCoverService.put(windPowerDqResultCoverList);
  1159. // List<WindPowerReal15MinFD0001> windPowerReal15MinFD0001List = windPowerReal15MinFD0001Service.get(startTime, endTime);
  1160. // windPowerReal15MinFD0001Service.put(windPowerReal15MinFD0001List);
  1161. //
  1162. // List<WindPowerReal15MinFD0002> windPowerReal15MinFD0002List = windPowerReal15MinFD0002Service.get(startTime, endTime);
  1163. // windPowerReal15MinFD0002Service.put(windPowerReal15MinFD0002List);
  1164. //
  1165. // List<WindPowerReal15MinFD0003> windPowerReal15MinFD0003List = windPowerReal15MinFD0003Service.get(startTime, endTime);
  1166. // windPowerReal15MinFD0003Service.put(windPowerReal15MinFD0003List);
  1167. //
  1168. // List<WindPowerReal15MinFD0005> windPowerReal15MinFD0005List = windPowerReal15MinFD0005Service.get(startTime, endTime);
  1169. // windPowerReal15MinFD0005Service.put(windPowerReal15MinFD0005List);
  1170. //
  1171. // List<WindPowerReal15MinFD0006> windPowerReal15MinFD0006List = windPowerReal15MinFD0006Service.get(startTime, endTime);
  1172. // windPowerReal15MinFD0006Service.put(windPowerReal15MinFD0006List);
  1173. //
  1174. // List<WindPowerReal15MinFD0007> windPowerReal15MinFD0007List = windPowerReal15MinFD0007Service.get(startTime, endTime);
  1175. // windPowerReal15MinFD0007Service.put(windPowerReal15MinFD0007List);
  1176. // List<WindTower15Min> windTower15MinList = windTower15MinService.get(startTime, endTime);
  1177. // windTower15MinService.put(windTower15MinList);
  1178. //
  1179. //
  1180. // List<WindTowerDqResultCover> windTowerDqResultCoverList = windTowerDqResultCoverService.get(startTime, endTime);
  1181. // windTowerDqResultCoverService.put(windTowerDqResultCoverList);
  1182. log.info("---------------------------同步昨日数据结束---------------------------");
  1183. }
  1184. }