コード例 #1
0
ファイル: DiscountManagerUtils.java プロジェクト: qw4wer/back
  /**
   * 设置房间总价及合同总价(合同总价=房间总价+装修总价) 房间总价的计算方式 (1) 先加附加再优惠减价再折 计算方式:(标准总价+附加价-优惠减价)×折扣 (2) 先折再附加价再优惠减价
   * 计算方式:标准总价×折扣+附加价-优惠减价 (3) 先优惠减价再折再附加价 计算方式:(标准总价-优惠减价)×折扣+附加价
   *
   * <p>并设置"建筑成交单价","套内成交单价"
   *
   * @param discountId
   * @param multiply, 具体的折扣
   * @param map
   * @return
   */
  private static Map<String, String> initSumMoneyAndContractMoney(
      HttpServletRequest request, int discountId, BigDecimal multiply, Map<String, String> map) {

    UnitDiscount unitDiscount = unitDiscountServices.findUnitDiscountById(discountId);

    String computeWay = unitDiscount.getComputeWay(); // 折扣方式

    BigDecimal addSumPrice =
        unitDiscount.getAddSumPrice() == null
            ? new BigDecimal(0)
            : unitDiscount.getAddSumPrice(); // 附加价
    BigDecimal reduceSumPrice =
        unitDiscount.getReduceSumPrice() == null
            ? new BigDecimal(0)
            : unitDiscount.getReduceSumPrice(); // 优惠减价

    // PropertyUnit unit = unitServices.findPropertyUnitById(unitDiscount.getUnitId()); //对应的单元
    // BigDecimal sumPrice = unit.getSumPrice() == null ? new BigDecimal(0) : unit.getSumPrice();
    // //标准总价
    // BigDecimal buildPrice = unit.getBuildPrice() == null ? new BigDecimal(0) :
    // unit.getBuildPrice(); //建筑单价
    // BigDecimal insidePrice = unit.getInsidePrice() == null ? new BigDecimal(0) :
    // unit.getInsidePrice(); //套内单价

    // 下面几个字段从页面传过来
    BigDecimal sumPrice = new BigDecimal(request.getParameter("sumPrice")); // 标准总价
    BigDecimal buildArea = new BigDecimal(request.getParameter("buildArea")); // 建筑面积
    BigDecimal insideArea = new BigDecimal(request.getParameter("insideArea")); // 套内面积

    BigDecimal sumMoney = new BigDecimal(0); // 成交总价

    if ("1".equals(computeWay)) {

      sumMoney = (sumPrice.add(addSumPrice).subtract(reduceSumPrice)).multiply(multiply);

    } else if ("2".equals(computeWay)) {

      sumMoney = sumPrice.multiply(multiply).add(addSumPrice).subtract(reduceSumPrice);

    } else if ("3".equals(computeWay)) {

      sumMoney = (sumPrice.subtract(reduceSumPrice)).multiply(multiply).add(addSumPrice);
    }

    sumMoney = sumMoney.divide(new BigDecimal(1), 0, BigDecimal.ROUND_HALF_EVEN); // 四舍五入

    map.put("sumMoney", sumMoney.toString()); // 成交总价
    map.put("buildPrice", CommonUtils.moneyDivide(sumMoney, buildArea, 0)); // 建筑成交单价=成交总价/建筑面积
    map.put("insidePrice", CommonUtils.moneyDivide(sumMoney, insideArea, 0)); // 套内成交单价=成交总价/套内面积

    return map;
  }