| 
					
				 | 
			
			
				@@ -200,39 +200,49 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public void addGoods(GoodsWrapper.Goods goods, Integer operatorId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(StringUtils.isBlank(goods.getSn())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new BizException("请指定商品货号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void addGoods(List<GoodsWrapper.Goods> goodsList, Integer operatorId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<String> snList = goodsList.stream().map(GoodsWrapper.Goods::getSn).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (snList.size() != new HashSet<>(snList).size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("商品货号重复"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Goods existsGood = goodsDao.lockBySn(goods.getSn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.nonNull(existsGood)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Goods> bySns = goodsDao.findBySns(snList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!CollectionUtils.isEmpty(bySns)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("商品货号重复"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<GoodsWrapper.GoodsSub> goodsSubList = goods.getGoodsSubList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取最小的库存数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String skuIds = goodsSubList.stream().map(e -> e.getSku().toString()).collect(Collectors.joining(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		PmsProductQueryParamDto paramDto = new PmsProductQueryParamDto(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		paramDto.setSkuStockIds(skuIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (GoodsWrapper.Goods goods : goodsList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (StringUtils.isBlank(goods.getSn())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				throw new BizException("请指定商品货号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Goods existsGood = goodsDao.lockBySn(goods.getSn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (Objects.nonNull(existsGood)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				throw new BizException("商品货号重复"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<GoodsWrapper.GoodsSub> goodsSubList = goods.getGoodsSubList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//获取最小的库存数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String skuIds = goodsSubList.stream().map(e -> e.getSku().toString()).collect(Collectors.joining(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			PmsProductQueryParamDto paramDto = new PmsProductQueryParamDto(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			paramDto.setSkuStockIds(skuIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //		paramDto.setPublishStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		paramDto.setPageSize(1000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		paramDto.setPageNum(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		paramDto.setJson(JSON.toJSONString(paramDto)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<PmsProductDto> productList = mallFeignService.getProductList(paramDto).getRows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(CollectionUtils.isEmpty(productList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new BizException("子商品不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			paramDto.setPageSize(1000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			paramDto.setPageNum(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			paramDto.setJson(JSON.toJSONString(paramDto)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<PmsProductDto> productList = mallFeignService.getProductList(paramDto).getRows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (CollectionUtils.isEmpty(productList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				throw new BizException("子商品不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//获取最小库存数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Integer stock = productList.stream().map(PmsProductDto::getStock).min(Integer::compareTo).get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			goods.setStockCount(stock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			goods.setSellCount(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Goods goodsRecord = JSON.parseObject(JSON.toJSONString(goods), Goods.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			goodsRecord.setStatus(YesOrNoEnum.NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			BigDecimal organCostPrice = goodsSubList.stream().map(GoodsWrapper.GoodsSub::getGoodsPrice).reduce(BigDecimal.ZERO, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			goodsRecord.setOrganCostPrice(organCostPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			goodsDao.insert(goodsRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<GoodsSub> goodsSubs = JSON.parseArray(JSON.toJSONString(goodsSubList), GoodsSub.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			goodsSubs.forEach(next -> next.setGoodsId(goodsRecord.getId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			goodsSubService.saveBatch(goodsSubs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取最小库存数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Integer stock = productList.stream().map(PmsProductDto::getStock).min(Integer::compareTo).get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		goods.setStockCount(stock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		goods.setSellCount(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Goods goodsRecord = JSON.parseObject(JSON.toJSONString(goods), Goods.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		goodsRecord.setStatus(YesOrNoEnum.NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		BigDecimal organCostPrice = goodsSubList.stream().map(GoodsWrapper.GoodsSub::getGoodsPrice).reduce(BigDecimal.ZERO, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		goodsRecord.setOrganCostPrice(organCostPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		goodsDao.insert(goodsRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<GoodsSub> goodsSubs = JSON.parseArray(JSON.toJSONString(goodsSubList), GoodsSub.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		goodsSubs.forEach(next -> next.setGoodsId(goodsRecord.getId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		goodsSubService.saveBatch(goodsSubs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/*@Override 
			 |