|
@@ -326,40 +326,13 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
} else if (type.equals("SO")) {
|
|
|
//起始库位
|
|
|
if (locationType.equals("locationFrom")) {
|
|
|
- //指定库位
|
|
|
- if (locationInfoList != null && locationInfoList.size() > 0) {
|
|
|
- List<Long> locationList = new ArrayList<>();
|
|
|
- for (BaseLocationInfo b : locationInfoList) {
|
|
|
- locationList.add(b.getId());
|
|
|
- }
|
|
|
- List<BaseLocationLotattVO> locationLotattVOList = baseLocationInfoMapper.selectSortedLocationLotattListByLocationIdList(locationList, 1L, agvCallDTO.getLotattDTO().getAttr(), agvCallDTO.getSku());
|
|
|
- OutWarehouseDTO outWarehouseDTO = new OutWarehouseDTO();
|
|
|
- outWarehouseDTO.setSku(agvCallDTO.getSku());
|
|
|
- outWarehouseDTO.setQty(agvCallDTO.getQty());
|
|
|
- outWarehouseDTO.setWeight(agvCallDTO.getWeight());
|
|
|
- outWarehouseDTO.setSupplier(agvCallDTO.getSupplier());
|
|
|
- outWarehouseDTO.setLotattDTO(agvCallDTO.getLotattDTO());
|
|
|
- outWarehouseDTO.setWarehouseId(agvCallDTO.getWarehouseId());
|
|
|
- locationInfo = locationAllocationStrategy.filterLockInv(locationLotattVOList, outWarehouseDTO, asnSoStrategy, token);
|
|
|
- } else {
|
|
|
- OutWarehouseDTO outWarehouseDTO = new OutWarehouseDTO();
|
|
|
- outWarehouseDTO.setSku(agvCallDTO.getSku());
|
|
|
- outWarehouseDTO.setQty(agvCallDTO.getQty());
|
|
|
- outWarehouseDTO.setWeight(agvCallDTO.getWeight());
|
|
|
- outWarehouseDTO.setSupplier(agvCallDTO.getSupplier());
|
|
|
- outWarehouseDTO.setLotattDTO(agvCallDTO.getLotattDTO());
|
|
|
- outWarehouseDTO.setWarehouseId(agvCallDTO.getWarehouseId());
|
|
|
- locationInfo = outInvAllocation(outWarehouseDTO, token);
|
|
|
- }
|
|
|
- if (locationInfo == null) {
|
|
|
- throw new ServiceException("没有可分配的库存", token);
|
|
|
- }
|
|
|
- return locationInfo;
|
|
|
+
|
|
|
} else { //目标库位
|
|
|
for (BaseLocationInfo b : locationInfoList) {
|
|
|
- if (!b.getStockStatus().equals("00") || !b.getIsEmpty().equals("Y")) {
|
|
|
+ if (!b.getStockStatus().equals("00") || !b.getIsEmpty().equals("Y") || redisCache.checkIsLock(RedisKey.LOCK_LOCATION + b.getId())) {
|
|
|
continue;
|
|
|
}
|
|
|
+ redisCache.lockCacheObject(RedisKey.LOCK_LOCATION + b.getId(), b.getId().toString(), token);
|
|
|
locationInfo = b;
|
|
|
break;
|
|
|
}
|
|
@@ -369,32 +342,19 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
}
|
|
|
} else { //移库
|
|
|
if (locationType.equals("locationFrom")) {
|
|
|
- if (locationInfoList != null && locationInfoList.size() > 0) {
|
|
|
- List<Long> locationList = new ArrayList<>();
|
|
|
- for (BaseLocationInfo b : locationInfoList) {
|
|
|
- locationList.add(b.getId());
|
|
|
- }
|
|
|
- List<BaseLocationLotattVO> locationLotattVOList = baseLocationInfoMapper.selectSortedLocationLotattListByLocationIdList(locationList, 1L, agvCallDTO.getLotattDTO().getAttr(), agvCallDTO.getSku());
|
|
|
- OutWarehouseDTO outWarehouseDTO = new OutWarehouseDTO();
|
|
|
- outWarehouseDTO.setSku(agvCallDTO.getSku());
|
|
|
- outWarehouseDTO.setQty(agvCallDTO.getQty());
|
|
|
- outWarehouseDTO.setWeight(agvCallDTO.getWeight());
|
|
|
- outWarehouseDTO.setSupplier(agvCallDTO.getSupplier());
|
|
|
- outWarehouseDTO.setLotattDTO(agvCallDTO.getLotattDTO());
|
|
|
- outWarehouseDTO.setWarehouseId(agvCallDTO.getWarehouseId());
|
|
|
- locationInfo = locationAllocationStrategy.filterLockInv(locationLotattVOList, outWarehouseDTO, asnSoStrategy, token);
|
|
|
- }
|
|
|
+
|
|
|
} else {
|
|
|
for (BaseLocationInfo b : locationInfoList) {
|
|
|
- if (!b.getStockStatus().equals("00")) {
|
|
|
+ if (!b.getStockStatus().equals("00") || !b.getIsEmpty().equals("Y") || redisCache.checkIsLock(RedisKey.LOCK_LOCATION + b.getId())) {
|
|
|
continue;
|
|
|
}
|
|
|
+ redisCache.lockCacheObject(RedisKey.LOCK_LOCATION + b.getId(), b.getId().toString(), token);
|
|
|
locationInfo = b;
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
- if (locationInfo == null) {
|
|
|
- throw new ServiceException("没有可以分配的库位", token);
|
|
|
+ if (locationInfo == null) {
|
|
|
+ throw new ServiceException("没有可以分配的库位", token);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return locationInfo;
|