From 084fcff73e6858862544c3901361adfe5742016c Mon Sep 17 00:00:00 2001
From: cjl <909710561@qq.com>
Date: Wed, 09 Sep 2026 15:32:15 +0800
Subject: [PATCH] fix:雷达调整
---
screen-job/src/main/java/com/moral/api/vo/RadarHourlySummaryVO.java | 64 +++++++++
screen-job/src/main/java/com/moral/api/controller/RadarProcessController.java | 50 ++++++
screen-job/src/main/java/com/moral/api/service/impl/RadarHourlySummaryServiceImpl.java | 62 ++++++++
screen-job/src/main/java/com/moral/api/vo/HourlyItemVO.java | 22 +++
screen-job/src/main/java/com/moral/api/vo/DailyDropHeightVO.java | 20 ++
screen-job/src/main/java/com/moral/api/vo/HourlyResponse.java | 31 ++++
screen-job/src/main/resources/mapper/RadarHourlySummaryMapper.xml | 28 ++++
screen-job/src/main/java/com/moral/api/controller/PubController.java | 12
screen-job/src/main/java/com/moral/api/service/RadarHourlySummaryService.java | 18 ++
screen-job/src/main/java/com/moral/api/mapper/RadarHourlySummaryMapper.java | 36 +++++
screen-job/src/main/java/com/moral/api/vo/ComparisonResponse.java | 31 ++++
11 files changed, 365 insertions(+), 9 deletions(-)
diff --git a/screen-job/src/main/java/com/moral/api/controller/PubController.java b/screen-job/src/main/java/com/moral/api/controller/PubController.java
index cb46262..d789a08 100644
--- a/screen-job/src/main/java/com/moral/api/controller/PubController.java
+++ b/screen-job/src/main/java/com/moral/api/controller/PubController.java
@@ -175,18 +175,18 @@
@GetMapping("secondCruiserSort")
@ApiOperation(value = "���������������", notes = "���������������")
- public ResultMessage secondCruiserSort() {
- String startTime ="2024-11-13 00:00:00";
- String endTime ="2024-11-14 00:00:00";
+ public ResultMessage secondCruiserSort(String time) {
+ String startTime = time+" 00:08:01";
+ String endTime = time+" 23:23:00";
historySecondCruiserService.sort(startTime,endTime);
return new ResultMessage();
}
@GetMapping("insertCoordinateDetail")
@ApiOperation(value = "������������", notes = "������������")
- public ResultMessage insertCoordinateDetail() {
- String startTime ="2024-06-06 00:07:01";
- String endTime ="2024-06-06 23:07:01";
+ public ResultMessage insertCoordinateDetail(String startTime,String endTime) {
+ startTime = startTime+" 00:08:01";
+ endTime = endTime+" 23:23:00";
manageCoordinateDetailService.insertCoordinateDetail(startTime,endTime);
return new ResultMessage();
}
diff --git a/screen-job/src/main/java/com/moral/api/controller/RadarProcessController.java b/screen-job/src/main/java/com/moral/api/controller/RadarProcessController.java
index bb8e51f..b3266fb 100644
--- a/screen-job/src/main/java/com/moral/api/controller/RadarProcessController.java
+++ b/screen-job/src/main/java/com/moral/api/controller/RadarProcessController.java
@@ -1,8 +1,12 @@
package com.moral.api.controller;
import com.moral.api.service.RadarHourlySummaryService;
+import com.moral.api.vo.ComparisonResponse;
+import com.moral.api.vo.HourlyResponse;
import com.moral.constant.ResultMessage;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -46,8 +50,8 @@
*/
@GetMapping("/process")
public ResultMessage processHour() {
- String startStr = "2026-05-31 23:00:00";
- String endStr = "2026-09-08 14:00:00";
+ String startStr = "2026-09-08 14:00:00";
+ String endStr = "2026-09-09 13:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime startTime = LocalDateTime.parse(startStr, formatter);
LocalDateTime endTime = LocalDateTime.parse(endStr, formatter);
@@ -68,4 +72,46 @@
hourlySummaryService.processHour(startStr);
return new ResultMessage();
}
+
+ /**
+ * ���������������������������
+ * GET /radar/comparison?location=������&time=2026-09-09 09:00:00
+ *
+ * @param location ������������
+ * @param time ������������������������������������ current
+ */
+ @GetMapping("/comparison")
+ @ApiOperation("���������������������������")
+ public ResultMessage getComparison(@RequestParam @ApiParam(value = "location",name = "������") String location,
+ @RequestParam @ApiParam(value = "time",name = "������ yyyy-MM-dd HH:mm:ss") String time) {
+ if(!location.equals("������")){
+ return ResultMessage.ok("���������������������������");
+ }
+ ComparisonResponse comparisonResponse = hourlySummaryService.getComparison(location, time);
+
+ return ResultMessage.ok(comparisonResponse);
+ }
+
+ /**
+ * ���������������������������������������������������
+ * GET /radar/hourly?location=������&startTime=2026-09-04 09:00:00&endTime=2026-09-09 09:00:00
+ *
+ * @param location ������������
+ * @param startTime ������������������������
+ * @param endTime ���������������������������
+ */
+ @GetMapping("/hourly")
+ @ApiOperation("���������5���������������������������")
+ public ResultMessage getHourly5Days(@RequestParam @ApiParam(value = "location",name = "������") String location,
+ @RequestParam @ApiParam(value = "startTime",name = "������������") String startTime,
+ @RequestParam @ApiParam(value = "endTime",name = "������������") String endTime) {
+ if(!location.equals("������")){
+ return ResultMessage.ok("���������������������������");
+ }
+
+ HourlyResponse getHourly5Days = hourlySummaryService.getHourly5Days(location, startTime, endTime);
+
+ return ResultMessage.ok(getHourly5Days);
+ }
+
}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/RadarHourlySummaryMapper.java b/screen-job/src/main/java/com/moral/api/mapper/RadarHourlySummaryMapper.java
index 7317c90..e2acbc2 100644
--- a/screen-job/src/main/java/com/moral/api/mapper/RadarHourlySummaryMapper.java
+++ b/screen-job/src/main/java/com/moral/api/mapper/RadarHourlySummaryMapper.java
@@ -2,6 +2,11 @@
import com.moral.api.entity.RadarHourlySummary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.vo.DailyDropHeightVO;
+import com.moral.api.vo.RadarHourlySummaryVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -15,10 +20,39 @@
+ /**
+ * ��������������������� a34004_drop_height ������������
+ *
+ * @param start ������������������������
+ * @param end ���������������������������
+ */
+
+ Double getAvgDropHeightInRange(@Param("start") String start, @Param("end") String end);
/**
- * ���������������������������������������
+ * ��������������������������� a34004_drop_height ���������������������������
+ *
+ * @param start ������������������������
+ * @param end ���������������������������
*/
+ List<DailyDropHeightVO> getDailyAvgDropHeight(@Param("start") String start, @Param("end") String end);
+
+
+ /**
+ * ������������������������������������������
+ *
+ * @param time ��������������������� yyyy-MM-dd HH:mm:ss
+ */
+ RadarHourlySummaryVO getByTime(@Param("time") String time);
+
+ /**
+ * ���������������������������������������������������
+ *
+ * @param start ������������������������
+ * @param end ���������������������������
+ */
+
+ List<RadarHourlySummaryVO> queryHourlyByRange(@Param("start") String start, @Param("end") String end);
}
diff --git a/screen-job/src/main/java/com/moral/api/service/RadarHourlySummaryService.java b/screen-job/src/main/java/com/moral/api/service/RadarHourlySummaryService.java
index 7e3f432..355e833 100644
--- a/screen-job/src/main/java/com/moral/api/service/RadarHourlySummaryService.java
+++ b/screen-job/src/main/java/com/moral/api/service/RadarHourlySummaryService.java
@@ -2,6 +2,8 @@
import com.moral.api.entity.RadarHourlySummary;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.vo.ComparisonResponse;
+import com.moral.api.vo.HourlyResponse;
/**
* <p>
@@ -24,4 +26,20 @@
*/
void processLastHour();
+ /**
+ * ���������������������30���������������
+ *
+ * @param location ������������"������"
+ * @param time ������������������"2026-09-09 09:00:00"���������������������8:00��������� current
+ */
+ ComparisonResponse getComparison(String location, String time);
+
+ /**
+ * ���������������������������������������������������
+ *
+ * @param location ������
+ * @param startTime ������������������������
+ * @param endTime ���������������������������
+ */
+ HourlyResponse getHourly5Days(String location, String startTime, String endTime);
}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/RadarHourlySummaryServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/RadarHourlySummaryServiceImpl.java
index d438529..e873cac 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/RadarHourlySummaryServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/RadarHourlySummaryServiceImpl.java
@@ -5,6 +5,8 @@
import com.moral.api.service.HistorySecondRadarService;
import com.moral.api.service.RadarHourlySummaryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.vo.*;
+import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -34,6 +36,7 @@
private static final int PEAK_SEARCH_LIMIT = 200;
private static final DateTimeFormatter FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:00:00");
+ private static final DateTimeFormatter DT_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -45,6 +48,65 @@
}
@Override
+ public ComparisonResponse getComparison(String location, String time) {
+ // ������������ ��� ��������������� = current ������
+ LocalDateTime inputTime = LocalDateTime.parse(time, DT_FMT);
+ LocalDateTime prevHour = inputTime.minusHours(1).withMinute(0).withSecond(0).withNano(0);
+ String currentTime = prevHour.format(DT_FMT);
+
+ // 30 ������������currentTime��������������������� 30 ���
+ String endStr = currentTime;
+ String startStr = prevHour.minusDays(30).format(DT_FMT);
+
+ ComparisonResponse resp = new ComparisonResponse();
+ resp.setLocation(location);
+ resp.setTime(time);
+
+ // current: ������������������ a34004_drop_height
+ RadarHourlySummaryVO cur = this.baseMapper.getByTime(currentTime);
+ resp.setCurrent(cur != null && cur.getA34004DropHeight() != null ? cur.getA34004DropHeight().doubleValue() : 0.0);
+
+ // avg30: 720 ������������
+ Double avg = this.baseMapper.getAvgDropHeightInRange(startStr, endStr);
+ resp.setAvg30(avg != null ? avg : 0.0);
+
+ // daily30: ���������������������������
+ List<DailyDropHeightVO> rows = this.baseMapper.getDailyAvgDropHeight(startStr, endStr);
+ if(CollectionUtils.isEmpty(rows)){
+ List<DailyDropHeightVO> daily = new ArrayList<>();
+ String todayStr = prevHour.toLocalDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ DailyDropHeightVO dropHeightVO = new DailyDropHeightVO();
+ dropHeightVO.setDate(todayStr);
+ dropHeightVO.setDropHeight(0d);
+ daily.add(dropHeightVO);
+ resp.setDaily30(daily);
+ }else {
+ resp.setDaily30(rows);
+ }
+ return resp;
+ }
+
+ @Override
+ public HourlyResponse getHourly5Days(String location, String startTime, String endTime) {
+ HourlyResponse resp = new HourlyResponse();
+ resp.setLocation(location);
+ resp.setStartTime(startTime);
+ resp.setEndTime(endTime);
+
+ List<RadarHourlySummaryVO> list = this.baseMapper.queryHourlyByRange(startTime, endTime);
+ List<HourlyItemVO> items = new ArrayList<>();
+ for (RadarHourlySummaryVO s : list) {
+ HourlyItemVO item = new HourlyItemVO();
+ item.setTime(s.getTimeStr());
+ item.setA34004DropHeight(s.getA34004DropHeight().doubleValue());
+ items.add(item);
+ }
+ resp.setCount(items.size());
+ resp.setHourly(items);
+ return resp;
+ }
+
+ @Override
public void processHour(String hourStart) {
String hourEnd = nextHour(hourStart);
List<String> rawList = radarService.queryRawDataByHour(hourStart, hourEnd);
diff --git a/screen-job/src/main/java/com/moral/api/vo/ComparisonResponse.java b/screen-job/src/main/java/com/moral/api/vo/ComparisonResponse.java
new file mode 100644
index 0000000..7d432a6
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/vo/ComparisonResponse.java
@@ -0,0 +1,31 @@
+package com.moral.api.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * /radar/comparison ������������������
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ComparisonResponse {
+
+ /** ������������������"������" */
+ private String location;
+
+ /** ������������������������������ */
+ private String time;
+
+ /** ��������������������� a34004_drop_height */
+ private Double current;
+
+ /** ���30������720���������a34004_drop_height ��������� */
+ private Double avg30;
+
+ /** ���30������������������������������ */
+ private List<DailyDropHeightVO> daily30;
+
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/vo/DailyDropHeightVO.java b/screen-job/src/main/java/com/moral/api/vo/DailyDropHeightVO.java
new file mode 100644
index 0000000..f4b7648
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/vo/DailyDropHeightVO.java
@@ -0,0 +1,20 @@
+package com.moral.api.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * daily30 ���������������������
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DailyDropHeightVO {
+
+ /** ��������������� yyyy-MM-dd */
+ private String date;
+
+ /** ������ a34004_drop_height ��������� */
+ private Double dropHeight;
+
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/vo/HourlyItemVO.java b/screen-job/src/main/java/com/moral/api/vo/HourlyItemVO.java
new file mode 100644
index 0000000..c46268d
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/vo/HourlyItemVO.java
@@ -0,0 +1,22 @@
+package com.moral.api.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * /radar/hourly ������������������������������
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HourlyItemVO {
+
+ /** ��������������������� yyyy-MM-dd HH:mm:ss */
+ private String time;
+
+
+ /** a34004-Avg ������������������/���������(m) */
+ private Double a34004DropHeight;
+
+
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/vo/HourlyResponse.java b/screen-job/src/main/java/com/moral/api/vo/HourlyResponse.java
new file mode 100644
index 0000000..f1c5899
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/vo/HourlyResponse.java
@@ -0,0 +1,31 @@
+package com.moral.api.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * /radar/hourly ������������������
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HourlyResponse {
+
+ /** ������������������"������" */
+ private String location;
+
+ /** ������������������ */
+ private String startTime;
+
+ /** ��������������������������������� */
+ private String endTime;
+
+ /** ������������ */
+ private int count;
+
+ /** ��������������������� */
+ private List<HourlyItemVO> hourly;
+
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/vo/RadarHourlySummaryVO.java b/screen-job/src/main/java/com/moral/api/vo/RadarHourlySummaryVO.java
new file mode 100644
index 0000000..96b20e4
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/vo/RadarHourlySummaryVO.java
@@ -0,0 +1,64 @@
+package com.moral.api.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * ���������������������
+ * </p>
+ *
+ * @author moral
+ * @since 2026-09-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RadarHourlySummaryVO {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * ������������������������������
+ */
+ private String timeStr;
+
+ /**
+ * ������������������ {"a34004-Avg": [...], "a34002-Avg": [...]}
+ */
+ private String radarData;
+
+ /**
+ * a34004-Avg ���������������������(m)
+ */
+ private BigDecimal a34004PeakHeight;
+
+ /**
+ * a34004-Avg ������������������(m)���������������
+ */
+ private BigDecimal a34004DropHeight;
+
+ /**
+ * a34002-Avg ���������������������(m)
+ */
+ private BigDecimal a34002PeakHeight;
+
+ /**
+ * a34002-Avg ������������������(m)���������������
+ */
+ private BigDecimal a34002DropHeight;
+
+ private String createTime;
+
+
+
+}
diff --git a/screen-job/src/main/resources/mapper/RadarHourlySummaryMapper.xml b/screen-job/src/main/resources/mapper/RadarHourlySummaryMapper.xml
index ae5ccec..d5901da 100644
--- a/screen-job/src/main/resources/mapper/RadarHourlySummaryMapper.xml
+++ b/screen-job/src/main/resources/mapper/RadarHourlySummaryMapper.xml
@@ -13,5 +13,33 @@
<result column="a34002_drop_height" property="a34002DropHeight" />
<result column="create_time" property="createTime" />
</resultMap>
+ <select id="getAvgDropHeightInRange" resultType="java.lang.Double">
+ SELECT COALESCE(ROUND(AVG(a34004_drop_height)), 0) as a34004 FROM radar_hourly_summary
+ WHERE time >= #{start} AND time < #{end}
+ </select>
+
+ <select id="getByTime" resultType="com.moral.api.vo.RadarHourlySummaryVO">
+ SELECT id, DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') timeStr, radar_data, a34004_peak_height, a34004_drop_height, a34002_peak_height, a34002_drop_height FROM radar_hourly_summary WHERE time = #{time}
+
+ </select>
+
+ <select id="getDailyAvgDropHeight" resultType="com.moral.api.vo.DailyDropHeightVO">
+ SELECT DATE_FORMAT(time, '%Y-%m-%d') as date, ROUND(AVG(a34004_drop_height)) AS dropHeight
+ FROM radar_hourly_summary
+ WHERE time >= #{start} AND time < #{end}
+ GROUP BY DATE(time) ORDER BY date ASC
+
+ </select>
+
+<select id="queryHourlyByRange" resultType="com.moral.api.vo.RadarHourlySummaryVO">
+ SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') timeStr, a34004_peak_height, a34004_drop_height,
+ a34002_peak_height, a34002_drop_height
+ FROM radar_hourly_summary
+ WHERE time >= #{start} AND time < #{end}
+ ORDER BY time ASC
+</select>
+
+
+
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0