zouxuan 5 年之前
父節點
當前提交
79eb654cd1
共有 1 個文件被更改,包括 7 次插入14 次删除
  1. 7 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

+ 7 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -790,12 +790,13 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         //获取组合商品列表
         List<SellOrder> orderList = sellOrderList.stream().filter(sellOrder -> sellOrder.getParentGoodsId() != null).collect(Collectors.toList());
         Map<Integer, List<SellOrder>> orderListMap = orderList.stream().collect(Collectors.groupingBy(SellOrder::getParentGoodsId));
+
         //获取组合商品实际销售价,和单个商品总和价
         for (Integer integer : orderListMap.keySet()) {
             SellOrder sellOrder = orderListMap.get(integer).get(0);
             //获取组合商品销售总价
             GoodsSellDto goodsSellDto = collect.get(sellOrder.getParentGoodsId()).get(0);
-            BigDecimal parentTotalGoodsPrice = goodsSellDto.getTotalGoodsPrice();
+            BigDecimal parentTotalGoodsPrice = goodsSellDto.getTotalGoodsPrice().divide(new BigDecimal(goodsSellDto.getGoodsNum()));
             BigDecimal totalGoodsPrice = BigDecimal.ZERO;
             //获取单个商品销售总价
             for (GoodsSellDto sellDto : goodsSellDto.getGoodsSellDtos()) {
@@ -818,16 +819,16 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 
             //获取组合商品销售总价
             GoodsSellDto goodsSellDto = collect.get(parentGoodsId).get(0);
-            BigDecimal divide = goodsSellDto.getTotalGoodsPrice();
+            BigDecimal divide = goodsSellDto.getGoodsPrice();
 
             //获取子商品明细map
             List<GoodsSellDto> sellDtos = goodsSellDto.getGoodsSellDtos();
             Map<Integer, List<GoodsSellDto>> subGoodsMap = sellDtos.stream().collect(Collectors.groupingBy(GoodsSellDto::getGoodsId));
-            Set<Integer> integers = subGoodsMap.keySet();
+            List<Integer> integers = new ArrayList<>(subGoodsMap.keySet());
             for (int i = 0; i < integers.size(); i++) {
-                GoodsSellDto sellDto = subGoodsMap.get(integers.iterator().next()).get(0);
+                GoodsSellDto sellDto = subGoodsMap.get(integers.get(i)).get(0);
                 //获取比例
-                BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(divide, 2, BigDecimal.ROUND_HALF_UP);
+                BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(divide, 6, BigDecimal.ROUND_HALF_UP);
 
                 if(addTotalPrice.doubleValue() > 0l){
                     //如果是最后一件商品
@@ -855,14 +856,6 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                     continue noFreeAmount;
                 }
             }
-            /*List<SellOrder> sellOrders = orderListMap.get(parentGoodsId);
-            for (int i = 0; i < sellOrders.size(); i++) {
-                SellOrder sellOrder = sellOrders.get(i);
-                GoodsSellDto sellDto = subGoodsMap.get(sellOrder.getGoodsId()).get(0);
-                //获取比例
-                BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(divide, 2, BigDecimal.ROUND_HALF_UP);
-
-            }*/
         }
         for (int i = 0; i < sellOrderList.size(); i++) {
             SellOrder sellOrder = sellOrderList.get(i);
@@ -889,7 +882,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             }
             BigDecimal multiply2 = goodsSellDto.getGoodsPrice().multiply(new BigDecimal(sellOrder.getNum()));
             //获取比例
-            BigDecimal ratioAmount = multiply2.divide(totalAmount, 2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal ratioAmount = multiply2.divide(totalAmount, 6, BigDecimal.ROUND_HALF_UP);
             //如果有减免金额
             if(marketAmount.doubleValue() > 0l){
                 //如果是最后一件商品