From bcc076d63c5c2ff473adb5ac15ea242559086000 Mon Sep 17 00:00:00 2001
From: cjl <909710561@qq.com>
Date: Tue, 08 Sep 2026 17:00:13 +0800
Subject: [PATCH] fix:雷达调整
---
screen-api/src/main/java/com/moral/api/service/impl/HistorySecondRadarServiceImpl.java | 68 +++++++++++++++++++++++++++++++++-
1 files changed, 66 insertions(+), 2 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondRadarServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondRadarServiceImpl.java
index 4c89ce1..6bf38d9 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondRadarServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondRadarServiceImpl.java
@@ -31,8 +31,23 @@
public RadarListVo radarList(RadarListCond cond) {
RadarListVo radarListVo = new RadarListVo();
List<String> time = new ArrayList<>();
- List<HistorySecondRadarListVo> list = this.baseMapper.listRadar(cond);
List<List<double[]>> pm25 = new ArrayList<>();
+ List<List<double[]>> pm10 = new ArrayList<>();
+ List<String> highList = buildHighList(cond.getHigh2());
+ List<String> highList1 = buildHighList(cond.getHigh1());
+ List<HistorySecondRadarListVo> list = this.baseMapper.listRadar(cond);
+ for (HistorySecondRadarListVo row : list) {
+ time.add(row.getTimeStr());
+ double[] pm25Values = parseValues(row.getRadarData(), "a34004-Avg");
+ double[] pm10Values = parseValues(row.getRadarData(), "a34002-Avg");
+ pm25.add(buildPointList(pm25Values, highList.size(),highList1.size()));
+ pm10.add(buildPointList(pm10Values, highList.size(),highList1.size()));
+ }
+ radarListVo.setPm25(pm25);
+ radarListVo.setTime(time);
+ radarListVo.setPm10(pm10);
+
+ /* List<List<double[]>> pm25 = new ArrayList<>();
List<List<double[]>> pm10 = new ArrayList<>();
for(HistorySecondRadarListVo ot : list){
pm10.add(convertSingleRecordToJson(ot.getRadarDataPm10(),cond.getHigh1(),cond.getHigh2()));
@@ -41,10 +56,59 @@
}
radarListVo.setPm25(pm25);
radarListVo.setTime(time);
- radarListVo.setPm10(pm10);
+ radarListVo.setPm10(pm10);*/
return radarListVo;
}
+ private static List<double[]> buildPointList(double[] values, int pointCount, int minPointCount) {
+ List<double[]> pointList = new ArrayList<double[]>(pointCount);
+ int count = Math.min(pointCount, values.length);
+ int minCount = Math.min(minPointCount, values.length);
+ for (int i = minCount; i < count; i++) {
+ pointList.add(new double[]{values[i]});
+ }
+ return pointList;
+ }
+ private static List<String> buildHighList(int MAX_HEIGHT) {
+ List<String> highList = new ArrayList<String>();
+ int count = (int) (MAX_HEIGHT / HEIGHT_INTERVAL) + 1;
+ for (int i = 0; i < count; i++) {
+ highList.add(formatHeight(i * HEIGHT_INTERVAL));
+ }
+ return highList;
+ }
+ private static double[] parseValues(String json, String key) {
+ if (json == null) {
+ return new double[0];
+ }
+ String keyToken = "\"" + key + "\":";
+ int keyIndex = json.indexOf(keyToken);
+ if (keyIndex < 0) {
+ return new double[0];
+ }
+
+ int bracketStart = json.indexOf('[', keyIndex + keyToken.length());
+ int bracketEnd = json.indexOf(']', bracketStart + 1);
+ if (bracketStart < 0 || bracketEnd < 0 || bracketEnd - bracketStart <= 1) {
+ return new double[0];
+ }
+
+ String body = json.substring(bracketStart + 1, bracketEnd).trim();
+ if (body.isEmpty()) {
+ return new double[0];
+ }
+
+ String[] parts = body.split(",");
+ double[] values = new double[parts.length];
+ for (int i = 0; i < parts.length; i++) {
+ values[i] = Double.parseDouble(parts[i].trim());
+ }
+ return values;
+ }
+
+ private static String formatHeight(double height) {
+ return BigDecimal.valueOf(height).stripTrailingZeros().toPlainString();
+ }
private List<double[]> convertSingleRecordToJson(String rawData,int high1,int high2){
if (rawData == null || rawData.isEmpty()) {
return new ArrayList<>();
--
Gitblit v1.8.0