API接口获取位置减去初始值

This commit is contained in:
weidong 2024-07-11 15:49:42 +08:00
parent eff6608566
commit edd0882302

View File

@ -1,8 +1,10 @@
package com.imdroid.sec_exapi.controller; package com.imdroid.sec_exapi.controller;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.query.MPJQueryWrapper;
import com.imdroid.common.util.GsonUtil; import com.imdroid.common.util.GsonUtil;
import com.imdroid.common.util.NumberUtils;
import com.imdroid.sec_exapi.entity.GnssQueryResponse; import com.imdroid.sec_exapi.entity.GnssQueryResponse;
import com.imdroid.secapi.dto.*; import com.imdroid.secapi.dto.*;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List; import java.util.List;
@RestController @RestController
@ -22,6 +25,9 @@ public class GnssDataApi {
@Autowired @Autowired
GnssCalcDataMapper dataMapper; GnssCalcDataMapper dataMapper;
@Autowired
GnssDeviceMapper deviceMapper;
final Logger logger = LoggerFactory.getLogger(GnssDataApi.class); final Logger logger = LoggerFactory.getLogger(GnssDataApi.class);
@GetMapping(value = "/gnss/data") @GetMapping(value = "/gnss/data")
@ -72,18 +78,14 @@ public class GnssDataApi {
LocalDateTime lastRecordTime = null; LocalDateTime lastRecordTime = null;
gnssResponse.OK(); gnssResponse.OK();
HashMap<String, GnssDevice> deviceHashMap = new HashMap<>();
if(isAsc) { if(isAsc) {
for (GnssCalcData data : dataList) { for (GnssCalcData data : dataList) {
LocalDateTime recordTime = data.getCreatetime(); LocalDateTime recordTime = data.getCreatetime();
if (lastRecordTime == null) lastRecordTime = recordTime; if (lastRecordTime == null) lastRecordTime = recordTime;
if (lastRecordTime.isBefore(recordTime) || lastRecordTime.isEqual(recordTime)) { if (lastRecordTime.isBefore(recordTime) || lastRecordTime.isEqual(recordTime)) {
GnssQueryResponse.GnssData gnssData = new GnssQueryResponse.GnssData(); addToResponse(gnssResponse, data, deviceHashMap);
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);
lastRecordTime = recordTime.plusMinutes(30); lastRecordTime = recordTime.plusMinutes(30);
} }
} }
@ -93,13 +95,7 @@ public class GnssDataApi {
LocalDateTime recordTime = data.getCreatetime(); LocalDateTime recordTime = data.getCreatetime();
if (lastRecordTime == null) lastRecordTime = recordTime; if (lastRecordTime == null) lastRecordTime = recordTime;
if (lastRecordTime.isAfter(recordTime) || lastRecordTime.isEqual(recordTime)) { if (lastRecordTime.isAfter(recordTime) || lastRecordTime.isEqual(recordTime)) {
GnssQueryResponse.GnssData gnssData = new GnssQueryResponse.GnssData(); addToResponse(gnssResponse, data, deviceHashMap);
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);
lastRecordTime = recordTime.minusMinutes(30); lastRecordTime = recordTime.minusMinutes(30);
} }
} }
@ -108,9 +104,38 @@ public class GnssDataApi {
String json = GsonUtil.toJson(gnssResponse); String json = GsonUtil.toJson(gnssResponse);
logger.info(json); logger.info(json);
deviceHashMap.clear();
return json; return json;
} }
void addToResponse(GnssQueryResponse rsp, GnssCalcData data,HashMap<String, GnssDevice> 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<GnssDevice> 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);
}
} }