shs 1 rok temu
rodzic
commit
f1e7518793

+ 3 - 2
aidex-controller/src/main/java/com/aidex/web/controller/system/SysShipController.java

@@ -8,6 +8,7 @@ import com.aidex.common.enums.BusinessType;
 import com.aidex.common.utils.poi.ExcelUtil;
 import com.aidex.framework.cache.DictUtils;
 import com.aidex.system.domain.SysShip;
+import com.aidex.system.domain.vo.ShipVo;
 import com.aidex.system.service.SysShipService;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -65,7 +66,7 @@ public class SysShipController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:sysShip:add')")
     @Log(title = "船只管理", businessType = BusinessType.INSERT)
     @PostMapping
-    public R add(@RequestBody @Validated  SysShip sysShip) {
+    public R add(@RequestBody @Validated  ShipVo sysShip) {
         return R.status(sysShipService.save(sysShip));
     }
 
@@ -75,7 +76,7 @@ public class SysShipController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:sysShip:edit')")
     @Log(title = "船只管理", businessType = BusinessType.UPDATE)
     @PutMapping
-    public R edit(@RequestBody @Validated SysShip sysShip) {
+    public R edit(@RequestBody @Validated ShipVo sysShip) {
         return R.status(sysShipService.save(sysShip));
     }
 

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

@@ -144,7 +144,7 @@ public class AppService implements IAppService {
                     loadingTime = inStopTime.doubleValue() - CalcDist.calcStopTime(sysShipResVO.getUpdateTime().toString());
                 // 计算站点间距离
                 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);
+                Double time = Math.ceil(((stopDist / 1000) / Double.valueOf(defaultSpeed)) * 60);
                 awaitTime = time.longValue() + loadingTime.longValue();
                 // 船只正向反向距离站点数量
                 Long myNum = wharf.getWharfOrder() / 10;
@@ -159,9 +159,9 @@ public class AppService implements IAppService {
             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);
+                time = Math.ceil(((stopDist / 1000) / Double.valueOf(sysShipResVO.getSpeed())) * 60);
             else
-                time = Math.ceil(((stopDist / 100) / Double.valueOf(defaultSpeed)) * 60);
+                time = Math.ceil(((stopDist / 1000) / Double.valueOf(defaultSpeed)) * 60);
             awaitTime = time.longValue();
             sysShipResVO.setNext(wharfShipNext);
             // 船只正向反向距离站点数量

+ 26 - 7
aidex-system/src/main/java/com/aidex/common/gps/server/impl/GpsPlushService.java

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

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

@@ -76,7 +76,7 @@ public class GpsAlarmPlush
     /** 速度 */
     @LogField
     @FieldRemark(name = "速度",field = "speed")
-    private Long speed;
+    private String speed;
 
     /** 方向 */
     @LogField

+ 1 - 122
aidex-system/src/main/java/com/aidex/common/plush/domain/GpsLocationPlush.java

@@ -43,7 +43,7 @@ public class GpsLocationPlush
     @Excel(name = "最后一次更新位置")
     @LogField
     @FieldRemark(name = "最后一次更新位置",field = "updTime")
-    private Long updTime;
+    private String updTime;
 
     /** 速度 */
     @Excel(name = "速度")
@@ -95,127 +95,6 @@ public class GpsLocationPlush
     @FieldRemark(name = "数值状态逗号分割(不支持为空)",field = "value")
     private String value;
 
-    public void setMacid(String macid)
-    {
-        this.macid = macid;
-    }
-
-    public String getMacid()
-    {
-        return macid;
-    }
-
-    public void setGpsTime(Long gpsTime)
-    {
-        this.gpsTime = gpsTime;
-    }
-
-    public Long getGpsTime()
-    {
-        return gpsTime;
-    }
-
-    public void setHeartTime(Long heartTime)
-    {
-        this.heartTime = heartTime;
-    }
-
-    public Long getHeartTime()
-    {
-        return heartTime;
-    }
-
-    public void setUpdTime(Long updTime)
-    {
-        this.updTime = updTime;
-    }
-
-    public Long getUpdTime()
-    {
-        return updTime;
-    }
-
-    public void setSpeed(String speed)
-    {
-        this.speed = speed;
-    }
-
-    public String getSpeed()
-    {
-        return speed;
-    }
-
-    public void setDir(String dir)
-    {
-        this.dir = dir;
-    }
-
-    public String getDir()
-    {
-        return dir;
-    }
-
-    public void setLat(String lat)
-    {
-        this.lat = lat;
-    }
-
-    public String getLat()
-    {
-        return lat;
-    }
-
-    public void setLon(String lon)
-    {
-        this.lon = lon;
-    }
-
-    public String getLon()
-    {
-        return lon;
-    }
-
-    public void setMapLat(String mapLat)
-    {
-        this.mapLat = mapLat;
-    }
-
-    public String getMapLat()
-    {
-        return mapLat;
-    }
-
-    public void setMapLon(String mapLon)
-    {
-        this.mapLon = mapLon;
-    }
-
-    public String getMapLon()
-    {
-        return mapLon;
-    }
-
-    public void setStats(String stats)
-    {
-        this.stats = stats;
-    }
-
-    public String getStats()
-    {
-        return stats;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-
-
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 2 - 3
aidex-system/src/main/java/com/aidex/common/plush/mapper/SysShipExtendMapper.xml

@@ -159,7 +159,7 @@
     <update id="updateByShip">
         UPDATE sys_ship_extend SET
        mac_id = #{macId},
-       WHERE ship_id = #{macId}
+       WHERE id = #{macId}
     </update>
 
     <update id="updateByMacId">
@@ -170,8 +170,7 @@
             lat = #{lat},
             lon = #{lon},
             mileage = #{mileage},
-            travel = #{travel},
-            update_time = #{updateTime}
+            travel = #{travel}
         WHERE mac_id = #{macId}
     </update>
 

+ 5 - 3
aidex-system/src/main/java/com/aidex/common/utils/dist/CalcDist.java

@@ -3,7 +3,9 @@ package com.aidex.common.utils.dist;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
+import java.time.Instant;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
@@ -31,13 +33,13 @@ public class CalcDist {
         return distance;
     }
 
-
     public static Long calcStopTime(String stopTime){
         // 当前时间
         LocalDateTime now = LocalDateTime.now();
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         //  停船时间
-        LocalDateTime later = LocalDateTime.parse(stopTime,formatter);
+        LocalDateTime later = LocalDateTime.ofInstant(Instant.ofEpochMilli(Long.valueOf(stopTime)), ZoneId.systemDefault());
+//        LocalDateTime later = LocalDateTime.parse(stopTime,formatter);
         // 计算两个时间之间的差值
         Duration duration = Duration.between(now, later);
         Long minutesBetween = duration.toMinutes();

+ 11 - 0
aidex-system/src/main/java/com/aidex/system/domain/vo/ShipVo.java

@@ -0,0 +1,11 @@
+package com.aidex.system.domain.vo;
+
+import com.aidex.system.domain.SysShip;
+import lombok.Data;
+
+@Data
+public class ShipVo extends SysShip {
+
+   private String wharf;
+   private String travel;
+}

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

@@ -4,6 +4,10 @@ import java.util.List;
 
 import com.aidex.common.plush.domain.SysShipExtend;
 import com.aidex.common.plush.service.SysShipExtendService;
+import com.aidex.common.utils.StringUtils;
+import com.aidex.system.domain.vo.ShipVo;
+import com.alibaba.fastjson2.JSON;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
@@ -82,18 +86,20 @@ public class SysShipServiceImpl extends BaseServiceImpl<SysShipMapper, SysShip>
      */
     @Override
     public boolean save(SysShip sysShip) {
+        ShipVo shipVo = new ShipVo();
+        BeanUtils.copyProperties(sysShip,shipVo);
         if(super.save(sysShip)) {
             SysShipExtend shipExtend = new SysShipExtend();
             shipExtend.setShipId(sysShip.getId());
             shipExtend.setId(sysShip.getId());
             shipExtend.setMacId(sysShip.getShipNum());
-            shipExtend.setDir("90");
+            shipExtend.setDir((!StringUtils.isEmpty(shipVo.getTravel()) || shipVo.getTravel().equals("1"))?"100":"270");
             shipExtend.setIsStop(1L);
-            shipExtend.setLat("36.077395");
-            shipExtend.setLon("103.863987");
+            shipExtend.setLat(!StringUtils.isEmpty(sysShip.getLat())?sysShip.getLat():"36.077395");
+            shipExtend.setLon(!StringUtils.isEmpty(sysShip.getLng())?sysShip.getLng():"103.863987");
             shipExtend.setMileage("0");
             shipExtend.setDelFlag("0");
-            shipExtend.setWharfStop("f502c163626e4aefa320bb7d5f47824c");
+            shipExtend.setWharfStop(!StringUtils.isEmpty(shipVo.getWharf())?shipVo.getWharf():"f502c163626e4aefa320bb7d5f47824c");
             shipExtend.setTravel(1L);
             shipExtend.setSpeed("0");
             if (sysShip.getIsNewRecord()) {

+ 14 - 0
aidex-ui/src/views/system/sysship/modules/SysShipAddForm.vue

@@ -39,6 +39,20 @@
             <a-input v-model="form.lng" placeholder="请输入当前维度"/>
           </a-form-model-item>
         </a-col>
+        <a-col :span="12">
+          <a-form-model-item label="默认停靠码头" prop="wharf">
+            <a-select v-model="form.wharf" placeholder="请选择默认停靠码头">
+              <a-select-option v-for="item in wharfList" :value="item.id" :key="item.id">{{ item.wharfNanme }}</a-select-option>
+            </a-select>
+          </a-form-model-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-model-item label="船只默认航向" prop="travel">
+            <a-select v-model="form.travel" placeholder="请选择默认航向">
+              <a-select-option v-for="item in travelList" :value="item.id" :key="item.id">{{ item.name }}</a-select-option>
+            </a-select>
+          </a-form-model-item>
+        </a-col>
         <a-col :span="12" >
           <a-form-model-item label="船只在线状态" prop="status">
             <a-radio-group v-model="form.status">

+ 14 - 0
aidex-ui/src/views/system/sysship/modules/SysShipEditForm.vue

@@ -40,6 +40,20 @@
               <a-input v-model="form.lng" placeholder="请输入当前维度"/>
             </a-form-model-item>
           </a-col>
+          <a-col :span="12">
+            <a-form-model-item label="默认停靠码头" prop="wharf">
+              <a-select v-model="form.wharf" placeholder="请选择默认停靠码头">
+                <a-select-option v-for="item in wharfList" :value="item.id" :key="item.id">{{ item.wharfNanme }}</a-select-option>
+              </a-select>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-model-item label="船只默认航向" prop="travel">
+              <a-select v-model="form.travel" placeholder="请选择默认航向">
+                <a-select-option v-for="item in travelList" :value="item.id" :key="item.id">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-model-item>
+          </a-col>
           <a-col :span="12" >
             <a-form-model-item label="船只在线状态" prop="status">
               <a-radio-group v-model="form.status">

+ 23 - 2
aidex-ui/src/views/system/sysship/modules/SysShipForm.js

@@ -1,5 +1,6 @@
 import AntModal from '@/components/pt/dialog/AntModal'
 import { getSysShip, addSysShip, updateSysShip } from '@/api/system/sysShip'
+import { getAllSysWharf } from '@/api/system/sysWharf'
 
 export default {
   name: 'CreateForm',
@@ -28,6 +29,17 @@ export default {
       id: undefined,
       formTitle: '添加船只管理',
       // 表单参数
+      wharfList: [],
+      travelList: [
+        {
+          id: '1',
+          name: '由西向东(正向)'
+        },
+        {
+          id: '0',
+          name: '由东向西(反向)'
+        }
+      ],
       form: {},
       rules: {
         shipNum: [{ required: true, message: '船只编号不能为空', trigger: 'blur' }],
@@ -38,11 +50,18 @@ export default {
     }
   },
   filters: {},
-  created () {},
+  created () {
+    this._getAllSysWharf()
+  },
   computed: {},
   watch: {},
   mounted () {},
   methods: {
+    _getAllSysWharf() {
+      getAllSysWharf().then(res => {
+        this.wharfList = res.data
+      })
+    },
     onClose () {
       this.open = false
       this.reset()
@@ -70,7 +89,9 @@ export default {
 
         lng: undefined,
 
-        status: '0'
+        status: '0',
+        wharf: undefined,
+        travel: undefined
 
       }
     },