|
@@ -39,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
import java.io.InputStream;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -266,6 +267,8 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods> implement
|
|
|
}
|
|
|
goodsProcurementDao.batchInsert(goodsProcurements);
|
|
|
|
|
|
+ sellOrderBatchNoAllot();
|
|
|
+
|
|
|
return goodsList;
|
|
|
}
|
|
|
|
|
@@ -304,9 +307,34 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods> implement
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<SellOrder> goodsBatchNoAllot(Goods goods) {
|
|
|
+ public void sellOrderBatchNoAllot() {
|
|
|
+ List<SellOrder> noneBatchNoSellOrders = sellOrderDao.getNoneBatchNoSellOrders();
|
|
|
+ if(CollectionUtils.isEmpty(noneBatchNoSellOrders)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (SellOrder noneBatchNoSellOrder : noneBatchNoSellOrders) {
|
|
|
+ GoodsProcurement goodsProcurement = null;
|
|
|
+ if(StockType.INTERNAL.equals(noneBatchNoSellOrder.getStockType())||(StockType.ALL.equals(noneBatchNoSellOrder.getStockType())&&AccountType.INTERNAL.equals(noneBatchNoSellOrder.getAccountType()))){
|
|
|
+ goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(noneBatchNoSellOrder.getGoodsId());
|
|
|
+ if(Objects.nonNull(goodsProcurement)){
|
|
|
+ goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).decrementAndGet());
|
|
|
+ goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
|
|
|
+ }
|
|
|
+ }else if(StockType.EXTERNAL.equals(noneBatchNoSellOrder.getStockType())||(StockType.ALL.equals(noneBatchNoSellOrder.getStockType())&&AccountType.EXTERNAL.equals(noneBatchNoSellOrder.getAccountType()))){
|
|
|
+ goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(noneBatchNoSellOrder.getGoodsId());
|
|
|
+ if(Objects.nonNull(goodsProcurement)){
|
|
|
+ goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).decrementAndGet());
|
|
|
+ goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- return null;
|
|
|
+ if(Objects.nonNull(goodsProcurement)){
|
|
|
+ goodsProcurementDao.update(goodsProcurement);
|
|
|
+ noneBatchNoSellOrder.setBatchNo(goodsProcurement.getBatchNo());
|
|
|
+ noneBatchNoSellOrder.setSellCost(goodsProcurement.getDiscountPrice());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sellOrderDao.batchUpdate(noneBatchNoSellOrders);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -320,7 +348,7 @@ 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<SellOrder> goodsBatchNoDtos = new ArrayList<>();
|
|
|
+ List<GoodsProcurement> goodsProcurements = new ArrayList<>();
|
|
|
for (Integer goodsId : goodsIds) {
|
|
|
Goods tempGoods = idTempGoodsMap.get(goodsId);
|
|
|
List<Goods> childGoods = new ArrayList<>();
|
|
@@ -359,12 +387,47 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods> implement
|
|
|
goodsProcurement.setParentGoodsId(tempGoods.getId());
|
|
|
}
|
|
|
|
|
|
-// goodsBatchNoDtos.add(goodsProcurement);
|
|
|
+ goodsProcurements.add(goodsProcurement);
|
|
|
}
|
|
|
// goodsDao.update(tempGoods);
|
|
|
}
|
|
|
goodsDao.batchUpdate(tempGoodsList);
|
|
|
- return goodsBatchNoDtos;
|
|
|
+
|
|
|
+ List<SellOrder> sellOrders = new ArrayList<>();
|
|
|
+
|
|
|
+ List<GoodsProcurement> singleGoodsList = goodsProcurements.stream().filter(g -> Objects.isNull(g.getParentGoodsId())&&Objects.nonNull(g.getBatchNo())).collect(Collectors.toList());
|
|
|
+ if(!CollectionUtils.isEmpty(singleGoodsList)){
|
|
|
+ Map<String, List<Integer>> batchNoGoodsIdMap = singleGoodsList.stream().collect(Collectors.groupingBy(GoodsProcurement::getBatchNo, Collectors.mapping(GoodsProcurement::getGoodsId, Collectors.toList())));
|
|
|
+ for (Map.Entry<String, List<Integer>> batchNoGoodsIdMapEntry : batchNoGoodsIdMap.entrySet()) {
|
|
|
+ Map<Integer, Long> goodsNumMap = batchNoGoodsIdMapEntry.getValue().stream().collect(Collectors.groupingBy(gid -> gid, Collectors.counting()));
|
|
|
+ for (Map.Entry<Integer, Long> goodsNumMapEntry : goodsNumMap.entrySet()) {
|
|
|
+ SellOrder sellOrder = new SellOrder();
|
|
|
+ sellOrder.setGoodsId(goodsNumMapEntry.getKey());
|
|
|
+ sellOrder.setNum(goodsNumMapEntry.getValue().intValue());
|
|
|
+ sellOrder.setBatchNo(batchNoGoodsIdMapEntry.getKey());
|
|
|
+ GoodsProcurement goodsProcurement = goodsProcurementDao.getWithGoodsAndBatchNo(sellOrder.getGoodsId(), sellOrder.getBatchNo());
|
|
|
+ sellOrder.setSellCost(goodsProcurement.getDiscountPrice().multiply(new BigDecimal(sellOrder.getNum())));
|
|
|
+ sellOrders.add(sellOrder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<GoodsProcurement> groupGoodsList = goodsProcurements.stream().filter(g -> Objects.nonNull(g.getParentGoodsId())||Objects.isNull(g.getBatchNo())).collect(Collectors.toList());
|
|
|
+ if(!CollectionUtils.isEmpty(groupGoodsList)){
|
|
|
+ for (GoodsProcurement goodsProcurement : groupGoodsList) {
|
|
|
+ SellOrder sellOrder = new SellOrder();
|
|
|
+ sellOrder.setParentGoodsId(goodsProcurement.getParentGoodsId());
|
|
|
+ sellOrder.setGoodsId(goodsProcurement.getGoodsId());
|
|
|
+ sellOrder.setNum(1);
|
|
|
+ sellOrder.setBatchNo(goodsProcurement.getBatchNo());
|
|
|
+ if(Objects.nonNull(goodsProcurement.getBatchNo())){
|
|
|
+ sellOrder.setSellCost(goodsProcurement.getDiscountPrice().multiply(new BigDecimal(sellOrder.getNum())));
|
|
|
+ }
|
|
|
+ sellOrders.add(sellOrder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sellOrders;
|
|
|
}
|
|
|
|
|
|
@Override
|