From a5b175f8943b1a2477508c9d271315a13cd1818f Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 19 六月 2025 12:37:28 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/config/RedisConfig.java         |    3 +
 src/main/java/com/zy/common/utils/RedisUtil.java            |   60 ++++++++++++++++++++++++++++--
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   11 +++++
 src/main/java/com/zy/common/constant/RedisConstantType.java |    7 +++
 4 files changed, 76 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index d2252dd..dd29d19 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -14,6 +14,7 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
+import com.zy.common.constant.RedisConstantType;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
 import com.zy.common.model.SearchLocParam;
@@ -22,6 +23,7 @@
 import com.zy.common.utils.CollectionUtils;
 import com.zy.common.utils.HttpHandler;
 import com.zy.common.utils.News;
+import com.zy.common.utils.RedisUtil;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -95,6 +97,8 @@
     private WrkMastLogService wrkMastLogService;
     @Autowired
     private ConfigService configService;
+    @Autowired
+    private RedisUtil redisUtil;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -656,6 +660,11 @@
                     continue;
                 }
 
+                Object object = redisUtil.get(RedisConstantType.CRN_MOVE_LOCK);
+                if (object != null) {
+                    continue;
+                }
+
                 List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                         .eq("crn_no", crn.getId()));
                 if (!wrkMasts.isEmpty()) {
@@ -681,6 +690,8 @@
                     News.error("鍫嗗灈鏈虹Щ鍔ㄥ懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
                 }
                 crnThread.setBackHpFlag(true);
+
+                redisUtil.set(RedisConstantType.CRN_MOVE_LOCK + crn.getId(), "lock", 60);
             }
         }
     }
diff --git a/src/main/java/com/zy/common/config/RedisConfig.java b/src/main/java/com/zy/common/config/RedisConfig.java
index d356517..cf99252 100644
--- a/src/main/java/com/zy/common/config/RedisConfig.java
+++ b/src/main/java/com/zy/common/config/RedisConfig.java
@@ -5,6 +5,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.cache.annotation.CachingConfigurerSupport;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.*;
 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@@ -14,7 +15,7 @@
  * Redis閰嶇疆绫�
  * Created by vincent on 2019-12-23
  */
-//@Configuration
+@Configuration
 //@EnableCaching // 寮�鍚暟鎹紦瀛樻満鍒�
 public class RedisConfig extends CachingConfigurerSupport {
 
diff --git a/src/main/java/com/zy/common/constant/RedisConstantType.java b/src/main/java/com/zy/common/constant/RedisConstantType.java
new file mode 100644
index 0000000..0cf292a
--- /dev/null
+++ b/src/main/java/com/zy/common/constant/RedisConstantType.java
@@ -0,0 +1,7 @@
+package com.zy.common.constant;
+
+public class RedisConstantType {
+
+    public static final String CRN_MOVE_LOCK = "CRN_MOVE_LOCK_";
+
+}
diff --git a/src/main/java/com/zy/common/utils/RedisUtil.java b/src/main/java/com/zy/common/utils/RedisUtil.java
index b2df114..41cef35 100644
--- a/src/main/java/com/zy/common/utils/RedisUtil.java
+++ b/src/main/java/com/zy/common/utils/RedisUtil.java
@@ -2,8 +2,10 @@
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -13,13 +15,20 @@
  * redisTemplate灏佽
  *
  */
-//@Component
+@Component
 public class RedisUtil {
 
-    @Autowired
-    private RedisTemplate<String, Object> redisTemplate;
+//    @Autowired
+//    private RedisTemplate<String, Object> redisTemplate;
 
-    public RedisUtil(RedisTemplate<String, Object> redisTemplate) {
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    public RedisTemplate getRedisTemplate() {
+        return redisTemplate;
+    }
+
+    public RedisUtil(RedisTemplate redisTemplate) {
         this.redisTemplate = redisTemplate;
     }
 
@@ -96,6 +105,21 @@
     }
 
     /**
+     * 鑾峰彇鍏ㄩ儴鏁版嵁
+     * @return
+     */
+    public HashMap<Object, Object> getRedis() {
+        Set<String> keys = redisTemplate.keys("*");
+        HashMap<Object, Object> map = new HashMap<>();
+        for (String key : keys) {
+            Object value = redisTemplate.opsForValue().get(key);
+            map.put(key, value);
+        }
+
+        return map;//杩斿洖鍏ㄩ儴鏁版嵁闆嗗悎
+    }
+
+    /**
      * 鏅�氱紦瀛樻斁鍏�
      *
      * @param key   閿�
@@ -105,6 +129,34 @@
     public boolean set(String key, Object value) {
         try {
             redisTemplate.opsForValue().set(key, value);
+            long start = System.currentTimeMillis();
+            while (System.currentTimeMillis() - start < 10000) {//鏈夋晥鏈�10s
+                Object o = redisTemplate.opsForValue().get(key);
+                if (o == null) {
+                    continue;
+                }
+
+                if (o.equals(value)) {
+                    break;
+                }
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 鏅�氱紦瀛樻斁鍏�-寮傛
+     *
+     * @param key   閿�
+     * @param value 鍊�
+     * @return true鎴愬姛 false澶辫触
+     */
+    public boolean setAsync(String key, Object value) {
+        try {
+            redisTemplate.opsForValue().set(key, value);
             return true;
         } catch (Exception e) {
             e.printStackTrace();

--
Gitblit v1.9.1