Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

Joburgess vor 5 Jahren
Ursprung
Commit
15ce11c28d

+ 13 - 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,22 +819,20 @@ 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));
-
-            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);
+            List<Integer> integers = new ArrayList<>(subGoodsMap.keySet());
+            for (int i = 0; i < integers.size(); i++) {
+                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){
                     //如果是最后一件商品
-                    if(i == sellOrders.size() - 1){
+                    if(i == integers.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(usableParentGoodsAddTotalPrice));
                     }else {
                         //获取分配的附加
@@ -844,7 +843,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 {
                         //获取分配的组合减免金额
@@ -881,18 +880,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, 6, 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);
                 }
             }