|
@@ -15,7 +15,6 @@ import com.fjhx.utils.Assert;
|
|
|
import com.fjhx.utils.WrapperUtil;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.redis.lock.RedisLockClient;
|
|
|
-import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -74,24 +73,23 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
// 分布式锁,粒度为物品id + 仓库id
|
|
|
Boolean flag = redisLockClient.lockFair(VLockConstant.STOCK_LOCK + goodsId + warehouseId,
|
|
|
() -> {
|
|
|
- Stock stock = getOne(Wrappers.<Stock>lambdaQuery()
|
|
|
- .eq(Stock::getGoodsId, goodsId)
|
|
|
- .eq(Stock::getWarehouseId, warehouseId));
|
|
|
+ Stock stock = getOne(q -> q.eq(Stock::getGoodsId, goodsId).eq(Stock::getWarehouseId, warehouseId));
|
|
|
|
|
|
// 没有物料存储记录,则创建物料
|
|
|
if (stock == null) {
|
|
|
+ if (quantity.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ throw new ServiceException("库存不足,出库失败");
|
|
|
+ }
|
|
|
+
|
|
|
stock = new Stock();
|
|
|
stock.setGoodsId(goodsId);
|
|
|
stock.setQuantity(quantity);
|
|
|
stock.setWarehouseId(warehouseId);
|
|
|
- stock.setTenantId(AuthUtil.getTenantId());
|
|
|
return save(stock);
|
|
|
}
|
|
|
|
|
|
BigDecimal newQuantity = stock.getQuantity().add(quantity);
|
|
|
-
|
|
|
- int compareTo = newQuantity.compareTo(BigDecimal.ZERO);
|
|
|
- if (compareTo < 0) {
|
|
|
+ if (newQuantity.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
throw new ServiceException("库存不足,出库失败");
|
|
|
}
|
|
|
|
|
@@ -101,7 +99,6 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
|
|
|
Assert.eqTrue(flag, ErrorMsgConstant.SYSTEM_BUSY_ERROR);
|
|
|
|
|
|
-
|
|
|
// 添加出入库明细
|
|
|
stockJournalService.add(
|
|
|
quantity.compareTo(BigDecimal.ZERO) > 0 ? StockJournalTypeConstant.IN : StockJournalTypeConstant.OUT,
|