zouxuan hace 5 años
padre
commit
03f90f5ab6

+ 17 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -823,17 +823,15 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             //获取子商品明细map
             List<GoodsSellDto> sellDtos = goodsSellDto.getGoodsSellDtos();
             Map<Integer, List<GoodsSellDto>> subGoodsMap = sellDtos.stream().collect(Collectors.groupingBy(GoodsSellDto::getGoodsId));
-
-            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);
+            Set<Integer> integers = subGoodsMap.keySet();
+            for (int i = 0; i < integers.size(); i++) {
+                GoodsSellDto sellDto = subGoodsMap.get(integers.iterator().next()).get(0);
                 //获取比例
                 BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(divide, 2, BigDecimal.ROUND_HALF_UP);
 
                 if(addTotalPrice.doubleValue() > 0l){
                     //如果是最后一件商品
-                    if(i == sellOrders.size() - 1){
+                    if(i == integers.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(usableParentGoodsAddTotalPrice));
                     }else {
                         //获取分配的附加
@@ -844,7 +842,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                     sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
                 }else if(cutTotalPrice.doubleValue() > 0l){
                     //如果是最后一件商品
-                    if(i == sellOrders.size() - 1){
+                    if(i == integers.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(usableParentGoodsCutTotalPrice));
                     }else {
                         //获取分配的组合减免金额
@@ -857,6 +855,14 @@ 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);
@@ -881,18 +887,18 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             if (goods.getAgreeCostPrice() != null) {
                 costMap.put("SellCost2", goods.getAgreeCostPrice());
             }
-            goodsSellDto.setTotalGoodsPrice(goodsSellDto.getGoodsPrice().multiply(new BigDecimal(sellOrder.getNum())));
+            BigDecimal multiply2 = goodsSellDto.getGoodsPrice().multiply(new BigDecimal(sellOrder.getNum()));
             //获取比例
-            BigDecimal ratioAmount = goodsSellDto.getTotalGoodsPrice().divide(totalAmount, 2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal ratioAmount = multiply2.divide(totalAmount, 2, BigDecimal.ROUND_HALF_UP);
             //如果有减免金额
             if(marketAmount.doubleValue() > 0l){
                 //如果是最后一件商品
                 if(i == sellOrderList.size() - 1){
-                    goodsSellDto.setTotalGoodsPrice(goodsSellDto.getTotalGoodsPrice().subtract(usableMarketAmount));
+                    goodsSellDto.setTotalGoodsPrice(multiply2.subtract(usableMarketAmount));
                 }else {
                     //获取分配的减免金额
                     BigDecimal multiply = ratioAmount.multiply(marketAmount).setScale(2,BigDecimal.ROUND_HALF_UP);
-                    goodsSellDto.setTotalGoodsPrice(goodsSellDto.getTotalGoodsPrice().subtract(multiply));
+                    goodsSellDto.setTotalGoodsPrice(multiply2.subtract(multiply));
                     usableMarketAmount = usableMarketAmount.subtract(multiply);
                 }
             }