黎星凯
2024-04-15 62b6a7fac3f2acde70b578431147c4a01f19c182
consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
@@ -1,21 +1,22 @@
package com.consum.base.service;
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 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;
import com.walker.infrastructure.utils.NumberGenerator;
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.HashMap;
import java.util.List;
/**
 * @ClassName LGoodsUserRecordCoreService
@@ -28,7 +29,7 @@
public class LGoodsUserRecordCoreService {
    @Resource
    private GoodsBaseServiceImpl goodsBaseService;
    private GoodsBaseService goodsBaseService;
    @Resource
    private LWhGoodsService lWhGoodsService;
    @Resource
@@ -42,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;
        }
@@ -55,14 +57,16 @@
        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);
        // 将所有已下发物品设置为未分发 如果发生了退回,此时数量则小于分发时的数量!
        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<>());
        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);
@@ -73,18 +77,18 @@
        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(IdUtil.generateId());
                    //tmp.setId(IdUtil.generateId());
                    tmp.setWhGoodsId(toUserGoodsId);
                    tmp.setRecordType(1);
                    tmp.setTransBusinessId(transBusinessId);
@@ -103,8 +107,4 @@
        return true;
    }
    public static void main(String[] args) {
        System.out.println(IdUtil.generateId());
        System.out.println(NumberGenerator.getLongSequenceNumber() );
    }
}