From 62b6a7fac3f2acde70b578431147c4a01f19c182 Mon Sep 17 00:00:00 2001
From: 黎星凯 <13949086503@163.com>
Date: 星期一, 15 四月 2024 09:07:05 +0800
Subject: [PATCH] bug修改

---
 consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java |   77 +++++++++++++++++++++++++++++++++-----
 1 files changed, 67 insertions(+), 10 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
index 4738495..eb7f64f 100644
--- a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
@@ -1,25 +1,39 @@
 package com.consum.base.service;
 
-import com.consum.model.po.LWhProcureModelUser;
-import com.consum.model.po.LWhProcureModelUserRecord;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 import javax.annotation.Resource;
-import java.util.List;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
+
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.LockManage;
+import com.consum.model.po.LGoodsUserRecord;
+import com.consum.model.po.LWhFormTransfer;
+import com.consum.model.po.LWhProcureModelUser;
+import com.consum.model.po.LWhProcureModelUserRecord;
 
 /**
  * @ClassName LGoodsUserRecordCoreService
-
  * @Date 2023/11/2
  * @Description
  * @Version 1.0
  **/
 @Service
+@Transactional(rollbackFor = Exception.class)
 public class LGoodsUserRecordCoreService {
-    @Resource
-    private GoodsBaseServiceImpl goodsBaseService;
 
+    @Resource
+    private GoodsBaseService goodsBaseService;
+    @Resource
+    private LWhGoodsService lWhGoodsService;
+    @Resource
+    private LGoodsUserRecordServiceImpl lGoodsUserRecordService;
 
     /**
      * 閫氳繃鏂版棫 鐗╁搧浣跨敤浜轰慨鏀硅褰曘�怢_WH_PROCURE_MODEL_USER_RECORD銆戜腑鐨処D 锛� 鏉ヤ慨鏀圭墿鍝佷娇鐢ㄤ汉
@@ -29,7 +43,8 @@
      * @return
      */
     public boolean modifyGoodsUser(Long oldProcureModelUserRecordId, Long newProcureModelUserRecordId) {
-        LWhProcureModelUserRecord lWhProcureModelUserRecord = goodsBaseService.get(new LWhProcureModelUserRecord(newProcureModelUserRecordId));
+        LWhProcureModelUserRecord lWhProcureModelUserRecord =
+            goodsBaseService.get(new LWhProcureModelUserRecord(newProcureModelUserRecordId));
         if (lWhProcureModelUserRecord == null) {
             return false;
         }
@@ -38,14 +53,56 @@
         String operatorName = lWhProcureModelUserRecord.getOperatorName();
         // 璋冩嫧鍗昳d
         Long transBusinessId = lWhProcureModelUserRecord.getTransBusinessId();
+
+        LWhFormTransfer whFormTransfer = goodsBaseService.get(new LWhFormTransfer(transBusinessId));
+        Integer inWarehouseType = whFormTransfer.getInWarehouseType();
+        Long inWarehouseId = whFormTransfer.getInWarehouseId();
+        // 灏嗘墍鏈夊凡涓嬪彂鐗╁搧璁剧疆涓烘湭鍒嗗彂 濡傛灉鍙戠敓浜嗛��鍥烇紝姝ゆ椂鏁伴噺鍒欏皬浜庡垎鍙戞椂鐨勬暟閲�!
+        List<Long> srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId,
+            transBusinessId, null, null, (short)2, null);
+        lWhGoodsService.modGoodsTransfering(srappedGoodsIds, null, null, null, 1);
+        // 鍒犻櫎璇ヨ皟鎷ㄥ崟鏃ф湁浣跨敤璁板綍
+        lGoodsUserRecordService.delete(new LGoodsUserRecord(), "where TRANS_BUSINESS_ID =" + transBusinessId,
+            new HashMap<>());
+        // 璁剧疆鏃х殑LAST_RECORD= 0
+        lGoodsUserRecordService.updSetNotLast(srappedGoodsIds);
+        // 鎻掑叆鏂扮殑
         LWhProcureModelUser modelUser = new LWhProcureModelUser();
         modelUser.setProcureModelUserRecordId(newProcureModelUserRecordId);
         List<LWhProcureModelUser> modelUserList = goodsBaseService.select(modelUser);
         if (CollectionUtils.isEmpty(modelUserList)) {
             return true;
         }
+        ArrayList<LGoodsUserRecord> goodsUserRecords = new ArrayList<>();
         for (LWhProcureModelUser lWhProcureModelUser : modelUserList) {
-
+            Long baseGoodsModelsId = lWhProcureModelUser.getBaseGoodsModelsId();
+            Integer goodsNum = lWhProcureModelUser.getGoodsNum();
+            // 閫氳繃LockManage鑾峰緱閿�
+            Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId);
+            synchronized (warehouseModelLockObj) {
+                List<Long> toUserGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId,
+                    transBusinessId, null, baseGoodsModelsId, (short)1, goodsNum);
+                if (CollectionUtils.isEmpty(toUserGoodsIds)) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    throw new RuntimeException("鎿嶄綔澶辫触!鍨嬪彿鏁伴噺涓嶈冻");
+                }
+                for (Long toUserGoodsId : toUserGoodsIds) {
+                    LGoodsUserRecord tmp = new LGoodsUserRecord();
+                    //tmp.setId(IdUtil.generateId());
+                    tmp.setWhGoodsId(toUserGoodsId);
+                    tmp.setRecordType(1);
+                    tmp.setTransBusinessId(transBusinessId);
+                    tmp.setNowUserName(lWhProcureModelUser.getNowUserName());
+                    tmp.setNowUserPhone(lWhProcureModelUser.getNowUserPhone());
+                    tmp.setOperatorId(operatorId);
+                    tmp.setOperatorName(operatorName);
+                    tmp.setDealTime(dealTime);
+                    tmp.setLastRecord(1);
+                    goodsUserRecords.add(tmp);
+                }
+                lWhGoodsService.modGoodsTransfering(toUserGoodsIds, null, null, null, 2);
+                lGoodsUserRecordService.insertBatch(goodsUserRecords);
+            }
         }
         return true;
     }

--
Gitblit v1.9.1