From d7f0b77a81c6c6f8895af082214edcbed29e3ab9 Mon Sep 17 00:00:00 2001 From: cy <1664593601@qq.com> Date: 星期一, 06 十一月 2023 16:27:04 +0800 Subject: [PATCH] feat: 调拨调整 --- consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 50 insertions(+), 3 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..ea5841e 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,35 @@ package com.consum.base.service; +import com.consum.base.core.util.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; +import com.walker.infrastructure.utils.NumberGenerator; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** * @ClassName LGoodsUserRecordCoreService - * @Date 2023/11/2 * @Description * @Version 1.0 **/ @Service +@Transactional(rollbackFor = Exception.class) public class LGoodsUserRecordCoreService { @Resource private GoodsBaseServiceImpl goodsBaseService; - + @Resource + private LWhGoodsService lWhGoodsService; + @Resource + private LGoodsUserRecordServiceImpl lGoodsUserRecordService; /** * 閫氳繃鏂版棫 鐗╁搧浣跨敤浜轰慨鏀硅褰曘�怢_WH_PROCURE_MODEL_USER_RECORD銆戜腑鐨処D 锛� 鏉ヤ慨鏀圭墿鍝佷娇鐢ㄤ汉 @@ -38,14 +48,51 @@ 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, null, null); + lWhGoodsService.modGoodsTransfering(srappedGoodsIds, null, null, null, (short) 3); + // 璁剧疆鏃х殑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(NumberGenerator.getLongSequenceNumber()); + 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, (short) 2); + lGoodsUserRecordService.insertBatch(goodsUserRecords); + } } return true; } -- Gitblit v1.9.1