package com.jiayue.ipfcst.client.service; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.jiayue.ipfcst.client.service.impl.JiaYueWindPowerDqResultFD0002CoverServiceImpl; import com.jiayue.ipfcst.client.utils.GzipUtil; import com.jiayue.ipfcst.client.utils.JsonBeanUtil; import com.jiayue.ipfcst.client.utils.TimeUtils; import com.jiayue.ipfcst.common.core.exception.BusinessException; import com.jiayue.ipfcst.common.core.util.DateMomentUtil; import com.jiayue.ipfcst.common.core.util.DateTimeUtil; import com.jiayue.ipp.common.data.entity.*; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; import java.util.Date; import java.util.stream.Collectors; /** * 生成回传数据 * * @Author: tl * @Date: 2023/6/29 9:47 */ @Service @Slf4j @EnableAsync public class GenerateBackPassDataService { private final WindPowerReal15MinFD0001Service windPowerReal15MinFD0001Service; private final WindPowerReal15MinFD0002Service windPowerReal15MinFD0002Service; private final WindPowerReal15MinFD0003Service windPowerReal15MinFD0003Service; private final WindPowerReal15MinFD0004Service windPowerReal15MinFD0004Service; private final WindPowerReal15MinFD0005Service windPowerReal15MinFD0005Service; private final WindPowerReal15MinFD0006Service windPowerReal15MinFD0006Service; private final WindPowerReal15MinFD0007Service windPowerReal15MinFD0007Service; private final WindPowerReal15MinFD0029Service windPowerReal15MinFD0029Service; private final WindPowerReal15MinFD0030Service windPowerReal15MinFD0030Service; private final WindPowerReal15MinFD0031Service windPowerReal15MinFD0031Service; private final PvPowerReal15MinGF0001Service pvPowerReal15MinGF0001Service; private final PvPowerReal15MinGF0002Service pvPowerReal15MinGF0002Service; private final PvPowerReal15MinGF0012Service pvPowerReal15MinGF0012Service; private final PvPowerReal15MinGF0013Service pvPowerReal15MinGF0013Service; private static final String IMAGE_TYPE = "jpg"; private static final String PLACE = "-0.99|"; private static final Long oneDay = 3600 * 24 * 1000L - 1000L; private static final Integer packSize = 2000; private final JiaYueWindPowerDqResultCoverFD0001Service jiaYueWindPowerDqResultCoverFD0001Service; private final JiaYueWindPowerDqResultCoverFD0002Service jiaYueWindPowerDqResultCoverFD0002Service; private final JiaYueWindPowerDqResultCoverFD0003Service jiaYueWindPowerDqResultCoverFD0003Service; private final JiaYueWindPowerDqResultCoverFD0004Service jiaYueWindPowerDqResultCoverFD0004Service; private final JiaYueWindPowerDqResultCoverFD0005Service jiaYueWindPowerDqResultCoverFD0005Service; private final JiaYueWindPowerDqResultCoverFD0006Service jiaYueWindPowerDqResultCoverFD0006Service; private final JiaYueWindPowerDqResultCoverFD0007Service jiaYueWindPowerDqResultCoverFD0007Service; private final JiaYueWindPowerDqResultCoverFD0029Service jiaYueWindPowerDqResultCoverFD0029Service; private final JiaYueWindPowerDqResultCoverFD0030Service jiaYueWindPowerDqResultCoverFD0030Service; private final JiaYueWindPowerDqResultCoverFD0031Service jiaYueWindPowerDqResultCoverFD0031Service; private final JiaYueWindPowerDqResultCoverGF0001Service jiaYueWindPowerDqResultCoverGF0001Service; private final JiaYueWindPowerDqResultCoverGF0002Service jiaYueWindPowerDqResultCoverGF0002Service; private final JiaYueWindPowerDqResultCoverGF0012Service jiaYueWindPowerDqResultCoverGF0012Service; private final JiaYueWindPowerDqResultCoverGF0013Service jiaYueWindPowerDqResultCoverGF0013Service; private final JiaYueWindPowerCdqResultCoverFD0001Service jiaYueWindPowerCdqResultCoverFD0001Service; private final JiaYueWindPowerCdqResultCoverFD0002Service jiaYueWindPowerCdqResultCoverFD0002Service; private final JiaYueWindPowerCdqResultCoverFD0003Service jiaYueWindPowerCdqResultCoverFD0003Service; private final JiaYueWindPowerCdqResultCoverFD0004Service jiaYueWindPowerCdqResultCoverFD0004Service; private final JiaYueWindPowerCdqResultCoverFD0005Service jiaYueWindPowerCdqResultCoverFD0005Service; private final JiaYueWindPowerCdqResultCoverFD0006Service jiaYueWindPowerCdqResultCoverFD0006Service; private final JiaYueWindPowerCdqResultCoverFD0007Service jiaYueWindPowerCdqResultCoverFD0007Service; private final JiaYueWindPowerCdqResultCoverFD0029Service jiaYueWindPowerCdqResultCoverFD0029Service; private final JiaYueWindPowerCdqResultCoverFD0030Service jiaYueWindPowerCdqResultCoverFD0030Service; private final JiaYueWindPowerCdqResultCoverFD0031Service jiaYueWindPowerCdqResultCoverFD0031Service; private final JiaYueWindPowerCdqResultCoverGF0001Service jiaYueWindPowerCdqResultCoverGF0001Service; private final JiaYueWindPowerCdqResultCoverGF0002Service jiaYueWindPowerCdqResultCoverGF0002Service; private final JiaYueWindPowerCdqResultCoverGF0012Service jiaYueWindPowerCdqResultCoverGF0012Service; private final JiaYueWindPowerCdqResultCoverGF0013Service jiaYueWindPowerCdqResultCoverGF0013Service; public GenerateBackPassDataService(PvPowerReal15MinGF0001Service pvPowerReal15MinGF0001Service,PvPowerReal15MinGF0002Service pvPowerReal15MinGF0002Service,PvPowerReal15MinGF0012Service pvPowerReal15MinGF0012Service,PvPowerReal15MinGF0013Service pvPowerReal15MinGF0013Service,WindPowerReal15MinFD0001Service windPowerReal15MinFD0001Service,WindPowerReal15MinFD0002Service windPowerReal15MinFD0002Service,WindPowerReal15MinFD0003Service windPowerReal15MinFD0003Service,WindPowerReal15MinFD0004Service windPowerReal15MinFD0004Service,WindPowerReal15MinFD0005Service windPowerReal15MinFD0005Service, WindPowerReal15MinFD0006Service windPowerReal15MinFD0006Service,WindPowerReal15MinFD0007Service windPowerReal15MinFD0007Service,WindPowerReal15MinFD0029Service windPowerReal15MinFD0029Service,WindPowerReal15MinFD0030Service windPowerReal15MinFD0030Service,WindPowerReal15MinFD0031Service windPowerReal15MinFD0031Service,JiaYueWindPowerDqResultCoverGF0001Service jiaYueWindPowerDqResultCoverGF0001Service,JiaYueWindPowerDqResultCoverGF0002Service jiaYueWindPowerDqResultCoverGF0002Service,JiaYueWindPowerDqResultCoverGF0012Service jiaYueWindPowerDqResultCoverGF0012Service,JiaYueWindPowerDqResultCoverGF0013Service jiaYueWindPowerDqResultCoverGF0013Service,JiaYueWindPowerDqResultCoverFD0001Service jiaYueWindPowerDqResultCoverFD0001Service,JiaYueWindPowerDqResultCoverFD0002Service jiaYueWindPowerDqResultCoverFD0002Service, JiaYueWindPowerDqResultCoverFD0003Service jiaYueWindPowerDqResultCoverFD0003Service,JiaYueWindPowerDqResultCoverFD0004Service jiaYueWindPowerDqResultCoverFD0004Service,JiaYueWindPowerDqResultCoverFD0005Service jiaYueWindPowerDqResultCoverFD0005Service,JiaYueWindPowerDqResultCoverFD0006Service jiaYueWindPowerDqResultCoverFD0006Service, JiaYueWindPowerDqResultCoverFD0007Service jiaYueWindPowerDqResultCoverFD0007Service,JiaYueWindPowerDqResultCoverFD0029Service jiaYueWindPowerDqResultCoverFD0029Service,JiaYueWindPowerDqResultCoverFD0030Service jiaYueWindPowerDqResultCoverFD0030Service,JiaYueWindPowerDqResultCoverFD0031Service jiaYueWindPowerDqResultCoverFD0031Service,JiaYueWindPowerCdqResultCoverGF0001Service jiaYueWindPowerCdqResultCoverGF0001Service,JiaYueWindPowerCdqResultCoverGF0002Service jiaYueWindPowerCdqResultCoverGF0002Service,JiaYueWindPowerCdqResultCoverGF0012Service jiaYueWindPowerCdqResultCoverGF0012Service,JiaYueWindPowerCdqResultCoverGF0013Service jiaYueWindPowerCdqResultCoverGF0013Service,JiaYueWindPowerCdqResultCoverFD0001Service jiaYueWindPowerCdqResultCoverFD0001Service,JiaYueWindPowerCdqResultCoverFD0002Service jiaYueWindPowerCdqResultCoverFD0002Service, JiaYueWindPowerCdqResultCoverFD0003Service jiaYueWindPowerCdqResultCoverFD0003Service,JiaYueWindPowerCdqResultCoverFD0004Service jiaYueWindPowerCdqResultCoverFD0004Service,JiaYueWindPowerCdqResultCoverFD0005Service jiaYueWindPowerCdqResultCoverFD0005Service,JiaYueWindPowerCdqResultCoverFD0006Service jiaYueWindPowerCdqResultCoverFD0006Service, JiaYueWindPowerCdqResultCoverFD0007Service jiaYueWindPowerCdqResultCoverFD0007Service,JiaYueWindPowerCdqResultCoverFD0029Service jiaYueWindPowerCdqResultCoverFD0029Service,JiaYueWindPowerCdqResultCoverFD0030Service jiaYueWindPowerCdqResultCoverFD0030Service,JiaYueWindPowerCdqResultCoverFD0031Service jiaYueWindPowerCdqResultCoverFD0031Service){ this.windPowerReal15MinFD0001Service = windPowerReal15MinFD0001Service; this.windPowerReal15MinFD0002Service = windPowerReal15MinFD0002Service; this.windPowerReal15MinFD0003Service = windPowerReal15MinFD0003Service; this.windPowerReal15MinFD0004Service = windPowerReal15MinFD0004Service; this.windPowerReal15MinFD0005Service = windPowerReal15MinFD0005Service; this.windPowerReal15MinFD0006Service = windPowerReal15MinFD0006Service; this.windPowerReal15MinFD0007Service = windPowerReal15MinFD0007Service; this.windPowerReal15MinFD0029Service = windPowerReal15MinFD0029Service; this.windPowerReal15MinFD0030Service = windPowerReal15MinFD0030Service; this.windPowerReal15MinFD0031Service = windPowerReal15MinFD0031Service; this.pvPowerReal15MinGF0001Service = pvPowerReal15MinGF0001Service; this.pvPowerReal15MinGF0002Service = pvPowerReal15MinGF0002Service; this.pvPowerReal15MinGF0012Service = pvPowerReal15MinGF0012Service; this.pvPowerReal15MinGF0013Service = pvPowerReal15MinGF0013Service; this.jiaYueWindPowerDqResultCoverFD0001Service = jiaYueWindPowerDqResultCoverFD0001Service; this.jiaYueWindPowerDqResultCoverFD0002Service = jiaYueWindPowerDqResultCoverFD0002Service; this.jiaYueWindPowerDqResultCoverFD0003Service = jiaYueWindPowerDqResultCoverFD0003Service; this.jiaYueWindPowerDqResultCoverFD0004Service = jiaYueWindPowerDqResultCoverFD0004Service; this.jiaYueWindPowerDqResultCoverFD0005Service = jiaYueWindPowerDqResultCoverFD0005Service; this.jiaYueWindPowerDqResultCoverFD0006Service = jiaYueWindPowerDqResultCoverFD0006Service; this.jiaYueWindPowerDqResultCoverFD0007Service = jiaYueWindPowerDqResultCoverFD0007Service; this.jiaYueWindPowerDqResultCoverFD0029Service = jiaYueWindPowerDqResultCoverFD0029Service; this.jiaYueWindPowerDqResultCoverFD0030Service = jiaYueWindPowerDqResultCoverFD0030Service; this.jiaYueWindPowerDqResultCoverFD0031Service = jiaYueWindPowerDqResultCoverFD0031Service; this.jiaYueWindPowerDqResultCoverGF0001Service = jiaYueWindPowerDqResultCoverGF0001Service; this.jiaYueWindPowerDqResultCoverGF0002Service = jiaYueWindPowerDqResultCoverGF0002Service; this.jiaYueWindPowerDqResultCoverGF0012Service = jiaYueWindPowerDqResultCoverGF0012Service; this.jiaYueWindPowerDqResultCoverGF0013Service = jiaYueWindPowerDqResultCoverGF0013Service; this.jiaYueWindPowerCdqResultCoverFD0001Service = jiaYueWindPowerCdqResultCoverFD0001Service; this.jiaYueWindPowerCdqResultCoverFD0002Service = jiaYueWindPowerCdqResultCoverFD0002Service; this.jiaYueWindPowerCdqResultCoverFD0003Service = jiaYueWindPowerCdqResultCoverFD0003Service; this.jiaYueWindPowerCdqResultCoverFD0005Service = jiaYueWindPowerCdqResultCoverFD0005Service; this.jiaYueWindPowerCdqResultCoverFD0004Service = jiaYueWindPowerCdqResultCoverFD0004Service; this.jiaYueWindPowerCdqResultCoverFD0006Service = jiaYueWindPowerCdqResultCoverFD0006Service; this.jiaYueWindPowerCdqResultCoverFD0007Service = jiaYueWindPowerCdqResultCoverFD0007Service; this.jiaYueWindPowerCdqResultCoverFD0029Service = jiaYueWindPowerCdqResultCoverFD0029Service; this.jiaYueWindPowerCdqResultCoverFD0030Service = jiaYueWindPowerCdqResultCoverFD0030Service; this.jiaYueWindPowerCdqResultCoverFD0031Service = jiaYueWindPowerCdqResultCoverFD0031Service; this.jiaYueWindPowerCdqResultCoverGF0001Service = jiaYueWindPowerCdqResultCoverGF0001Service; this.jiaYueWindPowerCdqResultCoverGF0002Service = jiaYueWindPowerCdqResultCoverGF0002Service; this.jiaYueWindPowerCdqResultCoverGF0012Service = jiaYueWindPowerCdqResultCoverGF0012Service; this.jiaYueWindPowerCdqResultCoverGF0013Service = jiaYueWindPowerCdqResultCoverGF0013Service; } /** * 每天凌晨一点零五分生成回传短期、超短期。实际功率数据 * @return */ @Scheduled(cron = "0 5 1,12,18 * * *") @Async public Map generateQRCode() { Map map = new HashMap<>(); try { List electricFieldList = new ArrayList<>(); ElectricField electricField = new ElectricField(); electricField.setStationCode("J00770"); electricField.setSign("FD0001"); ElectricField electricField2 = new ElectricField(); electricField2.setStationCode("J00941"); electricField2.setSign("FD0002"); ElectricField electricField3 = new ElectricField(); electricField3.setStationCode("J00942"); electricField3.setSign("FD0003"); // 新增宁夏吴忠石窖沟电站 ElectricField electricField4 = new ElectricField(); electricField4.setStationCode("J00988"); electricField4.setSign("FD0004"); ElectricField electricField5 = new ElectricField(); electricField5.setStationCode("J00929"); electricField5.setSign("FD0005"); ElectricField electricField6 = new ElectricField(); electricField6.setStationCode("J00930"); electricField6.setSign("FD0006"); ElectricField electricField7 = new ElectricField(); electricField7.setStationCode("J00931"); electricField7.setSign("FD0007"); ElectricField electricField29 = new ElectricField(); electricField29.setStationCode("J01034"); electricField29.setSign("FD0029"); ElectricField electricField30 = new ElectricField(); electricField30.setStationCode("J01033"); electricField30.setSign("FD0030"); ElectricField electricField31 = new ElectricField(); electricField30.setStationCode("J01043"); electricField30.setSign("FD0031"); // 光伏电站 ElectricField electricFieldGF0001 = new ElectricField(); electricFieldGF0001.setStationCode("J01056"); electricFieldGF0001.setSign("GF0001"); ElectricField electricFieldGF0002 = new ElectricField(); electricFieldGF0002.setStationCode("J01057"); electricFieldGF0002.setSign("GF0002"); ElectricField electricFieldGF0012 = new ElectricField(); electricFieldGF0012.setStationCode("J01061"); electricFieldGF0012.setSign("GF0012"); ElectricField electricFieldGF0013 = new ElectricField(); electricFieldGF0013.setStationCode("J01062"); electricFieldGF0013.setSign("GF0013"); electricFieldList.add(electricField); electricFieldList.add(electricField2); electricFieldList.add(electricField3); electricFieldList.add(electricField4); electricFieldList.add(electricField5); electricFieldList.add(electricField6); electricFieldList.add(electricField7); electricFieldList.add(electricField29); electricFieldList.add(electricField30); electricFieldList.add(electricField31); electricFieldList.add(electricFieldGF0001); electricFieldList.add(electricFieldGF0002); electricFieldList.add(electricFieldGF0012); electricFieldList.add(electricFieldGF0013); // // // 开始日期和结束日期 // LocalDate startDate = LocalDate.of(2024, 1, 2); // LocalDate endDate = LocalDate.of(2024, 8, 13); // // // 存储结果的列表 // List dateList = new ArrayList<>(); // // // 遍历日期范围 // LocalDate currentDate = startDate; // while (!currentDate.isAfter(endDate)) { // // 获取当天的00:00 // LocalDateTime startOfDay = currentDate.atStartOfDay(); // // // 转换为Date // Date startOfDayDate = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); // // // 添加到列表中 // dateList.add(startOfDayDate); // currentDate = currentDate.plusDays(1); // } // // for (int i = 0; i < dateList.size(); i++) { for (int j = 0; j < electricFieldList.size(); j++) { // map = generateQR(electricFieldList.get(j), dateList.get(i)); map = generateQR(electricFieldList.get(j)); toJson(map); // Thread.sleep(1000); } // } log.info("任务执行完成!"); } catch (Exception e) { e.printStackTrace(); log.error("生成二维码失败"); // 处理生成二维码失败的情况 } return map; } public void prettyPrintJson(String json) { try { TaskResultRequestVO taskResultRequestVO = new TaskResultRequestVO(); log.info("开始回传二维码数据,文件名:{}"); taskResultRequestVO.setTaskResult(String.join("", json)); String url = "https://api.jiayuepowertech.com:8080/task/result"; // 构造请求对象 HttpRequest request = HttpRequest.put(url).body(JsonBeanUtil.beanToJson(taskResultRequestVO)); // 发送请求并获取响应对象 HttpResponse response = request.execute(); log.info("回传二维码数据状态=》{}", response.body()); } catch (Exception e) { log.info("回传二维码数据失败"); e.printStackTrace(); } } @Data class TaskResultRequestVO { private static final long serialVersionUID = 1L; private String taskResult; } /** * @return */ /** * 查询回传短期、超短期、实际功率所需数据 * @param electricField * @return */ public Map generateQR(ElectricField electricField) { Long time = new Date().getTime() - 60 * 60 * 24 * 1000L; // 获取昨日开始时间结束时间 Date startTime = new Date(TimeUtils.getDayStartTime(time)); Date endTime = new Date(startTime.getTime() + 60 * 60 * 24 * 1000L - 1000L); Map map = new HashMap<>(); try { //各个二维码显示设置 Map> dqMap = new TreeMap<>(); Map> cdqMap = new HashMap<>(); Map> rpMap = new HashMap<>(); //超短期 stationData-QR T00003-ust-点位 List ust = generateUltraShortTermContent(startTime.getTime(), startTime.getTime() + 3600 * 24 * 1000L - 1000, electricField); cdqMap.put("超短期第1点数据", ust); //短期 List st = generateShortTermContent(startTime.getTime()- 3600 * 24 * 1000L, endTime.getTime()- 3600 * 24 * 1000L, electricField); //二维码名字 StringBuilder name = new StringBuilder("E1短期"); dqMap.put(name.toString(), st); //实际功率stationData-QR T00003-rp List rp = generateRealPowerCodeContent(startTime.getTime(), endTime.getTime(), electricField); rpMap.put("实际功率", rp); map.put("ultraShortTerm", cdqMap); map.put("shortTerm", dqMap); map.put("realPower", rpMap); } catch (Exception e) { e.printStackTrace(); } return map; } /** * 实际功率二维码内容生成 * * @param startTime 开始时间 * @param endTime 结束时间 * @return 二维码生成内容集 * @throws IOException io异常 * @throws BusinessException 业务异常 */ public List generateRealPowerCodeContent(Long startTime, Long endTime, ElectricField electricField) throws IOException, BusinessException { long timeStep = 900000L; if (startTime % timeStep != 0) { startTime = startTime - (startTime % timeStep) + timeStep; } StringBuilder content = new StringBuilder(); StringBuilder instContent = new StringBuilder(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); StringBuilder stringBuilder = new StringBuilder(); //T00003-rp|2023-04-14 stringBuilder.append(electricField.getStationCode()).append("-").append("rp").append("|").append(sdf.format(startTime)).append("|"); List windPowerReal15MinFD0001List = new ArrayList<>(); List windPowerReal15MinFD0002List = new ArrayList<>(); List windPowerReal15MinFD0003List = new ArrayList<>(); List windPowerReal15MinFD0004List = new ArrayList<>(); List windPowerReal15MinFD0005List = new ArrayList<>(); List windPowerReal15MinFD0006List = new ArrayList<>(); List windPowerReal15MinFD0007List = new ArrayList<>(); List windPowerReal15MinFD0029List = new ArrayList<>(); List windPowerReal15MinFD0030List = new ArrayList<>(); List windPowerReal15MinFD0031List = new ArrayList<>(); List pvPowerReal15MinGF0001List = new ArrayList<>(); List pvPowerReal15MinGF0002List = new ArrayList<>(); List pvPowerReal15MinGF0012List = new ArrayList<>(); List pvPowerReal15MinGF0013List = new ArrayList<>(); switch (electricField.getSign()){ case "FD0001": windPowerReal15MinFD0001List = windPowerReal15MinFD0001Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0002": windPowerReal15MinFD0002List = windPowerReal15MinFD0002Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0003": windPowerReal15MinFD0003List = windPowerReal15MinFD0003Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0004": windPowerReal15MinFD0004List = windPowerReal15MinFD0004Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0005": windPowerReal15MinFD0005List = windPowerReal15MinFD0005Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0006": windPowerReal15MinFD0006List = windPowerReal15MinFD0006Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0007": windPowerReal15MinFD0007List = windPowerReal15MinFD0007Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0029": windPowerReal15MinFD0029List = windPowerReal15MinFD0029Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0030": windPowerReal15MinFD0030List = windPowerReal15MinFD0030Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "FD0031": windPowerReal15MinFD0031List = windPowerReal15MinFD0031Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "GF0001": pvPowerReal15MinGF0001List = pvPowerReal15MinGF0001Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "GF0002": pvPowerReal15MinGF0002List = pvPowerReal15MinGF0002Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "GF0012": pvPowerReal15MinGF0012List = pvPowerReal15MinGF0012Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; case "GF0013": pvPowerReal15MinGF0013List = pvPowerReal15MinGF0013Service.getAll(new Date(startTime), new Date(startTime + 24 * 60 * 60 * 1000L - 1000)); break; default: break; } for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + timeStep) { long finalTime = stepTime; if (electricField.getSign().equals("FD0001")) { List filterList = windPowerReal15MinFD0001List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0001 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0002")) { List filterList = windPowerReal15MinFD0002List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0002 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0003")) { List filterList = windPowerReal15MinFD0003List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0003 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0004")) { List filterList = windPowerReal15MinFD0004List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0004 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0005")) { List filterList = windPowerReal15MinFD0005List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0005 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0006")) { List filterList = windPowerReal15MinFD0006List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0006 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0007")) { List filterList = windPowerReal15MinFD0007List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0007 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0029")) { List filterList = windPowerReal15MinFD0029List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0029 p : filterList) { avg = avg.add(new BigDecimal(p.getActivePower())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0030")) { List filterList = windPowerReal15MinFD0030List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0030 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("FD0031")) { List filterList = windPowerReal15MinFD0031List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (WindPowerReal15MinFD0031 p : filterList) { avg = avg.add(new BigDecimal(p.getValue())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getValue()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("GF0001")) { List filterList = pvPowerReal15MinGF0001List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (PvPowerReal15MinGF0001 p : filterList) { avg = avg.add(new BigDecimal(p.getActivePower())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("GF0002")) { List filterList = pvPowerReal15MinGF0002List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (PvPowerReal15MinGF0002 p : filterList) { avg = avg.add(new BigDecimal(p.getActivePower())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("GF0012")) { List filterList = pvPowerReal15MinGF0012List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (PvPowerReal15MinGF0012 p : filterList) { avg = avg.add(new BigDecimal(p.getActivePower())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } if (electricField.getSign().equals("GF0013")) { List filterList = pvPowerReal15MinGF0013List.stream().filter(p -> p.getDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); BigDecimal avg = new BigDecimal(0); //取前15分钟的平均值 13:30取13:16-13:30的平均值 for (PvPowerReal15MinGF0013 p : filterList) { avg = avg.add(new BigDecimal(p.getActivePower())); } if (!filterList.isEmpty()) { content.append(avg.divide(new BigDecimal(filterList.size()), 2, RoundingMode.HALF_UP)).append("|"); instContent.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); instContent.append(PLACE); } } } stringBuilder.append(content); stringBuilder.append(instContent); List qrCodeContents = GzipUtil.pubZipList(stringBuilder.toString(), packSize); List result = new ArrayList<>(); String taskNo = getTaskNo(electricField); for (int i = 0; i < qrCodeContents.size(); i++) { JSONObject jsonObject = new JSONObject(); jsonObject.putOnce("taskNo", taskNo); jsonObject.putOnce("taskType", "stationData-QR"); jsonObject.putOnce("partNo", i + 1); jsonObject.putOnce("partTotal", qrCodeContents.size()); jsonObject.putOnce("data", qrCodeContents.get(i)); result.add(i, jsonObject.toString()); } return result; } /** * 上报短期二维码内容生成 * * @param startTime 开始时间 * @param endTime 结束时间 * @return 二维码生成内容集 * @throws IOException IO异常 * @throws BusinessException 业务异常 */ public List generateShortTermContent(Long startTime, Long endTime, ElectricField electricField) throws IOException, BusinessException { long timeStep = 900000L; if (startTime % timeStep != 0) { startTime = startTime - (startTime % timeStep) + timeStep; } StringBuilder content = new StringBuilder(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); StringBuilder name = new StringBuilder("E1"); content.append(electricField.getStationCode()).append("-").append("st").append("-").append(name).append("|"); List lDate = DateMomentUtil.getEveryDay(startTime+24 * 60 * 60 * 1000 , startTime + 48 * 60 * 60 * 1000 - 1000L); for (int i = 0; i < lDate.size(); i++) { content.append(sdf.format(lDate.get(i))); if (i != lDate.size() - 1) { content.append(","); } else { content.append("|"); } } List jiaYueWindPowerDqResultCoverFD0001List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0002List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0003List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0004List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0005List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0006List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0007List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0029List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0030List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverFD0031List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverGF0001List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverGF0002List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverGF0012List = new ArrayList<>(); List jiaYueWindPowerDqResultCoverGF0013List = new ArrayList<>(); switch (electricField.getSign()){ case "FD0001": jiaYueWindPowerDqResultCoverFD0001List = jiaYueWindPowerDqResultCoverFD0001Service.findByDataDate(new Date(startTime)); break; case "FD0002": jiaYueWindPowerDqResultCoverFD0002List = jiaYueWindPowerDqResultCoverFD0002Service.findByDataDate(new Date(startTime)); break; case "FD0003": jiaYueWindPowerDqResultCoverFD0003List = jiaYueWindPowerDqResultCoverFD0003Service.findByDataDate(new Date(startTime)); break; case "FD0004": jiaYueWindPowerDqResultCoverFD0004List = jiaYueWindPowerDqResultCoverFD0004Service.findByDataDate(new Date(startTime)); break; case "FD0005": jiaYueWindPowerDqResultCoverFD0005List = jiaYueWindPowerDqResultCoverFD0005Service.findByDataDate(new Date(startTime)); break; case "FD0006": jiaYueWindPowerDqResultCoverFD0006List = jiaYueWindPowerDqResultCoverFD0006Service.findByDataDate(new Date(startTime)); break; case "FD0007": jiaYueWindPowerDqResultCoverFD0007List = jiaYueWindPowerDqResultCoverFD0007Service.findByDataDate(new Date(startTime)); break; case "FD0029": jiaYueWindPowerDqResultCoverFD0029List = jiaYueWindPowerDqResultCoverFD0029Service.findByDataDate(new Date(startTime)); break; case "FD0030": jiaYueWindPowerDqResultCoverFD0030List = jiaYueWindPowerDqResultCoverFD0030Service.findByDataDate(new Date(startTime)); break; case "FD0031": jiaYueWindPowerDqResultCoverFD0031List = jiaYueWindPowerDqResultCoverFD0031Service.findByDataDate(new Date(startTime)); break; case "GF0001": jiaYueWindPowerDqResultCoverGF0001List = jiaYueWindPowerDqResultCoverGF0001Service.findByDataDate(new Date(startTime)); break; case "GF0002": jiaYueWindPowerDqResultCoverGF0002List = jiaYueWindPowerDqResultCoverGF0002Service.findByDataDate(new Date(startTime)); break; case "GF0012": jiaYueWindPowerDqResultCoverGF0012List = jiaYueWindPowerDqResultCoverGF0012Service.findByDataDate(new Date(startTime)); break; case "GF0013": jiaYueWindPowerDqResultCoverGF0013List = jiaYueWindPowerDqResultCoverGF0013Service.findByDataDate(new Date(startTime)); break; default: break; } for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + timeStep) { long finalTime = stepTime; if (electricField.getSign().equals("FD0001")) { List filterList = jiaYueWindPowerDqResultCoverFD0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0002")) { List filterList = jiaYueWindPowerDqResultCoverFD0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0003")) { List filterList = jiaYueWindPowerDqResultCoverFD0003List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0004")) { List filterList = jiaYueWindPowerDqResultCoverFD0004List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0005")) { List filterList = jiaYueWindPowerDqResultCoverFD0005List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0006")) { List filterList = jiaYueWindPowerDqResultCoverFD0006List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0007")) { List filterList = jiaYueWindPowerDqResultCoverFD0007List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0029")) { List filterList = jiaYueWindPowerDqResultCoverFD0029List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0030")) { List filterList = jiaYueWindPowerDqResultCoverFD0030List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0031")) { List filterList = jiaYueWindPowerDqResultCoverFD0031List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0001")) { List filterList = jiaYueWindPowerDqResultCoverGF0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0002")) { List filterList = jiaYueWindPowerDqResultCoverGF0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0012")) { List filterList = jiaYueWindPowerDqResultCoverGF0012List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0013")) { List filterList = jiaYueWindPowerDqResultCoverGF0013List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } } List qrCodeContents1 = GzipUtil.pubZipList(content.toString(), packSize); List result = new ArrayList<>(); String taskNo = getTaskNo(electricField); for (int i = 0; i < qrCodeContents1.size(); i++) { JSONObject jsonObject = new JSONObject(); jsonObject.putOnce("taskNo", taskNo); jsonObject.putOnce("taskType", "stationData-QR"); jsonObject.putOnce("partNo", i + 1); jsonObject.putOnce("partTotal", qrCodeContents1.size()); jsonObject.putOnce("data", qrCodeContents1.get(i)); result.add(i, jsonObject.toString()); } return result; } /** * 上报超短期二维码内容生成 * * @param startTime 开始时间 * @param endTime 结束时间 * @return 二维码生成内容集 * @throws IOException IO异常 * @throws BusinessException 业务异常 */ public List generateUltraShortTermContent(Long startTime, Long endTime, ElectricField electricField) throws IOException, BusinessException { long timeStep = 900000L; if (startTime % timeStep != 0) { startTime = startTime - (startTime % timeStep) + timeStep; } StringBuilder content = new StringBuilder(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); content.append(electricField.getStationCode()).append("-").append("ust").append("-").append(1).append("|"); List lDate = DateMomentUtil.getEveryDay(startTime, endTime); for (int i = 0; i < lDate.size(); i++) { content.append(sdf.format(lDate.get(i))); if (i != lDate.size() - 1) { content.append(","); } else { content.append("|"); } } List jiaYueWindPowerCdqResultCoverFD0001List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0002List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0003List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0004List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0005List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0006List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0007List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0029List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0030List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverFD0031List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverGF0001List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverGF0002List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverGF0012List = new ArrayList<>(); List jiaYueWindPowerCdqResultCoverGF0013List = new ArrayList<>(); switch (electricField.getSign()){ case "FD0001": jiaYueWindPowerCdqResultCoverFD0001List = jiaYueWindPowerCdqResultCoverFD0001Service.findByDataDate(new Date(startTime)); break; case "FD0002": jiaYueWindPowerCdqResultCoverFD0002List = jiaYueWindPowerCdqResultCoverFD0002Service.findByDataDate(new Date(startTime)); break; case "FD0003": jiaYueWindPowerCdqResultCoverFD0003List = jiaYueWindPowerCdqResultCoverFD0003Service.findByDataDate(new Date(startTime)); break; case "FD0004": jiaYueWindPowerCdqResultCoverFD0004List = jiaYueWindPowerCdqResultCoverFD0004Service.findByDataDate(new Date(startTime)); break; case "FD0005": jiaYueWindPowerCdqResultCoverFD0005List = jiaYueWindPowerCdqResultCoverFD0005Service.findByDataDate(new Date(startTime)); break; case "FD0006": jiaYueWindPowerCdqResultCoverFD0006List = jiaYueWindPowerCdqResultCoverFD0006Service.findByDataDate(new Date(startTime)); break; case "FD0007": jiaYueWindPowerCdqResultCoverFD0007List = jiaYueWindPowerCdqResultCoverFD0007Service.findByDataDate(new Date(startTime)); break; case "FD0029": jiaYueWindPowerCdqResultCoverFD0029List = jiaYueWindPowerCdqResultCoverFD0029Service.findByDataDate(new Date(startTime)); break; case "FD0030": jiaYueWindPowerCdqResultCoverFD0030List = jiaYueWindPowerCdqResultCoverFD0030Service.findByDataDate(new Date(startTime)); break; case "FD0031": jiaYueWindPowerCdqResultCoverFD0031List = jiaYueWindPowerCdqResultCoverFD0031Service.findByDataDate(new Date(startTime)); break; case "GF0001": jiaYueWindPowerCdqResultCoverGF0001List = jiaYueWindPowerCdqResultCoverGF0001Service.findByDataDate(new Date(startTime)); break; case "GF0002": jiaYueWindPowerCdqResultCoverGF0002List = jiaYueWindPowerCdqResultCoverGF0002Service.findByDataDate(new Date(startTime)); break; case "GF0012": jiaYueWindPowerCdqResultCoverGF0012List = jiaYueWindPowerCdqResultCoverGF0012Service.findByDataDate(new Date(startTime)); break; case "GF0013": jiaYueWindPowerCdqResultCoverGF0013List = jiaYueWindPowerCdqResultCoverGF0013Service.findByDataDate(new Date(startTime)); break; default: break; } for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + timeStep) { long finalTime = stepTime; if (electricField.getSign().equals("FD0001")) { List filterList = jiaYueWindPowerCdqResultCoverFD0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0002")) { List filterList = jiaYueWindPowerCdqResultCoverFD0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0003")) { List filterList = jiaYueWindPowerCdqResultCoverFD0003List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond()* 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0004")) { List filterList = jiaYueWindPowerCdqResultCoverFD0004List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0005")) { List filterList = jiaYueWindPowerCdqResultCoverFD0005List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0006")) { List filterList = jiaYueWindPowerCdqResultCoverFD0006List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0007")) { List filterList = jiaYueWindPowerCdqResultCoverFD0007List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0029")) { List filterList = jiaYueWindPowerCdqResultCoverFD0029List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0030")) { List filterList = jiaYueWindPowerCdqResultCoverFD0030List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("FD0031")) { List filterList = jiaYueWindPowerCdqResultCoverFD0031List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0001")) { List filterList = jiaYueWindPowerCdqResultCoverGF0001List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0002")) { List filterList = jiaYueWindPowerCdqResultCoverGF0002List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0012")) { List filterList = jiaYueWindPowerCdqResultCoverGF0012List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } if (electricField.getSign().equals("GF0013")) { List filterList = jiaYueWindPowerCdqResultCoverGF0013List.stream().filter(p -> p.getPreDateTime().atZone(ZoneId.systemDefault()).toEpochSecond() * 1000L == finalTime).collect(Collectors.toList()); if (!filterList.isEmpty()) { content.append(filterList.get(0).getActivePower()).append("|"); } else { content.append(PLACE); } } } List qrCodeContents1 = GzipUtil.pubZipList(content.toString(), packSize); List result = new ArrayList<>(); String taskNo = getTaskNo(electricField); for (int i = 0; i < qrCodeContents1.size(); i++) { JSONObject jsonObject = new JSONObject(); jsonObject.putOnce("taskNo", taskNo); jsonObject.putOnce("taskType", "stationData-QR"); jsonObject.putOnce("partNo", i + 1); jsonObject.putOnce("partTotal", qrCodeContents1.size()); jsonObject.putOnce("data", qrCodeContents1.get(i)); result.add(i, jsonObject.toString()); } return result; } /** * 获取taskNo编号 * * @param electricField 场站对象 * @return 编号 */ private String getTaskNo(ElectricField electricField) { Date date = DateUtil.date(); return electricField.getStationCode() + DateUtil.format(date, "yyMMddHHmmss"); } /** * 生成回传短期、超短期、实际功率json文件 * @param map */ public void toJson(Map map) { map.entrySet().stream().forEach(entry -> { Map value = (Map) entry.getValue(); value.entrySet().stream().forEach(entry1 -> { ObjectMapper objectMapper = new ObjectMapper(); JSONArray jsonArray = new JSONArray(entry1.getValue().toString());// 将entry1.getValue()转换为JSON数组 JSONObject jsonObject = jsonArray.getJSONObject(0);// 获取数组中的第一个JSONObject对象 String json = null; String prettyPrintJson = null; try { json = objectMapper.writeValueAsString(jsonObject); Object formattedJson = objectMapper.readValue(json, Object.class); prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(formattedJson); } catch (JsonProcessingException e) { e.printStackTrace(); } this.prettyPrintJson(prettyPrintJson); }); }); // } } /** * 这几个表清除所有数据,在进行数据同步(基础信息表) */ // @Scheduled(cron = "0 30 0 * * ?") // @Scheduled(cron = "0 48 2 * * ?") public void synchronizeInfoData() { log.info("---------------------------开始同步基础信息---------------------------"); // // 数据类型信息表 // List dataTypeInfoList = dataTypeInfoService.get(); // // 查询本地所有数据 // List dataTypeInfos = dataTypeInfoService.getAll(); // if (dataTypeInfos != null && dataTypeInfos.size() > 0) { // // 先删除数据 // dataTypeInfoService.deleteAll(); // } // // 将远端数据插入到本地 // dataTypeInfoService.put(dataTypeInfoList); // // 风电场基本信息表(厂商专供) // List windFarmInfoEncryptionList = windFarmInfoEncryptionService.get(); // // 查询本地所有数据 // List windFarmInfoEncryptions = windFarmInfoEncryptionService.getAll(); // if (windFarmInfoEncryptions != null && windFarmInfoEncryptions.size() > 0) { // // 先删除数据 // windFarmInfoEncryptionService.deleteAll(); // } // windFarmInfoEncryptionService.put(windFarmInfoEncryptionList); // // 测风塔信息 // List windTowerInfoList = windTowerInfoService.get(); // // 查询本地所有数据 // List windTowerInfos = windTowerInfoService.getAll(); // if (windTowerInfos != null && windTowerInfos.size() > 0) { // // 先删除数据 // windTowerInfoService.deleteAll(); // } // windTowerInfoService.put(windTowerInfoList); // // 风电机组基本信息表 // List windUnitInfoList = windUnitInfoService.get(); // // 查询本地所有数据 // List windUnitInfos = windUnitInfoService.getAll(); // if (windUnitInfos != null && windUnitInfos.size() > 0) { // // 先删除数据 // windUnitInfoService.deleteAll(); // } // windUnitInfoService.put(windUnitInfoList); // // 风电机组型号基本信息表 // List windUnitModelInfoList = windUnitModelInfoService.get(); // // 查询本地所有数据 // List windUnitModelInfos = windUnitModelInfoService.getAll(); // if (windUnitModelInfos != null && windUnitModelInfos.size() > 0) { // // 先删除数据 // windUnitModelInfoService.deleteAll(); // } // windUnitModelInfoService.put(windUnitModelInfoList); // List windUnitModelWsAndPowerList = windUnitModelWsAndPowerService.get(); // // 查询本地所有数据 // List windUnitModelWsAndPowers = windUnitModelWsAndPowerService.getAll(); // if (windUnitModelWsAndPowers != null && windUnitModelWsAndPowers.size() > 0) { // // 先删除数据 // windUnitModelWsAndPowerService.deleteAll(); // } // windUnitModelWsAndPowerService.put(windUnitModelWsAndPowerList); log.info("---------------------------同步基础信息结束---------------------------"); } /** * 这几个表每天同步昨天的数据 */ // @Scheduled(cron = "0 48 2 * * ?") public void synchronizeRealData() { log.info("---------------------------开始同步昨日数据---------------------------"); long time = System.currentTimeMillis() - 86400000l; // 获取startTime和endTime Date startTime = DateTimeUtil.getDayStartTime(time); Date endTime = DateTimeUtil.getDayLastTime(time); // List windTowerCdqResultCoverList = windTowerCdqResultCoverService.get(startTime, endTime); // windTowerCdqResultCoverService.put(windTowerCdqResultCoverList); // // List windPowerCdqResultCoverList = windPowerCdqResultCoverService.get(startTime, endTime); // windPowerCdqResultCoverService.put(windPowerCdqResultCoverList); // // List windPowerDqResultCoverList = windPowerDqResultCoverService.get(startTime, endTime); // windPowerDqResultCoverService.put(windPowerDqResultCoverList); // List windPowerReal15MinFD0001List = windPowerReal15MinFD0001Service.get(startTime, endTime); // windPowerReal15MinFD0001Service.put(windPowerReal15MinFD0001List); // // List windPowerReal15MinFD0002List = windPowerReal15MinFD0002Service.get(startTime, endTime); // windPowerReal15MinFD0002Service.put(windPowerReal15MinFD0002List); // // List windPowerReal15MinFD0003List = windPowerReal15MinFD0003Service.get(startTime, endTime); // windPowerReal15MinFD0003Service.put(windPowerReal15MinFD0003List); // // List windPowerReal15MinFD0005List = windPowerReal15MinFD0005Service.get(startTime, endTime); // windPowerReal15MinFD0005Service.put(windPowerReal15MinFD0005List); // // List windPowerReal15MinFD0006List = windPowerReal15MinFD0006Service.get(startTime, endTime); // windPowerReal15MinFD0006Service.put(windPowerReal15MinFD0006List); // // List windPowerReal15MinFD0007List = windPowerReal15MinFD0007Service.get(startTime, endTime); // windPowerReal15MinFD0007Service.put(windPowerReal15MinFD0007List); // List windTower15MinList = windTower15MinService.get(startTime, endTime); // windTower15MinService.put(windTower15MinList); // // // List windTowerDqResultCoverList = windTowerDqResultCoverService.get(startTime, endTime); // windTowerDqResultCoverService.put(windTowerDqResultCoverList); log.info("---------------------------同步昨日数据结束---------------------------"); } }