|
@@ -466,6 +466,42 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods> implement
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
+ public void getGoodsTest(List<Integer> goodsIds) {
|
|
|
+ goodsDao.lockGoods(new ArrayList<>(goodsIds));
|
|
|
+ for (Integer goodsId : goodsIds) {
|
|
|
+ Goods tempGoods = goodsDao.get(goodsId);
|
|
|
+ List<Goods> childGoods = new ArrayList<>();
|
|
|
+ if(StringUtils.isBlank(tempGoods.getComplementGoodsIdList())){
|
|
|
+ childGoods.add(tempGoods);
|
|
|
+ }else{
|
|
|
+ List<Integer> complementGoodsIds = Arrays.stream(tempGoods.getComplementGoodsIdList().split(",")).map(s -> Integer.valueOf(s)).collect(Collectors.toList());
|
|
|
+ childGoods = goodsDao.getGoodies(complementGoodsIds);
|
|
|
+ }
|
|
|
+ for (Goods goods : childGoods) {
|
|
|
+ GoodsProcurement goodsProcurement;
|
|
|
+ if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(AccountType.INTERNAL))){
|
|
|
+ goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
|
|
|
+ goods.setStockCount(new AtomicInteger(goods.getStockCount()).decrementAndGet());
|
|
|
+ if(Objects.nonNull(goodsProcurement)){
|
|
|
+ goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
|
|
|
+ }
|
|
|
+ }else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(AccountType.EXTERNAL))){
|
|
|
+ goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(goods.getId());
|
|
|
+ goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).decrementAndGet());
|
|
|
+ if(Objects.nonNull(goodsProcurement)){
|
|
|
+ goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ goods.setSellCount(new AtomicInteger(goods.getSellCount()).incrementAndGet());
|
|
|
+
|
|
|
+ goodsDao.update(goods);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
public List<SellOrder> subtractStock(List<Integer> goodsIds, AccountType accountType) {
|
|
|
if(CollectionUtils.isEmpty(goodsIds)){
|
|
|
return Collections.emptyList();
|