dengsixing 9 месяцев назад
Родитель
Сommit
b3a5bccc97

+ 14 - 7
src/main/java/com/fdkankan/modeldemo/mq/ConvertListener.java

@@ -122,16 +122,22 @@ public class ConvertListener{
 //
 //    }
 
+    /**
+     * 场景转换监听器
+     * @throws Exception
+     */
     @RabbitListener(
             queuesToDeclare = @Queue(Constant.QUEUE_SCENE_CONVERT),
             concurrency = "1"
     )
     public void buildObjScenePreHandler(Channel channel, Message message) throws Exception {
-        //开始急事
+        //开始计时
         TimeInterval timeInterval = new TimeInterval();
         timeInterval.start();
 
+        //获取消息id
         String messageId = message.getMessageProperties().getMessageId();
+        //消息开始消费,立即ack,防止二次消费
         channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
 
         String stationCode = null;
@@ -156,13 +162,16 @@ public class ConvertListener{
                 convertType = "standar";
             }
             if(StrUtil.isNotEmpty(upTimeStr)){
+                //将字符串转为时间格式
                 upTime = DateUtil.parse(upTimeStr, DatePattern.NORM_DATETIME_PATTERN);
+                //将字符串转为YYYYMMDDHHMMSS格式
                 upTimeKey = upTimeStr.replace("-", "").replace(" ", "").replace(":", "");
             }
             fileList = jsonObject.getJSONArray("fileList");
             convertIngKey = String.format(Constant.REDIS_SCENE_CONVERT_ING, messageId);
             String convert = redisClient.get(convertIngKey);
             log.info("-----------------convert:{}-----------------", convert);
+            //铁塔的rabbitmq有问题,简单队列不能负载均衡,所以这里用redis做了一个锁,方式重复消费
             if(StrUtil.isNotEmpty(convert)){//正在转换,直接丢弃
                 log.warn("场景正在转换,此消息丢弃, stationCode:{}, entityId:{}", stationCode, entityId);
                 convertIngKey = null;
@@ -175,7 +184,9 @@ public class ConvertListener{
             sceneConvertLog.setCreateTime(new Date());
             sceneConvertLog.setConverttype(convertType);
 
-            if(convertType.equals("upTime")){//只更新上传时间
+            //只更新上传时间
+            if(convertType.equals("upTime")){
+
                 List<Scene> list = sceneService.list(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, entityId).eq(Scene::getStationcode, stationCode));
                 if(CollUtil.isNotEmpty(list)){
                     Date finalUpTime = upTime;
@@ -186,6 +197,7 @@ public class ConvertListener{
                     });
                     sceneService.updateBatchById(list);
 
+                    //有中高低点位的场景的公有visiontxt文件
                     List<SceneFileMapping> visionTxt = sceneFileMappingService.getByNumAndKey(list.get(0).getNum(), -1, "scene_view_data/" + list.get(0).getNum() + "/images/vision.txt");
                     if(CollUtil.isNotEmpty(visionTxt)){
                         visionTxt.stream().forEach(v -> v.setUpTime(finalUpTimeKey));
@@ -301,9 +313,4 @@ public class ConvertListener{
 //
 //    }
 
-    public static void main(String[] args) {
-        String dataSource = "110106908000001067_001102050200000038732428/";
-        System.out.println(dataSource.substring(0, dataSource.lastIndexOf("/") -1) + "_obj2txt");
-    }
-
 }

+ 20 - 0
src/main/java/com/fdkankan/modeldemo/service/SceneFileMappingService.java

@@ -17,12 +17,32 @@ public interface SceneFileMappingService extends IService<SceneFileMapping> {
 
     List<SceneFileMapping> getByNumAndKey(String num, Integer subgroup, String key);
 
+    /**
+     * 根据场景码和楼层编号查询文件映射列表
+     * @return
+     */
     List<SceneFileMapping> getByNumAndSubgroup(String num, Integer subgroup);
 
+
+    /**
+     * 根据场景码编号查询文件映射列表
+     * @return
+     */
     List<SceneFileMapping> getByScene(String num, Integer subgroup, String upTimeKey, String key);
 
+    /**
+     * 根据key列表查询
+     * @return
+     */
     List<SceneFileMapping> getBySceneBatch(String num, Integer subgroup, String upTimeKey, List<String> keyList);
 
+    /**
+     * 根据指定key查询一个文件映射记录
+     * @param key
+     * @param subgroup
+     * @param upTime
+     * @return
+     */
     SceneFileMapping getByKey(String key, Integer subgroup, String upTime);
 
 }

+ 37 - 21
src/main/java/com/fdkankan/redis/RedisClient.java

@@ -11,52 +11,65 @@ import java.util.*;
 @Component
 public class RedisClient {
 
+    // Redis 添加字符串的 URL
     public final static String url_str_add = "/redis/string/add/";
 
+    // Redis 获取字符串的 URL
     public final static String url_str_get = "/redis/string/get/";
 
+    // Redis 删除字符串的 URL
     public final static String url_str_del = "/redis/string/delete";
 
+    // Redis 哈希表扫描的 URL
     public final static String url_hash_hscan = "/redis/hash/hscan";
 
+    // Redis 哈希表添加的 URL
     public final static String url_hash_add = "/redis/hash/add";
 
+    // Redis 获取集合所有元素的 URL
     public final static String url_set_getall = "/redis/set/getall";
 
+    // Redis 添加集合元素的 URL
     public final static String url_set_add = "/redis/set/add";
 
+    // 场景系统代码
     public final static String scene_sys_code = "scene";
 
+    // 结果状态键
     public final static String result_status_key = "status";
 
-
+    // Redis 主机地址
     @Value("${redis.host}")
     private String host;
 
+    // 系统代码
     @Value("${tieta.sysCode}")
     private String sysCode;
 
+    // 服务器名称
     @Value("${tieta.serverName}")
     private String serverName;
 
+    // HTTP 客户端
     @Resource
     private HttpClient httpClient;
 
+    // 添加字符串到 Redis
+    public void add(String key, String value, Long time){
+        String url = host + url_str_add;
+        Map<String, Object> params = new HashMap<>();
+        params.put("key", this.genKey(key));
+        params.put("value", value);
+        if(Objects.nonNull(time)){
+            params.put("time", time);
+        }
+        JSONObject jsonObject = httpClient.postJson(url, params);
+        if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString(result_status_key))){
+            throw new RuntimeException("redis add string error");
+        }
+    }
 
-     public void add(String key, String value, Long time){
-         String url = host + url_str_add;
-         Map<String, Object> params = new HashMap<>();
-         params.put("key", this.genKey(key));
-         params.put("value", value);
-         if(Objects.nonNull(time)){
-             params.put("time", time);
-         }
-         JSONObject jsonObject = httpClient.postJson(url, params);
-         if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString(result_status_key))){
-             throw new RuntimeException("redis add string error");
-         }
-     }
-
+    // 从 Redis 获取字符串
     public String get(String key){
         String url = host + url_str_get;
         Map<String, Object> params = new HashMap<>();
@@ -68,6 +81,7 @@ public class RedisClient {
         return jsonObject.getString("data");
     }
 
+    // 从 Redis 删除字符串
     public String del(String key){
         String url = host + url_str_del;
         Map<String, Object> params = new HashMap<>();
@@ -79,6 +93,7 @@ public class RedisClient {
         return jsonObject.getString("data");
     }
 
+    // 从 Redis 获取哈希表
     public Map<String, String> hmget(String serverName,  String key){
         String url = host + url_hash_hscan;
         Map<String, Object> params = new HashMap<>();
@@ -86,7 +101,7 @@ public class RedisClient {
         JSONObject jsonObject = httpClient.postJson(url, params);
 
         JSONObject data = jsonObject.getJSONObject("data");
-        // 转换为Map<String, String>
+        // 转换为 Map<String, String>
         Map<String, String> map = new HashMap<>();
         for (String k : data.keySet()) {
             map.put(k, data.getString(k));
@@ -94,6 +109,7 @@ public class RedisClient {
         return map;
     }
 
+    // 添加哈希表到 Redis
     public void hmset(String serverName, String key, Map<String, String> values){
         String url = host + url_hash_add;
         Map<String, Object> params = new HashMap<>();
@@ -102,6 +118,7 @@ public class RedisClient {
         JSONObject jsonObject = httpClient.postJson(url, params);
     }
 
+    // 从 Redis 获取集合
     public Set<String> sGet(String serverName, String key){
         String url = host + url_set_getall;
         Map<String, Object> params = new HashMap<>();
@@ -111,23 +128,22 @@ public class RedisClient {
         return new HashSet<>(data);
     }
 
+    // 添加集合到 Redis
     public void sSet(String serverName, String key, Set<String> values){
         String url = host + url_set_add;
         Map<String, Object> params = new HashMap<>();
         params.put("key", this.genKey(serverName, key));
         params.put("values", values);
         JSONObject jsonObject = httpClient.postJson(url, params);
-//        if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString(result_status_key))){
-//            throw new RuntimeException("redis add set error");
-//        }
     }
 
+    // 生成 Redis 键
     private String genKey(String key){
-         return sysCode + "_" + serverName + "_" + key;
+        return sysCode + "_" + serverName + "_" + key;
     }
 
+    // 生成 Redis 键
     private String genKey(String serverName, String key){
         return sysCode + "_" + serverName + "_" + key;
     }
 }
-