| | |
| | | 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 java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | 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; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | 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 |
| | |
| | | @Service |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public class LGoodsUserRecordCoreService { |
| | | |
| | | @Resource |
| | | private GoodsBaseServiceImpl goodsBaseService; |
| | | private GoodsBaseService goodsBaseService; |
| | | @Resource |
| | | private LWhGoodsService lWhGoodsService; |
| | | @Resource |
| | |
| | | * @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; |
| | | } |
| | |
| | | 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); |
| | | // 将所有已下发物品设置为未分发 如果发生了退回,此时数量则小于分发时的数量! |
| | | 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); |
| | |
| | | for (LWhProcureModelUser lWhProcureModelUser : modelUserList) { |
| | | Long baseGoodsModelsId = lWhProcureModelUser.getBaseGoodsModelsId(); |
| | | Integer goodsNum = lWhProcureModelUser.getGoodsNum(); |
| | | //通过LockManage获得锁 |
| | | // 通过LockManage获得锁 |
| | | Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId); |
| | | synchronized (warehouseModelLockObj) { |
| | | List<Long> toUserGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId, transBusinessId, null, baseGoodsModelsId, (short) 1, goodsNum); |
| | | 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.setId(IdUtil.generateId()); |
| | | tmp.setWhGoodsId(toUserGoodsId); |
| | | tmp.setRecordType(1); |
| | | tmp.setTransBusinessId(transBusinessId); |
| | |
| | | tmp.setLastRecord(1); |
| | | goodsUserRecords.add(tmp); |
| | | } |
| | | lWhGoodsService.modGoodsTransfering(toUserGoodsIds, null, null, null, (short) 2); |
| | | lWhGoodsService.modGoodsTransfering(toUserGoodsIds, null, null, null, 2); |
| | | lGoodsUserRecordService.insertBatch(goodsUserRecords); |
| | | } |
| | | } |