Преглед на файлове

增加数据缓存及余座

SHS преди 1 година
родител
ревизия
484bc1b7c2

+ 15 - 0
aidex-common/src/main/java/com/aidex/common/constant/CacheConstants.java

@@ -23,6 +23,21 @@ public class CacheConstants
     public static final String SYS_CONFIG_KEY = "sys_config:";
 
     /**
+     * 余座 cache key
+     */
+    public static final String SYS_SURPLUS_KEY = "sys_surplus:";
+
+    /**
+     * 站点管理 cache key
+     */
+    public static final String SYS_WHARF_KEY = "sys_wharf:";
+
+    /**
+     * 船只扩展信息 cache key
+     */
+    public static final String SYS_SHIP_EXTEND_KEY = "sys_ship_extend:";
+
+    /**
      * 字典管理 cache key
      */
     public static final String SYS_DICT_KEY = "sys_dict:";

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

@@ -5,9 +5,11 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.aidex.common.app.domain.vo.SysWharfVO;
 import com.aidex.common.app.server.IAppService;
+import com.aidex.common.constant.CacheConstants;
 import com.aidex.common.constant.Constants;
 import com.aidex.common.core.domain.BaseEntity;
 import com.aidex.common.core.domain.R;
+import com.aidex.common.core.redis.RedisCache;
 import com.aidex.common.exception.SysException;
 import com.aidex.common.gps.server.IGpsService;
 import com.aidex.common.plush.domain.vo.SysShipExtendListResVO;
@@ -58,6 +60,9 @@ public class AppService implements IAppService {
     @Autowired
     private SysCameraAlarmMapper sysCameraAlarmMapper;
 
+    @Autowired
+    private RedisCache redisCache;
+
 
     public List<SysNotice> getCarouselList(){
 
@@ -196,8 +201,12 @@ public class AppService implements IAppService {
             else
                 distSiteNum = myNum - shipNum;
         }
-        // fixme 核载人数 此处需减去摄像头获得数据
-        Long resetNum = Long.valueOf(sysShipResVO.getNuclearLoadNum());
+        Object num = redisCache.get(CacheConstants.SYS_SURPLUS_KEY+sysShipResVO.getShipId());
+        Long resetNum = 0L;
+        if(num == null)
+            resetNum = -1L;
+        else
+            resetNum = Long.valueOf(num.toString());
 
         sysShipResVO.setReseat(resetNum);
         sysShipResVO.setAwaitTime(awaitTime);
@@ -253,7 +262,7 @@ public class AppService implements IAppService {
     public SysWharfVO findNearestStation(String lat, String lon){
         if(StringUtils.isEmpty(lat) || StringUtils.isEmpty(lon))
             throw new SysException(4441,"请告诉我你在哪");
-        List<SysWharf> listWharf = sysWharfService.findList(new SysWharf());
+        List<SysWharf> listWharf = sysWharfService.findListByCache(new SysWharf());
         List<SysWharfVO> vos = new ArrayList<>();
         for (SysWharf sysWharf : listWharf) {
             SysWharfVO wharfVO = new SysWharfVO();

+ 27 - 14
aidex-system/src/main/java/com/aidex/common/gps/server/impl/GpsPlushService.java

@@ -1,6 +1,8 @@
 package com.aidex.common.gps.server.impl;
 
 import com.aidex.common.app.domain.vo.SysWharfVO;
+import com.aidex.common.constant.CacheConstants;
+import com.aidex.common.core.redis.RedisCache;
 import com.aidex.common.gps.domain.PushAlarmEntity;
 import com.aidex.common.gps.domain.PushLocationEntity;
 import com.aidex.common.gps.server.IGpsPlushService;
@@ -13,8 +15,10 @@ import com.aidex.common.plush.service.SysShipExtendService;
 import com.aidex.common.utils.StringUtils;
 import com.aidex.common.utils.dist.CalcDist;
 import com.aidex.common.utils.file.ImageUtils;
+import com.aidex.framework.cache.CacheUtil;
 import com.aidex.framework.cache.ConfigUtils;
 import com.aidex.system.domain.SysWharf;
+import com.aidex.system.service.SysShipService;
 import com.aidex.system.service.SysWharfService;
 import com.alibaba.fastjson2.JSONArray;
 import org.slf4j.Logger;
@@ -41,25 +45,32 @@ public class GpsPlushService implements IGpsPlushService {
     private GpsLocationPlushService gpsLocationPlushService;
     @Autowired
     private GpsAlarmPlushService gpsAlarmPlushService;
+    @Autowired
+    private SysShipService sysShipService;
+    @Autowired
+    private RedisCache redisCache;
 
     public void plush(String method, String serialNumber, String data){
-        log.info("接受数据方式:"+method+"接收数据:"+data);
-        if(StringUtils.isEmpty(data))
-            return;
-        // 只接收报警和位置  其他数据丢弃
-        if(method.equals(METHOD.ALARM)){
-            List<PushAlarmEntity> pushAlarmEntities = JSONArray.parseArray(data).toList(PushAlarmEntity.class);
-            alarmSource(pushAlarmEntities);
-        }
-        if(method.equals(METHOD.LOCATION)){
-            List<PushLocationEntity> pushAlarmEntities = JSONArray.parseArray(data).toList(PushLocationEntity.class);
-            locationSource(pushAlarmEntities);
+        try {
+            // 只接收报警和位置  其他数据丢弃
+            if(method.equals(METHOD.ALARM)){
+                List<PushAlarmEntity> pushAlarmEntities = JSONArray.parseArray(data).toList(PushAlarmEntity.class);
+                alarmSource(pushAlarmEntities);
+            }
+            if(method.equals(METHOD.LOCATION)){
+                List<PushLocationEntity> pushAlarmEntities = JSONArray.parseArray(data).toList(PushLocationEntity.class);
+                locationSource(pushAlarmEntities);
+            }
+        }catch (Exception e){
+            log.error("PLUSH_GPS: 推送数据接收错误!错误原因:"+e.getMessage());
+            log.error("PLUSH_GPS: 推送数据方法:"+method+" 推送数据: "+ data);
         }
+
     }
 
     private void alarmSource(List<PushAlarmEntity> alarmEntities){
-        List<SysWharf> sysWharfs = sysWharfService.findList(new SysWharf());
-        List<SysShipExtend> sysShipExtends = sysShipExtendService.findList(new SysShipExtend());
+        List<SysWharf> sysWharfs = sysWharfService.findListByCache(new SysWharf());
+        List<SysShipExtend> sysShipExtends = sysShipExtendService.findListByCache(new SysShipExtend());
         String[] forward = ConfigUtils.getConfigByKey("forward.direction").getConfigValue().split("-");
         // 获取反向条件
         String[] reverse = ConfigUtils.getConfigByKey("reverse.direction").getConfigValue().split("-");
@@ -89,6 +100,8 @@ public class GpsPlushService implements IGpsPlushService {
                             }
                         }
                         if (alarmEntity.getClassify().equals(CLASSIFY.OUT)) {
+                            String surpKey = sysShipService.getShipSurplusSeat(updateShipExtend.getShipId(),15);
+                            redisCache.set(CacheConstants.SYS_SURPLUS_KEY+updateShipExtend.getShipId(),surpKey);
                             SysWharfVO stopWharf = getLoccationNearly(sysWharfs,alarmEntity.getMapLat(),alarmEntity.getMapLon());
                             if (stopWharf != null) {
                                 updateShipExtend.setIsStop(0L);
@@ -139,7 +152,7 @@ public class GpsPlushService implements IGpsPlushService {
     }
 
     private void locationSource(List<PushLocationEntity> locationEntities){
-        List<SysShipExtend> sysShipExtends = sysShipExtendService.findList(new SysShipExtend());
+        List<SysShipExtend> sysShipExtends = sysShipExtendService.findListByCache(new SysShipExtend());
         String[] forward = ConfigUtils.getConfigByKey("forward.direction").getConfigValue().split("-");
         // 获取反向条件
         String[] reverse = ConfigUtils.getConfigByKey("reverse.direction").getConfigValue().split("-");

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

@@ -29,5 +29,7 @@ public interface SysShipExtendService {
 
     List<SysShipExtend> findList(SysShipExtend sysShipExtend);
 
+    List<SysShipExtend> findListByCache(SysShipExtend sysShipExtend);
+
     List<SysShipExtendVO> findAllonline(String travel);
 }

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

@@ -3,6 +3,9 @@ package com.aidex.common.plush.service.impl;
 import java.util.List;
 
 import com.aidex.common.plush.domain.vo.SysShipExtendVO;
+import com.aidex.framework.cache.ShipExtendUtils;
+import com.aidex.framework.cache.WhrafUtils;
+import com.aidex.system.domain.SysWharf;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
@@ -35,13 +38,16 @@ public class SysShipExtendServiceImpl implements SysShipExtendService {
     }
 
     public void update(SysShipExtend sysShipExtend){
+        ShipExtendUtils.clearShipExtendCache();
         sysShipExtendMapper.update(sysShipExtend);
     }
 
     public void updateByMacId(SysShipExtend sysShipExtend){
+        ShipExtendUtils.clearShipExtendCache();
         sysShipExtendMapper.updateByMacId(sysShipExtend);
     }
     public void updateByShip(SysShipExtend sysShipExtend){
+        ShipExtendUtils.clearShipExtendCache();
         sysShipExtendMapper.updateByShip(sysShipExtend);
     }
 
@@ -50,13 +56,31 @@ public class SysShipExtendServiceImpl implements SysShipExtendService {
     }
 
     public void delByIds(String[] ids){
+        ShipExtendUtils.clearShipExtendCache();
         sysShipExtendMapper.deleteByIds(ids);
     }
 
     public List<SysShipExtend> findList(SysShipExtend sysShipExtend){
         return sysShipExtendMapper.findList(sysShipExtend);
     }
+
+    public List<SysShipExtend> findListByCache(SysShipExtend sysShipExtend){
+        List<SysShipExtend> sysShipExtends = ShipExtendUtils.getShipExtendList();
+        if(sysShipExtends.size() <= 0){
+            List<SysShipExtend> queryList = sysShipExtendMapper.findList(sysShipExtend);
+            loadCache(queryList);
+            return queryList;
+        }
+        return sysShipExtends;
+    }
     public List<SysShipExtendVO> findAllonline(String travel){
         return sysShipExtendMapper.findAllonline(travel);
     }
+
+    private void loadCache(List<SysShipExtend> sysShipExtends){
+        for (SysShipExtend sysShipExtend : sysShipExtends)
+        {
+            ShipExtendUtils.setShipExtendCache(sysShipExtend);
+        }
+    }
 }

+ 102 - 0
aidex-system/src/main/java/com/aidex/framework/cache/ShipExtendUtils.java

@@ -0,0 +1,102 @@
+package com.aidex.framework.cache;
+
+import com.aidex.common.constant.CacheConstants;
+import com.aidex.common.core.redis.RedisCache;
+import com.aidex.common.plush.domain.SysShipExtend;
+import com.aidex.common.plush.service.SysShipExtendService;
+import com.aidex.common.utils.spring.SpringUtils;
+import com.aidex.system.domain.SysWharf;
+import com.aidex.system.service.SysWharfService;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 配置工具类
+ *
+ * @author ruoyi
+ */
+@Component
+public class ShipExtendUtils implements CacheUtil {
+
+    @Override
+    public String getCacheName() {
+        return CACHE_NAME;
+    }
+
+    @Override
+    public String getRemark() {
+        return "船只扩展数据信息";
+    }
+
+    @Override
+    public String getCacheId() {
+        return "shipExtendUtils";
+    }
+
+    @Override
+    public String getCacheValue(String key) {
+        return REDIS_CACHE.getCacheMapValue(CACHE_NAME, key).toString();
+    }
+
+    @Override
+    public Collection<String> getCacheKeys() {
+        return REDIS_CACHE.getCacheMapKeys(CACHE_NAME);
+    }
+
+    @Override
+    public void clearCacheByKeys(String... keys) {
+        REDIS_CACHE.deleteCacheMapValue(CACHE_NAME, keys);
+    }
+
+    @Override
+    public void clearCache() {
+        clearCacheByKeys();
+    }
+
+    private static final String CACHE_NAME = "shipExtendCache";
+
+    private static final RedisCache REDIS_CACHE;
+
+    private static final SysShipExtendService sysShipExtendService;
+
+    static {
+        REDIS_CACHE = SpringUtils.getBean(RedisCache.class);
+        sysShipExtendService = SpringUtils.getBean(SysShipExtendService.class);
+    }
+
+
+    /**
+     * 清空缓存
+     */
+    public static void clearShipExtendCache() {
+        Collection<String> keys = REDIS_CACHE.keys(CACHE_NAME);
+        REDIS_CACHE.deleteObject(keys);
+    }
+
+
+    /**
+     * 设置cache key
+     *
+     * @param configKey 参数键
+     * @return 缓存键key
+     */
+    public static String getCacheKey(String configKey) {
+        return CacheConstants.SYS_SHIP_EXTEND_KEY + configKey;
+    }
+
+    /**
+     * 获取缓存列表
+     *
+     * @return
+     */
+    public static List<SysShipExtend> getShipExtendList() {
+        List<SysShipExtend> sysShipExtends = REDIS_CACHE.getCacheObjList(CACHE_NAME);
+        return sysShipExtends;
+    }
+
+    public static void setShipExtendCache(SysShipExtend sysShipExtend) {
+        REDIS_CACHE.setCacheMapValue(CACHE_NAME, getCacheKey(sysShipExtend.getShipId()), sysShipExtend);
+    }
+}

+ 102 - 0
aidex-system/src/main/java/com/aidex/framework/cache/WhrafUtils.java

@@ -0,0 +1,102 @@
+package com.aidex.framework.cache;
+
+import com.aidex.common.constant.CacheConstants;
+import com.aidex.common.core.redis.RedisCache;
+import com.aidex.common.utils.spring.SpringUtils;
+import com.aidex.system.domain.SysConfig;
+import com.aidex.system.domain.SysWharf;
+import com.aidex.system.service.SysWharfService;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 配置工具类
+ *
+ * @author ruoyi
+ */
+@Component
+public class WhrafUtils implements CacheUtil {
+
+    @Override
+    public String getCacheName() {
+        return CACHE_NAME;
+    }
+
+    @Override
+    public String getRemark() {
+        return "站点信息";
+    }
+
+    @Override
+    public String getCacheId() {
+        return "whrafUtils";
+    }
+
+    @Override
+    public String getCacheValue(String key) {
+        return REDIS_CACHE.getCacheMapValue(CACHE_NAME, key).toString();
+    }
+
+    @Override
+    public Collection<String> getCacheKeys() {
+        return REDIS_CACHE.getCacheMapKeys(CACHE_NAME);
+    }
+
+    @Override
+    public void clearCacheByKeys(String... keys) {
+        REDIS_CACHE.deleteCacheMapValue(CACHE_NAME, keys);
+    }
+
+    @Override
+    public void clearCache() {
+        clearCacheByKeys();
+    }
+
+    private static final String CACHE_NAME = "wharfCache";
+
+    private static final RedisCache REDIS_CACHE;
+
+    private static final SysWharfService sysWharfService;
+
+    static {
+        REDIS_CACHE = SpringUtils.getBean(RedisCache.class);
+        sysWharfService = SpringUtils.getBean(SysWharfService.class);
+    }
+
+
+    /**
+     * 清空缓存
+     */
+    public static void clearWharfCache() {
+        Collection<String> keys = REDIS_CACHE.keys(CACHE_NAME);
+        REDIS_CACHE.deleteObject(keys);
+    }
+
+
+    /**
+     * 设置cache key
+     *
+     * @param configKey 参数键
+     * @return 缓存键key
+     */
+    public static String getCacheKey(String configKey) {
+        return CacheConstants.SYS_WHARF_KEY + configKey;
+    }
+
+    /**
+     * 获取缓存列表
+     *
+     * @return
+     */
+    public static List<SysWharf> getWharfList() {
+        List<SysWharf> sysWharf = REDIS_CACHE.getCacheObjList(CACHE_NAME);
+        return sysWharf;
+    }
+
+    public static void setWhrafCache(SysWharf sysWharf) {
+        REDIS_CACHE.setCacheMapValue(CACHE_NAME, getCacheKey(sysWharf.getId()), sysWharf);
+    }
+}

+ 2 - 0
aidex-system/src/main/java/com/aidex/system/service/SysWharfService.java

@@ -35,4 +35,6 @@ public interface SysWharfService extends BaseService<SysWharf> {
      */
     public List<SysRouteVo> getRouteList();
 
+
+    List<SysWharf> findListByCache(SysWharf sysWharf);
 }

+ 23 - 0
aidex-system/src/main/java/com/aidex/system/service/impl/SysWharfServiceImpl.java

@@ -5,6 +5,7 @@ import com.aidex.common.core.domain.BaseEntity;
 import com.aidex.common.core.redis.RedisCache;
 import com.aidex.common.core.service.BaseServiceImpl;
 import com.aidex.framework.cache.ConfigUtils;
+import com.aidex.framework.cache.WhrafUtils;
 import com.aidex.system.domain.SysConfig;
 import com.aidex.system.domain.SysWharf;
 import com.aidex.system.domain.vo.SysRouteVo;
@@ -89,6 +90,7 @@ public class SysWharfServiceImpl extends BaseServiceImpl<SysWharfMapper, SysWhar
      */
     @Override
     public boolean save(SysWharf sysWharf) {
+        WhrafUtils.clearWharfCache();
         return super.save(sysWharf);
     }
 
@@ -99,6 +101,7 @@ public class SysWharfServiceImpl extends BaseServiceImpl<SysWharfMapper, SysWhar
      */
     @Override
     public boolean remove(SysWharf sysWharf) {
+        WhrafUtils.clearWharfCache();
         return super.remove(sysWharf);
     }
 
@@ -110,11 +113,13 @@ public class SysWharfServiceImpl extends BaseServiceImpl<SysWharfMapper, SysWhar
     @Transactional(readOnly = false)
     @Override
     public int deleteSysWharfByIds(String[] ids) {
+        WhrafUtils.clearWharfCache();
         return mapper.deleteSysWharfByIds(ids, BaseEntity.DEL_FLAG_DELETE);
     }
     @Transactional(readOnly = false)
     @Override
     public int updateStatus(SysWharf sysWharf) {
+        WhrafUtils.clearWharfCache();
         sysWharf.setStatus(BaseEntity.STATUS_NORMAL.equals(sysWharf.getStatus()) ? BaseEntity.STATUS_DISABLE : BaseEntity.STATUS_NORMAL);
         return mapper.updateStatus(sysWharf);
     }
@@ -153,4 +158,22 @@ public class SysWharfServiceImpl extends BaseServiceImpl<SysWharfMapper, SysWhar
         return SysRouteVoList;
     }
 
+    @Override
+    public List<SysWharf> findListByCache(SysWharf sysWharf){
+        List<SysWharf> list = WhrafUtils.getWharfList();
+        if(list.size() <= 0){
+            List<SysWharf> queryWharfList = this.findList(sysWharf);
+            loadCache(queryWharfList);
+            return queryWharfList;
+        }
+        return list;
+    }
+
+    private void loadCache(List<SysWharf> wharfList){
+        for (SysWharf sysWharf : wharfList)
+        {
+            WhrafUtils.setWhrafCache(sysWharf);
+        }
+    }
+
 }