|
@@ -184,25 +184,26 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
// 生成mapKey
|
|
|
String key = goodsId.toString() + warehouseId.toString();
|
|
|
Stock stock = map.get(key);
|
|
|
-
|
|
|
if (null == stock) {
|
|
|
stock = new Stock();
|
|
|
stock.setWarehouseId(warehouseId);
|
|
|
stock.setGoodsId(goodsId);
|
|
|
- if (typeEnum.equals(InTypeEnum.PURCHASE)) {
|
|
|
+ // 如果是采购入库或质检不合格出库,添加冻结数量
|
|
|
+ if (typeEnum.equals(InTypeEnum.PURCHASE) || typeEnum.equals(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION)) {
|
|
|
stock.setFrozenQuantity(changeQuantity);
|
|
|
- } else if (typeEnum.equals(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION)) {
|
|
|
- stock.setFrozenQuantity(BigDecimal.ZERO);
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ // 否则添加库存数量
|
|
|
+ else {
|
|
|
stock.setQuantity(changeQuantity);
|
|
|
}
|
|
|
map.put(key, stock);
|
|
|
} else {
|
|
|
- if (typeEnum.equals(InTypeEnum.PURCHASE)) {
|
|
|
+ // 如果是采购入库或质检不合格出库,添加冻结数量
|
|
|
+ if (typeEnum.equals(InTypeEnum.PURCHASE) || typeEnum.equals(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION)) {
|
|
|
stock.setFrozenQuantity(stock.getFrozenQuantity().add(changeQuantity));
|
|
|
- } else if (typeEnum.equals(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION)) {
|
|
|
- stock.setFrozenQuantity(stock.getFrozenQuantity().add(changeQuantity));
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ // 否则添加库存数量
|
|
|
+ else {
|
|
|
stock.setQuantity(stock.getQuantity().add(changeQuantity));
|
|
|
}
|
|
|
}
|
|
@@ -217,27 +218,30 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
Set<String> keySet = map.keySet();
|
|
|
|
|
|
List<Stock> list = list(Wrappers.<Stock>query().in("CONCAT(goods_id, warehouse_id)", keySet));
|
|
|
- for (Stock stock : list) {
|
|
|
- String key = stock.getGoodsId().toString() + stock.getWarehouseId().toString();
|
|
|
- Stock changeStock = map.get(key);
|
|
|
+ for (Stock oldStock : list) {
|
|
|
+ Stock newStock = map.get(oldStock.getGoodsId().toString() + oldStock.getWarehouseId().toString());
|
|
|
|
|
|
- changeStock.setId(stock.getId());
|
|
|
+ newStock.setId(oldStock.getId());
|
|
|
+ // 入库逻辑
|
|
|
if (typeEnum instanceof InTypeEnum) {
|
|
|
+ // 采购入库,增加锁定库存
|
|
|
if (typeEnum.equals(InTypeEnum.PURCHASE)) {
|
|
|
- changeStock.setFrozenQuantity(stock.getFrozenQuantity().add(changeStock.getFrozenQuantity()));
|
|
|
- } else {
|
|
|
- changeStock.setQuantity(stock.getQuantity().add(changeStock.getQuantity()));
|
|
|
+ newStock.setFrozenQuantity(oldStock.getFrozenQuantity().add(newStock.getFrozenQuantity()));
|
|
|
+ }
|
|
|
+ // 其他入库,增加库存
|
|
|
+ else {
|
|
|
+ newStock.setQuantity(oldStock.getQuantity().add(newStock.getQuantity()));
|
|
|
}
|
|
|
} else {
|
|
|
// 质检不合格出库,扣减锁定库存
|
|
|
if (typeEnum.equals(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION)) {
|
|
|
- changeStock.setFrozenQuantity(changeStock.getFrozenQuantity().subtract(stock.getFrozenQuantity()));
|
|
|
+ newStock.setFrozenQuantity(oldStock.getFrozenQuantity().subtract(newStock.getFrozenQuantity()));
|
|
|
}
|
|
|
- // 其他出库扣减库存
|
|
|
+ // 其他出库,扣减库存
|
|
|
else {
|
|
|
- BigDecimal subtract = changeStock.getQuantity().subtract(stock.getQuantity());
|
|
|
+ BigDecimal subtract = oldStock.getQuantity().subtract(newStock.getQuantity());
|
|
|
Assert.eqTrue(subtract.compareTo(BigDecimal.ZERO) < 0, "产品库存不足,出库失败");
|
|
|
- changeStock.setQuantity(subtract);
|
|
|
+ newStock.setQuantity(subtract);
|
|
|
}
|
|
|
}
|
|
|
}
|