From f22c605c52241cc82adab7d1975260671fadd69b Mon Sep 17 00:00:00 2001 From: liwen Date: Thu, 18 Apr 2024 15:15:49 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E7=AB=99=E7=82=B9=E8=BF=913=E5=B9=B4?= =?UTF-8?q?=E5=8F=91=E7=94=B5=E9=87=8F=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/operation/home/RealTargetService.java | 2 + .../operation/home/impl/RealTargetServiceImpl.java | 74 ++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/RealTargetService.java b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/RealTargetService.java index 485fe48..bf8d692 100644 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/RealTargetService.java +++ b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/RealTargetService.java @@ -28,5 +28,7 @@ public interface RealTargetService { void loadPowerData(String param, List types, Integer serveType, int year); + void loadPowerDataNew(List types, Integer serveType, int year); + void loadPowerDataByWindEnergy(String param, List types, Integer serveType, int year,String key); } diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java index 5ada884..1cb79a1 100644 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java +++ b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java @@ -35,6 +35,9 @@ import com.hnac.hzinfo.datasearch.real.po.RealDataSearchPO; import com.hnac.hzinfo.sdk.analyse.po.MultiAnalyzeCodePO; import com.hnac.hzinfo.sdk.core.response.HzPage; import com.hnac.hzinfo.sdk.core.response.Result; +import com.hnac.hzinfo.sdk.v5.device.DeviceDataClient; +import com.hnac.hzinfo.sdk.v5.device.dto.ReductionDataDTO; +import com.hnac.hzinfo.sdk.v5.device.vo.ReductionDataVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; @@ -51,6 +54,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -97,6 +101,8 @@ public class RealTargetServiceImpl implements RealTargetService { private final IAnalyseDataSearchClient analyseDataSearchClient; + private final DeviceDataClient deviceDataClient; + @Value("${hzims.equipment.emInfo.emInfoList}") public String device_cache_cofig_final; @@ -1244,6 +1250,74 @@ public class RealTargetServiceImpl implements RealTargetService { redisTemplate.opsForValue().set(recent_year_power_data, powerMap); } + @Override + public void loadPowerDataNew(List types, Integer serveType, int year) { + // 站点查询 + List stationList = stationService.list(new LambdaQueryWrapper() {{ + eq(StationEntity::getDataOrigin,"0"); + if (ObjectUtil.isNotEmpty(serveType)) { + eq(StationEntity::getServeType, serveType); + } + if (CollectionUtil.isNotEmpty(types)) { + in(StationEntity::getType, types); + } + }}); + // 设备信息 + List devices = JSONObject.parseObject(redisTemplate.opsForValue().get(device_cache_cofig_final).toString(), + new TypeReference>() {}); + // 结束时间 + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.MONTH, -calendar.get(Calendar.MONTH) + 12); + calendar.add(Calendar.DATE, -calendar.get(Calendar.DATE) + 1); + String end = DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATE) + " 00:00:00"; + LocalDateTime endTime = LocalDateTime.parse(end); + // 开始时间 + calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - year); + calendar.add(Calendar.MONTH, -calendar.get(Calendar.MONTH)); + String start = DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATE) + " 00:00:00"; + LocalDateTime startTime = LocalDateTime.parse(end); + // 存储数据map:<站点id, <月份, 发电量>> + Map> powerMap = new HashMap<>(); + stationList.forEach(station -> { + List datas = new ArrayList<>(); + // 站点设备集合 + List stationDevices = devices.stream().filter(device -> device.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList()); + log.info("load_power_data station :" + station.getCode() + "==== device :" + stationDevices); + if (CollectionUtil.isNotEmpty(devices)) { + stationDevices.forEach(device -> { + ReductionDataDTO reductionDataDTO = new ReductionDataDTO(); + reductionDataDTO.setDeviceCode(device.getEmCode()); + reductionDataDTO.setSaveTimeType(5); + reductionDataDTO.setTimeInterval(1); + reductionDataDTO.setBeginTime(startTime); + reductionDataDTO.setEndTime(endTime); + reductionDataDTO.setNeedPage(false); + Result reductionDataVOResult = deviceDataClient.pageDeviceCodeAndSignages(reductionDataDTO); + if (!reductionDataVOResult.isSuccess() || CollectionUtil.isEmpty(reductionDataVOResult.getData().getDataList())) { + return; + } + List> dataList = reductionDataVOResult.getData().getDataList(); + datas.addAll(dataList.stream().map(data -> { + PowerMonthVo generate = new PowerMonthVo(); + Date time = DateUtil.parse(data.get("ts"), "yyyy-MM-dd HH:mm:ss.s"); + generate.setStrMonth(DateUtil.format(time,DateUtil.PATTERN_DATE)); + generate.setPower(Float.parseFloat(Optional.ofNullable(data.get(HomePageConstant.HYDROPOWER_GENERATE_POWER)) + .orElse("0")) * device.getRideCount()); + return generate; + }).collect(Collectors.toList())); + }); + } + // 补充填报数据 + datas.addAll(this.generateFill(station,start,end)); + if (CollectionUtil.isEmpty(datas)) { + return; + } + Map map = datas.stream().collect(Collectors.toMap(PowerMonthVo::getStrMonth, PowerMonthVo::getPower, Float::sum)); + powerMap.put(station.getId(), map); + }); + redisTemplate.opsForValue().set(recent_year_power_data, powerMap); + } + /** * 近年发电量数据 *