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/LWhFormTransferCoreService.java | 114 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 85 insertions(+), 29 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 983c870..75e2dd2 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,10 +1,7 @@ package com.consum.base.service; import com.consum.base.core.util.LockManage; -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.*; import com.iplatform.model.po.S_user_core; import com.walker.infrastructure.utils.CollectionUtils; import com.walker.infrastructure.utils.DateUtils; @@ -12,8 +9,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; 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; @@ -43,8 +42,10 @@ private LGoodsWhRecordServiceImpl lGoodsWhRecordService; @Resource private LWarehouseFlowService lWarehouseFlowService; -// @Resource -// private LWarehouseFlowService LWhGoodsRecordDetailsService; + @Resource + private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService; + @Resource + private LGoodsUserRecordServiceImpl lGoodsUserRecordService; /** @@ -116,8 +117,20 @@ // 娴佹按璁板綍鎬昏〃ID long inWarehouseFlowId = NumberGenerator.getLongSequenceNumber(); - // 鏍规嵁鍑哄簱娴佹按ID 鏌ヨ 鍑哄簱鐨勭墿鍝両D - List<Long> outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId); + //鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為�� + Integer businessType = lWhFormTransfer.getBusinessType(); + //鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛� + short goodsStatus = 1; + //绫诲瀷0鍒嗗彂浣跨敤1 鍙嶅簱 + Integer recordType = null; + if (businessType == 1) { + goodsStatus = 2; + recordType = 0; + + } else if (businessType == 2) { + goodsStatus = 1; + recordType = 1; + } // 鎻掑叆 杩涘嚭搴撴祦姘存�昏〃[L_WAREHOUSE_FLOW] LWarehouseFlow inwarehouseFlow = new LWarehouseFlow(); @@ -146,6 +159,59 @@ //閫氳繃LockManage鑾峰緱閿� Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId); synchronized (warehouseModelLockObj) { + // 鏍规嵁鍑哄簱娴佹按ID 鏌ヨ 鍑哄簱鐨勭墿鍝両D + List<Long> outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId, oldRecordId); + // 搴撳瓨鐗╁搧璇︽儏锛圠_WH_GOODS锛変腑 鐘舵�佽缃负1 + lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName, goodsStatus); + //姝ゆ椂瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_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 (totalGoodsNum != outGoodsIds.size()) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + throw new RuntimeException("鍏ュ簱鍗曞け璐ワ紝浣跨敤浜轰娇鐢ㄦ暟閲忎笌鐗╁搧鏁伴噺涓嶄竴鑷�"); +// log.error("鍒涘缓鍏ュ簱鍗曞け璐�"); + } + //灏嗙墿鍝佸瀷鍙蜂互鍓嶇殑浣跨敤璁板綍璁剧疆涓洪潪鏈�鏂� + lGoodsUserRecordService.updSetNotLast(outGoodsIds); + ArrayList<LGoodsUserRecord> goodsUserRecordList = new ArrayList<>(); + int startIndex = 0; + for (LWhProcureModelUser whProcureModelUser : goodsUserInfo) { + Integer goodsNum = whProcureModelUser.getGoodsNum(); + String nowUserName = whProcureModelUser.getNowUserName(); + Long nowUserPhone = whProcureModelUser.getNowUserPhone(); + Long procureModelUserRecordId = whProcureModelUser.getProcureModelUserRecordId(); + List<Long> goodsIds = outGoodsIds.subList(startIndex, startIndex + goodsNum); + for (Long goodsId : goodsIds) { + LGoodsUserRecord tmp = new LGoodsUserRecord(); + tmp.setWhGoodsId(goodsId); + tmp.setRecordType(recordType); + tmp.setTransBusinessId(whFormTransferId); + if (businessType == 1) { + tmp.setNowUserName(nowUserName); + tmp.setNowUserPhone(nowUserPhone); + } else if (businessType == 2) { + tmp.setNowUserName(null); + tmp.setNowUserPhone(null); + } + tmp.setProcureModelUserRecordId(procureModelUserRecordId); + tmp.setOperatorId(userId); + tmp.setOperatorName(nickName); + tmp.setDealTime(dealTime); + tmp.setLastRecord(1); + goodsUserRecordList.add(tmp); + } + // 鏇存柊涓嬫爣浣嶇疆 + startIndex += goodsNum; + } + //鎵归噺鎻掑叆浣跨敤浜鸿褰� + lGoodsUserRecordService.insertBatch(goodsUserRecordList); + //灏嗕繚绠′粨搴撲俊鎭洿鏂板埌 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆� + lGoodsWhRecordService.insertNewRecord(outGoodsIds, inWarehouseFlowId, dealTime); + // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺 int goodsModelNum = lWhGoodsService.queryGoodsModelNum(inWarehouseType, inWarehouseId, baseGoodsModelsId, (short) 1, null); whGoodsRecord.setInitialCount(goodsModelNum); @@ -153,30 +219,14 @@ } LWhGoodsRecordDetails lWhGoodsRecordDetails = new LWhGoodsRecordDetails(); lWhGoodsRecordDetails.setWhGoodsRecordId(oldRecordId); - List<LWhGoodsRecordDetails> goodsRecordDetailsList = null;// LWhGoodsRecordDetailsService.select(lWhGoodsRecordDetails); + List<LWhGoodsRecordDetails> goodsRecordDetailsList = lWhGoodsRecordDetailsService.select(lWhGoodsRecordDetails); for (LWhGoodsRecordDetails whGoodsRecordDetails : goodsRecordDetailsList) { whGoodsRecordDetails.setId(NumberGenerator.getLongSequenceNumber()); whGoodsRecordDetails.setThisType(1); } -// LWhGoodsRecordDetailsService.insertBatch(goodsRecordDetailsList); + lWhGoodsRecordDetailsService.insertBatch(goodsRecordDetailsList); } lWhGoodsRecordService.insertBatch(whGoodsRecordList); - - // 搴撳瓨鐗╁搧璇︽儏锛圠_WH_GOODS锛変腑 鐘舵�佽缃负1 - lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName, (short) 1); - //灏嗕繚绠′粨搴撲俊鎭洿鏂板埌 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆� - lGoodsWhRecordService.insertNewRecord(outGoodsIds, inWarehouseFlowId, dealTime); - - //鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為�� - Integer businessType = lWhFormTransfer.getBusinessType(); - if (businessType == 1) { - // 闇�瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆� 澧炲姞璁板綍 - - } else if (businessType == 2) { - // 闇�瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆� 澧炲姞璁板綍 - - } - // 鏇存柊璋冩嫧鍗� lWhFormTransfer = new LWhFormTransfer(whFormTransferId); @@ -198,11 +248,17 @@ * * @param lWarehouseFlowId */ - private List<Long> getGoodsidByFlowId(long lWarehouseFlowId) { + private List<Long> getGoodsidByFlowId(Long lWarehouseFlowId, Long whGoodsRecordId) { StringBuilder sql = new StringBuilder(GET_GOODSID_BY_FLOWID); Map<String, Object> paramts = new HashMap<>(); - sql.append(" and gr.WAREHOUSE_FLOW_ID =:lWarehouseFlowId"); - paramts.put("lWarehouseFlowId", lWarehouseFlowId); + if (lWarehouseFlowId != null) { + sql.append(" and gr.WAREHOUSE_FLOW_ID =:lWarehouseFlowId"); + paramts.put("lWarehouseFlowId", lWarehouseFlowId); + } + if (whGoodsRecordId != null) { + sql.append(" and gr.id =:whGoodsRecordId"); + paramts.put("whGoodsRecordId", whGoodsRecordId); + } List<Map<String, Object>> outGoods = goodsBaseService.select(sql.toString(), paramts); if (CollectionUtils.isEmpty(outGoods)) { return null; -- Gitblit v1.9.1