From 1be3406d2c07ec7c1376044f77a3bbd2576bf256 Mon Sep 17 00:00:00 2001
From: 许鹏程 <1821349743@qq.com>
Date: 星期一, 15 一月 2024 10:25:50 +0800
Subject: [PATCH] commit

---
 product-server-data-center/src/main/java/com/product/data/center/utils/CustomLock.java      |  122 ++++++++++++++++++++--------------------
 product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java |    5 +
 2 files changed, 67 insertions(+), 60 deletions(-)

diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java b/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java
index 58e94e0..46071e5 100644
--- a/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java
+++ b/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java
@@ -48,6 +48,11 @@
 	@Value("${data.system.name}")
 	private String dataSystemName;
 
+	public void deleteCenterLog() {
+		this.getBaseDao().executeUpdate("DELETE FROM product_sys_data_center_log WHERE uuid in (select * from product_sys_data_center_log_del_v) limit 10000");
+	}
+
+
 	/**
 	 * 鍒涘缓瀹氭椂浠诲姟
 	 *
diff --git a/product-server-data-center/src/main/java/com/product/data/center/utils/CustomLock.java b/product-server-data-center/src/main/java/com/product/data/center/utils/CustomLock.java
index b1f1981..331802b 100644
--- a/product-server-data-center/src/main/java/com/product/data/center/utils/CustomLock.java
+++ b/product-server-data-center/src/main/java/com/product/data/center/utils/CustomLock.java
@@ -6,7 +6,9 @@
 import com.product.core.spring.context.SpringMVCContextHolder;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @Author cheng
@@ -16,87 +18,87 @@
 public class CustomLock {
 
 
-    private Set<String> obj = new ConcurrentHashSet<>();
+	private Map<String, Long> obj = new ConcurrentHashMap<>();
 
 
-    private long detectionWaitTime = 1000L;
+	private long detectionWaitTime = 1000L;
 
 
-    /**
-     * 鏃犲弬鏋勯�犳椂
-     */
-    public CustomLock() {
-    }
+	/**
+	 * 鏃犲弬鏋勯�犳椂
+	 */
+	public CustomLock() {
+	}
 
-    /**
-     * @param detectionWaitTime 妫�娴嬬瓑寰呮椂闂达紝鍗曚綅姣
-     */
-    public CustomLock(long detectionWaitTime) {
-        this.detectionWaitTime = detectionWaitTime;
-    }
+	/**
+	 * @param detectionWaitTime 妫�娴嬬瓑寰呮椂闂达紝鍗曚綅姣
+	 */
+	public CustomLock(long detectionWaitTime) {
+		this.detectionWaitTime = detectionWaitTime;
+	}
 
-    public boolean tryLock(String[] key) {
-        return this.tryLock(ArrayUtil.join(key, ","));
-    }
+	public boolean tryLock(String[] key) {
+		return this.tryLock(ArrayUtil.join(key, ","));
+	}
 
-    public boolean tryLock(String key) {
-        if (!StringUtils.isEmpty(key)) {
-            key = key.toUpperCase();
-            synchronized (key.intern()) {
-                if (!this.obj.contains(key)) {
-                    lock(key);
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
+	public boolean tryLock(String key) {
+		if (!StringUtils.isEmpty(key)) {
+			key = key.toUpperCase();
+			synchronized (key.intern()) {
+				if (!this.obj.containsKey(key)) {
+					lock(key);
+					return true;
+				}
+			}
+		}
+		return false;
+	}
 
 
-    public void lock(String... key) {
-        this.lock(ArrayUtil.join(key, ","));
-    }
+	public void lock(String... key) {
+		this.lock(ArrayUtil.join(key, ","));
+	}
 
-    public void lock(String key) {
-        String obj = key;
-        if (StringUtils.isEmpty(obj)) {
-            return;
-        }
-        obj = obj.toUpperCase();
+	public void lock(String key) {
+		String obj = key;
+		if (StringUtils.isEmpty(obj)) {
+			return;
+		}
+		obj = obj.toUpperCase();
 //        boolean enterLock = false;
-        long starTime = System.currentTimeMillis();
-        Long outLogTime = null;
-        while (this.obj.contains(obj)) {
-            if (System.currentTimeMillis() - starTime >= (1000 * 60 * 5)) {
-                if (outLogTime == null || System.currentTimeMillis() - outLogTime >= (1000 * 60)) {
-                    outLogTime = System.currentTimeMillis();
-                    SpringMVCContextHolder.getSystemLogger().error("绛夊緟閲婃斁閿佹椂闂磋秴杩�5鍒嗛挓,绛夊緟鏃堕棿锛�" + (System.currentTimeMillis() - starTime) + "ms,lockKey:" + obj);
-                }
-            }
+		long starTime = System.currentTimeMillis();
+		Long outLogTime = null;
+		while (this.obj.containsKey(obj)) {
+			if (System.currentTimeMillis() - starTime >= (1000 * 60 * 5)) {
+				if (outLogTime == null || System.currentTimeMillis() - outLogTime >= (1000 * 60)) {
+					outLogTime = System.currentTimeMillis();
+					SpringMVCContextHolder.getSystemLogger().error("绛夊緟閲婃斁閿佹椂闂磋秴杩�5鍒嗛挓,绛夊緟鏃堕棿锛�" + (System.currentTimeMillis() - starTime) + "ms,lockKey:" + obj);
+				}
+			}
 //            enterLock = true;
 //            SpringMVCContextHolder.getSystemLogger().info("閿侀噴鏀剧瓑寰�,lockKey:" + obj);
-            ThreadUtil.sleep(this.detectionWaitTime);
-        }
+			ThreadUtil.sleep(this.detectionWaitTime);
+		}
 //        if (enterLock) {
 //            SpringMVCContextHolder.getSystemLogger().info("绛夊緟瀹氭椂闂达細" + (System.currentTimeMillis() - starTime) + " ms,lockKey:" + obj);
 //        }
 //        SpringMVCContextHolder.getSystemLogger().info("涓婇攣鎴愬姛,lockKey:" + obj);
-        this.obj.add(obj);
-    }
+		this.obj.put(obj, System.currentTimeMillis());
+	}
 
-    public void unLock(String... key) {
-        String obj = ArrayUtil.join(key, ",");
-        unLock(obj);
-    }
+	public void unLock(String... key) {
+		String obj = ArrayUtil.join(key, ",");
+		unLock(obj);
+	}
 
-    public void unLock(String key) {
+	public void unLock(String key) {
 
-        if (StringUtils.isEmpty(key)) {
-            return;
-        }
-        this.obj.remove(key.toUpperCase());
+		if (StringUtils.isEmpty(key)) {
+			return;
+		}
+		this.obj.remove(key.toUpperCase());
 //        SpringMVCContextHolder.getSystemLogger().info("閲婃斁閿佹垚鍔�,lockKey:" + key);
-    }
+	}
 
 
 }

--
Gitblit v1.9.2