From c27edf9c5689c80b2cc1f4eafb3f929bee8c4d09 Mon Sep 17 00:00:00 2001 From: 石广澎 <shiguangpeng@163.com> Date: 星期五, 01 十二月 2023 18:31:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java | 99 +++++++++++++++++++++++++++++++++++-------------- 1 files changed, 71 insertions(+), 28 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java index 105dc14..9fedf1b 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java @@ -1,26 +1,26 @@ package com.consum.base.service; +import cn.hutool.core.convert.Convert; +import com.consum.base.core.WhBusinessEnum; +import com.consum.base.core.service.LWhWarningCoreServiceImpl; import com.consum.base.core.utils.LockManage; -import com.consum.model.po.LGoodsUserRecord; -import com.consum.model.po.LWarehouseFlow; -import com.consum.model.po.LWhFormTransfer; -import com.consum.model.po.LWhGoodsRecord; -import com.consum.model.po.LWhGoodsRecordDetails; -import com.consum.model.po.LWhProcureModelUser; +import com.consum.model.po.*; import com.iplatform.model.po.S_user_core; import com.walker.infrastructure.utils.CollectionUtils; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.NumberGenerator; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import javax.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; /** * @ClassName LWhFormTransferCoreService @@ -30,7 +30,7 @@ **/ @Service @Slf4j -@Transactional(rollbackFor = Exception.class) +@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public class LWhFormTransferCoreService { @Resource @@ -51,7 +51,8 @@ private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService; @Resource private LGoodsUserRecordServiceImpl lGoodsUserRecordService; - + @Resource + private LWhWarningCoreServiceImpl lWhWarningCoreService; /** * 鎵ц璋冩嫧鍑哄簱鎿嶄綔 @@ -69,18 +70,30 @@ Long userId = currentUser.getId(); String nickName = currentUser.getNick_name(); long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis()); + //鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為�� + Integer businessType = lWhFormTransfer.getBusinessType(); + businessType = businessType == null ? 0 : businessType; + WhBusinessEnum businessEnum = WhBusinessEnum.DIAOBO; + if (businessType == 0) { + businessEnum = WhBusinessEnum.DIAOBO; + } else if (businessType == 1) { + businessEnum = WhBusinessEnum.BUMENFENFA; + } else if (businessType == 2) { + businessEnum = WhBusinessEnum.BUMENTUIHUI; + } // 鍑哄簱鍗旾D Long outWarehouseFormId = null; try { - // 鏍规嵁璋冩嫧鍗� 鐢熸垚 鍑哄簱鍗� - outWarehouseFormId = lWhFormOutputCoreService.createOutFormByTransId(whFormTransferId, currentUser, dealTime); + // 鏍规嵁璋冩嫧鍗� 鐢熸垚 鍑哄簱鍗� 杩欐牱灏辫兘鍏敤鍑哄簱 + lWhFormTransfer.getBusinessType(); + outWarehouseFormId = lWhFormOutputCoreService.createOutFormByTransId(whFormTransferId, businessEnum, currentUser, dealTime); } catch (Exception e) { log.error(e.getMessage()); return; } // 鍑哄簱鍗� 鍑哄簱锛岃繑鍥� 鍑哄簱鍗曟祦姘碔d - Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(outWarehouseFormId, currentUser, dealTime); + Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(outWarehouseFormId, businessEnum, currentUser, dealTime); // 鏇存柊璋冩嫧鍗� lWhFormTransfer = new LWhFormTransfer(whFormTransferId); @@ -91,6 +104,7 @@ lWhFormTransfer.setOutputTime(dealTime); lWhFormTransfer.setOutWarehouseFlowId(lWarehouseFlowId); lWhFormTransferService.update(lWhFormTransfer); + log.info("璋冩嫧鍗曪細{} 鍑哄簱瀹屾垚", whFormTransferId); return; @@ -113,6 +127,10 @@ String nickName = currentUser.getNick_name(); // 鍑哄簱鍗曟祦姘磇d Long outWarehouseFlowId = lWhFormTransfer.getOutWarehouseFlowId(); + if (outWarehouseFlowId == null){ + log.error("璋冩嫧澶辫触锛佹湭鎵惧埌鍑哄簱鍗�"); + return; + } // 鍏ュ簱浠撳簱绫诲瀷 0鏈烘瀯1閮ㄩ棬 Integer inWarehouseType = lWhFormTransfer.getInWarehouseType(); Long inWarehouseId = lWhFormTransfer.getInWarehouseId(); @@ -151,30 +169,51 @@ inwarehouseFlow.setDealTime(dealTime); lWarehouseFlowService.insert(inwarehouseFlow); + ArrayList<Long> allChangModelList = new ArrayList<>(); LWhGoodsRecord lWhGoodsRecord = new LWhGoodsRecord(); lWhGoodsRecord.setWarehouseFlowId(outWarehouseFlowId); List<LWhGoodsRecord> whGoodsRecordList = lWhGoodsRecordService.select(lWhGoodsRecord); for (LWhGoodsRecord whGoodsRecord : whGoodsRecordList) { Long oldRecordId = whGoodsRecord.getId(); Long baseGoodsModelsId = whGoodsRecord.getBaseGoodsModelsId(); + allChangModelList.add(baseGoodsModelsId); whGoodsRecord.setId(NumberGenerator.getLongSequenceNumber()); whGoodsRecord.setWarehouseType(inWarehouseType); whGoodsRecord.setWarehouseId(inWarehouseId); whGoodsRecord.setDealTime(dealTime); //閫氳繃LockManage鑾峰緱閿� Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId); + List<Long> outGoodsIds = null; synchronized (warehouseModelLockObj) { // 鏍规嵁鍑哄簱娴佹按ID 鏌ヨ 鍑哄簱鐨勭墿鍝両D - List<Long> outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId, oldRecordId); + outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId, oldRecordId); + if (CollectionUtils.isEmpty(outGoodsIds)){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + throw new RuntimeException("鍏ュ簱鍗曞け璐ワ紝鏈煡璇㈠埌鐗╁搧锛�"); + } // 搴撳瓨鐗╁搧璇︽儏锛圠_WH_GOODS锛変腑 鐘舵�佽缃负1 lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName, goodsStatus); - //姝ゆ椂瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆戞坊鍔犳暟鎹� + + // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺 + int goodsModelNum = lWhGoodsService.queryGoodsModelNum(inWarehouseType, inWarehouseId, baseGoodsModelsId, 1, null); + whGoodsRecord.setInitialCount(goodsModelNum); + whGoodsRecord.setEndCount(goodsModelNum + whGoodsRecord.getThisCount()); + long totalAmount = lWhGoodsService.queryGoodsPriceById(outGoodsIds); + whGoodsRecord.setTotalPrice(totalAmount); + } + if (businessType == 1) { +// List<Map<String, Object>> modelInfo = baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId); + + // 1閮ㄩ棬鍒嗗彂 姝ゆ椂瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆戞坊鍔犳暟鎹� //鏌ヨ閮ㄩ棬鍒嗗彂浣跨敤浜� LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); lWhProcureModelUser.setTransBusinessId(whFormTransferId); lWhProcureModelUser.setBaseGoodsModelsId(baseGoodsModelsId); List<LWhProcureModelUser> goodsUserInfo = goodsBaseService.select(lWhProcureModelUser); - int totalGoodsNum = goodsUserInfo.stream().mapToInt(LWhProcureModelUser::getGoodsNum).sum(); + if (CollectionUtils.isEmpty(goodsUserInfo)){ + continue; + } + int totalGoodsNum = goodsUserInfo.stream().filter(item -> item.getGoodsNum() != null).mapToInt(LWhProcureModelUser::getGoodsNum).sum(); if (totalGoodsNum != outGoodsIds.size()) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); throw new RuntimeException("鍏ュ簱鍗曞け璐ワ紝浣跨敤浜轰娇鐢ㄦ暟閲忎笌鐗╁搧鏁伴噺涓嶄竴鑷�"); @@ -214,19 +253,17 @@ } //鎵归噺鎻掑叆浣跨敤浜鸿褰� lGoodsUserRecordService.insertBatch(goodsUserRecordList); - //灏嗕繚绠′粨搴撲俊鎭洿鏂板埌 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆� - lGoodsWhRecordService.insertNewRecord(outGoodsIds, inWarehouseFlowId, dealTime); - - // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺 - int goodsModelNum = lWhGoodsService.queryGoodsModelNum(inWarehouseType, inWarehouseId, baseGoodsModelsId, (short) 1, null); - whGoodsRecord.setInitialCount(goodsModelNum); - whGoodsRecord.setEndCount(goodsModelNum + whGoodsRecord.getThisCount()); } + //灏嗕繚绠′粨搴撲俊鎭洿鏂板埌 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆� + lGoodsWhRecordService.insertNewRecord(outGoodsIds, inWarehouseFlowId, dealTime); + + LWhGoodsRecordDetails lWhGoodsRecordDetails = new LWhGoodsRecordDetails(); lWhGoodsRecordDetails.setWhGoodsRecordId(oldRecordId); List<LWhGoodsRecordDetails> goodsRecordDetailsList = lWhGoodsRecordDetailsService.select(lWhGoodsRecordDetails); for (LWhGoodsRecordDetails whGoodsRecordDetails : goodsRecordDetailsList) { - whGoodsRecordDetails.setId(NumberGenerator.getLongSequenceNumber()); + whGoodsRecordDetails.setId(null); + whGoodsRecordDetails.setWhGoodsRecordId(whGoodsRecord.getId()); whGoodsRecordDetails.setThisType(1); } lWhGoodsRecordDetailsService.insertBatch(goodsRecordDetailsList); @@ -235,12 +272,18 @@ // 鏇存柊璋冩嫧鍗� lWhFormTransfer = new LWhFormTransfer(whFormTransferId); - lWhFormTransfer.setInWarehouseFormId(inWarehouseFlowId); + lWhFormTransfer.setInWarehouseFlowId(inWarehouseFlowId); + lWhFormTransfer.setInWarehouseFormId(null); lWhFormTransfer.setStates(2); lWhFormTransfer.setInOperatorId(userId); lWhFormTransfer.setInOperatorName(nickName); lWhFormTransfer.setInTime(dealTime); lWhFormTransferService.update(lWhFormTransfer); + + //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉� + if (inWarehouseType == 0){ + lWhWarningCoreService.updateKuCun(Convert.toShort(inWarehouseType, (short) 0), inWarehouseId, allChangModelList, null, dealTime); + } log.info("璋冩嫧鍗曪細{} 鍏ュ簱瀹屾垚", whFormTransferId); return; } -- Gitblit v1.9.1