|
@@ -573,7 +573,10 @@ public class PayOrderController {
|
|
|
List<Map<String, Object>> customerGradeInfo = customerGradeServices.getCustomerGradeInfo(params);
|
|
|
if(customerGradeInfo != null && customerGradeInfo.size() >0){ //已存在客户等级信息
|
|
|
//使用客户已存在的等级计算优惠
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
if(customerGradeInfo.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
discountAmt = oilLiters.multiply(new BigDecimal(customerGradeInfo.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
@@ -592,7 +595,10 @@ public class PayOrderController {
|
|
|
//如果存在
|
|
|
if(customerGradeList !=null && customerGradeList.size() >0){
|
|
|
//用户第一次购买 取等级最低初始会员的优惠条件计算
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
|
|
|
if(customerGradeList.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
discountAmt = oilLiters.multiply(new BigDecimal(customerGradeList.get(0).get("gasoilDiscountLitre").toString()));
|
|
@@ -631,7 +637,10 @@ public class PayOrderController {
|
|
|
discountAmt = receivableAmt_b.divide(discountAmt_b, 2, BigDecimal.ROUND_HALF_UP).multiply(gasoilDiscountAmt_b); //优惠金额
|
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
amt = receivableAmt_b.subtract(discountAmt); //实收金额
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
switch (vipDiscountyPlus){
|
|
|
case "1":
|
|
@@ -666,7 +675,10 @@ public class PayOrderController {
|
|
|
case "2":
|
|
|
resultMap.put("discountAmt", 0);
|
|
|
resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
resultMap.put("discountPrice", oilPrice);
|
|
|
break;
|
|
@@ -694,7 +706,10 @@ public class PayOrderController {
|
|
|
BigDecimal gasoilDiscountAmt_b = new BigDecimal(customerMarkertPlanList_2.get(0).get("gasoilDiscountAmt").toString()); //满多少优惠多少的金额
|
|
|
discountAmt = gasoilDiscountAmt_b; //优惠金额
|
|
|
amt = receivableAmt_b.subtract(gasoilDiscountAmt_b); //实收金额
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
switch (vipDiscountyPlus){
|
|
|
case "1":
|
|
@@ -732,7 +747,10 @@ public class PayOrderController {
|
|
|
case "2":
|
|
|
resultMap.put("discountAmt", 0);
|
|
|
resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
resultMap.put("discountPrice", oilPrice);
|
|
|
break;
|
|
@@ -756,7 +774,10 @@ public class PayOrderController {
|
|
|
String vipDiscountyPlus_4 = customerMarkertPlanList_3.get(0).get("vipDiscountyPlus").toString();
|
|
|
BigDecimal discountAmt_b = new BigDecimal(customerMarkertPlanList_3.get(0).get("discountAmt").toString()); //条件金额
|
|
|
BigDecimal gasoilDiscountAmt_b = new BigDecimal(customerMarkertPlanList_3.get(0).get("gasoilDiscountAmt").toString());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
if(customerMarkertPlanList_3.get(0).get("discountTerm").toString().equals("1")){ //按升数优惠
|
|
|
if(oilLiters.compareTo(discountAmt_b) ==1 || oilLiters.compareTo(discountAmt_b) ==0){
|
|
|
//计算
|
|
@@ -794,7 +815,10 @@ public class PayOrderController {
|
|
|
case "2":
|
|
|
resultMap.put("discountAmt", 0);
|
|
|
resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
resultMap.put("discountPrice", oilPrice);
|
|
|
break;
|
|
@@ -835,7 +859,10 @@ public class PayOrderController {
|
|
|
case "2":
|
|
|
resultMap.put("discountAmt", 0);
|
|
|
resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
resultMap.put("discountPrice", oilPrice);
|
|
|
break;
|
|
@@ -872,7 +899,10 @@ public class PayOrderController {
|
|
|
List<Map<String, Object>> customerGradeInfo = customerGradeServices.getCustomerGradeInfo(params);
|
|
|
if(customerGradeInfo != null && customerGradeInfo.size() >0){ //已存在客户等级信息
|
|
|
//使用客户已存在的等级计算优惠
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
if(customerGradeInfo.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
discountAmt = oilLiters.multiply(new BigDecimal(customerGradeInfo.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
@@ -892,7 +922,10 @@ public class PayOrderController {
|
|
|
//如果存在
|
|
|
if(customerGradeList !=null && customerGradeList.size() >0){
|
|
|
//用户第一次购买 取等级最低初始会员的优惠条件计算
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
if(customerGradeList.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
discountAmt = oilLiters.multiply(new BigDecimal(customerGradeList.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
@@ -910,7 +943,10 @@ public class PayOrderController {
|
|
|
//不存在
|
|
|
resultMap.put("discountAmt", 0);
|
|
|
resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_UP);
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
resultMap.put("discountPrice", oilPrice);
|
|
|
}
|
|
@@ -942,7 +978,10 @@ public class PayOrderController {
|
|
|
discountAmt = receivableAmt_b.divide(discountAmt_b, 2, BigDecimal.ROUND_UP).multiply(gasoilDiscountAmt_b); //优惠金额
|
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
amt = receivableAmt_b.subtract(discountAmt); //实收金额
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
switch (vipDiscountyPlus){
|
|
|
case "1":
|
|
@@ -977,7 +1016,10 @@ public class PayOrderController {
|
|
|
case "2":
|
|
|
resultMap.put("discountAmt", 0);
|
|
|
resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP); //加油升数
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
+ if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
+ oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
+ }
|
|
|
resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
resultMap.put("discountPrice", oilPrice);
|
|
|
break;
|