|
@@ -462,18 +462,21 @@ public class TbOrdersService extends ServiceImpl<TbOrdersMapper, TbOrders> imple
|
|
|
|
|
|
GoodsDto goods = levelOneServerInterface.getByGoodsId(orderDto.getGoodsId());
|
|
|
List<TbItemRules> newRuleList = ruleList.stream().filter(rule -> rule.getGoodsCodes().contains(goods.getCode())).collect(Collectors.toList());
|
|
|
- AtomicReference<Float> sum= new AtomicReference<>(0.00F);
|
|
|
- newRuleList.forEach(ruleItem -> {
|
|
|
+ BigDecimal chargesPrice = BigDecimal.ZERO;
|
|
|
+ BigDecimal TotalPrice = new BigDecimal(orderDto.getTotalPrice());
|
|
|
+ BigDecimal GrossWt = new BigDecimal(orderDto.getGrossWt());
|
|
|
+ for (TbItemRules ruleItem : newRuleList) {
|
|
|
+ BigDecimal Percent = new BigDecimal(ruleItem.getPercent());
|
|
|
|
|
|
- if("1".equals(ruleItem.getFeeType())) {
|
|
|
- sum.updateAndGet(v -> new Float((float) (v + (orderDto.getTotalPrice() * ruleItem.getPercent()/100) )));
|
|
|
- } else if("2".equals(ruleItem.getFeeType())) {
|
|
|
- sum.updateAndGet(v -> new Float((float) (v + ruleItem.getFeeMoney().doubleValue() )));
|
|
|
- } else if("3".equals(ruleItem.getFeeType())) {
|
|
|
- sum.updateAndGet(v -> new Float((float) (v + (orderDto.getTotalPrice() * ruleItem.getPercent() /100) )));
|
|
|
+ if ("1".equals(ruleItem.getFeeType())) {
|
|
|
+ chargesPrice = chargesPrice.add(TotalPrice.multiply(Percent).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
|
|
|
+ } else if ("2".equals(ruleItem.getFeeType())) {
|
|
|
+ chargesPrice = chargesPrice.add(ruleItem.getFeeMoney());
|
|
|
+ } else if ("3".equals(ruleItem.getFeeType())) {
|
|
|
+ chargesPrice = chargesPrice.add(GrossWt.multiply(Percent).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
|
|
|
}
|
|
|
- });
|
|
|
- Double sumPrice = sum.get() + orderDto.getTotalPrice() + 50;
|
|
|
+ }
|
|
|
+ Double sumPrice = chargesPrice.add(TotalPrice).doubleValue();
|
|
|
return sumPrice;
|
|
|
}
|
|
|
|