From f1f0bf275adada9c3c6614e06cdcf45fae11c031 Mon Sep 17 00:00:00 2001 From: xiaowuler <xiaowuler@163.com> Date: Mon, 21 Mar 2022 13:39:52 +0800 Subject: [PATCH] modify sone codes --- .../xxljobexecutor/dao/IDataRepository.java | 1 + .../dao/impl/DataRepository.java | 51 +++++++++++++--- .../model/domain/RadarBlock.java | 24 ++++++++ .../service/impl/RadarService.java | 57 ++++++++++++++++-- .../core/weather/resolver/RadarReader.java | 2 + .../core/weather/resolver/RadarReader$1.class | Bin 1345 -> 1345 bytes .../core/weather/resolver/RadarReader.class | Bin 3049 -> 4152 bytes .../target/maven-archiver/pom.properties | 2 +- .../compile/default-compile/inputFiles.lst | 38 ++++++------ .../target/radar-core-1.0.0-SNAPSHOT.jar | Bin 36966 -> 37429 bytes 10 files changed, 143 insertions(+), 32 deletions(-) create mode 100644 04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/model/domain/RadarBlock.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 f3e37de..f929007 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,4 +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, Map<String, byte[]> columns, int maxCount); } 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 20d9d36..1fd7a2a 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,17 +38,32 @@ public class DataRepository implements IDataRepository { return; } - groupInsert(keyspace, tableName, targetColumns, targetValues); + groupInsert(keyspace, tableName, targetColumns, targetValues, maxInsertCount, 2); } - private void groupInsert(String keyspace, String tableName, List<String> columns, List<Object> values){ - int len = CalcUtil.calcClip(columns.size() - 2, maxInsertCount); + @Override + public void insert(String keyspace, String tableName, Date initialTime, Date forecastTime, String station, Map<String, byte[]> columns, int maxCount) { + List<String> targetColumns = prepareRadarColumnNames(columns.keySet()); + List<Object> targetValues = prepareColumnValues(initialTime, forecastTime, station, columns.values()); + + if (targetColumns.size() <= maxCount){ + Insert builder = QueryBuilder.insertInto(keyspace, tableName) + .values(targetColumns, targetValues); + cassandraTemplate.getSession().execute(builder); + return; + } + + groupInsert(keyspace, tableName, targetColumns, targetValues, maxCount, 3); + } + + private void groupInsert(String keyspace, String tableName, List<String> columns, List<Object> values, int maxCount, int limit){ + int len = CalcUtil.calcClip(columns.size() - limit, maxCount); for(int index = 0; index < len; index ++){ - int startIndex = (index) * maxInsertCount + 2; - List<String> targetColumns = columns.stream().limit(2).collect(Collectors.toList()); - targetColumns.addAll(columns.stream().skip(startIndex).limit(maxInsertCount).collect(Collectors.toList())); - List<Object> targetValues = values.stream().limit(2).collect(Collectors.toList()); - targetValues.addAll(values.stream().skip(startIndex).limit(maxInsertCount).collect(Collectors.toList())); + int startIndex = (index) * maxCount + limit; + List<String> targetColumns = columns.stream().limit(limit).collect(Collectors.toList()); + targetColumns.addAll(columns.stream().skip(startIndex).limit(maxCount).collect(Collectors.toList())); + List<Object> targetValues = values.stream().limit(limit).collect(Collectors.toList()); + targetValues.addAll(values.stream().skip(startIndex).limit(maxCount).collect(Collectors.toList())); Insert builder = QueryBuilder.insertInto(keyspace, tableName) .values(targetColumns, targetValues); cassandraTemplate.getSession().execute(builder); @@ -65,6 +80,16 @@ public class DataRepository implements IDataRepository { return columns; } + private List<String> prepareRadarColumnNames(Set<String> columnSet){ + List<String> columns = new ArrayList<>(); + columns.add("initial_time"); + columns.add("forecast_time"); + columns.add("station"); + columns.add("create_time"); + columns.addAll(columnSet); + return columns; + } + private List<Object> prepareColumnValues(Date initialTime, Date forecastTime, int timeEffect, Collection<List<List<BigDecimal>>> values){ List<Object> columns = new ArrayList<>(); columns.add(initialTime); @@ -74,4 +99,14 @@ public class DataRepository implements IDataRepository { columns.addAll(values); return columns; } + + private List<Object> prepareColumnValues(Date initialTime, Date forecastTime, String station, Collection<byte[]> values){ + List<Object> columns = new ArrayList<>(); + columns.add(initialTime); + columns.add(forecastTime); + columns.add(station); + columns.add(new Date()); + columns.addAll(values); + return columns; + } } diff --git a/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/model/domain/RadarBlock.java b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/model/domain/RadarBlock.java new file mode 100644 index 0000000..4c99adf --- /dev/null +++ b/04.系统编码/01.xxl-job/xxl-job-executor/src/main/java/com/ping/chuan/ahpmsdp/xxljobexecutor/model/domain/RadarBlock.java @@ -0,0 +1,24 @@ +package com.ping.chuan.ahpmsdp.xxljobexecutor.model.domain; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import com.xiaowuler.radar.core.weather.domain.CutConfiguration; +import com.xiaowuler.radar.core.weather.domain.MomentBlock; +import com.xiaowuler.radar.core.weather.domain.Radial; +import com.xiaowuler.radar.core.weather.domain.RadialHeader; + +/** + * @describe: leida + * @author: xiaowuler + * @createTime: 2022-03-18 16:57 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class RadarBlock { + private CutConfiguration cutConfiguration; + private List<Radial> radials; +} 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 16cc05f..6d15831 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 @@ -1,14 +1,28 @@ package com.ping.chuan.ahpmsdp.xxljobexecutor.service.impl; +import com.ping.chuan.ahpmsdp.xxljobexecutor.dao.IDataRepository; +import com.ping.chuan.ahpmsdp.xxljobexecutor.dao.IDealInfoRepository; +import com.ping.chuan.ahpmsdp.xxljobexecutor.model.constant.StateConstant; +import com.ping.chuan.ahpmsdp.xxljobexecutor.model.constant.TimeConstant; import com.ping.chuan.ahpmsdp.xxljobexecutor.model.dao.DealInfo; import com.ping.chuan.ahpmsdp.xxljobexecutor.model.dao.MetaInfo; import com.ping.chuan.ahpmsdp.xxljobexecutor.model.domain.Coordinate; +import com.ping.chuan.ahpmsdp.xxljobexecutor.model.domain.RadarBlock; import com.ping.chuan.ahpmsdp.xxljobexecutor.service.IRadarService; +import com.ping.chuan.ahpmsdp.xxljobexecutor.util.GZipUtils; + import org.springframework.stereotype.Service; -import java.util.Map; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; +import com.fasterxml.jackson.databind.ObjectMapper; import com.xiaowuler.radar.core.exceptions.RadarReadException; +import com.xiaowuler.radar.core.weather.domain.CommonBlock; +import com.xiaowuler.radar.core.weather.domain.CutConfiguration; +import com.xiaowuler.radar.core.weather.domain.Radial; import com.xiaowuler.radar.core.weather.resolver.RadarReader; /** @@ -16,16 +30,51 @@ import com.xiaowuler.radar.core.weather.resolver.RadarReader; */ @Service public class RadarService implements IRadarService { + + private static final ObjectMapper mapper = new ObjectMapper(); + + private final IDataRepository dataRepository; + private final IDealInfoRepository dealInfoRepository; + public RadarService(IDataRepository dataRepository, IDealInfoRepository dealInfoRepository){ + this.dataRepository = dataRepository; + this.dealInfoRepository = dealInfoRepository; + } + @Override public String read(Map.Entry<DealInfo, Map.Entry<MetaInfo, Coordinate>> entry) { + SimpleDateFormat sdf = new SimpleDateFormat(TimeConstant.YYYYMM_STR); + String keyspace = "data_%s".formatted(sdf.format( entry.getKey().getInitialTime())); + String error = null; try { RadarReader radarReader = new RadarReader(); radarReader.read(entry.getKey().getLocalPath()); + Map<String, byte[]> 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(), columns, 2); + entry.getKey().setState(StateConstant.SUCCESS); + } catch (RadarReadException | IOException e) { + entry.getKey().setState(StateConstant.FAILED); + entry.getKey().setMessage(e.getMessage()); + error = e.getMessage(); + } + dealInfoRepository.insert(keyspace, entry.getKey()); + return Objects.isNull(error) ? "文件解析成功" : "文件解析失败,%s".formatted(error); + } + + private Map<String, byte[]> toColumns(CommonBlock commonBlock) throws IOException { + return new LinkedHashMap<>(){{ + put("site_configuration", GZipUtils.compress(mapper.writeValueAsBytes(commonBlock.getSiteConfiguration()))); + put("task_configuration", GZipUtils.compress(mapper.writeValueAsBytes(commonBlock.getTaskConfiguration()))); + put("generic_header", GZipUtils.compress(mapper.writeValueAsBytes(commonBlock.getGenericHeader()))); + }}; + } - } catch (RadarReadException e) { - e.printStackTrace(); + private void toColumns(Map<String, byte[]> columns, List<CutConfiguration> cutConfigurations, List<Radial> radials) throws IOException { + for(int index = 0, len = cutConfigurations.size(); index < len; index++){ + int num = index + 1; + List<Radial> targetRadial = radials.stream().filter(r -> r.getRadialHeader().getElevationNumber() == num).collect(Collectors.toList()); + columns.put("col_%s".formatted(index), GZipUtils.compress(mapper.writeValueAsBytes(new RadarBlock(cutConfigurations.get(index), targetRadial)))); } - return null; } } diff --git a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/resolver/RadarReader.java b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/resolver/RadarReader.java index 113db2a..57e6768 100644 --- a/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/resolver/RadarReader.java +++ b/04.系统编码/03.radar-resolver/radar-core/src/main/java/com/xiaowuler/radar/core/weather/resolver/RadarReader.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import com.xiaowuler.radar.core.custom.impl.CustomRadarInputStream; import com.xiaowuler.radar.core.exceptions.RadarReadException; @@ -17,6 +18,7 @@ import com.xiaowuler.radar.core.weather.domain.*; * @createTime: 2022-03-09 11:09 */ @Slf4j +@Data public class RadarReader implements Serializable { private static final double DEG2RAD = Math.PI / 180; diff --git a/04.系统编码/03.radar-resolver/radar-core/target/classes/com/xiaowuler/radar/core/weather/resolver/RadarReader$1.class b/04.系统编码/03.radar-resolver/radar-core/target/classes/com/xiaowuler/radar/core/weather/resolver/RadarReader$1.class index 52ecab3184ed73dd6091a5e904ed1cb26316697c..d8cbdc7abf6329664fe1df075ea699fc36c233e8 100644 GIT binary patch delta 25 gcmX@eb&zYrBNko-20jKw23ZCr1|0_F$?sW$09DBa?*IS* delta 25 gcmX@eb&zYrBNkpc20jLP23ZCL1|0^)$?sW$09A1X=Kufz diff --git a/04.系统编码/03.radar-resolver/radar-core/target/classes/com/xiaowuler/radar/core/weather/resolver/RadarReader.class b/04.系统编码/03.radar-resolver/radar-core/target/classes/com/xiaowuler/radar/core/weather/resolver/RadarReader.class index 14fb3f83e540954478426640bea742368146712e..edadb33ea473c5caae215deca1b954a322fb194e 100644 GIT binary patch literal 4152 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 O^DY1V0&n6i)c+Swo%9y~ delta 1351 zcmY*YTT@$A7+pKbIVU+BPBDZgV1)((O+wPNlv|)s+DergD73bM^+KAaX&@$;q!$s5 z*GFdT?5Dozldsl}f@Q|m8E2gF&7a_-|3Js_vi3nso6OmJ?eBb-^{xG#?SsDs=YRhD z!S?`0@TmcpfW4BvnN5|l<w9yUTfc6?1I>VL!GKqwW$*2|D=Yb2T|hrxEEnsO0`6$+ zk^%Ehc&g6_O9eCwv_&&}As6b^V!1G`-1Z5KNTCl|k)tMTJfqzGcYfKh186g_-$D=} zfg$B0KNDw~I`FK40~Ve`r~FlnF8XlLLReAKa-~WwZ=gq@b+6R)?OcAXUaXXT2%y(O z9}baWsZtQ|XDZb~s#dx-xRT0L3Wa=i+)n{w7UJlaw_MXrNgOtivTy`P<xj4&o?`;T z@(a-}54*d(0~k_dhvh|gmp*DCjWN0I?&zMhZ~|j2QY)7AsmqU;5-@QZ&l{Mwa0V~P zA3XD7M*6i;xu7NG@7hVtQ_W|u$_;HpruCWNYflNhtCoQ`?%&l1g#6q)Yu`5U4%Q94 ztGI5+KfOPS_vIsBxJ|&CDVOur)1_>!maiH3P@q>%nVn`NQ>m=pSTpdkoG_D(0Pj=a zMYz$SG$F+foW)DDWr$rE=R@g<HQIRRTxWSoaTm%O--7#|<2uJxcZ>m?Ber%OFpmYE z1kR(G$rvo!m`tPXylBksz_--Dg{IlWTzm)iQarhZmT%CS*hc$Z97}wQt}l_8`x=q{ z2Z#d6?~rg~2LnrV9DF$D*>yCOW4q_!J$B+^4^ebG`$?9GQgpSup(qZMhU(IV188b+ zfSS?iG#_UBDlCQ`j3UC2K1y+jK{0j^cX}Em?`Hll;AN(ZQJ9OkM8sbH>r<guu*iO0 zv@Frjg;)8$2cCbJ-fbXY;IaW9gn{nHqJh`{qEy`epy!+PR2MS9XBk<pO0O2mu10b> zvbl|sp3T+X%>c$%iC5FQvQ0c~^M>>QrYdPOWCpd(T-pkGc@A0s2UXH`$PRk=M#ii_ zL#fh92EZ6Uj&ZU)&QYJB2$K}x1RI)inqMbRl6c(cGOi#;ipqAC$mO6skrHGX*N8k0 zDiCSRoxyd^md*;JC=z*D=STx9geFZ<tP)u)x*sJXo26~MMbyGFWmH%~4PSyMRn{fG zQmb>VyOX!@#N;Xc)#R-?K5w&F_3`+Iop`|K4{Xol)O|$M42vf+wUT<xiLB!WcXcZ^ bZW5_a;1-|v(BR3>`Zjm<`v4!|6SV&ezWLMx diff --git a/04.系统编码/03.radar-resolver/radar-core/target/maven-archiver/pom.properties b/04.系统编码/03.radar-resolver/radar-core/target/maven-archiver/pom.properties index b66d66c..153707c 100644 --- a/04.系统编码/03.radar-resolver/radar-core/target/maven-archiver/pom.properties +++ b/04.系统编码/03.radar-resolver/radar-core/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Fri Mar 18 15:26:32 CST 2022 +#Fri Mar 18 17:07:47 CST 2022 groupId=com.xiaowuler artifactId=radar-core version=1.0.0-SNAPSHOT diff --git a/04.系统编码/03.radar-resolver/radar-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/04.系统编码/03.radar-resolver/radar-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 2fb11b9..5848a97 100644 --- a/04.系统编码/03.radar-resolver/radar-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/04.系统编码/03.radar-resolver/radar-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,19 +1,19 @@ -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\RadarBlock.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\SiteConfiguration.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\Radial.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\custom\ICustomInputStream.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\GenericHeader.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\CommonBlock.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\util\ByteUtils.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\RadialBlock.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\MomentHeader.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\resolver\RadarReader.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\enums\RadarSuffixEnum.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\RadialHeader.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\CutConfiguration.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\custom\impl\CustomRadarInputStream.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\MomentData.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\custom\impl\CustomerDataOutputStream.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\TaskConfiguration.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\exceptions\RadarReadException.java -C:\Project\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\MomentBlock.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\exceptions\RadarReadException.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\custom\ICustomInputStream.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\custom\impl\CustomRadarInputStream.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\MomentBlock.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\util\ByteUtils.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\Radial.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\SiteConfiguration.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\CommonBlock.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\custom\impl\CustomerDataOutputStream.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\CutConfiguration.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\enums\RadarSuffixEnum.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\TaskConfiguration.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\RadarBlock.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\RadialBlock.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\RadialHeader.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\GenericHeader.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\resolver\RadarReader.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\MomentHeader.java +E:\Projects\2021\AnhuiPublicMeteorologicalServiceDataPlatform\04.系统编码\03.radar-resolver\radar-core\src\main\java\com\xiaowuler\radar\core\weather\domain\MomentData.java diff --git a/04.系统编码/03.radar-resolver/radar-core/target/radar-core-1.0.0-SNAPSHOT.jar b/04.系统编码/03.radar-resolver/radar-core/target/radar-core-1.0.0-SNAPSHOT.jar index 519b6e5f1623b90025d6d52fee9d17715a29f79d..876ec62a38115b03bf825179cb9f824a21c8c636 100644 GIT binary patch delta 4321 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 delta 3739 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 S>liSv3~f)|!4(mP<o*vSj`H*X