|
@@ -314,77 +314,77 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods> implement
|
|
|
|
|
|
List<Goods> tempGoodsList = goodsDao.lockGoods(new ArrayList<>(goodsIds));
|
|
|
Map<Integer, Goods> idTempGoodsMap = tempGoodsList.stream().collect(Collectors.toMap(Goods::getId, g -> g));
|
|
|
- List<Integer> singleGoodsIds = new ArrayList<>();
|
|
|
+ List<GoodsProcurement> goodsBatchNoDtos = new ArrayList<>();
|
|
|
for (Integer goodsId : goodsIds) {
|
|
|
Goods tempGoods = idTempGoodsMap.get(goodsId);
|
|
|
+ List<Goods> childGoods = new ArrayList<>();
|
|
|
if(StringUtils.isBlank(tempGoods.getComplementGoodsIdList())){
|
|
|
- singleGoodsIds.add(tempGoods.getId());
|
|
|
+ childGoods.add(tempGoods);
|
|
|
}else{
|
|
|
List<Integer> complementGoodsIds = Arrays.stream(tempGoods.getComplementGoodsIdList().split(",")).map(s -> Integer.valueOf(s)).collect(Collectors.toList());
|
|
|
- singleGoodsIds.addAll(complementGoodsIds);
|
|
|
+ childGoods = goodsDao.getGoodies(complementGoodsIds);
|
|
|
}
|
|
|
tempGoods.setSellCount((int) (tempGoods.getSellCount() + goodsSellNumMap.get(tempGoods.getId())));
|
|
|
-// goodsDao.update(tempGoods);
|
|
|
- }
|
|
|
- goodsDao.batchUpdate(tempGoodsList);
|
|
|
- List<Goods> singleGoodsList = goodsDao.getGoodies(singleGoodsIds);
|
|
|
- Map<Integer, Goods> idSingleGoodsMap = singleGoodsList.stream().collect(Collectors.toMap(Goods::getId, g -> g));
|
|
|
- List<GoodsProcurement> goodsBatchNoDtos = new ArrayList<>();
|
|
|
- for (Integer singleGoodsId : singleGoodsIds) {
|
|
|
- Goods goods = idSingleGoodsMap.get(singleGoodsId);
|
|
|
- GoodsProcurement goodsProcurement = null;
|
|
|
- if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(accountType))){
|
|
|
- goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
|
|
|
- goods.setStockCount(new AtomicInteger(goods.getStockCount()).decrementAndGet());
|
|
|
- if(Objects.nonNull(goodsProcurement)){
|
|
|
- goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).decrementAndGet());
|
|
|
- goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
|
|
|
+ for (Goods goods : childGoods) {
|
|
|
+ GoodsProcurement goodsProcurement = null;
|
|
|
+ if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(accountType))){
|
|
|
+ goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
|
|
|
+ goods.setStockCount(new AtomicInteger(goods.getStockCount()).decrementAndGet());
|
|
|
+ if(Objects.nonNull(goodsProcurement)){
|
|
|
+ goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).decrementAndGet());
|
|
|
+ goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
|
|
|
+ }
|
|
|
+ }else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(accountType))){
|
|
|
+ goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(goods.getId());
|
|
|
+ goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).decrementAndGet());
|
|
|
+ if(Objects.nonNull(goodsProcurement)){
|
|
|
+ goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).decrementAndGet());
|
|
|
+ goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
|
|
|
+ }
|
|
|
}
|
|
|
- }else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(accountType))){
|
|
|
- goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(goods.getId());
|
|
|
- goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).decrementAndGet());
|
|
|
+
|
|
|
+ goodsDao.update(goods);
|
|
|
if(Objects.nonNull(goodsProcurement)){
|
|
|
- goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).decrementAndGet());
|
|
|
- goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
|
|
|
+ goodsProcurementDao.update(goodsProcurement);
|
|
|
+ }else{
|
|
|
+ goodsProcurement = new GoodsProcurement(goods.getId());
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(tempGoods.getComplementGoodsIdList())){
|
|
|
+ goodsProcurement.setParentGoodsId(tempGoods.getId());
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- goodsDao.update(goods);
|
|
|
- if(Objects.nonNull(goodsProcurement)){
|
|
|
goodsBatchNoDtos.add(goodsProcurement);
|
|
|
- goodsProcurementDao.update(goodsProcurement);
|
|
|
- }else{
|
|
|
- goodsBatchNoDtos.add(new GoodsProcurement(goods.getId()));
|
|
|
}
|
|
|
+// goodsDao.update(tempGoods);
|
|
|
}
|
|
|
-
|
|
|
+ goodsDao.batchUpdate(tempGoodsList);
|
|
|
return goodsBatchNoDtos;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
- public void increaseStock(List<GoodsBatchNoDto> goodsBatchNoDtos, List<Integer> goodsIdsList, AccountType accountType) {
|
|
|
- Set<Integer> goodsIds = goodsBatchNoDtos.stream().map(GoodsBatchNoDto::getGoodsId).collect(Collectors.toSet());
|
|
|
- List<Goods> goodsList = goodsDao.lockGoods(new ArrayList<>(goodsIds));
|
|
|
- Map<Integer, Goods> idGoodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, g -> g));
|
|
|
- for (GoodsBatchNoDto goodsBatchNoDto : goodsBatchNoDtos) {
|
|
|
- Goods goods = idGoodsMap.get(goodsBatchNoDto.getGoodsId());
|
|
|
- GoodsProcurement goodsProcurement = goodsProcurementDao.getWithGoodsAndBatchNo(goods.getId(), goodsBatchNoDto.getBatchNo());
|
|
|
- if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(accountType))){
|
|
|
- goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
|
|
|
- if(Objects.nonNull(goodsProcurement)){
|
|
|
- goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).incrementAndGet());
|
|
|
- goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
|
|
|
- }
|
|
|
- }else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(accountType))){
|
|
|
- goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).incrementAndGet());
|
|
|
- if(Objects.nonNull(goodsProcurement)){
|
|
|
- goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).incrementAndGet());
|
|
|
- goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).decrementAndGet());
|
|
|
- }
|
|
|
- }
|
|
|
- goodsDao.update(goods);
|
|
|
- goodsProcurementDao.update(goodsProcurement);
|
|
|
- }
|
|
|
+ public void increaseStock(List<Integer> sellOrderIds, AccountType accountType) {
|
|
|
+// Set<Integer> goodsIds = goodsBatchNoDtos.stream().map(GoodsBatchNoDto::getGoodsId).collect(Collectors.toSet());
|
|
|
+// List<Goods> goodsList = goodsDao.lockGoods(new ArrayList<>(goodsIds));
|
|
|
+// Map<Integer, Goods> idGoodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, g -> g));
|
|
|
+// for (GoodsBatchNoDto goodsBatchNoDto : goodsBatchNoDtos) {
|
|
|
+// Goods goods = idGoodsMap.get(goodsBatchNoDto.getGoodsId());
|
|
|
+// GoodsProcurement goodsProcurement = goodsProcurementDao.getWithGoodsAndBatchNo(goods.getId(), goodsBatchNoDto.getBatchNo());
|
|
|
+// if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(accountType))){
|
|
|
+// goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
|
|
|
+// if(Objects.nonNull(goodsProcurement)){
|
|
|
+// goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).incrementAndGet());
|
|
|
+// goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
|
|
|
+// }
|
|
|
+// }else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(accountType))){
|
|
|
+// goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).incrementAndGet());
|
|
|
+// if(Objects.nonNull(goodsProcurement)){
|
|
|
+// goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).incrementAndGet());
|
|
|
+// goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).decrementAndGet());
|
|
|
+// }
|
|
|
+// }
|
|
|
+// goodsDao.update(goods);
|
|
|
+// goodsProcurementDao.update(goodsProcurement);
|
|
|
+// }
|
|
|
}
|
|
|
}
|