zhs 2 роки тому
батько
коміт
ef0ce2ec7f

+ 6 - 1
src/main/java/com/tld/controller/WarehousingController.java

@@ -2,6 +2,7 @@ package com.tld.controller;
 
 import com.tld.model.*;
 import com.tld.service.WarehousingService;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -19,6 +20,11 @@ public class WarehousingController {
     @Autowired
     private WarehousingService warehousingService;
 
+    @GetMapping("test")
+    public void test(){
+        warehousingService.test();
+    }
+
     /**
      * 推荐库位
      * @param wllbCode 物料编码
@@ -206,5 +212,4 @@ public class WarehousingController {
     public Map<String, Object> otherWarehou(Inventory inventory){
         return warehousingService.otherWarehou(inventory);
     }
-
 }

+ 8 - 0
src/main/java/com/tld/mapper/WarehousingMapper.java

@@ -116,4 +116,12 @@ public interface WarehousingMapper {
     void addReturnWarehousingOther(WarehousingVirtual warehousingVirtual);
 
     void updateVitrualNum(Inventory inventory1);
+
+    List<Map<String, Object>> gettest();
+
+    int geetStorget(String name);
+
+    void addgeetStorget(Map<String, Object> map);
+
+    void updategeetStorget(Map<String, Object> map);
 }

+ 2 - 0
src/main/java/com/tld/service/WarehousingService.java

@@ -46,4 +46,6 @@ public interface WarehousingService {
     Map<String, Object> otherWarehousing(AskGoods askGoods);
 
     Map<String, Object> otherWarehou(Inventory inventory);
+
+    void test();
 }

+ 24 - 6
src/main/java/com/tld/service/impl/AskGoodsServiceImpl.java

@@ -193,8 +193,11 @@ public class AskGoodsServiceImpl implements AskGoodsService {
             map.put("msg", "500");
             map.put("errMsg", "失败");
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }
@@ -254,8 +257,11 @@ public class AskGoodsServiceImpl implements AskGoodsService {
             map.put("msg", "500");
             map.put("errMsg", "失败");
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }
@@ -613,8 +619,11 @@ public class AskGoodsServiceImpl implements AskGoodsService {
             map.put("errMsg", "失败");
             e.printStackTrace();
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }
@@ -744,6 +753,9 @@ public class AskGoodsServiceImpl implements AskGoodsService {
     @Override
     public Map<String, Object> addWarehouseTransferVitrual(AskGoods askGoods) {
         Map<String, Object> map = new HashMap<>();
+        //redis并发锁
+        RLock lock = redissonClient.getLock(askGoods.getUniqueCode());
+        lock.lock();
         try{
             Map<String, Object> mapVal = askGoodsMapper.getScanIsNot(askGoods);
             if((Double.parseDouble(mapVal.get("inventoryNum").toString()) - Double.parseDouble(mapVal.get("virtualNum").toString())) == 0){
@@ -770,6 +782,12 @@ public class AskGoodsServiceImpl implements AskGoodsService {
             e.printStackTrace();
             map.put("msg", "500");
             map.put("errMsg", "失败");
+        }finally {
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }

+ 5 - 2
src/main/java/com/tld/service/impl/DeliveryServiceImpl.java

@@ -176,8 +176,11 @@ public class DeliveryServiceImpl implements DeliveryService {
             map.put("errMsg", "服务器请求异常,请稍后再试");
             e.printStackTrace();
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }

+ 5 - 2
src/main/java/com/tld/service/impl/InviteServiceImpl.java

@@ -176,8 +176,11 @@ public class InviteServiceImpl implements InviteService {
             map.put("msg", "500");
             map.put("errMsg", "失败");
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }

+ 6 - 3
src/main/java/com/tld/service/impl/WarehouseTransferServiceImpl.java

@@ -175,8 +175,11 @@ public class WarehouseTransferServiceImpl implements WarehouseTransferService {
             map.put("msg", "500");
             map.put("errMsg", "失败");
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }
@@ -234,7 +237,7 @@ public class WarehouseTransferServiceImpl implements WarehouseTransferService {
                 } else if(material.getPartType().equals("产成品")){
                     inventory = deliveryMapper.getInventoryHalf(askGoods);
                 } else if(material.getPartType().equals("半成品")){
-                    inventory = askGoodsMapper.getInventoryInfo(askGoods).get(0);
+                    inventory = askGoodsMapper.getInventoryWarehousing(askGoods);
                 }
                 //如果出库库存等于虚拟表库存则删除此库存
                 if(Integer.parseInt(askGoods.getNum()) == Integer.parseInt(inventory.getAmount())){

+ 20 - 2
src/main/java/com/tld/service/impl/WarehousingServiceImpl.java

@@ -505,8 +505,11 @@ public class WarehousingServiceImpl implements WarehousingService {
             map.put("msg", "500");
             map.put("errMsg", "服务器请求异常,请稍后再试");
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }
@@ -876,6 +879,21 @@ public class WarehousingServiceImpl implements WarehousingService {
         return map;
     }
 
+    @Override
+    public void test() {
+       List<Map<String, Object>> list =warehousingMapper.gettest();
+       for(Map<String, Object> map : list){
+            int count = warehousingMapper.geetStorget(map.get("name").toString());
+           MaterialClass materialClass = warehousingMapper.getMateriaIsExist(map.get("code").toString());
+            if(count == 0){
+                map.put("typeVal", materialClass.getWllbClass() + "/");
+                warehousingMapper.addgeetStorget(map);
+            } else {
+                warehousingMapper.updategeetStorget(map);
+            }
+       }
+    }
+
 
     /**
      * 入库单生成

+ 5 - 2
src/main/java/com/tld/service/impl/WebPrintServiceImpl.java

@@ -54,8 +54,11 @@ public class WebPrintServiceImpl implements WebPrintService {
             map.put("errMsg", "失败");
             e.printStackTrace();
         } finally {
-            //释放锁
-            lock.unlock();
+            //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有
+            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
+                //释放锁
+                lock.unlock();
+            }
         }
         return map;
     }

+ 18 - 0
src/main/resources/mapper/WarehousingMapper.xml

@@ -685,4 +685,22 @@
         insert into tld_return_gs_other_warehousing(storage_code,account_sleeve,storage_location_code,wbs,amount,material_id)
         value(#{storageCode},#{accountSleeve},#{storageLocationCode},#{wbs},#{amount},#{materialId})
     </insert>
+
+    <select id="gettest" resultType="java.util.Map">
+        select * from tld_test
+    </select>
+
+    <select id="geetStorget" resultType="int">
+        select count(*) from tld_storage_location where storage_location_code = #{name}
+    </select>
+
+    <insert id="addgeetStorget" parameterType="java.util.Map">
+        insert into
+            tld_storage_location(storage_location_code,storage_location_name,warehouse_where,storage_location_type)
+            value(#{name},#{name},'e7f6bff1-e6ab-49e7-9',#{typeVal})
+    </insert>
+
+    <update id="updategeetStorget">
+        update tld_storage_location set storage_location_type = CONCAT(storage_location_type, #{typeVal}) where storage_location_code = #{name}
+    </update>
 </mapper>