shs 1 год назад
Родитель
Сommit
8e092edeb5
17 измененных файлов с 279 добавлено и 305 удалено
  1. 4 2
      aidex-controller/src/main/java/com/aidex/web/controller/app/AppController.java
  2. 4 2
      aidex-system/src/main/java/com/aidex/common/app/server/IAppService.java
  3. 91 217
      aidex-system/src/main/java/com/aidex/common/app/server/impl/AppService.java
  4. 71 55
      aidex-system/src/main/java/com/aidex/common/gps/server/impl/GpsPlushService.java
  5. 6 3
      aidex-system/src/main/java/com/aidex/common/plush/domain/GpsAlarmPlush.java
  6. 11 0
      aidex-system/src/main/java/com/aidex/common/plush/domain/SysShipExtend.java
  7. 17 0
      aidex-system/src/main/java/com/aidex/common/plush/domain/vo/SysShipExtendVO.java
  8. 27 0
      aidex-system/src/main/java/com/aidex/common/plush/domain/vo/SysShipResVO.java
  9. 5 13
      aidex-system/src/main/java/com/aidex/common/plush/mapper/GpsAlarmPlushMapper.xml
  10. 5 0
      aidex-system/src/main/java/com/aidex/common/plush/mapper/SysShipExtendMapper.java
  11. 13 8
      aidex-system/src/main/java/com/aidex/common/plush/mapper/SysShipExtendMapper.xml
  12. 1 0
      aidex-system/src/main/java/com/aidex/common/plush/service/GpsAlarmPlushService.java
  13. 5 0
      aidex-system/src/main/java/com/aidex/common/plush/service/SysShipExtendService.java
  14. 8 1
      aidex-system/src/main/java/com/aidex/common/plush/service/impl/GpsAlarmPlushServiceImpl.java
  15. 0 1
      aidex-system/src/main/java/com/aidex/common/plush/service/impl/GpsLocationPlushServiceImpl.java
  16. 7 2
      aidex-system/src/main/java/com/aidex/common/plush/service/impl/SysShipExtendServiceImpl.java
  17. 4 1
      aidex-system/src/main/java/com/aidex/system/service/impl/SysShipServiceImpl.java

+ 4 - 2
aidex-controller/src/main/java/com/aidex/web/controller/app/AppController.java

@@ -7,6 +7,8 @@ import com.aidex.common.app.server.IAppService;
 import com.aidex.common.core.domain.R;
 import com.aidex.common.core.page.PageDomain;
 import com.aidex.common.gps.domain.LocationEntity;
+import com.aidex.common.plush.domain.vo.SysShipExtendVO;
+import com.aidex.common.plush.domain.vo.SysShipResVO;
 import com.aidex.quartz.task.RefreshAccessTokenTask;
 import com.aidex.system.domain.*;
 import com.aidex.system.domain.vo.SysRouteVo;
@@ -83,7 +85,7 @@ public class AppController {
             @ApiImplicitParam(name = "direction", value = "正向(TRUE)/反向(FALSE)、默认正向", required = true, dataType = "Boolean"),
             @ApiImplicitParam(name = "lat", value = "纬度", required = true, dataType = "String"),
             @ApiImplicitParam(name = "lon", value = "经度", required = true, dataType = "String")})
-    public R<LocationVO> getLocation(@RequestParam(defaultValue = "true", name = "direction") Boolean direction,@RequestParam(defaultValue = "",name = "lat") String lat, @RequestParam(defaultValue = "",name = "lon") String lon )
+    public R<SysShipResVO> getLocation(@RequestParam(defaultValue = "true", name = "direction") Boolean direction, @RequestParam(defaultValue = "",name = "lat") String lat, @RequestParam(defaultValue = "",name = "lon") String lon )
     {
         return R.data(iAppService.findAllLocationByNext(direction,lat,lon));
     }
@@ -93,7 +95,7 @@ public class AppController {
     @ApiOperation(value = "获取全部船只位置", notes = "获取全部船只位置", produces = "application/json")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "direction", value = "正向(TRUE)/反向(FALSE)、默认正向", required = true, dataType = "Boolean")})
-    public R<List<LocationEntity>> getLocationAll(@RequestParam(defaultValue = "true", name = "direction") Boolean direction)
+    public R<List<SysShipExtendVO>> getLocationAll(@RequestParam(defaultValue = "true", name = "direction") Boolean direction)
     {
         return R.data(iAppService.findAllLocation(direction));
     }

+ 4 - 2
aidex-system/src/main/java/com/aidex/common/app/server/IAppService.java

@@ -3,6 +3,8 @@ package com.aidex.common.app.server;
 import com.aidex.common.app.domain.vo.LocationVO;
 import com.aidex.common.app.domain.vo.SysWharfVO;
 import com.aidex.common.gps.domain.LocationEntity;
+import com.aidex.common.plush.domain.vo.SysShipExtendVO;
+import com.aidex.common.plush.domain.vo.SysShipResVO;
 import com.aidex.system.domain.SysNotice;
 import com.aidex.system.domain.SysWharf;
 
@@ -18,9 +20,9 @@ public interface IAppService {
 
     List<SysWharf> findSysWharfList();
 
-    List<LocationEntity> findAllLocation(Boolean direction);
+    List<SysShipExtendVO> findAllLocation(Boolean direction);
 
-    LocationVO findAllLocationByNext(Boolean direction,String lat, String lon);
+    SysShipResVO findAllLocationByNext(Boolean direction, String lat, String lon);
 
     SysWharfVO findNearestStation(String lat, String lng);
 }

+ 91 - 217
aidex-system/src/main/java/com/aidex/common/app/server/impl/AppService.java

@@ -1,30 +1,24 @@
 package com.aidex.common.app.server.impl;
 
-import com.aidex.common.app.domain.vo.LocationVO;
 import com.aidex.common.app.domain.vo.SysWharfVO;
 import com.aidex.common.app.server.IAppService;
 import com.aidex.common.exception.SysException;
-import com.aidex.common.gps.domain.AlarmDatetailsEntity;
-import com.aidex.common.gps.domain.FenceEntity;
-import com.aidex.common.gps.domain.LocationEntity;
-import com.aidex.common.gps.domain.MyGpsEntity;
 import com.aidex.common.gps.server.IGpsService;
+import com.aidex.common.plush.domain.vo.SysShipExtendVO;
+import com.aidex.common.plush.domain.vo.SysShipResVO;
+import com.aidex.common.plush.service.SysShipExtendService;
 import com.aidex.common.utils.StringUtils;
 import com.aidex.common.utils.dist.CalcDist;
 import com.aidex.framework.cache.ConfigUtils;
 import com.aidex.system.domain.SysNotice;
-import com.aidex.system.domain.SysShip;
 import com.aidex.system.domain.SysWharf;
 import com.aidex.system.service.SysNoticeService;
 import com.aidex.system.service.SysShipService;
 import com.aidex.system.service.SysWharfService;
-import org.apache.ibatis.javassist.expr.NewArray;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.*;
-import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -42,6 +36,8 @@ public class AppService implements IAppService {
 
     @Autowired
     private SysShipService sysShipService;
+    @Autowired
+    private SysShipExtendService sysShipExtendService;
 
 
     public List<SysNotice> getCarouselList(){
@@ -66,247 +62,125 @@ public class AppService implements IAppService {
     /*
     * direction 方向 true正向 false反向
     * */
-    public List<LocationEntity> findAllLocation(Boolean direction){
-        // 全部船只信息
-        List<SysShip> allMyGps = sysShipService.findList(new SysShip(){{setStatus("1");}});
-        // 全部在线设备
-        String macIds = allMyGps.stream().map(SysShip::getShipNum).collect(Collectors.joining(","));
-        List<LocationEntity> locationEntities = iGpsService.getLocationBatchByMac(macIds);
-        if(locationEntities.size() <= 0)
+    public List<SysShipExtendVO> findAllLocation(Boolean direction){
+        List<SysShipExtendVO> sysShipExtendVOS = sysShipExtendService.findAllonline(direction?"1":"0");
+        if(sysShipExtendVOS.size() <= 0)
             throw new SysException(8821,"暂无运行船只");
-
-        // 返回结果
-//        List<LocationVO> locationList = new ArrayList<>();
-
-        // 停靠速度
-//        Integer stopSpeed = Integer.valueOf(ConfigUtils.getConfigByKey("stop.speed").getConfigValue());
-
-        // 正反向计算数据
-        List<LocationEntity> calcList = new ArrayList<>();
-
-        // 正反向计算条件
-        String[] conditions ;
-
-        /* 正向运行 */
-        if(direction){
-            // 获取正向条件
-            conditions = ConfigUtils.getConfigByKey("forward.direction").getConfigValue().split("-");
-            calcList = locationEntities.stream().filter(local -> ((Double.valueOf(local.getDir()) >= Double.valueOf(conditions[0])) && (Double.valueOf(local.getDir()) <= Double.valueOf(conditions[1])))).collect(Collectors.toList());
-        }else {
-            // 获取反向条件
-            conditions = ConfigUtils.getConfigByKey("reverse.direction").getConfigValue().split("-");
-            calcList = locationEntities.stream().filter(local -> ((Double.valueOf(local.getDir()) >= Double.valueOf(conditions[0])) && (Double.valueOf(local.getDir()) <= Double.valueOf(conditions[1])))).collect(Collectors.toList());
-        }
-//        for (LocationEntity locationEntity : calcList ) {
-//            LocationVO locationVO = new LocationVO();
-//            BeanUtils.copyProperties(locationEntity,locationVO);
-//            locationVO.setIsArrival(Boolean.FALSE);
-//            // 查询全部停止船只判断是否到站
-//            if(Integer.valueOf(locationVO.getSpeed()) <= stopSpeed){
-//                locationVO.setIsArrival(Boolean.TRUE);
-//            }
-//            locationList.add(locationVO);
-//        }
-        return  calcList;
+        return sysShipExtendVOS;
     }
 
 
-    public LocationVO findAllLocationByNext(Boolean direction,String lat, String lon){
+    public SysShipResVO findAllLocationByNext(Boolean direction,String lat, String lon){
         if(StringUtils.isEmpty(lat) || StringUtils.isEmpty(lon))
             throw new SysException(4441,"请告诉我你在哪");
 
+        String travel = direction?"1":"0";
         // 离我最近的站点
         SysWharf wharf = this.findNearestStation(lat,lon);
 
         if(!wharf.getStatus().equals("0"))
             throw new SysException(4442, wharf.getWharfNanme()+" 已经停用!请更换其他站点");
 
-        List<SysShip> allMyGps = sysShipService.findList(new SysShip(){{setStatus("1");}});
-        // 全部在线设备
-        String macIds = allMyGps.stream().map(SysShip::getShipNum).collect(Collectors.joining(","));
-        List<LocationEntity> locationEntities = iGpsService.getLocationBatchByMac(macIds);
+        List<SysShipExtendVO> sysShipExtendVOS = sysShipExtendService.findAllonline(travel).stream().map(lot -> {
+                    lot.setDistance(CalcDist.calculateDistance(Double.valueOf(wharf.getLat()), Double.valueOf(wharf.getLng()),
+                            Double.valueOf(lot.getLat()), Double.valueOf(lot.getLon())));
+                    return lot;
+                }).sorted(Comparator.comparing(SysShipExtendVO::getDistance))
+                .collect(Collectors.toList());
 
-
-        if(locationEntities.size() <= 0)
+        if(sysShipExtendVOS.size() <= 0)
             throw new SysException(8821,"暂无运行船只");
 
+
         // 默认到站停留时间
         Integer inStopTime = Integer.valueOf(ConfigUtils.getConfigByKey("pull.in.time").getConfigValue());
-
         // 停靠速度
         Integer stopSpeed = Integer.valueOf(ConfigUtils.getConfigByKey("stop.speed").getConfigValue());
 
-        for (LocationEntity locationEntity : locationEntities) {
-            locationEntity.setIsLongStop(Boolean.FALSE);
-            // 速度等于等 并且方位为零判断为已经停止
-            if(Double.valueOf(locationEntity.getSpeed()) <= Double.valueOf(stopSpeed) && Double.valueOf(locationEntity.getDir()) <= 0){
-                // 获取当天的 LocalDate 对象
-                LocalDateTime endOfDay = LocalDateTime.now();
-                // 获取当天的结束时间
-                LocalDateTime startDay = endOfDay.minusMonths(1);
-                // 转换为时间戳
-                long startTimestamp = startDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
-                long endTimestamp = endOfDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
-                List<AlarmDatetailsEntity> alarms = iGpsService.findAlarmDetails(locationEntity.getMacid(),"4",startTimestamp,endTimestamp);
-                if(alarms.size() > 0){
-                    // 取最后一次停靠的方位
-                    AlarmDatetailsEntity alarmDetails = alarms.get(0);
-                    locationEntity.setDir(alarmDetails.getDir());
-                    // 将时间戳转换为LocalDateTime
-                    LocalDateTime longStopTime = LocalDateTime.ofEpochSecond(Long.valueOf(alarmDetails.getAlarmime()) / 1000, 0, java.time.ZoneOffset.UTC);
-                    // 计算两个日期时间之间的分钟数
-                    Long stopTime = ChronoUnit.MINUTES.between(longStopTime, endOfDay);
-
-                    if(stopTime.doubleValue() > Double.valueOf(inStopTime)) {
-                        locationEntity.setIsLongStop(Boolean.TRUE);
-                    }
-                }
+        // 查找未经过该站点的船只
+        SysShipExtendVO noSiteShip = null;
+        for (SysShipExtendVO sysShipExtendVO : sysShipExtendVOS) {
+            if(direction && CalcDist.gps2d(Double.valueOf(wharf.getLat()),Double.valueOf(wharf.getLng()),Double.valueOf(sysShipExtendVO.getLat()),Double.valueOf(sysShipExtendVO.getLon())) <= 0){
+                noSiteShip = sysShipExtendVO;
+                break;
+            }
+            if(!direction && CalcDist.gps2d(Double.valueOf(sysShipExtendVO.getLat()),Double.valueOf(sysShipExtendVO.getLon()),Double.valueOf(wharf.getLat()),Double.valueOf(wharf.getLng())) <= 0){
+                noSiteShip = sysShipExtendVO;
+                break;
             }
         }
+        if(noSiteShip == null)
+            throw new SysException(8221,"当前运行船只已全部经过该站点!暂无船只!请等待发船");
+        SysShipResVO sysShipResVO = new SysShipResVO();
+        BeanUtils.copyProperties(noSiteShip,sysShipResVO);
+        sysShipResVO.setIsStopMyLocationSite(Boolean.FALSE);
+        sysShipResVO.setMy(wharf);
 
-        // 正反向计算数据
-        List<LocationVO> calcList = new ArrayList<>();
-
-
-        // 正反向计算条件
-        String[] conditions ;
-
-        // 默认航行平均速度
         Long defaultSpeed = 0L;
-        /* 正向运行 */
-        if(direction){
-            // 获取正向条件
-            conditions = ConfigUtils.getConfigByKey("forward.direction").getConfigValue().split("-");
+        if(sysShipResVO.getTravel() == 1L)
             defaultSpeed = Long.valueOf(ConfigUtils.getConfigByKey("forward.default.speed").getConfigValue());
-            calcList = locationEntities.stream().filter(local -> ((Double.valueOf(local.getDir()) >= Double.valueOf(conditions[0])) && (Double.valueOf(local.getDir()) <= Double.valueOf(conditions[1])))).map(lot -> {
-                LocationVO locationVO = new LocationVO();
-                BeanUtils.copyProperties(lot,locationVO);
-                locationVO.setDistance(CalcDist.calculateDistance(Double.valueOf(lat),Double.valueOf(lon),
-                        Double.valueOf(lot.getLat()),Double.valueOf(lot.getLon())));
-                return locationVO;
-            }).sorted(Comparator.comparing(LocationVO::getDistance))
-                    .collect(Collectors.toList());
-        }else {
-            // 获取反向条件
-            conditions = ConfigUtils.getConfigByKey("reverse.direction").getConfigValue().split("-");
+        else
             defaultSpeed = Long.valueOf(ConfigUtils.getConfigByKey("reverse.default.speed").getConfigValue());
-            calcList = locationEntities.stream().filter(local -> ((Double.valueOf(local.getDir()) >= Double.valueOf(conditions[0])) && (Double.valueOf(local.getDir()) <= Double.valueOf(conditions[1])))).map(lot -> {
-                        LocationVO locationVO = new LocationVO();
-                        BeanUtils.copyProperties(lot,locationVO);
-                        locationVO.setDistance(CalcDist.calculateDistance(Double.valueOf(lat),Double.valueOf(lon),
-                                Double.valueOf(lot.getLat()),Double.valueOf(lot.getLon())));
-                        return locationVO;
-                    }).sorted(Comparator.comparing(LocationVO::getDistance))
-                    .collect(Collectors.toList());
-        }
-        LocationVO res = null;
-        // 有最近的船只则进计算
-        if(calcList.size() > 0) {
-
-            // 验证船只是否经过该站点
-            for (LocationVO locationVO : calcList) {
-                // 验证行驶方向--获取未到达次站点船只--避免已经过站点船只近距离出现
-                if(direction){
-                   Double position = CalcDist.gps2d(Double.valueOf(wharf.getLat()),Double.valueOf(wharf.getLng()),Double.valueOf(locationVO.getLat()),Double.valueOf(locationVO.getLon()));
-                   if(position <= 0){
-                       res  = locationVO;
-                       break;
-                   }
-                }else {
-                    Double position = CalcDist.gps2d(Double.valueOf(locationVO.getLat()),Double.valueOf(locationVO.getLon()),Double.valueOf(wharf.getLat()),Double.valueOf(wharf.getLng()));
-                    if(position <= 0){
-                        res  = locationVO;
-                        break;
-                    }
-                }
-            }
-            if(res == null)
-                return null;
-            // 停靠时间
-            Long awaitTime = 0L;
-
-
-            // 离船最近的站点
-            SysWharf wharfShip = this.findNearestStation(res.getLat(),res.getLon());
-            // 验证船是否停止航行
-            Boolean isStopOperation = Double.valueOf(res.getSpeed()) <= Double.valueOf(stopSpeed);
-            // 为避免GPS服务与本地服务器时间不同步使用GPS服务器期间验证是否进入围栏
-            Long endTime = Long.valueOf(res.getServer_time());
-            // 减去默认停靠时间在停靠时间内查询进入记录
-            Long startTime = endTime - (inStopTime.longValue() * 60 * 1000);
-
-            // 围栏记录数据
-            List<AlarmDatetailsEntity> fenceEntities = iGpsService.findAlarmDetails(res.getMacid(),"4",startTime,endTime);
-
-            // 查询是否进入离我最近的站点
-            AlarmDatetailsEntity mySite = fenceEntities.stream().filter(alram -> alram.getDescribe().equals(wharf.getWharfNanme())).findFirst().orElse(null);
-
-            AlarmDatetailsEntity shipSite = fenceEntities.stream().filter(alram -> alram.getDescribe().equals(wharfShip.getWharfNanme())).findFirst().orElse(null);
-
-            res.setMyWharf(wharf);
 
-
-            // 距离几站计算
-            Long distSiteNum = 0L;
-            if(direction){
-                Double position = CalcDist.gps2d(Double.valueOf(wharfShip.getLat()),Double.valueOf(wharfShip.getLng()),Double.valueOf(res.getLat()),Double.valueOf(res.getLon()));
-                if(position > 0){
-                   distSiteNum = (wharfShip.getWharfOrder() / 10)  - (wharf.getWharfOrder() / 10) ;
-                }else {
-                   distSiteNum = ((wharfShip.getWharfOrder() / 10) - 1) - (wharf.getWharfOrder() / 10)  ;
-                }
-            }else {
-                Double position = CalcDist.gps2d(Double.valueOf(res.getLat()),Double.valueOf(res.getLon()),Double.valueOf(wharfShip.getLat()),Double.valueOf(wharfShip.getLng()));
-                if(position > 0){
-                    distSiteNum = (wharf.getWharfOrder() / 10) - (wharfShip.getWharfOrder() / 10) ;
-                }else {
-                    distSiteNum = (wharf.getWharfOrder() / 10) - ((wharfShip.getWharfOrder() / 10) - 1);
-                }
-            }
-
-            res.setDistSiteNum(distSiteNum);
-
-            // 船只已经停靠入站离我最近的站
-            if (isStopOperation && (mySite != null || shipSite != null)) {
-                if(res.getIsLongStop())
-                    res.setStopWharf(wharfShip);
-                else {
-                    if(shipSite == null && mySite != null){
-                        res.setStopWharf(wharf);
-                    }else {
-                        res.setStopWharf(wharfShip);
-                    }
-                }
-                res.setIsArrival(Boolean.TRUE);
-                // 如果离我最近与停靠站点不是同一站点则计算时间
-                if(!wharfShip.getWharfNanme().equals(wharf.getWharfNanme())) {
-                    //如果处于停止状态则计算停留剩余时间
-                    Double loadingTime = inStopTime.doubleValue() - CalcDist.calcStopTime(res.getUpdtime());
-                    // 计算站点间距离
-                    Double distince = CalcDist.calculateDistance(Double.valueOf(res.getLat()), Double.valueOf(res.getLon()),
-                            Double.valueOf(wharf.getLat()), Double.valueOf(wharf.getLng()));
-                    // 计算时间
-                    Double time = Math.ceil(((distince / 100) / Double.valueOf(defaultSpeed)) * 60);
-                    awaitTime = loadingTime.longValue() + time.longValue();
-                }
+        // 停靠时间
+        Long awaitTime = 0L;
+        Double stopDist = 0.0;
+        Long distSiteNum = 0L;
+
+        SysWharf wharfShipStop = null;
+        SysWharf wharfShipNext = null;
+
+        // 船只已经停止
+        if(sysShipResVO.getIsStop() == 1L){
+            wharfShipStop = sysWharfService.get(sysShipResVO.getWharfStop());
+            sysShipResVO.setStop(wharfShipStop);
+            // 停靠同一个站点
+            if(wharfShipStop.getWharfNanme().equals(wharf.getWharfNanme())){
+                sysShipResVO.setIsStopMyLocationSite(Boolean.TRUE);
             }else {
+                //如果处于停止状态则计算停留剩余时间
+                Double loadingTime = 0.0;
+                if(sysShipResVO.getUpdateTime() != null && sysShipResVO.getUpdateTime() < System.currentTimeMillis())
+                    loadingTime = inStopTime.doubleValue() - CalcDist.calcStopTime(sysShipResVO.getUpdateTime().toString());
                 // 计算站点间距离
-                Double distince = CalcDist.calculateDistance(Double.valueOf(res.getLat()),Double.valueOf(res.getLon()),
-                        Double.valueOf(wharf.getLat()),Double.valueOf(wharf.getLng()));
-                // 船只出站后停止运行
-                if(isStopOperation){
-                    Double time = Math.ceil(((distince / 100) / Double.valueOf(defaultSpeed)) * 60);
-                    awaitTime = time.longValue();
-                }else {
-                    Double time = Math.ceil(((distince / 100) / Double.valueOf(res.getSpeed())) * 60);
-                    awaitTime = time.longValue();
-                }
+                stopDist = CalcDist.calculateDistance(Double.valueOf(wharf.getLat()), Double.valueOf(wharf.getLng()),Double.valueOf(wharfShipStop.getLat()), Double.valueOf(wharfShipStop.getLng()));
+                Double time = Math.ceil(((stopDist / 100) / Double.valueOf(defaultSpeed)) * 60);
+                awaitTime = time.longValue() + loadingTime.longValue();
+                // 船只正向反向距离站点数量
+                Long myNum = wharf.getWharfOrder() / 10;
+                Long shipNum = wharfShipStop.getWharfOrder() / 10;
+                if(sysShipResVO.getTravel() == 1L)
+                    distSiteNum = shipNum - myNum;
+                else
+                    distSiteNum = myNum - shipNum;
             }
-
-            res.setAwaitTime(awaitTime);
+        }else {
+            wharfShipNext = sysWharfService.get(sysShipResVO.getNextWharf());
+            stopDist = CalcDist.calculateDistance(Double.valueOf(wharf.getLat()), Double.valueOf(wharf.getLng()),Double.valueOf(sysShipResVO.getLat()), Double.valueOf(sysShipResVO.getLon()));
+            Double time = 0.0;
+            if(Double.valueOf(sysShipResVO.getSpeed()) > Double.valueOf(stopSpeed))
+                time = Math.ceil(((stopDist / 100) / Double.valueOf(sysShipResVO.getSpeed())) * 60);
+            else
+                time = Math.ceil(((stopDist / 100) / Double.valueOf(defaultSpeed)) * 60);
+            awaitTime = time.longValue();
+            sysShipResVO.setNext(wharfShipNext);
+            // 船只正向反向距离站点数量
+            Long myNum = wharf.getWharfOrder() / 10;
+            Long shipNum = wharfShipNext.getWharfOrder() / 10;
+            if(sysShipResVO.getTravel() == 1L)
+                distSiteNum = shipNum - myNum;
+            else
+                distSiteNum = myNum - shipNum;
         }
+        // fixme 核载人数 此处需减去摄像头获得数据
+        Long resetNum = Long.valueOf(sysShipResVO.getNuclearLoadNum());
+
+        sysShipResVO.setReseat(resetNum);
+        sysShipResVO.setAwaitTime(awaitTime);
+        sysShipResVO.setDistance(stopDist);
+        sysShipResVO.setDistSiteNum(distSiteNum);
 
-        return res;
+        return sysShipResVO;
     }
 
     public SysWharfVO findNearestStation(String lat, String lon){

+ 71 - 55
aidex-system/src/main/java/com/aidex/common/gps/server/impl/GpsPlushService.java

@@ -1,6 +1,5 @@
 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;
@@ -10,18 +9,14 @@ 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 com.alibaba.fastjson2.JSONArray;
 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
@@ -40,11 +35,11 @@ public class GpsPlushService implements IGpsPlushService {
     public void plush(String method, String serialNumber, String data){
         // 只接收报警和位置  其他数据丢弃
         if(method.equals(METHOD.ALARM)){
-            List<PushAlarmEntity> pushAlarmEntities = JSON.parseArray(data, PushAlarmEntity.class);
+            List<PushAlarmEntity> pushAlarmEntities = JSONArray.parseArray(data).toList(PushAlarmEntity.class);
             alarmSource(pushAlarmEntities);
         }
         if(method.equals(METHOD.LOCATION)){
-            List<PushLocationEntity> pushAlarmEntities = JSON.parseArray(data, PushLocationEntity.class);
+            List<PushLocationEntity> pushAlarmEntities = JSONArray.parseArray(data).toList(PushLocationEntity.class);
             locationSource(pushAlarmEntities);
         }
     }
@@ -57,54 +52,75 @@ public class GpsPlushService implements IGpsPlushService {
         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);
+                SysShipExtend updateShipExtend = sysShipExtends.stream().filter(extend -> alarmEntity.getMacid().contains(extend.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(alarmEntity.getClassify().equals(CLASSIFY.OUT) || alarmEntity.getClassify().equals(CLASSIFY.IN)) {
+                    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(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());
+                        }
+                        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);
                     }
-                    sysShipExtendService.update(updateShipExtend);
                 }
-            }
-//            GpsA alarmEntity = new GpsLocationPlush();
-//            alarmEntity.setId(alarmEntity.getId());
-//            alarmEntity.set(alarmEntity.getId());
-//            alarmEntity.setId(alarmEntity.getId());
 
+
+                GpsAlarmPlush alarmPlush = new GpsAlarmPlush();
+                alarmPlush.setId(alarmEntity.getId());
+                alarmPlush.setUserName(alarmEntity.getUserName());
+                alarmPlush.setMacid(alarmEntity.getMacid());
+                alarmPlush.setFullName(alarmEntity.getFullName());
+                alarmPlush.setPTime(Long.valueOf(alarmEntity.getPTime()));
+                alarmPlush.setAddTime(Long.valueOf(alarmEntity.getAddTime()));
+                alarmPlush.setLat(alarmEntity.getLat());
+                alarmPlush.setLon(alarmEntity.getLon());
+                alarmPlush.setMapLat(alarmEntity.getMapLat());
+                alarmPlush.setMapLon(alarmEntity.getMapLon());
+                alarmPlush.setSpeed(Long.valueOf(alarmEntity.getSpeed()));
+                alarmPlush.setDir(alarmEntity.getDir());
+                alarmPlush.setLat(alarmEntity.getLat());
+                alarmPlush.setLon(alarmEntity.getLon());
+                alarmPlush.setMapLat(alarmEntity.getMapLat());
+                alarmPlush.setMapLon(alarmEntity.getMapLon());
+                alarmPlush.setMapLon(alarmEntity.getMapLon());
+                alarmPlush.setClassify(alarmEntity.getClassify());
+                alarmPlush.setDescribe(alarmEntity.getDescribe());
+                alarmPlush.setNotea(alarmEntity.getNotea());
+                gpsAlarmPlushService.save(alarmPlush);
+            }
         }
 
     }
@@ -116,7 +132,7 @@ public class GpsPlushService implements IGpsPlushService {
         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);
+                SysShipExtend updateShipExtend = sysShipExtends.stream().filter(extend -> location.getMacid().contains(extend.getMacId())).findFirst().orElse(null);
                 // 设备是当前设备  并且方位正常则更新数据
                 if (updateShipExtend != null &&
                         ((Double.valueOf(location.getDir()) >= Double.valueOf(forward[0]) && Double.valueOf(location.getDir()) <= Double.valueOf(forward[1]))) ||
@@ -125,16 +141,16 @@ public class GpsPlushService implements IGpsPlushService {
                     updateShipExtend.setDir(location.getDir());
                     updateShipExtend.setLon(location.getMapLon());
                     updateShipExtend.setLat(location.getMapLat());
-                    String[] paramsValue = location.getValue().split(",");
+                    String[] paramsValue = location.getValue() == null?new String[]{"0"}:location.getValue().split(",");
                     updateShipExtend.setMileage(paramsValue[0]);
                     updateShipExtend.setUpdateTime(System.currentTimeMillis());
-                    sysShipExtendService.update(updateShipExtend);
+                    sysShipExtendService.updateByMacId(updateShipExtend);
                 }
                 GpsLocationPlush locationPlush = new GpsLocationPlush();
                 locationPlush.setMacid(location.getMacid());
-                locationPlush.setGpsTime(locationPlush.getGpsTime());
-                locationPlush.setHeartTime(locationPlush.getHeartTime());
-                locationPlush.setUpdTime(locationPlush.getUpdTime());
+                locationPlush.setGpsTime(Long.valueOf(location.getGpsTime()));
+                locationPlush.setHeartTime(Long.valueOf(location.getHeartTime()));
+                locationPlush.setUpdTime(Long.valueOf(location.getUpdTime()));
                 locationPlush.setSpeed(location.getSpeed());
                 locationPlush.setDir(location.getDir());
                 locationPlush.setLat(location.getLat());

+ 6 - 3
aidex-system/src/main/java/com/aidex/common/plush/domain/GpsAlarmPlush.java

@@ -81,23 +81,25 @@ public class GpsAlarmPlush
     /** 方向 */
     @LogField
     @FieldRemark(name = "方向",field = "dir")
-    private Long dir;
+    private String dir;
 
     /** 报警类型[参照报警字段对应表] */
     @LogField
     @FieldRemark(name = "报警类型[参照报警字段对应表]",field = "classify")
-    private Long classify;
+    private String classify;
 
     /** 报警类型[扩展] */
     @LogField
     @FieldRemark(name = "报警类型[扩展]",field = "describe")
-    private Long describe;
+    private String describe;
 
     /** 描述信息 */
     @LogField
     @FieldRemark(name = "描述信息",field = "notea")
     private String notea;
 
+    private String sType;
+
 
     @Override
     public String toString() {
@@ -117,6 +119,7 @@ public class GpsAlarmPlush
             .append("describe", getDescribe())
             .append("notea", getNotea())
             .append("id", getId())
+            .append("sType", getSType())
             .toString();
     }
 }

+ 11 - 0
aidex-system/src/main/java/com/aidex/common/plush/domain/SysShipExtend.java

@@ -1,6 +1,8 @@
 package com.aidex.common.plush.domain;
 
 import javax.validation.constraints.NotBlank;
+
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -24,6 +26,7 @@ public class SysShipExtend
     @NotBlank(message = "船只Id不允许为空")
     @LogField
     @FieldRemark(name = "船只Id",field = "shipId")
+    @ApiModelProperty(value="船只Id",required=true)
     private String shipId;
 
     /** 设备MacId */
@@ -31,24 +34,28 @@ public class SysShipExtend
     @NotBlank(message = "设备MacId不允许为空")
     @LogField
     @FieldRemark(name = "设备MacId",field = "macId")
+    @ApiModelProperty(value="设备编号",required=true)
     private String macId;
 
     /** 船只运行速度 */
     @Excel(name = "船只运行速度")
     @LogField
     @FieldRemark(name = "船只运行速度",field = "speed")
+    @ApiModelProperty(value="船只运行速度",required=true)
     private String speed;
 
     /** 船只是否停靠(0:未停靠;1已停靠) */
     @Excel(name = "船只是否停靠(0:未停靠;1已停靠)")
     @LogField
     @FieldRemark(name = "船只是否停靠(0:未停靠;1已停靠)",field = "isStop")
+    @ApiModelProperty(value="船只是否停靠(0:未停靠;1已停靠)",required=true)
     private Long isStop;
 
     /** 船只方位(默认从西到东) */
     @Excel(name = "船只方位")
     @LogField
     @FieldRemark(name = "船只方位",field = "dir")
+    @ApiModelProperty(value="船只方位",required=true)
     private String dir;
 
     /** 预计到达站点 */
@@ -66,21 +73,25 @@ public class SysShipExtend
     /** 纬度(默认停靠名城广场码头) */
     @LogField
     @FieldRemark(name = "纬度",field = "lat")
+    @ApiModelProperty(value="纬度",required=true)
     private String lat;
 
     /** 经度(默认停靠名城广场码头) */
     @LogField
     @FieldRemark(name = "经度",field = "lon")
+    @ApiModelProperty(value="经度",required=true)
     private String lon;
 
     /** 船只行驶里程 */
     @LogField
     @FieldRemark(name = "船只行驶里程",field = "mileage")
+    @ApiModelProperty(value="船只行驶里程",required=true)
     private String mileage;
 
     /** 船只行驶方向(1正向,2反向) */
     @LogField
     @FieldRemark(name = "船只行驶方向",field = "travel")
+    @ApiModelProperty(value="船只行驶方向(1正向,2反向)",required=true)
     private Long travel;
 
     private String id;

+ 17 - 0
aidex-system/src/main/java/com/aidex/common/plush/domain/vo/SysShipExtendVO.java

@@ -0,0 +1,17 @@
+package com.aidex.common.plush.domain.vo;
+
+import com.aidex.common.plush.domain.SysShipExtend;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysShipExtendVO extends SysShipExtend {
+
+    @ApiModelProperty(value="船只名称",required=true)
+    private String shipName;
+
+    private String nuclearLoadNum;
+
+    private Double distance;
+
+}

+ 27 - 0
aidex-system/src/main/java/com/aidex/common/plush/domain/vo/SysShipResVO.java

@@ -0,0 +1,27 @@
+package com.aidex.common.plush.domain.vo;
+
+import com.aidex.common.plush.domain.SysShipExtend;
+import com.aidex.system.domain.SysWharf;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysShipResVO extends SysShipExtendVO {
+    @ApiModelProperty(value="停靠站点",required=true)
+    private SysWharf stop;
+    @ApiModelProperty(value="即将到达站点",required=true)
+    private SysWharf next;
+    @ApiModelProperty(value="我所在站点",required=true)
+    private SysWharf my;
+    @ApiModelProperty(value="到站距离(单位:米)",required=true)
+    private Double distance;
+    @ApiModelProperty(value="等待时间(分钟)",required=true)
+    private Long awaitTime;
+    @ApiModelProperty(value="剩余座位数量",required=true)
+    private Long reseat;
+    @ApiModelProperty(value="距离几站",required=true)
+    private Long distSiteNum;
+
+    @ApiModelProperty(value="是否到达离我最近的站点",required=true)
+    private Boolean isStopMyLocationSite;
+}

+ 5 - 13
aidex-system/src/main/java/com/aidex/common/plush/mapper/GpsAlarmPlushMapper.xml

@@ -27,7 +27,7 @@
 
         a.classify as "classify",
 
-        a.describe as "describe",
+        a.`describe` as "describe",
 
         a.notea as "notea",
 
@@ -117,13 +117,9 @@
 
             classify,
 
-            describe,
+            `describe`,
 
-            notea,
-
-            remark,
-
-            id
+            notea
 
         ) VALUES (
             #{userName},
@@ -152,11 +148,7 @@
 
             #{describe},
 
-            #{notea},
-
-            #{remark},
-
-            #{id}
+            #{notea}
 
         )
     </insert>
@@ -175,7 +167,7 @@
             speed = #{speed},
             dir = #{dir},
             classify = #{classify},
-            describe = #{describe},
+            `describe` = #{describe},
             notea = #{notea}
         WHERE id = #{id}
     </update>

+ 5 - 0
aidex-system/src/main/java/com/aidex/common/plush/mapper/SysShipExtendMapper.java

@@ -1,9 +1,12 @@
 package com.aidex.common.plush.mapper;
 
 import com.aidex.common.core.mapper.BaseMapper;
+import com.aidex.common.plush.domain.vo.SysShipExtendVO;
 import org.apache.ibatis.annotations.Param;
 import com.aidex.common.plush.domain.SysShipExtend;
 
+import java.util.List;
+
 /**
  * 船只信息扩展(查询站点数据使用)Mapper接口
  * @author shs
@@ -18,4 +21,6 @@ public interface SysShipExtendMapper extends BaseMapper<SysShipExtend>
     void updateByShip(SysShipExtend sysShipExtend);
 
     void deleteByIds(@Param("ids") String[] configIds);
+
+    List<SysShipExtendVO> findAllonline(@Param("travel") String travel);
 }

+ 13 - 8
aidex-system/src/main/java/com/aidex/common/plush/mapper/SysShipExtendMapper.xml

@@ -74,6 +74,16 @@
     </select>
 
 
+
+    <select id="findAllonline" resultType="SysShipExtendVO">
+        SELECT sw.ship_nanme AS shipName,sw.nuclear_load_num AS nuclearLoadNum,
+         <include refid="sysShipExtendColumns"/>
+        FROM sys_ship sw
+        INNER JOIN sys_ship_extend a ON a.ship_id = sw.id
+        WHERE sw.del_flag = 0 AND sw.`status` &lt;&gt; 0 AND a.travel = #{travel}
+    </select>
+
+
     <insert id="insert">
         INSERT INTO sys_ship_extend(
             ship_id,
@@ -134,7 +144,6 @@
 
     <update id="update">
         UPDATE sys_ship_extend SET
-           mac_id = #{macId},
            speed = #{speed},
            is_stop = #{isStop},
            dir = #{dir},
@@ -142,10 +151,9 @@
            wharf_stop = #{wharfStop},
            lat = #{lat},
            lon = #{lon},
-           mileage = #{mileage},
            travel = #{travel},
-           update_time = #{updateTime},
-           WHERE ship_id = #{macId}
+           update_time = #{updateTime}
+           WHERE mac_id = #{macId}
     </update>
 
     <update id="updateByShip">
@@ -156,17 +164,14 @@
 
     <update id="updateByMacId">
         UPDATE sys_ship_extend SET
-            mac_id = #{macId},
             speed = #{speed},
             is_stop = #{isStop},
             dir = #{dir},
-            next_wharf = #{nextWharf},
-            wharf_stop = #{wharfStop},
             lat = #{lat},
             lon = #{lon},
             mileage = #{mileage},
             travel = #{travel},
-            update_time = #{updateTime},
+            update_time = #{updateTime}
         WHERE mac_id = #{macId}
     </update>
 

+ 1 - 0
aidex-system/src/main/java/com/aidex/common/plush/service/GpsAlarmPlushService.java

@@ -11,4 +11,5 @@ import com.aidex.common.plush.domain.GpsAlarmPlush;
  */
 public interface GpsAlarmPlushService {
 
+    void save(GpsAlarmPlush gpsAlarmPlush);
 }

+ 5 - 0
aidex-system/src/main/java/com/aidex/common/plush/service/SysShipExtendService.java

@@ -2,6 +2,7 @@ package com.aidex.common.plush.service;
 
 import com.aidex.common.core.service.BaseService;
 import com.aidex.common.plush.domain.SysShipExtend;
+import com.aidex.common.plush.domain.vo.SysShipExtendVO;
 
 import java.util.List;
 
@@ -18,6 +19,8 @@ public interface SysShipExtendService {
 
     void update(SysShipExtend sysShipExtend);
 
+    void updateByMacId(SysShipExtend sysShipExtend);
+
     void updateByShip(SysShipExtend sysShipExtend);
 
     SysShipExtend findById(String id);
@@ -25,4 +28,6 @@ public interface SysShipExtendService {
     void delByIds(String[] ids);
 
     List<SysShipExtend> findList(SysShipExtend sysShipExtend);
+
+    List<SysShipExtendVO> findAllonline(String travel);
 }

+ 8 - 1
aidex-system/src/main/java/com/aidex/common/plush/service/impl/GpsAlarmPlushServiceImpl.java

@@ -1,6 +1,8 @@
 package com.aidex.common.plush.service.impl;
 
 import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -19,9 +21,14 @@ import org.springframework.transaction.annotation.Transactional;
  * @date 2024-03-27
  */
 @Service
-@Transactional(readOnly = true)
 public class GpsAlarmPlushServiceImpl implements GpsAlarmPlushService {
 
     private static final Logger log = LoggerFactory.getLogger(GpsAlarmPlushServiceImpl.class);
+    @Autowired
+    private GpsAlarmPlushMapper gpsAlarmPlushMapper;
+
 
+    public void save(GpsAlarmPlush gpsAlarmPlush){
+        gpsAlarmPlushMapper.insert(gpsAlarmPlush);
+    }
 }

+ 0 - 1
aidex-system/src/main/java/com/aidex/common/plush/service/impl/GpsLocationPlushServiceImpl.java

@@ -17,7 +17,6 @@ import org.springframework.transaction.annotation.Transactional;
  * @date 2024-03-27
  */
 @Service
-@Transactional(readOnly = true)
 public class GpsLocationPlushServiceImpl  implements GpsLocationPlushService {
 
     private static final Logger log = LoggerFactory.getLogger(GpsLocationPlushServiceImpl.class);

+ 7 - 2
aidex-system/src/main/java/com/aidex/common/plush/service/impl/SysShipExtendServiceImpl.java

@@ -2,6 +2,7 @@ package com.aidex.common.plush.service.impl;
 
 import java.util.List;
 
+import com.aidex.common.plush.domain.vo.SysShipExtendVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
@@ -21,7 +22,6 @@ import org.springframework.transaction.annotation.Transactional;
  * @date 2024-03-27
  */
 @Service
-@Transactional(readOnly = true)
 public class SysShipExtendServiceImpl implements SysShipExtendService {
 
     private static final Logger log = LoggerFactory.getLogger(SysShipExtendServiceImpl.class);
@@ -38,6 +38,9 @@ public class SysShipExtendServiceImpl implements SysShipExtendService {
         sysShipExtendMapper.update(sysShipExtend);
     }
 
+    public void updateByMacId(SysShipExtend sysShipExtend){
+        sysShipExtendMapper.updateByMacId(sysShipExtend);
+    }
     public void updateByShip(SysShipExtend sysShipExtend){
         sysShipExtendMapper.updateByShip(sysShipExtend);
     }
@@ -53,5 +56,7 @@ public class SysShipExtendServiceImpl implements SysShipExtendService {
     public List<SysShipExtend> findList(SysShipExtend sysShipExtend){
         return sysShipExtendMapper.findList(sysShipExtend);
     }
-
+    public List<SysShipExtendVO> findAllonline(String travel){
+        return sysShipExtendMapper.findAllonline(travel);
+    }
 }

+ 4 - 1
aidex-system/src/main/java/com/aidex/system/service/impl/SysShipServiceImpl.java

@@ -88,11 +88,14 @@ public class SysShipServiceImpl extends BaseServiceImpl<SysShipMapper, SysShip>
             shipExtend.setId(sysShip.getId());
             shipExtend.setMacId(sysShip.getShipNum());
             shipExtend.setDir("90");
-            shipExtend.setIsStop(0L);
+            shipExtend.setIsStop(1L);
             shipExtend.setLat("36.077395");
             shipExtend.setLon("103.863987");
             shipExtend.setMileage("0");
             shipExtend.setDelFlag("0");
+            shipExtend.setWharfStop("f502c163626e4aefa320bb7d5f47824c");
+            shipExtend.setTravel(1L);
+            shipExtend.setSpeed("0");
             if (sysShip.getIsNewRecord()) {
                 sysShipExtendService.save(shipExtend);
             }else {