From b0841619e23dd01b8fba9561ad9036c7c3d6aa08 Mon Sep 17 00:00:00 2001 From: futian.liu <liufutianyoo@163.com> Date: 星期二, 14 十一月 2023 14:05:20 +0800 Subject: [PATCH] 出库单管理 --- consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java | 62 +++++++++++++++++++++++++++--- 1 files changed, 55 insertions(+), 7 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..094eb08 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.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; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -import javax.annotation.Resource; +import com.walker.infrastructure.utils.NumberGenerator; +import java.util.ArrayList; import java.util.List; +import javax.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.util.CollectionUtils; /** * @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,52 @@ 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, 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, 2); + lGoodsUserRecordService.insertBatch(goodsUserRecords); + } } return true; } -- Gitblit v1.9.1