From 0ae273f36144314be8de99c1a41c6e950a4f8bea Mon Sep 17 00:00:00 2001 From: xiaowuler Date: Wed, 6 Apr 2022 15:05:57 +0800 Subject: [PATCH] modify some codes --- .../xxljobexecutor/dao/IDataRepository.java | 2 +- .../xxljobexecutor/dao/ISchemaRepository.java | 3 +- .../dao/impl/DataRepository.java | 17 ++-- .../dao/impl/SchemaRepository.java | 15 ++-- .../service/impl/RadarService.java | 2 +- .../service/impl/SchemaService.java | 8 +- .../XxlJobExecutorApplicationTests.java | 16 +++- 04.系统编码/02.api-service/pom.xml | 26 ++---- .../controller/BaseDataController.java | 83 ++++++++++++++----- .../controller/BaseInfoController.java | 66 ++++++++++++++- .../chuan/apiservice/dao/IDataRepository.java | 9 ++ .../apiservice/dao/impl/DataRepository.java | 59 +++++++++++-- .../apiservice/model/domain/RadarBlock.java | 21 +++++ .../apiservice/model/domain/RadialBlock.java | 15 ++++ .../apiservice/service/IDataService.java | 9 ++ .../apiservice/service/impl/DataService.java | 50 +++++++++++ .../03.radar-resolver/radar-core/pom.xml | 26 ++++++ .../radar-core/radar-core.iml | 8 ++ .../core/weather/domain/CommonBlock.java | 10 ++- .../core/weather/domain/CutConfiguration.java | 8 +- .../core/weather/domain/GenericHeader.java | 8 +- .../core/weather/domain/MomentBlock.java | 8 +- .../radar/core/weather/domain/MomentData.java | 8 +- .../core/weather/domain/MomentHeader.java | 8 +- .../radar/core/weather/domain/RadarBlock.java | 9 +- .../radar/core/weather/domain/Radial.java | 4 + .../core/weather/domain/RadialBlock.java | 9 +- .../core/weather/domain/RadialHeader.java | 8 +- .../weather/domain/SiteConfiguration.java | 9 +- .../weather/domain/TaskConfiguration.java | 8 +- 30 files changed, 449 insertions(+), 83 deletions(-) create mode 100644 04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadarBlock.java create mode 100644 04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadialBlock.java diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/IDataRepository.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/IDataRepository.java index b6054ad..1b11f3b 100644 --- a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/IDataRepository.java +++ b/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>> columns); - void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, String productType, Map> columns, int maxCount); + void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, String radarType, String scanType, String productType, Map> columns, int maxCount); } diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/ISchemaRepository.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/ISchemaRepository.java index 1bcb0c3..0aac0ec 100644 --- a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/ISchemaRepository.java +++ b/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 partitionKey, Map columns); + void prepareTable(String keyspaceName, String tableName, int ttl, Map partitionKey, Map columns); } diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/DataRepository.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/DataRepository.java index a8c9b6f..725d2af 100644 --- a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/DataRepository.java +++ b/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> columns, int maxCount) { + public void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, String radarType, String scanType, String productType, Map> columns, int maxCount) { List targetColumns = prepareRadarColumnNames(columns.keySet()); - List targetValues = prepareColumnValues(initialTime, forecastTime, station, productType, columns.values()); + List 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 columns, List values, int maxCount, int limit){ + private void groupInsert(String keyspace, String tableName, List columns, List 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 prepareColumnValues(Date initialTime, Date forecastTime, String station, String productType, Collection> values){ + private List prepareColumnValues(Date initialTime, Date forecastTime, String station, String radarType, String scanType, String productType, Collection> values){ List 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); diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/SchemaRepository.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/SchemaRepository.java index 0d2bb2a..5c05f07 100644 --- a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/dao/impl/SchemaRepository.java +++ b/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 partitionKey, Map columns) { -// Drop drop = SchemaBuilder.dropTable(keyspaceName, tableName); -// cassandraTemplate.getSession().execute(drop); + public void prepareTable(String keyspaceName, String tableName, int ttl, Map partitionKey, Map columns) { Create builder = SchemaBuilder.createTable(keyspaceName, tableName) .ifNotExists(); - for(Map.Entry 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); } } diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/RadarService.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/RadarService.java index 1adb112..6c50f56 100644 --- a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/RadarService.java +++ b/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> 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); diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/SchemaService.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/SchemaService.java index 7c285cb..a1720f2 100644 --- a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/service/impl/SchemaService.java +++ b/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 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 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); } } } diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/test/java/com/ping/chuan/ahpmsdp/xxljobexecutor/XxlJobExecutorApplicationTests.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/test/java/com/ping/chuan/ahpmsdp/xxljobexecutor/XxlJobExecutorApplicationTests.java index b57a00f..1090603 100644 --- a/04.系统编码/01.xxl-job/xxl-job-executor/src/test/java/com/ping/chuan/ahpmsdp/xxljobexecutor/XxlJobExecutorApplicationTests.java +++ b/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 partitionKey = new LinkedHashMap<>(5); + partitionKey.put("initial_time", DataType.timestamp()); + partitionKey.put("forecast_time", DataType.timestamp()); + + Map columns = new LinkedHashMap<>(2); + columns.put("name", DataType.varchar()); + columns.put("age", DataType.cint()); + + schemaRepository.prepareTable("data_202204", "test", 10, partitionKey, columns); + } + } diff --git a/04.系统编码/02.api-service/pom.xml b/04.系统编码/02.api-service/pom.xml index 0001d31..10c9052 100644 --- a/04.系统编码/02.api-service/pom.xml +++ b/04.系统编码/02.api-service/pom.xml @@ -14,8 +14,9 @@ 02.api-service 02.api-service - 11 + 15 3.9.0 + 1.0.0-SNAPSHOT @@ -70,6 +71,12 @@ metrics-core 3.2.6 + + + com.xiaowuler + radar-core + ${radar-core.version} + @@ -86,29 +93,12 @@ - - org.apache.maven.plugins - maven-compiler-plugin - - 13 - 13 - - - - org.apache.maven.plugins - maven-compiler-plugin - - 15 - 15 - - org.apache.maven.plugins maven-compiler-plugin 15 15 - --enable-preview diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseDataController.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseDataController.java index e6d7aa4..9535d60 100644 --- a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseDataController.java +++ b/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 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 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 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) 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 errors = new ArrayList<>(4); if (Objects.isNull(elementCode)){ @@ -166,15 +205,15 @@ 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){ - return "时间格式是yyyyMMddHHmmss"; + return "时间格式是yyyyMMddHHmmss"; } } - private Object convertLatLon(String latLons){ + public static Object convertLatLon(String latLons){ try { List newLocations = new ArrayList<>(); List locations = objectMapper.readValue(latLons, new TypeReference>() {}); diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseInfoController.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseInfoController.java index f4cb0be..b5ade99 100644 --- a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/controller/BaseInfoController.java +++ b/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)); + } } diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/IDataRepository.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/IDataRepository.java index 0587ab3..ab10add 100644 --- a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/IDataRepository.java +++ b/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 findForecastTime(String keyspace, String tableName, Date initialTime); + + List findRadarForecastTimes(String keyspace, String tableName, String radarType, String station, Integer number); + + List 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; } diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/impl/DataRepository.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/impl/DataRepository.java index d4fa75b..7787c9d 100644 --- a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/dao/impl/DataRepository.java +++ b/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 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 times = new ArrayList<>(); + for(Row row : resultSet){ + times.add(row.getTimestamp("initial_time")); + } + return times; + } + + @Override + public List 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 cuts = (List) 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>() { + }); + } + 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 cuts = (List) 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); diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadarBlock.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadarBlock.java new file mode 100644 index 0000000..a04da9b --- /dev/null +++ b/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 radials; +} diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadialBlock.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/model/domain/RadialBlock.java new file mode 100644 index 0000000..d35e1e6 --- /dev/null +++ b/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; +} diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/IDataService.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/IDataService.java index 0d9b057..6f4f593 100644 --- a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/IDataService.java +++ b/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 findInitialTime(Map.Entry entry) throws Exception; List findForecastTime(Map.Entry entry, Date initialTimeValue) throws Exception; + + List findRadarRealTimes(String radarType, String station, Integer number); + + List getRadarStations(); + + List 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; } diff --git a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/impl/DataService.java b/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/impl/DataService.java index 7eb3f4c..a59cd7b 100644 --- a/04.系统编码/02.api-service/src/main/java/com/ping/chuan/apiservice/service/impl/DataService.java +++ b/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 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 findRadarRealTimes(String radarType, String station, Integer number) { + List 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 getRadarStations() { + return radarStations; + } + + @Override + public List 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 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 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 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 pointValues){ PointValueVo pointValueVo = new PointValueVo(); pointValueVo.setPointValues(pointValues); diff --git a/04.系统编码/03.radar-resolver/radar-core/pom.xml b/04.系统编码/03.radar-resolver/radar-core/pom.xml index 55a28e0..fcad3fe 100644 --- a/04.系统编码/03.radar-resolver/radar-core/pom.xml +++ b/04.系统编码/03.radar-resolver/radar-core/pom.xml @@ -18,9 +18,35 @@ 2.7.1 1.18.22 2.6.4 + 2.12.5 + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + compile + + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + ${jackson.version} + compile + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} + compile + + + com.fasterxml.jackson.module + jackson-module-parameter-names + ${jackson.version} + compile + + org.python jython-standalone diff --git a/04.系统编码/03.radar-resolver/radar-core/radar-core.iml b/04.系统编码/03.radar-resolver/radar-core/radar-core.iml index 4fa1cde..8ac9dd1 100644 --- a/04.系统编码/03.radar-resolver/radar-core/radar-core.iml +++ b/04.系统编码/03.radar-resolver/radar-core/radar-core.iml @@ -5,10 +5,18 @@ + + + + + + + + diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CommonBlock.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CommonBlock.java index ec08626..82ae978 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CommonBlock.java +++ b/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; diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CutConfiguration.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CutConfiguration.java index 71b90b0..1d6cb73 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/CutConfiguration.java +++ b/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; diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/GenericHeader.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/GenericHeader.java index 96232f3..f7e9233 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/GenericHeader.java +++ b/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; /** * 魔术字: 固定标志,用来指示雷达数据文件 */ diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentBlock.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentBlock.java index 951e186..060b11f 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentBlock.java +++ b/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; diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentData.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentData.java index a2ec058..e9401b9 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentData.java +++ b/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 { diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentHeader.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentHeader.java index b8c91f0..5b74bae 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/MomentHeader.java +++ b/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; diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadarBlock.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadarBlock.java index 5ec1f04..6c9ccaa 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadarBlock.java +++ b/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; } diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/Radial.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/Radial.java index 10a8862..25f54f1 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/Radial.java +++ b/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; diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialBlock.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialBlock.java index f8dc33a..bd4e608 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialBlock.java +++ b/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 radials; public RadialBlock(ICustomInputStream ICustomInputStream) throws IOException { diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialHeader.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialHeader.java index ad554cd..1af11bc 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/RadialHeader.java +++ b/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; diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/SiteConfiguration.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/SiteConfiguration.java index f21203d..3eb90c8 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/SiteConfiguration.java +++ b/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 diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/TaskConfiguration.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/TaskConfiguration.java index 4beb056..484739d 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/domain/TaskConfiguration.java +++ b/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; /** * 任务名称,单偏振模式为VCP11,VCP21,VCP31,VCP32; * 双偏振模式为 VCP11D,VCP21D,VCP31D,VCP32D。