package com.moral.api.service.impl; import com.alibaba.fastjson.JSON; import com.moral.api.entity.HistorySecondRadar; import com.moral.api.mapper.HistorySecondRadarMapper; import com.moral.api.service.HistorySecondRadarService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.stream.IntStream; /** *

* 服务实现类 *

* * @author moral * @since 2026-05-14 */ @Service public class HistorySecondRadarServiceImpl extends ServiceImpl implements HistorySecondRadarService { private final DateTimeFormatter INPUT_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private final DateTimeFormatter OUTPUT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override public void insertHistorySecond(Map data) { Map dataResult = new HashMap<>(); HistorySecondRadar historySecondRadar = new HistorySecondRadar(); String time = data.get("time").toString(); String radarTime = data.get("DataTime").toString(); Map a34004 = highMap(data.get("a34004-Avg").toString()); historySecondRadar.setPm25(String.valueOf(a34004.get("value"))); historySecondRadar.setHighPm25(String.valueOf(a34004.get("high"))); Map a34002 = highMap(data.get("a34002-Avg").toString()); historySecondRadar.setPm10(String.valueOf(a34002.get("value"))); historySecondRadar.setHighPm10(String.valueOf(a34002.get("high"))); Map a01561 = highMap(data.get("a01561-Avg").toString()); historySecondRadar.setBoundaryLayer(String.valueOf(a01561.get("value"))); LocalDateTime dateTime = LocalDateTime.parse(time, INPUT_FORMATTER); historySecondRadar.setTime(dateTime); dataResult.put("a34004-Avg",data.get("a34004-Avg")); dataResult.put("a34002-Avg",data.get("a34002-Avg")); dataResult.put("a01561-Avg",data.get("a01561-Avg")); dataResult.put("QN",data.get("QN")); dataResult.put("CN",data.get("CN")); dataResult.put("MN",data.get("MN")); dataResult.put("DataTime",data.get("DataTime")); dataResult.put("time",data.get("time")); historySecondRadar.setRadarData(JSON.toJSONString(dataResult)); historySecondRadar.setRadarTime(LocalDateTime.parse(radarTime, INPUT_FORMATTER)); this.save(historySecondRadar); } private Map highMap(String data){ data = data.replace(",", ""); Map map = new HashMap<>(); double[] values = Arrays.stream(data.split("\\*")) .mapToDouble(Double::parseDouble) .toArray(); int maxIndex = IntStream.range(0, values.length) .boxed() .max((i, j) -> Double.compare(values[i], values[j])) .orElse(-1); if (maxIndex != -1) { double maxValue = values[maxIndex]; map.put("value",maxValue); // 3. 计算距离 (假设第1个值对应7.5米,即 (index+1)*7.5) double distance = (maxIndex + 1) * 7.5; map.put("high",distance); }else { map.put("value",0d); map.put("high",0d); } return map; } public static void main(String[] args) { String inputStr = "20260513110500"; DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); LocalDateTime dateTime = LocalDateTime.parse(inputStr, inputFormatter); System.out.println(dateTime); DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); } }