123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- package com.jiayue.biz.job;
- import ch.qos.logback.classic.spi.STEUtil;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.date.DateTime;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.db.Entity;
- import cn.hutool.json.JSONObject;
- import cn.hutool.json.JSONUtil;
- import com.jiayue.biz.api.apiHDY;
- import com.jiayue.biz.domain.*;
- import com.jiayue.biz.service.*;
- import com.jiayue.biz.service.impl.*;
- import com.jiayue.biz.util.CalculationUtil;
- import com.jiayue.biz.util.DateTimeUtil;
- import com.jiayue.common.utils.DateUtil;
- import lombok.AllArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import org.springframework.scheduling.annotation.EnableScheduling;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import java.beans.IntrospectionException;
- import java.beans.PropertyDescriptor;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.sql.Timestamp;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.stream.Collectors;
- @Slf4j
- @Service
- @EnableScheduling
- @AllArgsConstructor
- public class AirDensityJob {
- private final WindTowerCalculationDataServiceImpl windTowerCalculationDataService;
- private final WindTowerInfoServiceImpl windTowerInfoService;
- private final WindDirectionStatisticsDataServiceImpl windDirectionStatisticsDataService;
- private final EquipmentAttributeService equipmentAttributeService;
- private final StatisticsSituationServiceImpl statisticsSituationService;
- private final ProphaseAnemometryDataService prophaseAnemometryDataService;
- private final ProphaseWeatherDataService prophaseWeatherDataService;
- private final StationInfoService stationInfoService;
- private final MongoTemplate mongoTemplate;
- private final com.jiayue.biz.api.apiHDY apiHDY;
- private final FanModelDataService fanModelDataService;
- private final TotalBatteryDataService totalBatteryDataService;
- @Scheduled(cron = "0 0 19 * * ?")
- public void AirDensityCalculation() {
- List<WindTowerInfo> windTowerInfoList = windTowerInfoService.list();
- // 统计概述信息
- List<StatisticsSituation> statisticsSituations = statisticsSituationService.list();
- // 设备属性信息
- List<EquipmentAttribute> equipmentAttributeList = equipmentAttributeService.list();
- SimpleDateFormat sdf = new SimpleDateFormat("d");
- //前7天
- Date startDate = DateTimeUtil.getDayStartTime(new Date().getTime() - 60 * 60 * 24 * 1000 * 8);
- //如果为月初的前7天 取 月初时间 并且排除掉月初
- if (Integer.parseInt(sdf.format(new Date())) <= 7 && !sdf.format(new Date()).equals("1")) {
- startDate = DateUtil.beginOfMonth(new Date());
- }
- //前一天23点59分
- Date endDate = DateTimeUtil.getDayLastTime(DateUtil.yesterday().getTime());
- //传入时间的月末
- Date endMonthDate = DateTimeUtil.endOfMonth(endDate);
- for (WindTowerInfo windTowerInfo : windTowerInfoList) {
- WindTowerCalculationData lastData = windTowerCalculationDataService.getLastDataCalculation(windTowerInfo.getEquipmentNo());
- List<Entity> lastRealData = prophaseWeatherDataService.getLastData(windTowerInfo.getEquipmentNo());
- if (lastData != null && lastRealData != null) {
- Timestamp timestamp = (Timestamp) lastRealData.get(0).get("last (ts)");
- //获取统计数据最后数据的时间
- long lastTime = DateUtil.endOfDay(lastData.getTime()).getTime();
- //获取邮件数据最后数据的时间
- long realTime = DateUtil.endOfDay(new Date(timestamp.getTime())).getTime();
- //如果两个时间相等则不需要计算
- if (lastTime == realTime) {
- continue;
- }
- //如果邮件的数据比统计数据的时候大8天 则取统计数据的时间作为开始时间
- if (realTime - lastTime >= 60 * 60 * 24 * 1000 * 8) {
- startDate = new Date(lastTime);
- }
- }else {
- List<Entity> firstRealData = prophaseWeatherDataService.getFirstData(windTowerInfo.getEquipmentNo());
- if(firstRealData.size() > 0){
- startDate = (Timestamp) firstRealData.get(0).get("first (ts)");
- }
- }
- //传入时间的月初
- Date startMonthDate = DateTimeUtil.beginOfMonth(startDate);
- //风数据查询
- List<ProphaseAnemometryData> prophaseAnemometryDataList = prophaseAnemometryDataService.selectAll(windTowerInfo.getEquipmentNo(), new Timestamp(startMonthDate.getTime()), new Timestamp(endMonthDate.getTime()));
- //环境数据查询
- List<ProphaseWeatherData> prophaseWeatherDataList = prophaseWeatherDataService.selectPublicData(windTowerInfo.getEquipmentNo(), new Timestamp(startMonthDate.getTime()), new Timestamp(endMonthDate.getTime()));
- //统计数据
- List<WindTowerCalculationData> windTowerCalculationDataList = windTowerCalculationDataService.getByBetweenTimeAndEquipmentId(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo());
- //小时平均风速风功率密度
- ArrayList<WindTowerCalculationData> wsAndWpdList = windTowerCalculationDataService.calculateWindPowerDensity(startDate.getTime(), endDate.getTime(), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
- ArrayList<WindTowerCalculationData> dataList = new ArrayList<>(wsAndWpdList);
- //每小时风切变指数
- ArrayList<WindTowerCalculationData> windShearList = windTowerCalculationDataService.calculateWindPowerShear(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, windTowerCalculationDataList);
- dataList.addAll(windShearList);
- //日平均温度
- ArrayList<WindTowerCalculationData> tList = windTowerCalculationDataService.tDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
- dataList.addAll(tList);
- //日平均气压
- ArrayList<WindTowerCalculationData> paList = windTowerCalculationDataService.paDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
- dataList.addAll(paList);
- //发电量与满发小时数
- ArrayList<WindTowerCalculationData> calculateBattery = windTowerCalculationDataService.calculateBattery(startDate.getTime(), endDate.getTime(), windTowerInfo, prophaseAnemometryDataList, equipmentAttributeList, windTowerCalculationDataList);
- dataList.addAll(calculateBattery);
- //日平均空气密度
- ArrayList<WindTowerCalculationData> airList = windTowerCalculationDataService.airDensityDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
- dataList.addAll(airList);
- //日平均风速标差
- ArrayList<WindTowerCalculationData> staDay = windTowerCalculationDataService.calculateStaDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
- dataList.addAll(staDay);
- //日平均风速
- ArrayList<WindTowerCalculationData> wsDayList = windTowerCalculationDataService.wsDay(startDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wsDayList);
- //日平均湍流
- ArrayList<WindTowerCalculationData> turList = windTowerCalculationDataService.turbulenceDay(startDate, endDate, windTowerInfo.getEquipmentNo(), equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
- dataList.addAll(turList);
- //日平均风切变
- ArrayList<WindTowerCalculationData> windShearDay = windTowerCalculationDataService.shearDay(startDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
- dataList.addAll(windShearDay);
- //日平均风功率密度
- ArrayList<WindTowerCalculationData> wpdDayList = windTowerCalculationDataService.wpdDay(startDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wpdDayList);
- //如果结束时间和数据统计的时间相差大于30天就分割月份进行计算
- if (endDate.getTime() - startDate.getTime() > 86400000L * 30) {
- List<Long> dateTime = DateTimeUtil.getIntervalTimeByMonth(DateTimeUtil.beginOfMonth(startDate), DateTimeUtil.beginOfMonth(endDate));
- for (Long l : dateTime) {
- //月平均风速
- ArrayList<WindTowerCalculationData> wsMonth = windTowerCalculationDataService.wsMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wsMonth);
- //月平均风功率密度
- ArrayList<WindTowerCalculationData> wpdMonth = windTowerCalculationDataService.wpdMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wpdMonth);
- //月平均湍流
- ArrayList<WindTowerCalculationData> turbulenceMonth = windTowerCalculationDataService.turbulenceMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(turbulenceMonth);
- //月平均空气密度
- ArrayList<WindTowerCalculationData> airDensityMonth = windTowerCalculationDataService.airDensityMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList);
- dataList.addAll(airDensityMonth);
- //月最大风速
- ArrayList<WindTowerCalculationData> wsMaxMonth = windTowerCalculationDataService.wsMaxMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wsMaxMonth);
- //月平均风切变
- ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
- dataList.addAll(shearMonth);
- //月平均风速标差
- ArrayList<WindTowerCalculationData> staMonth = windTowerCalculationDataService.staMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(staMonth);
- //月玫瑰图
- windDirectionStatisticsDataService.roseMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList);
- //月平均环境数据
- ArrayList<WindTowerCalculationData> environmentData = windTowerCalculationDataService.environmentData(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
- dataList.addAll(environmentData);
- //空气密度月逐时
- ArrayList<WindTowerCalculationData> airDensityMonth1 = windTowerCalculationDataService.airDensityMonth(windTowerInfo.getEquipmentNo(), DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), prophaseWeatherDataList);
- dataList.addAll(airDensityMonth1);
- //湍流月逐时
- ArrayList<WindTowerCalculationData> turbulenceHourForMonth = windTowerCalculationDataService.turbulenceHourForMonth(windTowerInfo.getEquipmentNo(), DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(turbulenceHourForMonth);
- }
- } else {
- //空气密度月逐时
- ArrayList<WindTowerCalculationData> airDensityMonth = windTowerCalculationDataService.airDensityMonth(windTowerInfo.getEquipmentNo(), startMonthDate, endMonthDate, prophaseWeatherDataList);
- dataList.addAll(airDensityMonth);
- //湍流月逐时
- ArrayList<WindTowerCalculationData> turbulenceHourForMonth = windTowerCalculationDataService.turbulenceHourForMonth(windTowerInfo.getEquipmentNo(), startMonthDate, endMonthDate, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(turbulenceHourForMonth);
- //月平均空气密度
- ArrayList<WindTowerCalculationData> airDensityMonth1 = windTowerCalculationDataService.airDensityMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList);
- dataList.addAll(airDensityMonth1);
- //月平均湍流
- ArrayList<WindTowerCalculationData> turbulenceMonth = windTowerCalculationDataService.turbulenceMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(turbulenceMonth);
- //月平均风速
- ArrayList<WindTowerCalculationData> wsMonth = windTowerCalculationDataService.wsMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wsMonth);
- //月平均风功率密度
- ArrayList<WindTowerCalculationData> wpdMonth = windTowerCalculationDataService.wpdMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wpdMonth);
- //月最大风速
- ArrayList<WindTowerCalculationData> wsMaxMonth = windTowerCalculationDataService.wsMaxMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(wsMaxMonth);
- //月平均风切变
- ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
- dataList.addAll(shearMonth);
- //月平均风速标差
- ArrayList<WindTowerCalculationData> staMonth = windTowerCalculationDataService.staMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
- dataList.addAll(staMonth);
- //月环境数据 温湿压最大最小平均
- ArrayList<WindTowerCalculationData> environmentData = windTowerCalculationDataService.environmentData(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
- dataList.addAll(environmentData);
- // 月玫瑰图
- windDirectionStatisticsDataService.roseMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList);
- }
- // 统计概述
- statisticsSituationService.statisticsSituation(windTowerInfo, statisticsSituations, equipmentAttributeList);
- //保存
- windTowerCalculationDataService.saveBatchByEquipmentId(dataList, windTowerInfo.getEquipmentNo());
- }
- }
- //存储杨总数据
- // @Scheduled(cron = "0 30 14 6 7 ?")
- public void saveJsonY() {
- // String s = apiHDY.jsonY(DateUtil.format(new Date(), "yyyyMMdd"));
- String s = "{\"AV\":{\"fdl\":\"6.447\",\"fdly\":\"365.337\",\"fdln\":\"6847.890\",\"fd1\":\"2.835\",\"fd1y\":\"175.875\",\"fd1n\":\"3261.279\",\"fd2\":\"3.612\",\"fd2y\":\"189.462\",\"fd2n\":\"3586.611\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u9635\\u96e8\",\"pjfs\":\"131.000\",\"zdfs\":\"350.000\",\"zxfs\":\"0.000\",\"wdzg\":\"23.0\",\"wdzd\":\"18.0\"},\"BY\":{\"fdl\":\"41.059\",\"fdly\":\"321.166\",\"fdln\":\"591.274\",\"fd1\":\"41.059\",\"fd1y\":\"321.166\",\"fd1n\":\"591.274\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u4e1c\\u5317\",\"pjfs\":\"6.590\",\"zdfs\":\"13.270\",\"zxfs\":\"1.260\",\"wdzg\":\"21.0\",\"wdzd\":\"17.0\"},\"DN\":{\"fdl\":\"14.151\",\"fdly\":\"295.982\",\"fdln\":\"6299.297\",\"fd1\":\"14.151\",\"fd1y\":\"295.982\",\"fd1n\":\"6299.297\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u897f\\u5317\",\"pjfs\":\"3.760\",\"zdfs\":\"8.630\",\"zxfs\":\"1.670\",\"wdzg\":\"26.0\",\"wdzd\":\"18.0\"},\"HA\":{\"fdl\":\"53.850\",\"fdly\":\"295.305\",\"fdln\":\"2192.663\",\"fd1\":\"53.850\",\"fd1y\":\"295.305\",\"fd1n\":\"2192.663\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u4e1c\",\"pjfs\":\"8.840\",\"zdfs\":\"18.510\",\"zxfs\":\"0.100\",\"wdzg\":\"21.0\",\"wdzd\":\"18.0\"},\"HL\":{\"fdl\":\"58.940\",\"fdly\":\"459.900\",\"fdln\":\"11709.040\",\"fd1\":\"21.840\",\"fd1y\":\"196.140\",\"fd1n\":\"4844.840\",\"fd2\":\"37.100\",\"fd2y\":\"263.760\",\"fd2n\":\"6864.200\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u897f\",\"pjfs\":\"4.550\",\"zdfs\":\"9.680\",\"zxfs\":\"1.560\",\"wdzg\":\"20.0\",\"wdzd\":\"12.0\"},\"HU\":{\"fdl\":\"9.658\",\"fdly\":\"45.768\",\"fdln\":\"45.768\",\"fd1\":\"9.658\",\"fd1y\":\"45.768\",\"fd1n\":\"45.768\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u5317\",\"pjfs\":\"6.720\",\"zdfs\":\"12.450\",\"zxfs\":\"0.880\",\"wdzg\":\"22.0\",\"wdzd\":\"18.0\"},\"HV\":{\"fdl\":\"1.995\",\"fdly\":\"51.030\",\"fdln\":\"950.145\",\"fd1\":\"1.995\",\"fd1y\":\"51.030\",\"fd1n\":\"950.145\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u9635\\u96e8\",\"pjfs\":\"174.280\",\"zdfs\":\"512.000\",\"zxfs\":\"0.000\",\"wdzg\":\"21.0\",\"wdzd\":\"13.0\"},\"ML\":{\"fdl\":\"0.096\",\"fdly\":\"3.768\",\"fdln\":\"89.350\",\"fd1\":\"0.096\",\"fd1y\":\"3.768\",\"fd1n\":\"89.350\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u897f\",\"pjfs\":\"3.300\",\"zdfs\":\"8.400\",\"zxfs\":\"1.100\",\"wdzg\":\"24.0\",\"wdzd\":\"16.0\"},\"MU\":{\"fdl\":\"8.650\",\"fdly\":\"186.750\",\"fdln\":\"4408.554\",\"fd1\":\"0.000\",\"fd1y\":\"0.000\",\"fd1n\":\"247.854\",\"fd2\":\"8.650\",\"fd2y\":\"186.750\",\"fd2n\":\"4160.700\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u4e1c\",\"pjfs\":\"4.200\",\"zdfs\":\"7.300\",\"zxfs\":\"2.400\",\"wdzg\":\"26.0\",\"wdzd\":\"17.0\"},\"NV\":{\"fdl\":\"4.158\",\"fdly\":\"119.133\",\"fdln\":\"1883.679\",\"fd1\":\"4.158\",\"fd1y\":\"119.133\",\"fd1n\":\"1883.679\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u6674\",\"pjfs\":\"145.000\",\"zdfs\":\"424.000\",\"zxfs\":\"0.000\",\"wdzg\":\"22.0\",\"wdzd\":\"18.0\"},\"QH\":{\"fdl\":\"75.180\",\"fdly\":\"542.556\",\"fdln\":\"11468.996\",\"fd1\":\"41.384\",\"fd1y\":\"273.364\",\"fd1n\":\"5659.136\",\"fd2\":\"33.796\",\"fd2y\":\"269.192\",\"fd2n\":\"5809.860\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u4e1c\",\"pjfs\":\"8.150\",\"zdfs\":\"11.700\",\"zxfs\":\"1.200\",\"wdzg\":\"21.0\",\"wdzd\":\"17.0\"},\"RX\":{\"fdl\":\"28.140\",\"fdly\":\"456.162\",\"fdln\":\"8252.497\",\"fd1\":\"28.140\",\"fd1y\":\"456.162\",\"fd1n\":\"8252.497\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u897f\",\"pjfs\":\"6.060\",\"zdfs\":\"8.730\",\"zxfs\":\"5.320\",\"wdzg\":\"25.0\",\"wdzd\":\"15.0\"},\"TL\":{\"fdl\":\"62.345\",\"fdly\":\"274.725\",\"fdln\":\"7784.430\",\"fd1\":\"62.345\",\"fd1y\":\"274.725\",\"fd1n\":\"7784.430\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u5357\",\"pjfs\":\"8.290\",\"zdfs\":\"16.530\",\"zxfs\":\"2.200\",\"wdzg\":\"21.0\",\"wdzd\":\"13.0\"},\"TY\":{\"fdl\":\"55.468\",\"fdly\":\"260.036\",\"fdln\":\"5447.652\",\"fd1\":\"55.468\",\"fd1y\":\"260.036\",\"fd1n\":\"5447.652\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u4e1c\\u5317\",\"pjfs\":\"7.320\",\"zdfs\":\"21.370\",\"zxfs\":\"2.850\",\"wdzg\":\"21.0\",\"wdzd\":\"17.0\"},\"YL\":{\"fdl\":\"62.524\",\"fdly\":\"505.764\",\"fdln\":\"12715.643\",\"fd1\":\"28.840\",\"fd1y\":\"235.592\",\"fd1n\":\"5888.655\",\"fd2\":\"33.684\",\"fd2y\":\"270.172\",\"fd2n\":\"6826.988\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u4e1c\",\"pjfs\":\"5.820\",\"zdfs\":\"16.530\",\"zxfs\":\"3.550\",\"wdzg\":\"21.0\",\"wdzd\":\"17.0\"},\"ZS\":{\"fdl\":\"0.000\",\"fdly\":\"422.520\",\"fdln\":\"10471.860\",\"fd1\":\"0.000\",\"fd1y\":\"422.520\",\"fd1n\":\"10471.860\",\"fd2\":\"0.000\",\"fd2y\":\"0.000\",\"fd2n\":\"0.000\",\"fd3\":\"0.000\",\"fd3y\":\"0.000\",\"fd3n\":\"0.000\",\"fd4\":\"0.000\",\"fd4y\":\"0.000\",\"fd4n\":\"0.000\",\"fd5\":\"0.000\",\"fd5y\":\"0.000\",\"fd5n\":\"0.000\",\"fd6\":\"0.000\",\"fd6y\":\"0.000\",\"fd6n\":\"0.000\",\"fd7\":\"0.000\",\"fd7y\":\"0.000\",\"fd7n\":\"0.000\",\"fd8\":\"0.000\",\"fd8y\":\"0.000\",\"fd8n\":\"0.000\",\"zfx\":\"\\u4e1c\",\"pjfs\":\"5.820\",\"zdfs\":\"16.530\",\"zxfs\":\"3.550\",\"wdzg\":\"21.0\",\"wdzd\":\"17.0\"}}";
- List<StationInfo> stationInfos = stationInfoService.selectStationInfo();
- stationInfos = stationInfos.stream().filter(w -> w.getStationBasicInfo().getStationType().equals("光")).collect(Collectors.toList());
- List<FanModelData> fanModelDataList = fanModelDataService.getFanModelDataList();
- for (StationInfo stationInfo : stationInfos) {
- JSONObject jsonObject = JSONUtil.parseObj(s);
- JSONObject jsonObject1 = JSONUtil.parseObj(jsonObject.get(stationInfo.getStationBasicInfo().getAbbreviation()));
- if (jsonObject1.size() == 0) {
- continue;
- }
- FanJsonInfo towerJsonInfo = jsonObject1.toBean(FanJsonInfo.class);
- //存储tdEngine
- convertData(towerJsonInfo, stationInfo);
- //存储mongo
- saveMongoBattery(stationInfo, towerJsonInfo, fanModelDataList);
- }
- }
- public void saveMongoBattery(StationInfo stationInfo, FanJsonInfo towerJsonInfo, List<FanModelData> fanModelDataList) {
- String[] strArr = new String[]{towerJsonInfo.getFdln(), towerJsonInfo.getFd1n(), towerJsonInfo.getFd2n(), towerJsonInfo.getFd3n(), towerJsonInfo.getFd4n()};
- List<String> collect = new ArrayList<>();
- Map<String, List<Object>> modelMap = new HashMap<>();
- if (stationInfo.getStationBasicInfo().getStationType().equals("风")) {
- //根据风机类型分组
- Map<String, List<Object>> map = new HashMap<>();
- for (FanTower fanTower : stationInfo.getFanTowerList()) {
- map.computeIfAbsent(fanTower.getFanModel(), k -> new ArrayList<>()).add(fanTower);
- }
- modelMap = map;
- collect = stationInfo.getFanTowerList().stream().map(FanTower::getFanModel).distinct().collect(Collectors.toList());
- } else {
- collect = stationInfo.getInverterInfos().stream().map(InverterInfo::getModelNumber).distinct().collect(Collectors.toList());
- Map<String, List<Object>> map = new HashMap<>();
- for (InverterInfo inverterInfo : stationInfo.getInverterInfos()) {
- map.computeIfAbsent(inverterInfo.getModelNumber(), k -> new ArrayList<>()).add(inverterInfo);
- }
- modelMap = map;
- }
- String fdn = "";
- for (int i = 0; i < collect.size(); i++) {
- if (collect.size() == 1) {
- fdn = strArr[i];
- } else {
- fdn = strArr[i + 1];
- }
- String modelName = collect.get(i);
- if (StrUtil.isBlank(modelName)) {
- continue;
- }
- BigDecimal realTimeTotal = BigDecimal.ZERO;
- String capacity = CalculationUtil.getNumberFromStringForDian(modelName);
- if(stationInfo.getStationBasicInfo().getStationType().equals("光")){
- capacity = stationInfo.getInverterInfos().get(0).getCapacity();
- }
- if (StrUtil.isBlank(modelName)) {
- continue;
- }
- int fanTotal = modelMap.get(modelName).size();
- fdn = new BigDecimal(fdn).multiply(BigDecimal.valueOf(10)).toString();
- realTimeTotal = new BigDecimal(fdn).divide(new BigDecimal(capacity).multiply(new BigDecimal(fanTotal)), 2, BigDecimal.ROUND_HALF_UP);//满发小时数(年)
- //一期
- FanModelData fanModelData = new FanModelData(UUID.randomUUID().toString(), stationInfo.getId(),
- stationInfo.getStationBasicInfo().getStationName(), modelName, stationInfo.getStationBasicInfo().getAbbreviation(),
- new BigDecimal(towerJsonInfo.getPjfs()).setScale(2, RoundingMode.HALF_UP).toString(), towerJsonInfo.getZfx(),
- fdn, realTimeTotal.toString());
- //发电量(年)
- fdn = new BigDecimal(towerJsonInfo.getFd2n()).setScale(2, RoundingMode.HALF_UP).toString();
- List<FanModelData> modelDataList = fanModelDataList.stream().filter(f -> f.getStationId().equals(stationInfo.getId())
- && f.getModelName().equals(modelName)).collect(Collectors.toList());
- if (modelDataList.size() > 0) {
- // System.out.println("删除");
- // fanModelDataService.deleteFanModelData(modelDataList.get(0).getId());
- //
- }
- // System.out.println("新增");
- // mongoTemplate.save(fanModelData);
- //
- }
- }
- public void convertData(FanJsonInfo towerJsonInfo, StationInfo stationInfo) {
- TotalBatteryData totalBatteryData = new TotalBatteryData();
- BeanUtil.copyProperties(towerJsonInfo, totalBatteryData);
- batteryMultiplyTen(totalBatteryData);
- DateTime yesterday = DateUtil.yesterday();
- totalBatteryData.setTs(new Timestamp(DateUtil.beginOfDay(yesterday).getTime()));
- if (StrUtil.isNotBlank(stationInfo.getStationBasicInfo().getCapacity())) {
- BigDecimal equivalentHour = new BigDecimal(totalBatteryData.getFdln()).divide(new BigDecimal(stationInfo.getStationBasicInfo().getCapacity().trim()), 3, RoundingMode.HALF_UP);
- totalBatteryData.setEquivalentHour(equivalentHour.floatValue());
- }
- totalBatteryData.setStationNameEasy(stationInfo.getStationBasicInfo().getAbbreviation());
- totalBatteryDataService.insertOne(totalBatteryData);
- }
- public void batteryMultiplyTen(TotalBatteryData totalBatteryData) {
- try {
- Class<? extends TotalBatteryData> aClass = totalBatteryData.getClass();
- Field[] declaredFields = aClass.getDeclaredFields();
- for (Field declaredField : declaredFields) {
- if (declaredField.getName().contains("fd")) {
- declaredField.setAccessible(true);
- PropertyDescriptor pd = new PropertyDescriptor(declaredField.getName(), aClass);
- Method getMethod = pd.getReadMethod();
- String invoke = (String) getMethod.invoke(totalBatteryData);
- BigDecimal batteryTen = new BigDecimal(invoke).multiply(BigDecimal.valueOf(10)).setScale(2, RoundingMode.HALF_UP);
- declaredField.set(totalBatteryData, batteryTen.toString());
- }
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
|