Przeglądaj źródła

推送接口开发

shs 1 rok temu
rodzic
commit
3ec9a14744

+ 29 - 0
aidex-controller/src/main/java/com/aidex/web/controller/gps/GpsPlushController.java

@@ -0,0 +1,29 @@
+package com.aidex.web.controller.gps;
+
+import com.aidex.common.core.controller.BaseController;
+import com.aidex.common.gps.server.IGpsPlushService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * Gps相关查询接口
+ */
+@RestController
+@RequestMapping("/gps_plus")
+public class GpsPlushController extends BaseController {
+
+    @Autowired
+    private IGpsPlushService gpsPlushService;
+
+    /**
+     * 查询报警信息列表
+     */
+    @PostMapping
+    public String plush(@RequestParam String method, @RequestParam String serialNumber,@RequestParam String data) {
+        gpsPlushService.plush(method,serialNumber,data);
+        return "SUCCESS";
+    }
+
+}

+ 1 - 0
aidex-framework/src/main/java/com/aidex/framework/config/SecurityConfig.java

@@ -150,6 +150,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/*/api-docs/**").anonymous()
                 .antMatchers("/druid/**").anonymous()
                 .antMatchers("/app/**").anonymous()
+                .antMatchers("/gps_plus").anonymous()
                 .antMatchers(anonymousUrls.toArray(new String[0])).anonymous()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

+ 1 - 0
aidex-system/src/main/java/com/aidex/common/gps/domain/PushAlarmEntity.java

@@ -7,6 +7,7 @@ public class PushAlarmEntity {
 
     private String Id;
     private String Macid;
+    private String UserName;
     private String FullName;
     private String PTime;
     private String AddTime;

+ 2 - 0
aidex-system/src/main/java/com/aidex/common/gps/domain/PushLocationEntity.java

@@ -13,6 +13,8 @@ public class PushLocationEntity {
     private String Dir;
     private String Lat;
     private String Lon;
+    private String MapLat;
+    private String MapLon;
     private String  Stats;
     private String Value;
 

+ 11 - 0
aidex-system/src/main/java/com/aidex/common/gps/server/IGpsPlushService.java

@@ -0,0 +1,11 @@
+package com.aidex.common.gps.server;
+
+import com.aidex.common.gps.domain.*;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+public interface IGpsPlushService {
+
+    void plush(String method, String serialNumber, String data);
+}

+ 164 - 0
aidex-system/src/main/java/com/aidex/common/gps/server/impl/GpsPlushService.java

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

+ 3 - 4
aidex-system/src/main/java/com/aidex/common/plush/domain/SysShipExtend.java

@@ -47,7 +47,6 @@ public class SysShipExtend
 
     /** 船只方位(默认从西到东) */
     @Excel(name = "船只方位")
-    @NotBlank(message = "船只方位(默认从西到东)不允许为空")
     @LogField
     @FieldRemark(name = "船只方位",field = "dir")
     private String dir;
@@ -65,19 +64,16 @@ public class SysShipExtend
     private String wharfStop;
 
     /** 纬度(默认停靠名城广场码头) */
-    @NotBlank(message = "纬度(默认停靠名城广场码头)不允许为空")
     @LogField
     @FieldRemark(name = "纬度",field = "lat")
     private String lat;
 
     /** 经度(默认停靠名城广场码头) */
-    @NotBlank(message = "经度(默认停靠名城广场码头)不允许为空")
     @LogField
     @FieldRemark(name = "经度",field = "lon")
     private String lon;
 
     /** 船只行驶里程 */
-    @NotBlank(message = "船只行驶里程不允许为空")
     @LogField
     @FieldRemark(name = "船只行驶里程",field = "mileage")
     private String mileage;
@@ -90,6 +86,8 @@ public class SysShipExtend
     private String id;
     private String delFlag;
 
+    private Long updateTime;
+
 
 
     @Override
@@ -108,6 +106,7 @@ public class SysShipExtend
             .append("travel", getTravel())
             .append("id", getId())
             .append("delFlag", getDelFlag())
+            .append("updateTime",getUpdateTime())
             .toString();
     }
 }

+ 2 - 6
aidex-system/src/main/java/com/aidex/common/plush/mapper/GpsLocationPlushMapper.xml

@@ -109,9 +109,7 @@
 
             stats,
 
-            value,
-
-            id
+            value
 
         ) VALUES (
             #{macid},
@@ -136,9 +134,7 @@
 
             #{stats},
 
-            #{value},
-
-            #{id}
+            #{value}
 
         )
     </insert>

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

@@ -14,4 +14,8 @@ public interface SysShipExtendMapper extends BaseMapper<SysShipExtend>
 {
 
     void updateByMacId(SysShipExtend sysShipExtend);
+
+    void updateByShip(SysShipExtend sysShipExtend);
+
+    void deleteByIds(@Param("ids") String[] configIds);
 }

+ 16 - 1
aidex-system/src/main/java/com/aidex/common/plush/mapper/SysShipExtendMapper.xml

@@ -50,7 +50,7 @@
         FROM sys_ship_extend a
         <include refid="sysShipExtendJoins"/>
         <where>
-            a.del_flag = #{DEL_FLAG_NORMAL}
+            a.del_flag = 0
             <if test="shipId != null and shipId != ''">
                 AND a.ship_id = #{shipId}
             </if>
@@ -148,6 +148,12 @@
            WHERE ship_id = #{macId}
     </update>
 
+    <update id="updateByShip">
+        UPDATE sys_ship_extend SET
+       mac_id = #{macId},
+       WHERE ship_id = #{macId}
+    </update>
+
     <update id="updateByMacId">
         UPDATE sys_ship_extend SET
             mac_id = #{macId},
@@ -171,4 +177,13 @@
         WHERE ship_id = #{id}
     </update>
 
+    <delete id="deleteByIds">
+        UPDATE sys_ship_extend SET
+        del_flag = 1
+        WHERE id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
 </mapper>

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

@@ -11,5 +11,5 @@ import com.aidex.common.plush.domain.GpsLocationPlush;
  */
 public interface GpsLocationPlushService {
 
-
+    void save(GpsLocationPlush gpsLocationPlush);
 }

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

@@ -3,6 +3,8 @@ package com.aidex.common.plush.service;
 import com.aidex.common.core.service.BaseService;
 import com.aidex.common.plush.domain.SysShipExtend;
 
+import java.util.List;
+
 /**
  * 船只信息扩展(查询站点数据使用)Service接口
  * @author shs
@@ -16,5 +18,11 @@ public interface SysShipExtendService {
 
     void update(SysShipExtend sysShipExtend);
 
+    void updateByShip(SysShipExtend sysShipExtend);
+
     SysShipExtend findById(String id);
+
+    void delByIds(String[] ids);
+
+    List<SysShipExtend> findList(SysShipExtend sysShipExtend);
 }

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

@@ -1,5 +1,8 @@
 package com.aidex.common.plush.service.impl;
 
+import com.aidex.common.plush.domain.GpsLocationPlush;
+import com.aidex.common.plush.mapper.GpsLocationPlushMapper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -19,5 +22,10 @@ public class GpsLocationPlushServiceImpl  implements GpsLocationPlushService {
 
     private static final Logger log = LoggerFactory.getLogger(GpsLocationPlushServiceImpl.class);
 
+    @Autowired
+    private GpsLocationPlushMapper gpsLocationPlushMapper;
 
+    public void save(GpsLocationPlush gpsLocationPlush){
+        gpsLocationPlushMapper.insert(gpsLocationPlush);
+    }
 }

+ 12 - 0
aidex-system/src/main/java/com/aidex/common/plush/service/impl/SysShipExtendServiceImpl.java

@@ -38,8 +38,20 @@ public class SysShipExtendServiceImpl implements SysShipExtendService {
         sysShipExtendMapper.update(sysShipExtend);
     }
 
+    public void updateByShip(SysShipExtend sysShipExtend){
+        sysShipExtendMapper.updateByShip(sysShipExtend);
+    }
+
     public SysShipExtend findById(String id){
        return sysShipExtendMapper.get(id);
     }
 
+    public void delByIds(String[] ids){
+        sysShipExtendMapper.deleteByIds(ids);
+    }
+
+    public List<SysShipExtend> findList(SysShipExtend sysShipExtend){
+        return sysShipExtendMapper.findList(sysShipExtend);
+    }
+
 }

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

@@ -87,11 +87,19 @@ public class SysShipServiceImpl extends BaseServiceImpl<SysShipMapper, SysShip>
             shipExtend.setShipId(sysShip.getId());
             shipExtend.setId(sysShip.getId());
             shipExtend.setMacId(sysShip.getShipNum());
+            shipExtend.setDir("90");
+            shipExtend.setIsStop(0L);
+            shipExtend.setLat("36.077395");
+            shipExtend.setLon("103.863987");
+            shipExtend.setMileage("0");
+            shipExtend.setDelFlag("0");
             if (sysShip.getIsNewRecord()) {
                 sysShipExtendService.save(shipExtend);
             }else {
                 if(sysShipExtendService.findById(sysShip.getId()) == null){
                     sysShipExtendService.save(shipExtend);
+                }else {
+                    sysShipExtendService.updateByShip(shipExtend);
                 }
             }
             return Boolean.TRUE;
@@ -106,7 +114,11 @@ public class SysShipServiceImpl extends BaseServiceImpl<SysShipMapper, SysShip>
      */
     @Override
     public boolean remove(SysShip sysShip) {
-        return super.remove(sysShip);
+        if(super.remove(sysShip)) {
+            sysShipExtendService.delByIds(sysShip.getId().split(","));
+            return Boolean.TRUE;
+        }else
+            return Boolean.FALSE;
     }
 
     /**
@@ -117,6 +129,7 @@ public class SysShipServiceImpl extends BaseServiceImpl<SysShipMapper, SysShip>
     @Transactional(readOnly = false)
     @Override
     public int deleteSysShipByIds(String[] ids) {
+        sysShipExtendService.delByIds(ids);
         return mapper.deleteSysShipByIds(ids, BaseEntity.DEL_FLAG_DELETE);
     }