Browse Source

@天气预报接口增加@翟千民

zhongwei
zhaiqm 1 year ago
parent
commit
7717bd798c
  1. 22
      hzims-service-api/digital-twin-display-api/pom.xml
  2. 1
      hzims-service-api/pom.xml
  3. 77
      hzims-service/digital-twin-display/pom.xml
  4. 38
      hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/DigitalTwinDisplayApplication.java
  5. 63
      hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java
  6. 47
      hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/IDigitalBaseInfoService.java
  7. 104
      hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/impl/DigitalBaseInfoServiceImpl.java
  8. 1
      hzims-service/pom.xml

22
hzims-service-api/digital-twin-display-api/pom.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<parent>
<artifactId>hzims-service-api</artifactId>
<groupId>com.hnac.hzims</groupId>
<version>4.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>digital-twin-display-api</artifactId>
<packaging>jar</packaging>
<version>${hzims.project.version}</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

1
hzims-service-api/pom.xml

@ -28,6 +28,7 @@
<module>common-api</module>
<module>middle-api</module>
<module>base-info-api</module>
<module>digital-twin-display-api</module>
</modules>
<dependencies>

77
hzims-service/digital-twin-display/pom.xml

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<parent>
<artifactId>hzims-service</artifactId>
<groupId>com.hnac.hzims</groupId>
<version>4.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>digital-twin-display</artifactId>
<packaging>jar</packaging>
<version>${hzims.project.version}</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-swagger</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-oss-all</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-auto</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.hnac.hzims</groupId>
<artifactId>digital-twin-display-api</artifactId>
<version>${hzims.project.version}</version>
</dependency>
<dependency>
<groupId>com.hnac.hzinfo.data</groupId>
<artifactId>hzinfo-data-sdk</artifactId>
</dependency>
<dependency>
<groupId>com.hnac.hzims</groupId>
<artifactId>weather-api</artifactId>
<version>${hzims.project.version}</version>
</dependency>
<!--<dependency>
<groupId>com.hnac.hzims</groupId>
<artifactId>dam-safety-api</artifactId>
<version>${hzims.project.version}</version>
</dependency>-->
</dependencies>
</project>

38
hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/DigitalTwinDisplayApplication.java

@ -0,0 +1,38 @@
package com.hnac.hzims.twindisplay;
import org.mybatis.spring.annotation.MapperScan;
import org.springblade.core.cloud.feign.EnableBladeFeign;
import org.springblade.core.launch.BladeApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
//数据孪生展示服务
@EnableBladeFeign(basePackages = {"org.springblade","com.hnac"})
@SpringCloudApplication
@MapperScan("com.hnac.h zims.**.mapper.**")
@EnableScheduling
@ComponentScan(basePackages = {"com.hnac.hzims.*"})
public class DigitalTwinDisplayApplication extends SpringBootServletInitializer {
public final static String APP_NAME = "digital-twin-display";
static {
System.setProperty("spring.cloud.nacos.discovery.server-addr", "http://192.168.65.105:8848");
System.setProperty("spring.cloud.nacos.config.server-addr", "http://192.168.65.105:8848");
System.setProperty("spring.cloud.nacos.username", "nacos");
System.setProperty("spring.cloud.nacos.password", "nacos");
}
public static void main(String[] args) {
// System.setProperty("nacos.standalone", "true");
BladeApplication.run(APP_NAME, DigitalTwinDisplayApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return BladeApplication.createSpringApplicationBuilder(builder, APP_NAME, DigitalTwinDisplayApplication.class);
}
}

63
hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java

@ -0,0 +1,63 @@
package com.hnac.hzims.twindisplay.controller;
import com.hnac.hzims.hzimsweather.vo.RainFallCountByMonthVo;
import com.hnac.hzims.twindisplay.service.IDigitalBaseInfoService;
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@Api(description = "数字孪生水电站一张图系统基本信息控制器")
@RequestMapping(value = "/digital/baseInfo/")
public class BaseInfoController {
@Autowired
private IDigitalBaseInfoService digitalBaseInfoService;
@ApiOperation(notes = "获取当前日期信息", value = "获取当前日期信息")
@RequestMapping(value = "/getDateInfo", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getDateInfo(String areaCode) {
return digitalBaseInfoService.getDateInfo();
}
@ApiOperation(notes = "获取气象信息", value = "获取气象信息")
@RequestMapping(value = "/getWeatherInfo", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getWeatherInfo(String location) {
Map<String, Object> result = new HashMap<>(1);
result.put(location, digitalBaseInfoService.getWeatherInfo(location));
return result;
}
@ApiOperation(notes = "获取水位信息", value = "获取水位信息")
@RequestMapping(value = "/getWaterLevel", method = RequestMethod.GET)
@ResponseBody
public double getWaterLevel(String instanceCode, String signage) {
return digitalBaseInfoService.getWaterLevel(instanceCode, signage);
}
@ApiOperation(notes = "获取设备实时信息接口", value = "获取设备实时信息接口")
@RequestMapping(value = "/getRealData", method = RequestMethod.GET)
public R getRealData(String deviceCode){
List<FieldsData> data = digitalBaseInfoService.getRealData(deviceCode);
return R.data(data,"查询成功");
}
@ApiOperation(notes = "获取降雨量信息", value = "获取降雨量信息")
@RequestMapping(value = "/getRainFallInfo", method = RequestMethod.GET)
@ResponseBody
public Map<String,List<RainFallCountByMonthVo>> getRainFallInfo(String year,String location) {
return digitalBaseInfoService.getRainFallInfo(year,location);
}
}

47
hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/IDigitalBaseInfoService.java

@ -0,0 +1,47 @@
package com.hnac.hzims.twindisplay.service;
import com.hnac.hzims.hzimsweather.response.weather.HeWeatherWeatherNowResponse;
import com.hnac.hzims.hzimsweather.vo.RainFallCountByMonthVo;
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData;
import java.util.List;
import java.util.Map;
public interface IDigitalBaseInfoService {
/**
* 获取日期时间信息
* @return
*/
Map<String, Object> getDateInfo();
/**
* 获取气象信息
* @param location
* @return
*/
HeWeatherWeatherNowResponse getWeatherInfo(String location);
/**
* 获取水位信息
* @param instanceCode
* @param signage
* @return
*/
double getWaterLevel(String instanceCode, String signage);
/**
* 获取设备信息
* @param deviceCode
* @return
*/
List<FieldsData> getRealData(String deviceCode);
/**
* 获取地区降雨量信息
* @param year
* @param location
* @return
*/
Map<String, List<RainFallCountByMonthVo>> getRainFallInfo(String year, String location);
}

104
hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/service/impl/DigitalBaseInfoServiceImpl.java

@ -0,0 +1,104 @@
package com.hnac.hzims.twindisplay.service.impl;
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.real.po.RealDataSearchPO;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
@RequiredArgsConstructor
public class DigitalBaseInfoServiceImpl implements IDigitalBaseInfoService {
private final IHeWeatherWeatherClient heWeatherWeatherClient;
private final IAnalyseDataSearchClient analyseDataSearchClient;
//private final IWrpSectionBClient wrpSectionBClient;
@Override
public Map<String, Object> getDateInfo() {
Map<String, Object> info = new HashMap<>(3);
Date now = new Date();
SimpleDateFormat dateFm1 = new SimpleDateFormat("EEEE");
SimpleDateFormat dateFm2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取当前日期是星期几,中文展示 e.g. 星期二
String week = dateFm1.format(now);
String dateTime = dateFm2.format(now);
String[] s = dateTime.split(" ");
info.put("date", s[0]);
info.put("time", s[1]);
info.put("week", week);
return info;
}
@Override
public HeWeatherWeatherNowResponse getWeatherInfo(String location) {
if(StringUtil.isEmpty(location)){
return null;
}
// 天气feign接口查询实时天气
R<HeWeatherWeatherNowResponse> result = heWeatherWeatherClient.getWeatherNowWithCache(location);
if(!result.isSuccess() || ObjectUtil.isEmpty(result)){
return null;
}
return result.getData();
}
@Override
public double getWaterLevel(String instanceCode, String signage) {
RealDataSearchPO realData = new RealDataSearchPO();
realData.setAnalyzeCode(instanceCode);
List<String> signages = Collections.singletonList(signage);
realData.setSignages(signages);
// 调用fegin接口查询实时数据
R<List<FieldsData>> R = analyseDataSearchClient.getRealDataByAnalyzeCode(realData);
if(!R.isSuccess() || CollectionUtil.isEmpty(R.getData())){
return 0.0;
}
// 时间限制
String time = R.getData().get(0).getTime();
if(StringUtil.isEmpty(time) || "-".equals(time)){
return 0.0;
}
Date date = DateUtil.parse(time, "yyyy-MM-dd HH:mm:ss.sss");
if(System.currentTimeMillis() - date.getTime() > 30 * 60 * 1000L){
return 0.0;
}
return Double.parseDouble(R.getData().get(0).getValue());
}
@Override
public List<FieldsData> getRealData(String deviceCode) {
/*R<List<FieldsData>> realData = wrpSectionBClient.getRealData(deviceCode);
if(!realData.isSuccess() || CollectionUtil.isEmpty(realData.getData())){
return null;
}
return realData.getData();*/
return null;
}
@Override
public Map<String, List<RainFallCountByMonthVo>> getRainFallInfo(String year, String location) {
R<Map<String, List<RainFallCountByMonthVo>>> result = heWeatherWeatherClient.getRainFallMonthCount(year, location);
if(!result.isSuccess() || CollectionUtil.isEmpty(result.getData())){
return null;
}
return result.getData();
}
}

1
hzims-service/pom.xml

@ -28,6 +28,7 @@
<module>hzims-middle</module>
<module>hzims-scheduled</module>
<module>base-info</module>
<module>digital-twin-display</module>
</modules>
<dependencies>

Loading…
Cancel
Save