diff --git a/hzims-service-api/dam-safety-api/pom.xml b/hzims-service-api/dam-safety-api/pom.xml index ad10528..6d4ee93 100644 --- a/hzims-service-api/dam-safety-api/pom.xml +++ b/hzims-service-api/dam-safety-api/pom.xml @@ -3,6 +3,12 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + + + com.hnac.hzinfo.data + hzinfo-data-sdk + + com.hnac.hzims hzims-service-api diff --git a/hzims-service-api/dam-safety-api/src/main/java/com/hnac/hzims/damsafety/feign/IWrpSectionBClient.java b/hzims-service-api/dam-safety-api/src/main/java/com/hnac/hzims/damsafety/feign/IWrpSectionBClient.java index 081a64c..874e072 100644 --- a/hzims-service-api/dam-safety-api/src/main/java/com/hnac/hzims/damsafety/feign/IWrpSectionBClient.java +++ b/hzims-service-api/dam-safety-api/src/main/java/com/hnac/hzims/damsafety/feign/IWrpSectionBClient.java @@ -1,6 +1,7 @@ package com.hnac.hzims.damsafety.feign; import com.hnac.hzims.damsafety.vo.WrpSectionBVO; +import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; import org.springblade.core.tool.api.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -15,6 +16,7 @@ import java.util.Map; public interface IWrpSectionBClient { String API_PREFIX = "/wrpSectionBClient"; String LIST = API_PREFIX + "/list"; + String GET_REAL_DATA = API_PREFIX + "/getRealData"; /** * 获取断面列表 @@ -23,4 +25,7 @@ public interface IWrpSectionBClient { */ @GetMapping(LIST) R> list(Map param); + + @GetMapping(GET_REAL_DATA) + R> getRealData(String deviceCode); } diff --git a/hzims-service/dam-safety/src/main/java/com/hnac/hzims/damsafety/feign/WrpSectionBClient.java b/hzims-service/dam-safety/src/main/java/com/hnac/hzims/damsafety/feign/WrpSectionBClient.java index fa703eb..4e1916a 100644 --- a/hzims-service/dam-safety/src/main/java/com/hnac/hzims/damsafety/feign/WrpSectionBClient.java +++ b/hzims-service/dam-safety/src/main/java/com/hnac/hzims/damsafety/feign/WrpSectionBClient.java @@ -2,10 +2,12 @@ package com.hnac.hzims.damsafety.feign; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.hnac.hzims.damsafety.entity.WrpSectionB; +import com.hnac.hzims.damsafety.service.IDamSafetyDataService; import com.hnac.hzims.damsafety.service.IWrpSectionBService; import com.hnac.hzims.damsafety.util.ParamUtil; import com.hnac.hzims.damsafety.vo.WrpSectionBVO; import com.hnac.hzims.damsafety.wrapper.WrpSectionBWrapper; +import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; import org.springblade.core.tool.api.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; @@ -19,10 +21,18 @@ public class WrpSectionBClient implements IWrpSectionBClient { @Autowired private IWrpSectionBService wrpSectionBService; + @Autowired + private IDamSafetyDataService damSafetyDataService; + @Override public R> list(Map param) { LambdaQueryWrapper wrapper= ParamUtil.conditionWrpSectionB(param); List list = wrpSectionBService.list(wrapper); return R.data(WrpSectionBWrapper.build().listVO(list)); } + + @Override + public R> getRealData(String deviceCode) { + return R.data(damSafetyDataService.getRealData(deviceCode)); + } } diff --git a/hzims-service/digital-twin-display/pom.xml b/hzims-service/digital-twin-display/pom.xml index 7cd795d..af85fc2 100644 --- a/hzims-service/digital-twin-display/pom.xml +++ b/hzims-service/digital-twin-display/pom.xml @@ -67,12 +67,11 @@ ${hzims.project.version} - - + com.hnac.hzims diff --git a/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java b/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java index f3027fd..e5893f6 100644 --- a/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java +++ b/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java @@ -49,9 +49,11 @@ public class BaseInfoController { @ApiOperation(notes = "获取设备实时信息接口", value = "获取设备实时信息接口") @RequestMapping(value = "/getRealData", method = RequestMethod.GET) - public R getRealData(String deviceCode){ + public Map getRealData(String deviceCode){ + Map result = new HashMap<>(); List data = digitalBaseInfoService.getRealData(deviceCode); - return R.data(data,"查询成功"); + result.put(deviceCode, data); + return result; } @ApiOperation(notes = "获取降雨量信息", value = "获取降雨量信息") @@ -60,4 +62,18 @@ public class BaseInfoController { public Map> getRainFallInfo(String year,String location) { return digitalBaseInfoService.getRainFallInfo(year,location); } + + @ApiOperation(notes = "获取电站发电运行信息", value = "获取电站发电运行信息") + @RequestMapping(value = "/getPowerStationHisInfo", method = RequestMethod.GET) + public Map getPowerStationHisInfo(String deviceCode){ + //有功功率属性名 + String activePower = "activePower"; + //无功功率属性名 + String reactivePower = "reactivePower"; + //发电量 + String power = "power"; + Map data = digitalBaseInfoService.getPowerStationHisInfo(deviceCode,activePower,reactivePower,power); + + return data; + } } diff --git a/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/IDigitalBaseInfoService.java b/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/IDigitalBaseInfoService.java index bf8ba4d..514c751 100644 --- a/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/IDigitalBaseInfoService.java +++ b/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/IDigitalBaseInfoService.java @@ -44,4 +44,14 @@ public interface IDigitalBaseInfoService { * @return */ Map> getRainFallInfo(String year, String location); + + /** + * 获取电站发电运行信息 + * @param deviceCode + * @param activePower + * @param reactivePower + * @param power + * @return + */ + Map getPowerStationHisInfo(String deviceCode, String activePower, String reactivePower, String power); } diff --git a/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/impl/DigitalBaseInfoServiceImpl.java b/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/impl/DigitalBaseInfoServiceImpl.java index efd85a8..db70c87 100644 --- a/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/impl/DigitalBaseInfoServiceImpl.java +++ b/hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/impl/DigitalBaseInfoServiceImpl.java @@ -1,12 +1,18 @@ package com.hnac.hzims.twindisplay.service.impl; +import com.hnac.hzims.damsafety.feign.IWrpSectionBClient; import com.hnac.hzims.hzimsweather.feign.IHeWeatherWeatherClient; import com.hnac.hzims.hzimsweather.response.weather.HeWeatherWeatherNowResponse; import com.hnac.hzims.hzimsweather.vo.RainFallCountByMonthVo; import com.hnac.hzims.twindisplay.service.IDigitalBaseInfoService; import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient; import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; +import com.hnac.hzinfo.datasearch.analyse.po.AnalyseCodeByAnalyseDataPO; +import com.hnac.hzinfo.datasearch.analyse.po.AnalyzeDataConditionPO; +import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeDataConditionVO; import com.hnac.hzinfo.datasearch.real.po.RealDataSearchPO; +import com.hnac.hzinfo.sdk.analyse.AnalyseDataSearchClient; +import com.hnac.hzinfo.sdk.core.response.Result; import lombok.RequiredArgsConstructor; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.CollectionUtil; @@ -16,6 +22,9 @@ import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.*; @Service @@ -24,9 +33,11 @@ public class DigitalBaseInfoServiceImpl implements IDigitalBaseInfoService { private final IHeWeatherWeatherClient heWeatherWeatherClient; - private final IAnalyseDataSearchClient analyseDataSearchClient; + private final IAnalyseDataSearchClient ianalyseDataSearchClient; - //private final IWrpSectionBClient wrpSectionBClient; + private final IWrpSectionBClient wrpSectionBClient; + + private final AnalyseDataSearchClient analyseDataSearchClient; @Override public Map getDateInfo() { @@ -65,7 +76,7 @@ public class DigitalBaseInfoServiceImpl implements IDigitalBaseInfoService { List signages = Collections.singletonList(signage); realData.setSignages(signages); // 调用fegin接口查询实时数据 - R> R = analyseDataSearchClient.getRealDataByAnalyzeCode(realData); + R> R = ianalyseDataSearchClient.getRealDataByAnalyzeCode(realData); if(!R.isSuccess() || CollectionUtil.isEmpty(R.getData())){ return 0.0; } @@ -83,12 +94,11 @@ public class DigitalBaseInfoServiceImpl implements IDigitalBaseInfoService { @Override public List getRealData(String deviceCode) { - /*R> realData = wrpSectionBClient.getRealData(deviceCode); + R> realData = wrpSectionBClient.getRealData(deviceCode); if(!realData.isSuccess() || CollectionUtil.isEmpty(realData.getData())){ return null; } - return realData.getData();*/ - return null; + return realData.getData(); } @Override @@ -100,5 +110,94 @@ public class DigitalBaseInfoServiceImpl implements IDigitalBaseInfoService { return result.getData(); } + @Override + public Map getPowerStationHisInfo(String deviceCode, String activePower, String reactivePower, String power) { + R> realData = wrpSectionBClient.getRealData(deviceCode); + + Map result = new HashMap<>(); + if(realData.isSuccess() && CollectionUtil.isNotEmpty(realData.getData())){ + List datas = realData.getData(); + datas.stream().forEach(data -> { + if (activePower.equals(data.getSignage())) { + //有功功率 + result.put(activePower, data.getValue()); + } + if (reactivePower.equals(data.getSignage())) { + //无功功率 + result.put(reactivePower, data.getValue()); + } + }); + } + + //当前年的第一天 2023-1-1 + LocalDate year = LocalDate.now().withDayOfYear(1); + //当前月的第一天 2023-8-1 + LocalDate month = LocalDate.now().withDayOfMonth(1); + //当天 2023-8-29 + LocalDate day = LocalDate.now(); + LocalTime startTime = LocalTime.MIN; + + + LocalDateTime end = LocalDateTime.now(); + + //年累计 + LocalDateTime start = LocalDateTime.of(year, startTime); + AnalyseCodeByAnalyseDataPO poForYear = getPowerByParam(deviceCode, start, end, 4, 6, 1); + Result> listForYear = analyseDataSearchClient.getAnalyzeDataByAnalyzeCodeAndSignages(poForYear); + + //月累计 + start = LocalDateTime.of(month, startTime); + AnalyseCodeByAnalyseDataPO poForMonth = getPowerByParam(deviceCode, start, end, 4, 5, 1); + Result> listForMonth = analyseDataSearchClient.getAnalyzeDataByAnalyzeCodeAndSignages(poForMonth); + + //日累计 + start = LocalDateTime.of(day, startTime); + AnalyseCodeByAnalyseDataPO poForDay = getPowerByParam(deviceCode, start, end, 4, 4, 1); + Result> listForDay = analyseDataSearchClient.getAnalyzeDataByAnalyzeCodeAndSignages(poForDay); + + //日发电计划完成率 + result.put("dayPowerRate",null); + //月发电计划完成率 + result.put("monthPowerRate",null); + //日累计发电量 + result.put("dayPowerSum",null); + //月累计发电量 + result.put("monthPowerSum",null); + //年累计发电量 + result.put("yearPowerSum",null); + return result; + } + + /** + * 根据入参查询设备信息 + * @param deviceCode 设备编号 + * @param start 开始时间 + * @param end 结束时间 + * @param accessRules 取数规则0=最早值、1=最大值、2=最小值、3=平均值、4=(累计值/和值)、5=(变化值/差值) 6=最新值 + * @param saveTimeType 周期类型: 0-> s(秒) 1->m(分) 2->h(小时) 3->d(天) 4->w(周) 5->n(自然月) 6->y(自然年) + * @param timeInterval 间隔时间 + * @return + */ + public AnalyseCodeByAnalyseDataPO getPowerByParam(String deviceCode, LocalDateTime start, LocalDateTime end, + Integer accessRules, Integer saveTimeType, Integer timeInterval) { + AnalyseCodeByAnalyseDataPO po = new AnalyseCodeByAnalyseDataPO(); + po.setDeviceCode(deviceCode); + + List signboardConditions = new ArrayList<>(); + AnalyzeDataConditionPO conditionPO = new AnalyzeDataConditionPO(); + + conditionPO.setBeginTime(start); + conditionPO.setEndTime(end); + conditionPO.setSignages(deviceCode); +// conditionPO.setKeepFigures(3); + conditionPO.setAccessRules(accessRules); + conditionPO.setSaveTimeType(saveTimeType); + conditionPO.setTimeInterval(timeInterval); + conditionPO.setFull(1); + signboardConditions.add(conditionPO); + po.setSignboardConditions(signboardConditions); + return po; + } + }