From 31fbee8d73fbdc8e2331208d69f674f9b29246ca Mon Sep 17 00:00:00 2001
From: 杨凯 <398860375@qq.com>
Date: 星期三, 18 十月 2023 16:02:24 +0800
Subject: [PATCH] 同一个仓库下的同一个型号上锁,不同仓库、不同型号不受影响

---
 deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java        |   46 +++++++++++++++++++++++
 consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java |    9 ++++
 consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java     |    8 +++
 3 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java b/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java
index 6d07897..ca8e0d8 100644
--- a/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java
+++ b/consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java
@@ -4,7 +4,6 @@
 import com.consum.base.core.tools.SuperMap;
 import com.consum.base.core.util.DateUtil;
 import com.consum.model.po.*;
-import com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer;
 import com.walker.infrastructure.utils.NumberGenerator;
 import com.walker.jdbc.service.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -565,4 +564,12 @@
 
         insertBatch(warningList);
     }
+
+    /**
+     * 閮ㄩ棬鐗╁搧鍒嗗彂
+     */
+    public void doDepLending(){
+
+    }
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java
index 324bf71..30ba8b7 100644
--- a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java
@@ -41,7 +41,13 @@
             Assert.notNull(param, "wareHouse param can not null !");
             Assert.notNull(param.getWarehouseId(), "wareHouse id can not null");
             List<CheckWarehouseResult> results;
-            synchronized (param.getWarehouseId()) {
+
+            String key = param.getWarehouseId().toString() + param.getModelId().toString();
+
+            /**
+             * 姝ゅ灏嗗悓涓�涓粨搴撲笅鐨勫悓涓�涓瀷鍙蜂笂閿侊紝涓嶅悓浠撳簱銆佷笉鍚屽瀷鍙蜂笉鍙楀奖鍝嶃��
+             */
+            synchronized (key) {
                 if (param.getIsCheckIn()) {
                     results = new ArrayList<>();
                     results.add(checkin(param));
diff --git a/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java b/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java
new file mode 100644
index 0000000..6f8966f
--- /dev/null
+++ b/deploy-jar-single/src/main/java/com/consum/test/synchronizedCode.java
@@ -0,0 +1,46 @@
+package com.consum.test;
+
+/**
+ * 娴嬭瘯澶氱嚎绋嬪苟鍙�
+ */
+public class synchronizedCode implements Runnable {
+
+    static synchronizedCode instance = new synchronizedCode();
+    static int i = 0;
+
+    static String key = "1";
+
+    public static void main(String[] args) throws InterruptedException {
+        for (int j=0;j<3;j++){
+            Thread t1 = new Thread(instance);
+            t1.start();
+        }
+
+        System.out.println("绾跨▼鎵ц缁撴潫");
+    }
+
+    @Override
+    public void run() {
+
+        String myKey;
+        if (key == "1"){
+            myKey = "def";
+            key = "2";
+        } else {
+            myKey = "abc";
+        }
+
+        System.out.println(Thread.currentThread().getName() + ":" + myKey);
+
+        synchronized (myKey){
+            System.out.println(Thread.currentThread().getName() + "寮�濮嬭繍琛�");
+            try {
+                Thread.sleep(3000);
+            } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            System.out.println("鎴戝彨"+ Thread.currentThread().getName()+"杩愯缁撴潫");
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1