|  | @@ -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";
 |