|
@@ -0,0 +1,164 @@
|
|
|
+package com.aidex.common.gps.server.impl;
|
|
|
+
|
|
|
+import com.aidex.common.app.domain.vo.LocationVO;
|
|
|
+import com.aidex.common.gps.domain.PushAlarmEntity;
|
|
|
+import com.aidex.common.gps.domain.PushLocationEntity;
|
|
|
+import com.aidex.common.gps.server.IGpsPlushService;
|
|
|
+import com.aidex.common.plush.domain.GpsAlarmPlush;
|
|
|
+import com.aidex.common.plush.domain.GpsLocationPlush;
|
|
|
+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.JSON;
|
|
|
+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
|
|
|
+public class GpsPlushService implements IGpsPlushService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysShipExtendService sysShipExtendService;
|
|
|
+ @Autowired
|
|
|
+ private SysWharfService sysWharfService;
|
|
|
+ @Autowired
|
|
|
+ private GpsLocationPlushService gpsLocationPlushService;
|
|
|
+ @Autowired
|
|
|
+ private GpsAlarmPlushService gpsAlarmPlushService;
|
|
|
+
|
|
|
+
|
|
|
+ public void plush(String method, String serialNumber, String data){
|
|
|
+ // 只接收报警和位置 其他数据丢弃
|
|
|
+ if(method.equals(METHOD.ALARM)){
|
|
|
+ List<PushAlarmEntity> pushAlarmEntities = JSON.parseArray(data, PushAlarmEntity.class);
|
|
|
+ alarmSource(pushAlarmEntities);
|
|
|
+ }
|
|
|
+ if(method.equals(METHOD.LOCATION)){
|
|
|
+ List<PushLocationEntity> pushAlarmEntities = JSON.parseArray(data, PushLocationEntity.class);
|
|
|
+ locationSource(pushAlarmEntities);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void alarmSource(List<PushAlarmEntity> alarmEntities){
|
|
|
+ List<SysWharf> sysWharfs = sysWharfService.findList(new SysWharf());
|
|
|
+ List<SysShipExtend> sysShipExtends = sysShipExtendService.findList(new SysShipExtend());
|
|
|
+ String[] forward = ConfigUtils.getConfigByKey("forward.direction").getConfigValue().split("-");
|
|
|
+ // 获取反向条件
|
|
|
+ String[] reverse = ConfigUtils.getConfigByKey("reverse.direction").getConfigValue().split("-");
|
|
|
+ if(sysShipExtends.size() > 0){
|
|
|
+ for (PushAlarmEntity alarmEntity : alarmEntities) {
|
|
|
+ SysShipExtend updateShipExtend = sysShipExtends.stream().filter(extend -> extend.getMacId().equals(alarmEntity.getMacid())).findFirst().orElse(null);
|
|
|
+ // 设备是当前设备 并且方位正常则更新数据
|
|
|
+ if(updateShipExtend != null &&
|
|
|
+ ((Double.valueOf(alarmEntity.getDir()) >= Double.valueOf(forward[0]) && Double.valueOf(alarmEntity.getDir()) <= Double.valueOf(forward[1]))) ||
|
|
|
+ (Double.valueOf(alarmEntity.getDir()) >= Double.valueOf(reverse[0]) && Double.valueOf(alarmEntity.getDir()) <= Double.valueOf(reverse[1]))){
|
|
|
+ updateShipExtend.setSpeed(alarmEntity.getSpeed());
|
|
|
+ updateShipExtend.setDir(alarmEntity.getDir());
|
|
|
+ updateShipExtend.setLon(alarmEntity.getMapLon());
|
|
|
+ updateShipExtend.setLat(alarmEntity.getMapLat());
|
|
|
+ updateShipExtend.setWharfStop(null);
|
|
|
+ updateShipExtend.setNextWharf(null);
|
|
|
+ if(Double.valueOf(alarmEntity.getDir()) >= Double.valueOf(forward[0]) && Double.valueOf(alarmEntity.getDir()) <= Double.valueOf(forward[1]))
|
|
|
+ updateShipExtend.setTravel(1L);
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ if(stopWharf != null){
|
|
|
+ updateShipExtend.setIsStop(0L);
|
|
|
+ // 正向行驶
|
|
|
+ if(updateShipExtend.getTravel() == 1L ){
|
|
|
+ Long nextSite = (stopWharf.getWharfOrder() / 10) - 1;
|
|
|
+ SysWharf nextWharf = sysWharfs.stream().filter(wharf -> wharf.getWharfOrder() == (nextSite * 10)).findFirst().orElse(null);
|
|
|
+ updateShipExtend.setNextWharf(nextWharf.getId());
|
|
|
+ }
|
|
|
+ // 反向行驶
|
|
|
+ if(updateShipExtend.getTravel() == 0L ){
|
|
|
+ Long nextSite = (stopWharf.getWharfOrder() / 10) + 1;
|
|
|
+ SysWharf nextWharf = sysWharfs.stream().filter(wharf -> wharf.getWharfOrder() == (nextSite * 10)).findFirst().orElse(null);
|
|
|
+ updateShipExtend.setNextWharf(nextWharf.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sysShipExtendService.update(updateShipExtend);
|
|
|
+ }
|
|
|
+ }
|
|
|
+// GpsA alarmEntity = new GpsLocationPlush();
|
|
|
+// alarmEntity.setId(alarmEntity.getId());
|
|
|
+// alarmEntity.set(alarmEntity.getId());
|
|
|
+// alarmEntity.setId(alarmEntity.getId());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void locationSource(List<PushLocationEntity> locationEntities){
|
|
|
+ List<SysShipExtend> sysShipExtends = sysShipExtendService.findList(new SysShipExtend());
|
|
|
+ String[] forward = ConfigUtils.getConfigByKey("forward.direction").getConfigValue().split("-");
|
|
|
+ // 获取反向条件
|
|
|
+ String[] reverse = ConfigUtils.getConfigByKey("reverse.direction").getConfigValue().split("-");
|
|
|
+ if(sysShipExtends.size() > 0) {
|
|
|
+ for (PushLocationEntity location : locationEntities) {
|
|
|
+ SysShipExtend updateShipExtend = sysShipExtends.stream().filter(extend -> extend.getMacId().equals(location.getMacid())).findFirst().orElse(null);
|
|
|
+ // 设备是当前设备 并且方位正常则更新数据
|
|
|
+ if (updateShipExtend != null &&
|
|
|
+ ((Double.valueOf(location.getDir()) >= Double.valueOf(forward[0]) && Double.valueOf(location.getDir()) <= Double.valueOf(forward[1]))) ||
|
|
|
+ (Double.valueOf(location.getDir()) >= Double.valueOf(reverse[0]) && Double.valueOf(location.getDir()) <= Double.valueOf(reverse[1]))) {
|
|
|
+ updateShipExtend.setSpeed(location.getSpeed());
|
|
|
+ updateShipExtend.setDir(location.getDir());
|
|
|
+ updateShipExtend.setLon(location.getMapLon());
|
|
|
+ updateShipExtend.setLat(location.getMapLat());
|
|
|
+ String[] paramsValue = location.getValue().split(",");
|
|
|
+ updateShipExtend.setMileage(paramsValue[0]);
|
|
|
+ updateShipExtend.setUpdateTime(System.currentTimeMillis());
|
|
|
+ sysShipExtendService.update(updateShipExtend);
|
|
|
+ }
|
|
|
+ GpsLocationPlush locationPlush = new GpsLocationPlush();
|
|
|
+ locationPlush.setMacid(location.getMacid());
|
|
|
+ locationPlush.setGpsTime(locationPlush.getGpsTime());
|
|
|
+ locationPlush.setHeartTime(locationPlush.getHeartTime());
|
|
|
+ locationPlush.setUpdTime(locationPlush.getUpdTime());
|
|
|
+ locationPlush.setSpeed(location.getSpeed());
|
|
|
+ locationPlush.setDir(location.getDir());
|
|
|
+ locationPlush.setLat(location.getLat());
|
|
|
+ locationPlush.setLon(location.getLon());
|
|
|
+ locationPlush.setMapLat(location.getMapLat());
|
|
|
+ locationPlush.setMapLon(location.getMapLon());
|
|
|
+ locationPlush.setStats(location.getStats());
|
|
|
+ locationPlush.setValue(location.getValue());
|
|
|
+ gpsLocationPlushService.save(locationPlush);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public interface METHOD {
|
|
|
+ // 报警信息接收
|
|
|
+ String ALARM = "alarm";
|
|
|
+ // 位置信息接收
|
|
|
+ String LOCATION = "status";
|
|
|
+ }
|
|
|
+
|
|
|
+ public interface CLASSIFY {
|
|
|
+ // 入界
|
|
|
+ String IN = "4";
|
|
|
+ // 出界
|
|
|
+ String OUT = "3";
|
|
|
+ }
|
|
|
+}
|