Commit 32e5b9d54e324c9697ea402faac92db88583fb3e

Authored by 曾国涛
1 parent 6865caeb

refactor(order): 优化订单利润计算精度

- 将包装实际人民币总价、包装利润人民币价等字段的精度统一设置为2位
src/main/java/com/order/erp/service/order/impl/ProjectBaseInfoServiceImpl.java
@@ -632,7 +632,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe @@ -632,7 +632,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe
632 .filter(Objects::nonNull) 632 .filter(Objects::nonNull)
633 .reduce(BigDecimal::add) 633 .reduce(BigDecimal::add)
634 .ifPresent(packetActualRmbTotalPrice -> { 634 .ifPresent(packetActualRmbTotalPrice -> {
635 - businessProfitInfoVO.setPacketActualRmbTotalPrice(packetActualRmbTotalPrice.setScale(4, RoundingMode.HALF_UP)); 635 + businessProfitInfoVO.setPacketActualRmbTotalPrice(packetActualRmbTotalPrice.setScale(2, RoundingMode.HALF_UP));
636 }); 636 });
637 //订单数 637 //订单数
638 details.stream() 638 details.stream()
@@ -651,7 +651,8 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe @@ -651,7 +651,8 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe
651 if (Objects.nonNull(businessProfitInfoVO.getPacketActualRmbTotalPrice()) 651 if (Objects.nonNull(businessProfitInfoVO.getPacketActualRmbTotalPrice())
652 && Objects.nonNull(businessProfitInfoVO.getPacketRmbTotalPrice())) { 652 && Objects.nonNull(businessProfitInfoVO.getPacketRmbTotalPrice())) {
653 //包装费用收益¥ 653 //包装费用收益¥
654 - businessProfitInfoVO.setPacketProfitRmbPrice(BigDecimal.valueOf(businessProfitInfoVO.getPacketRmbTotalPrice()).subtract(businessProfitInfoVO.getPacketActualRmbTotalPrice())); 654 + businessProfitInfoVO.setPacketProfitRmbPrice(BigDecimal.valueOf(businessProfitInfoVO.getPacketRmbTotalPrice())
  655 + .subtract(businessProfitInfoVO.getPacketActualRmbTotalPrice()).setScale(2, RoundingMode.HALF_UP));
655 } 656 }
656 657
657 //hod时间差 658 //hod时间差
@@ -709,27 +710,27 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe @@ -709,27 +710,27 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe
709 } 710 }
710 } 711 }
711 //固定成本 712 //固定成本
712 - businessProfitInfoVO.setFixedCost(BigDecimal.valueOf((between+1) * Double.parseDouble(fixCostValue))); 713 + businessProfitInfoVO.setFixedCost(BigDecimal.valueOf((between+1) * Double.parseDouble(fixCostValue)).setScale(2, RoundingMode.HALF_UP));
713 if (Objects.nonNull(spainRatio) 714 if (Objects.nonNull(spainRatio)
714 && Objects.nonNull(businessProfitInfoVO.getCustomerRmbTotalPrice())) { 715 && Objects.nonNull(businessProfitInfoVO.getCustomerRmbTotalPrice())) {
715 //西班牙提成 716 //西班牙提成
716 - businessProfitInfoVO.setSpainRmbCommission(BigDecimal.valueOf(businessProfitInfoVO.getCustomerRmbTotalPrice()).multiply(BigDecimal.valueOf(Double.parseDouble(spainRatio)))); 717 + businessProfitInfoVO.setSpainRmbCommission(BigDecimal.valueOf(businessProfitInfoVO.getCustomerRmbTotalPrice()).multiply(BigDecimal.valueOf(Double.parseDouble(spainRatio))).setScale(2, RoundingMode.HALF_UP));
717 } 718 }
718 if (Objects.nonNull(businessProfitInfoVO.getSpainRmbCommission()) 719 if (Objects.nonNull(businessProfitInfoVO.getSpainRmbCommission())
719 && Objects.nonNull(projectBaseInfoDO.getSpainPaidRmbCommission())) { 720 && Objects.nonNull(projectBaseInfoDO.getSpainPaidRmbCommission())) {
720 //西班牙未发提成 721 //西班牙未发提成
721 - businessProfitInfoVO.setSpainUnpaidRmbCommission(businessProfitInfoVO.getSpainRmbCommission().subtract(projectBaseInfoDO.getSpainPaidRmbCommission())); 722 + businessProfitInfoVO.setSpainUnpaidRmbCommission(businessProfitInfoVO.getSpainRmbCommission().subtract(projectBaseInfoDO.getSpainPaidRmbCommission()).setScale(2, RoundingMode.HALF_UP));
722 } 723 }
723 724
724 if (Objects.nonNull(ratio) 725 if (Objects.nonNull(ratio)
725 && Objects.nonNull(businessProfitInfoVO.getCustomerRmbTotalPrice())) { 726 && Objects.nonNull(businessProfitInfoVO.getCustomerRmbTotalPrice())) {
726 //中国团队提成 727 //中国团队提成
727 - businessProfitInfoVO.setRmbCommission(BigDecimal.valueOf(businessProfitInfoVO.getCustomerRmbTotalPrice()).multiply(BigDecimal.valueOf(Double.parseDouble(ratio)))); 728 + businessProfitInfoVO.setRmbCommission(BigDecimal.valueOf(businessProfitInfoVO.getCustomerRmbTotalPrice()).multiply(BigDecimal.valueOf(Double.parseDouble(ratio))).setScale(2, RoundingMode.HALF_UP));
728 } 729 }
729 if (Objects.nonNull(businessProfitInfoVO.getRmbCommission()) 730 if (Objects.nonNull(businessProfitInfoVO.getRmbCommission())
730 && Objects.nonNull(projectBaseInfoDO.getPaidRmbCommission())) { 731 && Objects.nonNull(projectBaseInfoDO.getPaidRmbCommission())) {
731 //未发提成 732 //未发提成
732 - businessProfitInfoVO.setUnpaidRmbCommission(businessProfitInfoVO.getRmbCommission().subtract(projectBaseInfoDO.getPaidRmbCommission())); 733 + businessProfitInfoVO.setUnpaidRmbCommission(businessProfitInfoVO.getRmbCommission().subtract(projectBaseInfoDO.getPaidRmbCommission()).setScale(2, RoundingMode.HALF_UP));
733 } 734 }
734 } 735 }
735 if (Objects.nonNull(businessProfitInfoVO.getActualExchangeRate()) 736 if (Objects.nonNull(businessProfitInfoVO.getActualExchangeRate())
@@ -744,7 +745,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe @@ -744,7 +745,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe
744 .add(Optional.ofNullable(businessProfitInfoVO.getFixedCost()).orElse(BigDecimal.ZERO)) 745 .add(Optional.ofNullable(businessProfitInfoVO.getFixedCost()).orElse(BigDecimal.ZERO))
745 .add(Optional.ofNullable(businessProfitInfoVO.getDevelopmentCopyRmbTotalPrice()).orElse(BigDecimal.ZERO)) 746 .add(Optional.ofNullable(businessProfitInfoVO.getDevelopmentCopyRmbTotalPrice()).orElse(BigDecimal.ZERO))
746 .add(BigDecimal.valueOf(Optional.ofNullable(businessProfitInfoVO.getPacketRmbTotalPrice()).orElse(0.0))) 747 .add(BigDecimal.valueOf(Optional.ofNullable(businessProfitInfoVO.getPacketRmbTotalPrice()).orElse(0.0)))
747 - .add(BigDecimal.valueOf(Optional.ofNullable(businessProfitInfoVO.getProductionDepartmentTotalPrice()).orElse(0.0)))); 748 + .add(BigDecimal.valueOf(Optional.ofNullable(businessProfitInfoVO.getProductionDepartmentTotalPrice()).orElse(0.0))).setScale(2, RoundingMode.HALF_UP));
748 if (Objects.nonNull(businessProfitInfoVO.getCustomerRmbTotalPrice()) 749 if (Objects.nonNull(businessProfitInfoVO.getCustomerRmbTotalPrice())
749 && Objects.nonNull(businessProfitInfoVO.getProductionDepartmentTotalPrice()) 750 && Objects.nonNull(businessProfitInfoVO.getProductionDepartmentTotalPrice())
750 && Objects.nonNull(businessProfitInfoVO.getPacketRmbTotalPrice())) { 751 && Objects.nonNull(businessProfitInfoVO.getPacketRmbTotalPrice())) {
@@ -763,7 +764,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe @@ -763,7 +764,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe
763 && Objects.nonNull(businessProfitInfoVO.getRmbTotalExpense())) { 764 && Objects.nonNull(businessProfitInfoVO.getRmbTotalExpense())) {
764 //研发贸易净利润 765 //研发贸易净利润
765 businessProfitInfoVO.setDevelopmentProfit(BigDecimal.valueOf(businessProfitInfoVO.getCustomerRmbTotalPrice()) 766 businessProfitInfoVO.setDevelopmentProfit(BigDecimal.valueOf(businessProfitInfoVO.getCustomerRmbTotalPrice())
766 - .subtract(businessProfitInfoVO.getRmbTotalExpense()) 767 + .subtract(businessProfitInfoVO.getRmbTotalExpense().setScale(2, RoundingMode.HALF_UP))
767 ); 768 );
768 //研发贸易净利润率 769 //研发贸易净利润率
769 businessProfitInfoVO.setDevelopmentProfitRate(businessProfitInfoVO.getDevelopmentProfit() 770 businessProfitInfoVO.setDevelopmentProfitRate(businessProfitInfoVO.getDevelopmentProfit()
@@ -772,7 +773,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe @@ -772,7 +773,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe
772 //综合收益 773 //综合收益
773 businessProfitInfoVO.setComprehensiveProfit(Optional.ofNullable(businessProfitInfoVO.getDevelopmentProfit()).orElse(BigDecimal.ZERO) 774 businessProfitInfoVO.setComprehensiveProfit(Optional.ofNullable(businessProfitInfoVO.getDevelopmentProfit()).orElse(BigDecimal.ZERO)
774 .add(Optional.ofNullable(businessProfitInfoVO.getExchangeRateProfit()).orElse(BigDecimal.ZERO)) 775 .add(Optional.ofNullable(businessProfitInfoVO.getExchangeRateProfit()).orElse(BigDecimal.ZERO))
775 - .add(Optional.ofNullable(businessProfitInfoVO.getActualOrderRmbPrice()).orElse(BigDecimal.ZERO))); 776 + .add(Optional.ofNullable(businessProfitInfoVO.getActualOrderRmbPrice()).orElse(BigDecimal.ZERO)).setScale(2, RoundingMode.HALF_UP));
776 return businessProfitInfoVO; 777 return businessProfitInfoVO;
777 }).collect(Collectors.toList()); 778 }).collect(Collectors.toList());
778 } 779 }