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/service/impl/RadarHourlySummaryServiceImpl.java |   62 +++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)

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);

--
Gitblit v1.8.0