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