From edd0882302df1f61241be221e8daa60df0170f13 Mon Sep 17 00:00:00 2001 From: weidong Date: Thu, 11 Jul 2024 15:49:42 +0800 Subject: [PATCH] =?UTF-8?q?API=E6=8E=A5=E5=8F=A3=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E5=87=8F=E5=8E=BB=E5=88=9D=E5=A7=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sec_exapi/controller/GnssDataApi.java | 53 ++++++++++++++----- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/sec-exapi/src/main/java/com/imdroid/sec_exapi/controller/GnssDataApi.java b/sec-exapi/src/main/java/com/imdroid/sec_exapi/controller/GnssDataApi.java index f419bea8..388fed74 100644 --- a/sec-exapi/src/main/java/com/imdroid/sec_exapi/controller/GnssDataApi.java +++ b/sec-exapi/src/main/java/com/imdroid/sec_exapi/controller/GnssDataApi.java @@ -1,8 +1,10 @@ package com.imdroid.sec_exapi.controller; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.yulichang.query.MPJQueryWrapper; import com.imdroid.common.util.GsonUtil; +import com.imdroid.common.util.NumberUtils; import com.imdroid.sec_exapi.entity.GnssQueryResponse; import com.imdroid.secapi.dto.*; import org.slf4j.Logger; @@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.HashMap; import java.util.List; @RestController @@ -22,6 +25,9 @@ public class GnssDataApi { @Autowired GnssCalcDataMapper dataMapper; + @Autowired + GnssDeviceMapper deviceMapper; + final Logger logger = LoggerFactory.getLogger(GnssDataApi.class); @GetMapping(value = "/gnss/data") @@ -72,18 +78,14 @@ public class GnssDataApi { LocalDateTime lastRecordTime = null; gnssResponse.OK(); + HashMap deviceHashMap = new HashMap<>(); + if(isAsc) { for (GnssCalcData data : dataList) { LocalDateTime recordTime = data.getCreatetime(); if (lastRecordTime == null) lastRecordTime = recordTime; if (lastRecordTime.isBefore(recordTime) || lastRecordTime.isEqual(recordTime)) { - GnssQueryResponse.GnssData gnssData = new GnssQueryResponse.GnssData(); - gnssData.setDeviceId(data.getDeviceid()); - gnssData.setCreateTime(data.getCreatetime().format(formatter)); - gnssData.setRpose(data.getRpose()); - gnssData.setRposn(data.getRposn()); - gnssData.setRposu(data.getRposd()); - gnssResponse.getData().add(gnssData); + addToResponse(gnssResponse, data, deviceHashMap); lastRecordTime = recordTime.plusMinutes(30); } } @@ -93,13 +95,7 @@ public class GnssDataApi { LocalDateTime recordTime = data.getCreatetime(); if (lastRecordTime == null) lastRecordTime = recordTime; if (lastRecordTime.isAfter(recordTime) || lastRecordTime.isEqual(recordTime)) { - GnssQueryResponse.GnssData gnssData = new GnssQueryResponse.GnssData(); - gnssData.setDeviceId(data.getDeviceid()); - gnssData.setCreateTime(data.getCreatetime().format(formatter)); - gnssData.setRpose(data.getRpose()); - gnssData.setRposn(data.getRposn()); - gnssData.setRposu(data.getRposd()); - gnssResponse.getData().add(gnssData); + addToResponse(gnssResponse, data, deviceHashMap); lastRecordTime = recordTime.minusMinutes(30); } } @@ -108,9 +104,38 @@ public class GnssDataApi { String json = GsonUtil.toJson(gnssResponse); logger.info(json); + deviceHashMap.clear(); + return json; } + void addToResponse(GnssQueryResponse rsp, GnssCalcData data,HashMap deviceHashMap){ + String deviceId = data.getDeviceid(); + Double rpose = data.getRpose(); + Double rposn = data.getRposn(); + Double rposd = data.getRposd(); + GnssDevice device = deviceHashMap.get(deviceId); + if(device==null){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("deviceid", deviceId); + device = deviceMapper.selectOne(queryWrapper); + if(device!=null) deviceHashMap.put(deviceId, device); + } + if(device!=null){ + if(device.getIpose()!=null) rpose-=device.getIpose(); + if(device.getIposn()!=null) rposn-=device.getIposn(); + if(device.getIposd()!=null) rposd-=device.getIposd(); + } + + GnssQueryResponse.GnssData gnssData = new GnssQueryResponse.GnssData(); + gnssData.setDeviceId(deviceId); + gnssData.setCreateTime(data.getCreatetime().format(formatter)); + gnssData.setRpose(NumberUtils.scale(rpose, 2)); + gnssData.setRposn(NumberUtils.scale(rposn, 2)); + gnssData.setRposu(NumberUtils.scale(rposd, 2)); + rsp.getData().add(gnssData); + } + }