Browse Source

modify some codes

master
xiaowuler 3 years ago
parent
commit
0ae273f361
  1. 2
      04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/IDataRepository.java
  2. 3
      04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/ISchemaRepository.java
  3. 17
      04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/DataRepository.java
  4. 15
      04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/SchemaRepository.java
  5. 2
      04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/RadarService.java
  6. 8
      04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/SchemaService.java
  7. 16
      04.系统编码/01.xxl-job/xxl-job-executor/src/test/java/com/ping/chuan/ahpmsdp/xxljobexecutor/XxlJobExecutorApplicationTests.java
  8. 26
      04.系统编码/02.api-service/pom.xml
  9. 81
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseDataController.java
  10. 66
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseInfoController.java
  11. 9
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/IDataRepository.java
  12. 59
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/impl/DataRepository.java
  13. 21
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadarBlock.java
  14. 15
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadialBlock.java
  15. 9
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/IDataService.java
  16. 50
      04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/impl/DataService.java
  17. 26
      04.系统编码/03.radar-resolver/radar-core/pom.xml
  18. 8
      04.系统编码/03.radar-resolver/radar-core/radar-core.iml
  19. 10
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CommonBlock.java
  20. 8
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CutConfiguration.java
  21. 8
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/GenericHeader.java
  22. 8
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentBlock.java
  23. 8
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentData.java
  24. 8
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentHeader.java
  25. 9
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadarBlock.java
  26. 4
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/Radial.java
  27. 9
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialBlock.java
  28. 8
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialHeader.java
  29. 9
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/SiteConfiguration.java
  30. 8
      04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/TaskConfiguration.java

2
04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/IDataRepository.java

@ -14,5 +14,5 @@ import com.ping.chuan.ahpmsdp.xxljobexecutor.model.dao.DealInfo;
*/
public interface IDataRepository {
void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, int timeEffect, Map<String, List<List<BigDecimal>>> columns);
void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, String productType, Map<String, List<Integer>> columns, int maxCount);
void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, String radarType, String scanType, String productType, Map<String, List<Integer>> columns, int maxCount);
}

3
04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/ISchemaRepository.java

@ -23,6 +23,7 @@ public interface ISchemaRepository {
* @param tableName
* @param partitionKey
* @param columns
* @param ttl
*/
void prepareTable(String keyspaceName, String tableName, Map<String, DataType> partitionKey, Map<String, DataType> columns);
void prepareTable(String keyspaceName, String tableName, int ttl, Map<String, DataType> partitionKey, Map<String, DataType> columns);
}

17
04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/DataRepository.java

@ -38,13 +38,13 @@ public class DataRepository implements IDataRepository {
return;
}
groupInsert(keyspace, tableName, targetColumns, targetValues, maxInsertCount, 2);
groupInsert(keyspace, tableName, targetColumns, targetValues, maxInsertCount, 2, 604800);
}
@Override
public void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, String productType, Map<String, List<Integer>> columns, int maxCount) {
public void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, String radarType, String scanType, String productType, Map<String, List<Integer>> columns, int maxCount) {
List<String> targetColumns = prepareRadarColumnNames(columns.keySet());
List<Object> targetValues = prepareColumnValues(initialTime, forecastTime, station, productType, columns.values());
List<Object> targetValues = prepareColumnValues(initialTime, forecastTime, station, radarType, scanType, productType, columns.values());
if (targetColumns.size() <= maxCount){
Insert builder = QueryBuilder.insertInto(keyspace, tableName)
@ -53,10 +53,10 @@ public class DataRepository implements IDataRepository {
return;
}
groupInsert(keyspace, tableName, targetColumns, targetValues, maxCount, 4);
groupInsert(keyspace, tableName, targetColumns, targetValues, maxCount, 6, 172800);
}
private void groupInsert(String keyspace, String tableName, List<String> columns, List<Object> values, int maxCount, int limit){
private void groupInsert(String keyspace, String tableName, List<String> columns, List<Object> values, int maxCount, int limit, int ttl){
int len = CalcUtil.calcClip(columns.size() - limit, maxCount);
for(int index = 0; index < len; index ++){
int startIndex = (index) * maxCount + limit;
@ -66,6 +66,7 @@ public class DataRepository implements IDataRepository {
targetValues.addAll(values.stream().skip(startIndex).limit(maxCount).collect(Collectors.toList()));
Insert builder = QueryBuilder.insertInto(keyspace, tableName)
.values(targetColumns, targetValues);
builder.using(QueryBuilder.ttl(ttl));
cassandraTemplate.getSession().execute(builder);
}
}
@ -85,6 +86,8 @@ public class DataRepository implements IDataRepository {
columns.add("initial_time");
columns.add("forecast_time");
columns.add("station");
columns.add("radar_type");
columns.add("scan_type");
columns.add("product_type");
columns.add("create_time");
columns.addAll(columnSet);
@ -101,11 +104,13 @@ public class DataRepository implements IDataRepository {
return columns;
}
private List<Object> prepareColumnValues(Date initialTime, Date forecastTime, String station, String productType, Collection<List<Integer>> values){
private List<Object> prepareColumnValues(Date initialTime, Date forecastTime, String station, String radarType, String scanType, String productType, Collection<List<Integer>> values){
List<Object> columns = new ArrayList<>();
columns.add(initialTime);
columns.add(forecastTime);
columns.add(station);
columns.add(radarType);
columns.add(scanType);
columns.add(productType);
columns.add(new Date());
columns.addAll(values);

15
04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/SchemaRepository.java

@ -3,14 +3,11 @@ package com.ping.chuan.ahpmsdp.xxljobexecutor.dao.impl;
import java.util.Map;
import java.util.Objects;
import com.datastax.driver.core.schemabuilder.*;
import org.springframework.stereotype.Repository;
import com.datastax.driver.core.DataType;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.schemabuilder.Create;
import com.datastax.driver.core.schemabuilder.Drop;
import com.datastax.driver.core.schemabuilder.KeyspaceOptions;
import com.datastax.driver.core.schemabuilder.SchemaBuilder;
import com.ping.chuan.ahpmsdp.xxljobexecutor.dao.ISchemaRepository;
import com.ping.chuan.ahpmsdp.xxljobexecutor.template.CassandraTemplate;
@ -38,12 +35,9 @@ public class SchemaRepository implements ISchemaRepository {
}
@Override
public void prepareTable(String keyspaceName, String tableName, Map<String, DataType> partitionKey, Map<String, DataType> columns) {
// Drop drop = SchemaBuilder.dropTable(keyspaceName, tableName);
// cassandraTemplate.getSession().execute(drop);
public void prepareTable(String keyspaceName, String tableName, int ttl, Map<String, DataType> partitionKey, Map<String, DataType> columns) {
Create builder = SchemaBuilder.createTable(keyspaceName, tableName)
.ifNotExists();
for(Map.Entry<String, DataType> entry : partitionKey.entrySet()){
builder.addPartitionKey(entry.getKey(), entry.getValue());
}
@ -52,6 +46,9 @@ public class SchemaRepository implements ISchemaRepository {
builder.addColumn(entry.getKey(), entry.getValue());
}
cassandraTemplate.getSession().execute(builder);
Create.Options options = builder.withOptions()
.compactStorage()
.defaultTimeToLive(ttl);
cassandraTemplate.getSession().execute(options);
}
}

2
04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/RadarService.java

@ -53,7 +53,7 @@ public class RadarService implements IRadarService {
Map<String, List<Integer>> columns = toColumns(radarReader.getRadarBlock().getCommonBlock());
toColumns(columns, radarReader.getRadarBlock().getCommonBlock().getCutConfigurations(), radarReader.getRadarBlock().getRadialBlock().getRadials());
dataRepository.insert(keyspace, entry.getValue().getKey().toTableName(), entry.getKey().getInitialTime(), entry.getKey().getInitialTime(), radarReader.getRadarBlock().getCommonBlock().getSiteConfiguration().getSiteCode(), "dBT", columns, 1);
dataRepository.insert(keyspace, entry.getValue().getKey().toTableName(), entry.getKey().getInitialTime(), entry.getKey().getInitialTime(), radarReader.getRadarBlock().getCommonBlock().getSiteConfiguration().getSiteCode().trim(), entry.getValue().getKey().getMemberCode(), "CAP", "dBT", columns, 1);
entry.getKey().setState(StateConstant.SUCCESS);
} catch (RadarReadException | IOException e) {
entry.getKey().setState(StateConstant.FAILED);

8
04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/SchemaService.java

@ -53,6 +53,8 @@ public class SchemaService implements ISchemaService {
};
private static Map<String, DataType> radarPartitionKey = new LinkedHashMap<>(partitionKey){{
put("radar_type", DataType.varchar());
put("scan_type", DataType.varchar());
put("station", DataType.varchar());
put("product_type", DataType.varchar());
}};
@ -74,7 +76,7 @@ public class SchemaService implements ISchemaService {
// 提前建立库
buildDataTable(keyspace);
schemaRepository.prepareTable(keyspace, "deal_infos", dealPartitionKey, dealColumn);
schemaRepository.prepareTable(keyspace, "deal_infos", 604800, dealPartitionKey, dealColumn);
}
}
@ -84,10 +86,10 @@ public class SchemaService implements ISchemaService {
Map<String, DataType> columns;
if (entry.getKey().getModeCode().equals("RADAR")){
columns = toColumn(20);
schemaRepository.prepareTable(keyspace, tableName, radarPartitionKey, columns);
schemaRepository.prepareTable(keyspace, tableName, 172800, radarPartitionKey, columns);
}else {
columns = toColumn(CalcUtil.calcClip(entry.getValue().getLatCount(), entry.getKey().getLatClipCount()), CalcUtil.calcClip(entry.getValue().getLonCount(), entry.getKey().getLonClipCount()));
schemaRepository.prepareTable(keyspace, tableName, partitionKey, columns);
schemaRepository.prepareTable(keyspace, tableName, 604800, partitionKey, columns);
}
}
}

16
04.系统编码/01.xxl-job/xxl-job-executor/src/test/java/com/ping/chuan/ahpmsdp/xxljobexecutor/XxlJobExecutorApplicationTests.java

@ -203,7 +203,7 @@ class XxlJobExecutorApplicationTests {
columns.put("lon_clip_count", DataType.cint());
for(int index = 0; index < 200; index++){
schemaRepository.prepareTable("test", "test_" + index, partitionKey, columns);
schemaRepository.prepareTable("test", "test_" + index, 0, partitionKey, columns);
}
}
@ -299,4 +299,18 @@ class XxlJobExecutorApplicationTests {
// new HashMap<>()
}
@Test
void prepareCustomerTable(){
Map<String, DataType> partitionKey = new LinkedHashMap<>(5);
partitionKey.put("initial_time", DataType.timestamp());
partitionKey.put("forecast_time", DataType.timestamp());
Map<String, DataType> columns = new LinkedHashMap<>(2);
columns.put("name", DataType.varchar());
columns.put("age", DataType.cint());
schemaRepository.prepareTable("data_202204", "test", 10, partitionKey, columns);
}
}

26
04.系统编码/02.api-service/pom.xml

@ -14,8 +14,9 @@
<name>02.api-service</name>
<description>02.api-service</description>
<properties>
<java.version>11</java.version>
<java.version>15</java.version>
<cassandra.version>3.9.0</cassandra.version>
<radar-core.version>1.0.0-SNAPSHOT</radar-core.version>
</properties>
<dependencies>
<dependency>
@ -70,6 +71,12 @@
<artifactId>metrics-core</artifactId>
<version>3.2.6</version>
</dependency>
<dependency>
<groupId>com.xiaowuler</groupId>
<artifactId>radar-core</artifactId>
<version>${radar-core.version}</version>
</dependency>
</dependencies>
<build>
@ -86,29 +93,12 @@
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>13</source>
<target>13</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>15</source>
<target>15</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>15</source>
<target>15</target>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
</plugins>

81
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseDataController.java

@ -1,5 +1,6 @@
package com.ping.chuan.apiservice.controller;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
@ -32,7 +33,7 @@ import com.ping.chuan.apiservice.util.RequestResult;
@RequestMapping("baseData")
public class BaseDataController {
private final ObjectMapper objectMapper = new ObjectMapper();
private final static ObjectMapper objectMapper = new ObjectMapper();
private final IDataService dataService;
public BaseDataController(IDataService dataService){
this.dataService = dataService;
@ -53,16 +54,16 @@ public class BaseDataController {
}
Object initialTimeValue = convertTime(initialTime);
if (initialTimeValue instanceof String e){
return RequestResult.fail(e);
if (initialTimeValue instanceof String){
return RequestResult.fail((String) initialTimeValue);
}
Object forecastTimeValue = convertTime(forecastTime);
if (forecastTimeValue instanceof String e){
return RequestResult.fail(e);
if (forecastTimeValue instanceof String){
return RequestResult.fail((String) forecastTimeValue);
}
Object latLonValue = convertLatLon(latLons);
if (latLonValue instanceof String e){
return RequestResult.fail(e);
if (latLonValue instanceof String){
return RequestResult.fail((String) latLonValue);
}
Map.Entry<MetaInfo, Coordinate> entry = CacheTemplate.findOne("SPCC", elementCode, "BEHF", 180, 4320, 1010);
@ -87,16 +88,16 @@ public class BaseDataController {
}
Object initialTimeValue = convertTime(realTime);
if (initialTimeValue instanceof String e){
return RequestResult.fail(e);
if (initialTimeValue instanceof String){
return RequestResult.fail((String) initialTimeValue);
}
Object forecastTimeValue = convertTime(realTime);
if (forecastTimeValue instanceof String e){
return RequestResult.fail(e);
if (forecastTimeValue instanceof String){
return RequestResult.fail((String) forecastTimeValue);
}
Object latLonValue = convertLatLon(latLons);
if (latLonValue instanceof String e){
return RequestResult.fail(e);
if (latLonValue instanceof String){
return RequestResult.fail((String) latLonValue);
}
Map.Entry<MetaInfo, Coordinate> entry = CacheTemplate.findOne("CLDAS", elementCode, "BABJ", 60, 60, 1010);
@ -121,16 +122,16 @@ public class BaseDataController {
}
Object initialTimeValue = convertTime(realTime);
if (initialTimeValue instanceof String e){
return RequestResult.fail(e);
if (initialTimeValue instanceof String){
return RequestResult.fail((String) initialTimeValue);
}
Object forecastTimeValue = convertTime(realTime);
if (forecastTimeValue instanceof String e){
return RequestResult.fail(e);
if (forecastTimeValue instanceof String){
return RequestResult.fail((String) forecastTimeValue);
}
Object latLonValue = convertLatLon(latLons);
if (latLonValue instanceof String e){
return RequestResult.fail(e);
if (latLonValue instanceof String){
return RequestResult.fail((String) latLonValue);
}
Map.Entry<MetaInfo, Coordinate> entry = CacheTemplate.findOne("CMPA", elementCode, "BABJ", 60, 60, 1010);
@ -141,6 +142,44 @@ public class BaseDataController {
return RequestResult.success(dataService.findPoints(entry, (LocalDateTime) initialTimeValue, (LocalDateTime) forecastTimeValue, (List<BigDecimal[]>) latLonValue));
}
@ApiOperation(value="根据扫描配置项获取相关雷达数据", notes="根据扫描配置项获取相关雷达数据", produces="application/json", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name="radarType", value="雷达类型", example = "SAD", required=true, paramType="query"),
@ApiImplicitParam(name="station", value="站点", example = "Z9558", required=true, paramType="query"),
@ApiImplicitParam(name="realTime", value="雷达时间", example = "20220402104823", required=true, paramType="query"),
@ApiImplicitParam(name="productType", value="雷达数据类型", example = "dBT", required=true, paramType="query"),
@ApiImplicitParam(name="cutConfigurationIndex", value="扫描配置索引,可通过 baseInfo/getRadarCutConfigurations 接口获取相关扫描配置", example = "0", required=true, paramType="query"),
})
@PostMapping("getRadarByCutConfiguration")
public RequestResult getRadarByCutConfiguration(String realTime, String radarType, String station, String productType, Integer cutConfigurationIndex) throws IOException {
if(Objects.isNull(radarType)){
return RequestResult.fail("radarType不能为空");
}
if(Objects.isNull(station)){
return RequestResult.fail("station不能为空");
}
if (Objects.isNull(realTime)){
return RequestResult.fail("realTime不能为空");
}
if (Objects.isNull(productType)){
return RequestResult.fail("radarElementType不能为空");
}
if (Objects.isNull(cutConfigurationIndex)){
return RequestResult.fail("cutConfigurationIndex不能为空");
}
Object initialTimeValue = BaseDataController.convertTime(realTime);
if (initialTimeValue instanceof String){
return RequestResult.fail((String) initialTimeValue);
}
return RequestResult.success(dataService.getRadarByCutConfiguration(productType, radarType, station, (LocalDateTime) initialTimeValue, cutConfigurationIndex));
}
private String verifyParams(String elementCode, String initialTime, String forecastTime, String latLons){
List<String> errors = new ArrayList<>(4);
if (Objects.isNull(elementCode)){
@ -166,7 +205,7 @@ public class BaseDataController {
return errors.stream().collect(Collectors.joining(", "));
}
private Object convertTime(String timeStr){
public static Object convertTime(String timeStr){
try{
return LocalDateTime.parse(timeStr, TimeConstant.YYYYMMDDHHMMSS);
}catch (Exception e){
@ -174,7 +213,7 @@ public class BaseDataController {
}
}
private Object convertLatLon(String latLons){
public static Object convertLatLon(String latLons){
try {
List<BigDecimal[]> newLocations = new ArrayList<>();
List<BigDecimal[]> locations = objectMapper.readValue(latLons, new TypeReference<List<BigDecimal[]>>() {});

66
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseInfoController.java

@ -7,13 +7,16 @@ import com.ping.chuan.apiservice.template.CacheTemplate;
import com.ping.chuan.apiservice.util.RequestResult;
import com.ping.chuan.apiservice.util.TimeUtil;
import com.xiaowuler.radar.core.weather.domain.CutConfiguration;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@ -138,10 +141,69 @@ public class BaseInfoController {
}
Object initialTimeValue = TimeUtil.convertTime(initialTime);
if (initialTimeValue instanceof String e){
return RequestResult.fail(e);
if (initialTimeValue instanceof String){
return RequestResult.fail((String) initialTimeValue);
}
return RequestResult.success(dataService.findForecastTime(entry, Date.from(((LocalDateTime) initialTimeValue).atZone(ZoneId.systemDefault()).toInstant())));
}
@ApiOperation(value="获取所有的雷达类型", notes="获取所有的雷达类型", produces="application/json", httpMethod = "POST")
@PostMapping("getAllRadarType")
public RequestResult getRadarTypes() {
return RequestResult.success(CacheTemplate.metaInfos.keySet().stream()
.filter(metaInfo -> metaInfo.getModeCode().equals("RADAR")).map(m -> m.getMemberCode()).collect(Collectors.toList()));
}
@ApiOperation(value="获取所有的雷达站点", notes="获取所有的雷达站点", produces="application/json", httpMethod = "POST")
@PostMapping("getRadarStations")
public RequestResult getRadarStations() {
return RequestResult.success(dataService.getRadarStations());
}
@ApiOperation(value="获取所有的雷达时间", notes="获取所有的雷达时间", produces="application/json", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name="radarType", value="雷达类型", example = "SAD", required=true, paramType="query"),
@ApiImplicitParam(name="station", value="站点", example = "Z9558", required=true, paramType="query"),
})
@PostMapping("getRadarRealTimes")
public RequestResult getRadarRealTimes(String radarType, String station, Integer number) {
if (Objects.isNull(number)){
number = 10;
}
return RequestResult.success(dataService.findRadarRealTimes(radarType, station, number));
}
@ApiOperation(value="获取雷达所有的扫描配置", notes="获取雷达所有的扫描配置", produces="application/json", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name="radarType", value="雷达类型", example = "SAD", required=true, paramType="query"),
@ApiImplicitParam(name="station", value="站点", example = "Z9558", required=true, paramType="query"),
@ApiImplicitParam(name="realTime", value="雷达时间", example = "20220402104823", required=true, paramType="query"),
@ApiImplicitParam(name="productType", value="雷达数据类型", example = "dBT", required=true, paramType="query"),
})
@PostMapping("getRadarCutConfigurations")
public RequestResult getRadarCutConfigurations(String realTime, String radarType, String station, String productType) throws IOException {
if(Objects.isNull(radarType)){
return RequestResult.fail("radarType不能为空");
}
if(Objects.isNull(station)){
return RequestResult.fail("station不能为空");
}
if (Objects.isNull(realTime)){
return RequestResult.fail("realTime不能为空");
}
if (Objects.isNull(productType)){
return RequestResult.fail("radarElementType不能为空");
}
Object initialTimeValue = BaseDataController.convertTime(realTime);
if (initialTimeValue instanceof String){
return RequestResult.fail((String) initialTimeValue);
}
return RequestResult.success(dataService.getRadarElevations(productType, radarType, station, (LocalDateTime) initialTimeValue));
}
}

9
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/IDataRepository.java

@ -1,12 +1,15 @@
package com.ping.chuan.apiservice.dao;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.ping.chuan.apiservice.model.domain.CoordinateInfo;
import com.ping.chuan.apiservice.model.domain.RadarBlock;
import com.ping.chuan.apiservice.model.vo.PointValue;
import com.xiaowuler.radar.core.weather.domain.CutConfiguration;
/**
* @describe: 数据处理 数据接口
@ -52,4 +55,10 @@ public interface IDataRepository {
* @return
*/
List<Date> findForecastTime(String keyspace, String tableName, Date initialTime);
List<Date> findRadarForecastTimes(String keyspace, String tableName, String radarType, String station, Integer number);
List<CutConfiguration> findRadarElevations(String keyspace, String tableName, String radarType, String radarElementType, String station, LocalDateTime realTime) throws IOException;
RadarBlock findRadarByCutConfiguration(String keyspace, String tableName, String column, String productType, String radarType, String station, LocalDateTime realTime) throws IOException;
}

59
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/impl/DataRepository.java

@ -1,22 +1,24 @@
package com.ping.chuan.apiservice.dao.impl;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import lombok.Data;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ping.chuan.apiservice.model.domain.RadarBlock;
import com.ping.chuan.apiservice.util.GZipUtils;
import com.xiaowuler.radar.core.weather.domain.CutConfiguration;
import org.springframework.stereotype.Repository;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.querybuilder.Clause;
import com.datastax.driver.core.querybuilder.Insert;
import com.datastax.driver.core.querybuilder.QueryBuilder;
import com.datastax.driver.core.querybuilder.Select;
import com.datastax.driver.mapping.Mapper;
import com.datastax.driver.mapping.MappingManager;
import com.datastax.driver.mapping.annotations.Table;
import com.ping.chuan.apiservice.dao.IDataRepository;
import com.ping.chuan.apiservice.model.constant.TimeConstant;
@ -32,6 +34,7 @@ import com.ping.chuan.apiservice.template.CassandraTemplate;
@Repository
public class DataRepository implements IDataRepository {
private static final ObjectMapper objectMapper = new ObjectMapper();
private final MappingManager mappingManager;
private final CassandraTemplate cassandraTemplate;
public DataRepository(CassandraTemplate cassandraTemplate, MappingManager mappingManager){
@ -98,6 +101,50 @@ public class DataRepository implements IDataRepository {
return times;
}
@Override
public List<Date> findRadarForecastTimes(String keyspace, String tableName, String radarType, String station, Integer number) {
String cql = "select initial_time from %s.%s where radar_type = '%s' limit %s ALLOW FILTERING".formatted(keyspace, tableName, radarType, number);
ResultSet resultSet = cassandraTemplate.getSession().execute(cql);
List<Date> times = new ArrayList<>();
for(Row row : resultSet){
times.add(row.getTimestamp("initial_time"));
}
return times;
}
@Override
public List<CutConfiguration> findRadarElevations(String keyspace, String tableName, String radarType, String radarElementType, String station, LocalDateTime realTime) throws IOException {
Long time = Date.from(realTime.atZone(ZoneId.systemDefault()).toInstant()).getTime();
String cql = "select cut_configurations from %s.%s where initial_time = %s and forecast_time = %s and radar_type = '%s' and scan_type = 'CAP' and station = '%s' and product_type = '%s'"
.formatted(keyspace, tableName, time, time, radarType, station, radarElementType);
ResultSet resultSet = cassandraTemplate.getSession().execute(cql);
for(Row row : resultSet){
List<Integer> cuts = (List<Integer>) row.getObject("cut_configurations");
// cuts convert to byte[]
byte[] bytes = new byte[cuts.size()];
IntStream.range(0, cuts.size()).forEach(index -> bytes[index] = (cuts.get(index).byteValue()));
return objectMapper.readValue(GZipUtils.uncompress(bytes), new TypeReference<List<CutConfiguration>>() {
});
}
return null;
}
@Override
public RadarBlock findRadarByCutConfiguration(String keyspace, String tableName, String column, String productType, String radarType, String station, LocalDateTime realTime) throws IOException {
Long time = Date.from(realTime.atZone(ZoneId.systemDefault()).toInstant()).getTime();
String cql = "select %s from %s.%s where initial_time = %s and forecast_time = %s and radar_type = '%s' and scan_type = 'CAP' and station = '%s' and product_type = '%s'"
.formatted(column, keyspace, tableName, time, time, radarType, station, productType);
ResultSet resultSet = cassandraTemplate.getSession().execute(cql);
for(Row row : resultSet){
List<Integer> cuts = (List<Integer>) row.getObject(column);
// cuts convert to byte[]
byte[] bytes = new byte[cuts.size()];
IntStream.range(0, cuts.size()).forEach(index -> bytes[index] = (cuts.get(index).byteValue()));
return objectMapper.readValue(GZipUtils.uncompress(bytes), RadarBlock.class);
}
return null;
}
private PointValue toPointValue(BigDecimal originalLon, BigDecimal originalLat, BigDecimal gridLon, BigDecimal gridLat){
PointValue pointValue = new PointValue();
pointValue.setOriginalLat(originalLat);

21
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadarBlock.java

@ -0,0 +1,21 @@
package com.ping.chuan.apiservice.model.domain;
import com.xiaowuler.radar.core.weather.domain.CutConfiguration;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @describe: leida
* @author: xiaowuler
* @createTime: 2022-03-18 16:57
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RadarBlock {
private CutConfiguration cutConfiguration;
private List<RadialBlock> radials;
}

15
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadialBlock.java

@ -0,0 +1,15 @@
package com.ping.chuan.apiservice.model.domain;
import com.xiaowuler.radar.core.weather.domain.MomentBlock;
import com.xiaowuler.radar.core.weather.domain.RadialHeader;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RadialBlock {
private RadialHeader radialHeader;
private MomentBlock momentBlock;
}

9
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/IDataService.java

@ -1,5 +1,6 @@
package com.ping.chuan.apiservice.service;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
@ -24,4 +25,12 @@ public interface IDataService {
List<String> findInitialTime(Map.Entry<MetaInfo, Coordinate> entry) throws Exception;
List<String> findForecastTime(Map.Entry<MetaInfo, Coordinate> entry, Date initialTimeValue) throws Exception;
List<String> findRadarRealTimes(String radarType, String station, Integer number);
List<String> getRadarStations();
List<Float> getRadarElevations(String radarElementType, String radarType, String station, LocalDateTime realTime) throws IOException;
Object getRadarByCutConfiguration(String productType, String radarType, String station, LocalDateTime realTime, Integer cutConfigurationIndex) throws IOException;
}

50
04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/impl/DataService.java

@ -1,11 +1,15 @@
package com.ping.chuan.apiservice.service.impl;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import com.google.common.collect.Lists;
import com.ping.chuan.apiservice.model.domain.RadarBlock;
import com.xiaowuler.radar.core.weather.domain.CutConfiguration;
import org.springframework.stereotype.Service;
import com.ping.chuan.apiservice.dao.IDataRepository;
@ -19,6 +23,7 @@ import com.ping.chuan.apiservice.model.vo.PointValue;
import com.ping.chuan.apiservice.model.vo.PointValueVo;
import com.ping.chuan.apiservice.service.IDataService;
import com.ping.chuan.apiservice.util.CalcUtil;
import org.springframework.util.Assert;
/**
* @describe: 数据服务
@ -28,6 +33,7 @@ import com.ping.chuan.apiservice.util.CalcUtil;
@Service
public class DataService implements IDataService {
private final static List<String> radarStations = Lists.newArrayList("Z9558", "Z9551", "Z9559", "Z9555", "Z9562", "Z9563", "Z9556", "Z9552");
private final ISchemaRepository schemaRepository;
private final IDataRepository dataRepository;
public DataService(ISchemaRepository schemaRepository, IDataRepository dataRepository){
@ -102,6 +108,50 @@ public class DataService implements IDataService {
return time.stream().map(t -> convertSdf.format(t)).sorted().collect(Collectors.toList());
}
@Override
public List<String> findRadarRealTimes(String radarType, String station, Integer number) {
List<Date> times = findRadarForecastTimes(radarType, station, number, LocalDateTime.now());
if (times.size() < number){
times.addAll(findRadarForecastTimes(radarType, station, number, LocalDateTime.now().minusMonths(1)));
}
SimpleDateFormat convertSdf = new SimpleDateFormat(TimeConstant.YYYYMMDDHHMMSS_STR);
return times.stream().sorted(Comparator.naturalOrder()).limit(number).map(t -> convertSdf.format(t)).sorted().collect(Collectors.toList());
}
@Override
public List<String> getRadarStations() {
return radarStations;
}
@Override
public List<Float> getRadarElevations(String radarElementType, String radarType, String station, LocalDateTime realTime) throws IOException {
String keyspace = toKeyspace(realTime);
String tableName = "radar_%s_cap_6_6_1010".formatted(radarType).toLowerCase(Locale.ROOT);
List<CutConfiguration> cutConfigurations = dataRepository.findRadarElevations(keyspace, tableName, radarType, radarElementType, station, realTime);
Objects.requireNonNull(cutConfigurations, "未查到相关信息,请调整参数查询");
return cutConfigurations.stream().map(CutConfiguration::getElevation).collect(Collectors.toList());
}
@Override
public RadarBlock getRadarByCutConfiguration(String productType, String radarType, String station, LocalDateTime realTime, Integer cutConfigurationIndex) throws IOException {
String keyspace = toKeyspace(realTime);
String tableName = "radar_%s_cap_6_6_1010".formatted(radarType).toLowerCase(Locale.ROOT);
List<CutConfiguration> cutConfigurations = dataRepository.findRadarElevations(keyspace, tableName, radarType, productType, station, realTime);
Objects.requireNonNull(cutConfigurations, "未查到相关信息,请调整参数查询");
Assert.isTrue((cutConfigurations.size() - 1) > cutConfigurationIndex, "未查到相关扫描配置,请调整扫描配置索引");
String column = String.format("col_%s", cutConfigurationIndex);
RadarBlock radarBlock = dataRepository.findRadarByCutConfiguration(keyspace, tableName, column, productType, radarType, station, realTime);
Objects.requireNonNull(radarBlock, "未查到相关信息,请调整参数查询");
radarBlock.setCutConfiguration(cutConfigurations.get(cutConfigurationIndex));
return radarBlock;
}
public List<Date> findRadarForecastTimes(String radarType, String station, Integer number, LocalDateTime initialTime) {
String keyspace = toKeyspace(initialTime);
String tableName = "radar_%s_cap_6_6_1010".formatted(radarType).toLowerCase(Locale.ROOT);
return dataRepository.findRadarForecastTimes(keyspace, tableName, radarType, station, number);
}
private PointValueVo toPointValueVo(LocalDateTime initialTime, LocalDateTime forecastTime, MetaInfo metaInfo, List<PointValue> pointValues){
PointValueVo pointValueVo = new PointValueVo();
pointValueVo.setPointValues(pointValues);

26
04.系统编码/03.radar-resolver/radar-core/pom.xml

@ -18,9 +18,35 @@
<jython-standalone.version>2.7.1</jython-standalone.version>
<lombok.version>1.18.22</lombok.version>
<logging.version>2.6.4</logging.version>
<jackson.version>2.12.5</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>

8
04.系统编码/03.radar-resolver/radar-core/radar-core.iml

@ -5,10 +5,18 @@
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.5" level="project" />
<orderEntry type="library" name="Maven: org.python:jython-standalone:2.7.1" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.6.4" level="project" />

10
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CommonBlock.java

@ -1,11 +1,14 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe: 公共数据块
@ -13,7 +16,12 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
* @createTime: 2022-03-09 09:53
*/
@Data
public class CommonBlock {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class CommonBlock implements Serializable {
private static final long serialVersionUID = -837351408622166786L;
private GenericHeader genericHeader;
private SiteConfiguration siteConfiguration;
private TaskConfiguration taskConfiguration;

8
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CutConfiguration.java

@ -1,9 +1,12 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe: 扫描配置
@ -11,7 +14,10 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
* @createTime: 2022-03-09 10:47
*/
@Data
public class CutConfiguration {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class CutConfiguration implements Serializable {
private static final long serialVersionUID = -8113737447944172762L;
private int processMode;
private int waveForm;
private float PRF1;

8
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/GenericHeader.java

@ -1,9 +1,12 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe: 通用头块
@ -12,7 +15,10 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
* @createTime: 2022-03-09 09:56
*/
@Data
public class GenericHeader {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class GenericHeader implements Serializable {
private static final long serialVersionUID = -85907908637166909L;
/**
* 魔术字: 固定标志用来指示雷达数据文件
*/

8
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentBlock.java

@ -1,9 +1,12 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe: 径向数据块
@ -11,7 +14,10 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
* @createTime: 2022-03-09 11:27
*/
@Data
public class MomentBlock {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class MomentBlock implements Serializable {
private static final long serialVersionUID = -849689898240989898L;
private MomentHeader momentHeader;
private MomentData momentData;

8
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentData.java

@ -1,10 +1,13 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import com.xiaowuler.radar.core.util.ByteUtils;
import lombok.NoArgsConstructor;
/**
* @describe: 径向数据
@ -12,7 +15,10 @@ import com.xiaowuler.radar.core.util.ByteUtils;
* @createTime: 2022-03-09 11:05
*/
@Data
public class MomentData {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class MomentData implements Serializable {
private static final long serialVersionUID = -859098682988004598L;
private short[] data;
public MomentData(ICustomInputStream ICustomInputStream, MomentHeader momentHeader) throws IOException {

8
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentHeader.java

@ -1,9 +1,12 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe: 径向数据头
@ -11,7 +14,10 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
* @createTime: 2022-03-09 11:24
*/
@Data
public class MomentHeader {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class MomentHeader implements Serializable {
private static final long serialVersionUID = -8487955885512368921L;
private int dataType;
private int scale;
private int offset;

9
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadarBlock.java

@ -1,6 +1,10 @@
package com.xiaowuler.radar.core.weather.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @describe:
@ -8,7 +12,10 @@ import lombok.Data;
* @createTime: 2022-03-10 09:57
*/
@Data
public class RadarBlock {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class RadarBlock implements Serializable {
private static final long serialVersionUID = -8487955885512368921L;
private CommonBlock commonBlock;
private RadialBlock radialBlock;
}

4
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/Radial.java

@ -4,8 +4,10 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe:
@ -14,6 +16,8 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
*/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Radial {
private RadialHeader radialHeader;

9
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialBlock.java

@ -2,11 +2,14 @@ package com.xiaowuler.radar.core.weather.domain;
import java.io.EOFException;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe: 径向数据块
@ -14,8 +17,10 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
* @createTime: 2022-03-09 11:28
*/
@Data
public class RadialBlock {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class RadialBlock implements Serializable {
private static final long serialVersionUID = -8653024995948332789L;
private List<Radial> radials;
public RadialBlock(ICustomInputStream ICustomInputStream) throws IOException {

8
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialHeader.java

@ -1,9 +1,12 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import lombok.NoArgsConstructor;
/**
* @describe: 径向头
@ -11,7 +14,10 @@ import com.xiaowuler.radar.core.custom.ICustomInputStream;
* @createTime: 2022-03-09 11:01
*/
@Data
public class RadialHeader {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class RadialHeader implements Serializable {
private static final long serialVersionUID = -8241788341301133399L;
private int radialState;
private int spotBlank;
private int sequenceNumber;

9
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/SiteConfiguration.java

@ -1,10 +1,13 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import com.xiaowuler.radar.core.util.ByteUtils;
import lombok.NoArgsConstructor;
/**
* @describe: 站点配置块
@ -13,8 +16,10 @@ import com.xiaowuler.radar.core.util.ByteUtils;
* @createTime: 2022-03-09 10:01
*/
@Data
public class SiteConfiguration {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class SiteConfiguration implements Serializable {
private static final long serialVersionUID = -8355866750149257551L;
/**
* 站号
* 站号具有唯一性用来区别不同的雷达站如Z9010

8
04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/TaskConfiguration.java

@ -1,11 +1,14 @@
package com.xiaowuler.radar.core.weather.domain;
import java.io.IOException;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import com.xiaowuler.radar.core.custom.ICustomInputStream;
import com.xiaowuler.radar.core.util.ByteUtils;
import lombok.NoArgsConstructor;
/**
* @describe: 任务配置
@ -14,7 +17,10 @@ import com.xiaowuler.radar.core.util.ByteUtils;
* @createTime: 2022-03-09 10:23
*/
@Data
public class TaskConfiguration {
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class TaskConfiguration implements Serializable {
private static final long serialVersionUID = -8586765175775551802L;
/**
* 任务名称单偏振模式为VCP11VCP21VCP31VCP32
* 双偏振模式为 VCP11DVCP21DVCP31DVCP32D

Loading…
Cancel
Save