|  | @@ -2205,11 +2205,58 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void updateShippedStatus(List<OrderSkuSync> orderSkuSyncs) {
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(orderSkuSyncs)) {
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        List<String> orderNos = orderSkuSyncs.stream().map(e -> e.getOrderNo()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        List<SellOrder> sellOrders = sellOrderDao.queryByOrganNos(orderNos);
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(sellOrders)) {
 | 
	
		
			
				|  |  | +            throw new BizException("订单不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        sellOrders = sellOrders.stream().filter(e -> e.getDeliveryTime() == null).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        if(CollectionUtils.isEmpty(sellOrders)){
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Map<String,List<SellOrder>> sellOrderMap = sellOrders.stream().collect(Collectors.groupingBy(SellOrder::getOrderNo));
 | 
	
		
			
				|  |  | +        Map<String,Map<Long,BigDecimal>> skuCostMap = new HashMap<>(orderSkuSyncs.size());
 | 
	
		
			
				|  |  |          for (OrderSkuSync orderSkuSync : orderSkuSyncs) {
 | 
	
		
			
				|  |  | -            for (int i = 0; i < orderSkuSync.getSkuSyncList().size(); i++) {
 | 
	
		
			
				|  |  | -                sellOrderDao.updateOrganGoodsCost(orderSkuSync.getSkuSyncList().get(i), orderSkuSync.getOrderNo());
 | 
	
		
			
				|  |  | +            List<SellOrder> dtos = sellOrderMap.get(orderSkuSync.getOrderNo());
 | 
	
		
			
				|  |  | +            if(CollectionUtils.isEmpty(dtos)){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //获取sku平均成本价
 | 
	
		
			
				|  |  | +            Map<Long,List<OrderSkuSync.SkuSync>> skuMap = orderSkuSync.getSkuSyncList().stream().collect(Collectors.groupingBy(OrderSkuSync.SkuSync::getSku));
 | 
	
		
			
				|  |  | +            for (Long skuId : skuMap.keySet()) {
 | 
	
		
			
				|  |  | +                List<OrderSkuSync.SkuSync> skuSyncs = skuMap.get(skuId);
 | 
	
		
			
				|  |  | +                //汇总成本价
 | 
	
		
			
				|  |  | +                BigDecimal costPrice = skuSyncs.stream().map(e -> e.getPrice().multiply(new BigDecimal(e.getCount()))).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  | +                //获取总数
 | 
	
		
			
				|  |  | +                int count = skuSyncs.stream().mapToInt(e -> e.getCount()).sum();
 | 
	
		
			
				|  |  | +                BigDecimal avgCostPrice = costPrice;
 | 
	
		
			
				|  |  | +                if (count > 1) {
 | 
	
		
			
				|  |  | +                    avgCostPrice = costPrice.divide(new BigDecimal(count), 2, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                Map<Long,BigDecimal> costMap = new HashMap<>(1);
 | 
	
		
			
				|  |  | +                costMap.put(skuId,avgCostPrice);
 | 
	
		
			
				|  |  | +                skuCostMap.put(orderSkuSync.getOrderNo(),costMap);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Date now = new Date();
 | 
	
		
			
				|  |  | +        String format = DateUtil.format(now, DateUtil.ISO_EXPANDED_DATE_FORMAT);
 | 
	
		
			
				|  |  | +        for (String orderNo : sellOrderMap.keySet()) {
 | 
	
		
			
				|  |  | +            List<SellOrder> sellOrderList = sellOrderMap.get(orderNo);
 | 
	
		
			
				|  |  | +            Map<Long,BigDecimal> costMap = skuCostMap.get(orderNo);
 | 
	
		
			
				|  |  | +            for (SellOrder sellOrder : sellOrderList) {
 | 
	
		
			
				|  |  | +                BigDecimal costPrice = costMap.get(sellOrder.getGoodsSkuId().longValue());
 | 
	
		
			
				|  |  | +                if(costPrice == null){
 | 
	
		
			
				|  |  | +                    throw new BizException("商品[{}]成本价不存在",sellOrder.getGoodsSkuId());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                sellOrder.setSellCost(costPrice);
 | 
	
		
			
				|  |  | +                sellOrder.setDeliveryTime(format);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        sellOrderDao.batchUpdate(sellOrders);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public BigDecimal getActualAmount(BigDecimal price, StudentPaymentOrderExportDto row) {
 |