|
@@ -1,5 +1,6 @@
|
|
|
package com.aidex.common.gps.server.impl;
|
|
|
|
|
|
+import com.aidex.common.app.domain.vo.SysWharfVO;
|
|
|
import com.aidex.common.gps.domain.PushAlarmEntity;
|
|
|
import com.aidex.common.gps.domain.PushLocationEntity;
|
|
|
import com.aidex.common.gps.server.IGpsPlushService;
|
|
@@ -9,14 +10,18 @@ import com.aidex.common.plush.domain.SysShipExtend;
|
|
|
import com.aidex.common.plush.service.GpsAlarmPlushService;
|
|
|
import com.aidex.common.plush.service.GpsLocationPlushService;
|
|
|
import com.aidex.common.plush.service.SysShipExtendService;
|
|
|
+import com.aidex.common.utils.dist.CalcDist;
|
|
|
import com.aidex.framework.cache.ConfigUtils;
|
|
|
import com.aidex.system.domain.SysWharf;
|
|
|
import com.aidex.system.service.SysWharfService;
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@Service
|
|
@@ -31,7 +36,6 @@ public class GpsPlushService implements IGpsPlushService {
|
|
|
@Autowired
|
|
|
private GpsAlarmPlushService gpsAlarmPlushService;
|
|
|
|
|
|
-
|
|
|
public void plush(String method, String serialNumber, String data){
|
|
|
// 只接收报警和位置 其他数据丢弃
|
|
|
if(method.equals(METHOD.ALARM)){
|
|
@@ -69,14 +73,14 @@ public class GpsPlushService implements IGpsPlushService {
|
|
|
if (Double.valueOf(alarmEntity.getDir()) >= Double.valueOf(reverse[0]) && Double.valueOf(alarmEntity.getDir()) <= Double.valueOf(reverse[1]))
|
|
|
updateShipExtend.setTravel(0L);
|
|
|
if (alarmEntity.getClassify().equals(CLASSIFY.IN)) {
|
|
|
- SysWharf stopWharf = sysWharfs.stream().filter(wharf -> wharf.getWharfNanme().equals(alarmEntity.getNotea())).findFirst().orElse(null);
|
|
|
+ SysWharfVO stopWharf = getLoccationNearly(sysWharfs,alarmEntity.getMapLat(),alarmEntity.getMapLon());
|
|
|
if (stopWharf != null) {
|
|
|
updateShipExtend.setIsStop(1L);
|
|
|
updateShipExtend.setWharfStop(stopWharf.getId());
|
|
|
}
|
|
|
}
|
|
|
if (alarmEntity.getClassify().equals(CLASSIFY.OUT)) {
|
|
|
- SysWharf stopWharf = sysWharfs.stream().filter(wharf -> wharf.getWharfNanme().equals(alarmEntity.getNotea())).findFirst().orElse(null);
|
|
|
+ SysWharfVO stopWharf = getLoccationNearly(sysWharfs,alarmEntity.getMapLat(),alarmEntity.getMapLon());
|
|
|
if (stopWharf != null) {
|
|
|
updateShipExtend.setIsStop(0L);
|
|
|
// 正向行驶
|
|
@@ -93,11 +97,11 @@ public class GpsPlushService implements IGpsPlushService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ updateShipExtend.setUpdateTime(System.currentTimeMillis());
|
|
|
sysShipExtendService.update(updateShipExtend);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
GpsAlarmPlush alarmPlush = new GpsAlarmPlush();
|
|
|
alarmPlush.setId(alarmEntity.getId());
|
|
|
alarmPlush.setUserName(alarmEntity.getUserName());
|
|
@@ -109,7 +113,7 @@ public class GpsPlushService implements IGpsPlushService {
|
|
|
alarmPlush.setLon(alarmEntity.getLon());
|
|
|
alarmPlush.setMapLat(alarmEntity.getMapLat());
|
|
|
alarmPlush.setMapLon(alarmEntity.getMapLon());
|
|
|
- alarmPlush.setSpeed(Long.valueOf(alarmEntity.getSpeed()));
|
|
|
+ alarmPlush.setSpeed(alarmEntity.getSpeed());
|
|
|
alarmPlush.setDir(alarmEntity.getDir());
|
|
|
alarmPlush.setLat(alarmEntity.getLat());
|
|
|
alarmPlush.setLon(alarmEntity.getLon());
|
|
@@ -141,16 +145,21 @@ public class GpsPlushService implements IGpsPlushService {
|
|
|
updateShipExtend.setDir(location.getDir());
|
|
|
updateShipExtend.setLon(location.getMapLon());
|
|
|
updateShipExtend.setLat(location.getMapLat());
|
|
|
+ if(Double.valueOf(location.getSpeed()) > 0) {
|
|
|
+ if (Double.valueOf(location.getDir()) >= Double.valueOf(forward[0]) && Double.valueOf(location.getDir()) <= Double.valueOf(forward[1]))
|
|
|
+ updateShipExtend.setTravel(1L);
|
|
|
+ if (Double.valueOf(location.getDir()) >= Double.valueOf(reverse[0]) && Double.valueOf(location.getDir()) <= Double.valueOf(reverse[1]))
|
|
|
+ updateShipExtend.setTravel(0L);
|
|
|
+ }
|
|
|
String[] paramsValue = location.getValue() == null?new String[]{"0"}:location.getValue().split(",");
|
|
|
updateShipExtend.setMileage(paramsValue[0]);
|
|
|
- updateShipExtend.setUpdateTime(System.currentTimeMillis());
|
|
|
sysShipExtendService.updateByMacId(updateShipExtend);
|
|
|
}
|
|
|
GpsLocationPlush locationPlush = new GpsLocationPlush();
|
|
|
locationPlush.setMacid(location.getMacid());
|
|
|
locationPlush.setGpsTime(Long.valueOf(location.getGpsTime()));
|
|
|
locationPlush.setHeartTime(Long.valueOf(location.getHeartTime()));
|
|
|
- locationPlush.setUpdTime(Long.valueOf(location.getUpdTime()));
|
|
|
+ locationPlush.setUpdTime(location.getUpdTime());
|
|
|
locationPlush.setSpeed(location.getSpeed());
|
|
|
locationPlush.setDir(location.getDir());
|
|
|
locationPlush.setLat(location.getLat());
|
|
@@ -164,6 +173,16 @@ public class GpsPlushService implements IGpsPlushService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private SysWharfVO getLoccationNearly(List<SysWharf> sysWharves,String lat, String lon){
|
|
|
+ return sysWharves.stream().map(wharf -> {
|
|
|
+ SysWharfVO wharfVO = new SysWharfVO();
|
|
|
+ BeanUtils.copyProperties(wharf,wharfVO);
|
|
|
+ wharfVO.setDistance(CalcDist.calculateDistance(Double.valueOf(lat),Double.valueOf(lon),
|
|
|
+ Double.valueOf(wharf.getLat()),Double.valueOf(wharf.getLng())));
|
|
|
+ return wharfVO;
|
|
|
+ }).collect(Collectors.toList()).stream().sorted(Comparator.comparing(SysWharfVO::getDistance)).findFirst().orElse(null);
|
|
|
+ }
|
|
|
+
|
|
|
public interface METHOD {
|
|
|
// 报警信息接收
|
|
|
String ALARM = "alarm";
|