|
@@ -749,8 +749,6 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
List<GoodsSellDto> goodsSellDtos = JSONObject.parseArray(goodsJson, GoodsSellDto.class);
|
|
|
//用户选择的商品
|
|
|
Map<Integer, List<GoodsSellDto>> collect = goodsSellDtos.stream().collect(Collectors.groupingBy(GoodsSellDto::getGoodsId));
|
|
|
- List<Integer> goodsId = goodsSellDtos.stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
|
|
|
-
|
|
|
List<Integer> goodsIds = new ArrayList<>();
|
|
|
goodsSellDtos.forEach(e->{
|
|
|
for (int i = 0; i < e.getGoodsNum(); i++) {
|
|
@@ -792,6 +790,7 @@ 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);
|
|
|
//获取组合商品销售总价
|
|
@@ -809,22 +808,32 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
parentGoodsCutTotalPriceMap.put(sellOrder.getParentGoodsId(),totalGoodsPrice.subtract(parentTotalGoodsPrice));
|
|
|
}
|
|
|
}
|
|
|
- for (Integer integer : orderListMap.keySet()) {
|
|
|
- SellOrder sellOrder = orderListMap.get(integer).get(0);
|
|
|
- GoodsSellDto goodsSellDto = collect.get(sellOrder.getParentGoodsId()).get(0);
|
|
|
- List<GoodsSellDto> goodsSellDtoList = goodsSellDto.getGoodsSellDtos();
|
|
|
- BigDecimal addTotalPrice = parentGoodsAddTotalPriceMap.get(sellOrder.getParentGoodsId());
|
|
|
+ //分配组合商品的中单个商品的价格
|
|
|
+ noFreeAmount:for (Integer parentGoodsId : orderListMap.keySet()) {
|
|
|
+
|
|
|
+ BigDecimal addTotalPrice = parentGoodsAddTotalPriceMap.get(parentGoodsId);
|
|
|
usableParentGoodsAddTotalPrice = addTotalPrice;
|
|
|
- BigDecimal cutTotalPrice = parentGoodsCutTotalPriceMap.get(sellOrder.getParentGoodsId());
|
|
|
+ BigDecimal cutTotalPrice = parentGoodsCutTotalPriceMap.get(parentGoodsId);
|
|
|
usableParentGoodsCutTotalPrice = cutTotalPrice;
|
|
|
- for (int i = 0; i < goodsSellDtoList.size(); i++) {
|
|
|
- GoodsSellDto sellDto = goodsSellDtoList.get(i);
|
|
|
+
|
|
|
+ //获取组合商品销售总价
|
|
|
+ GoodsSellDto goodsSellDto = collect.get(parentGoodsId).get(0);
|
|
|
+ BigDecimal divide = goodsSellDto.getTotalGoodsPrice();
|
|
|
+
|
|
|
+ //获取子商品明细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);
|
|
|
//获取比例
|
|
|
- BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(goodsSellDto.getTotalGoodsPrice(), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(divide, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
if(addTotalPrice.doubleValue() > 0l){
|
|
|
//如果是最后一件商品
|
|
|
- if(i == goodsSellDtoList.size() - 1){
|
|
|
+ if(i == sellOrders.size() - 1){
|
|
|
sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(usableParentGoodsAddTotalPrice));
|
|
|
}else {
|
|
|
//获取分配的附加
|
|
@@ -835,7 +844,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
|
|
|
}else if(cutTotalPrice.doubleValue() > 0l){
|
|
|
//如果是最后一件商品
|
|
|
- if(i == goodsSellDtoList.size() - 1){
|
|
|
+ if(i == sellOrders.size() - 1){
|
|
|
sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(usableParentGoodsCutTotalPrice));
|
|
|
}else {
|
|
|
//获取分配的组合减免金额
|
|
@@ -845,7 +854,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
}
|
|
|
sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
|
|
|
}else {
|
|
|
- continue;
|
|
|
+ continue noFreeAmount;
|
|
|
}
|
|
|
}
|
|
|
}
|