|
@@ -701,6 +701,23 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setOilsCardFlag(map.get("oilsCardFlag"));
|
|
|
payOrderResultInfo.setCardOilsType(map.get("cardOilsType"));
|
|
|
payOrderResultInfo.setDzkDiscountPrice(oilPrice.toString());
|
|
|
+ if(oilLiters.toString().equals("0.0000")){
|
|
|
+ payOrderResultInfo.setDzkAmt("0.01");
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(oilPrice.toString());
|
|
|
+ }else {
|
|
|
+ String dzkAmt = payOrderResultInfo.getDzkAmt();
|
|
|
+ //如果电子卡的支付金额与微信支付金额相同
|
|
|
+ if(amt.compareTo(new BigDecimal(dzkAmt)) == 0){
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(discountPrice.toString());
|
|
|
+ }else{
|
|
|
+ //此处重新计算油升数原因:电子卡在计算支付0.01时优惠价格时,如果保留小数位数过低则会出现误差;
|
|
|
+ BigDecimal oilLiters_dzk = receivableAmt.divide(oilPrice,7, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal dzkDiscountPrice = oilLiters_dzk.toString().equals("0.0000000") ? oilPrice: new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ dzkDiscountPrice = dzkDiscountPrice.compareTo(oilPrice) == 1 ? oilPrice : dzkDiscountPrice;
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
|
}
|
|
@@ -875,8 +892,16 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setDzkAmt("0.01");
|
|
|
payOrderResultInfo.setDzkDiscountPrice(oilPrice.toString());
|
|
|
}else {
|
|
|
- BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ //如果电子卡的支付金额与微信支付金额相同
|
|
|
+ if(amt.compareTo(new BigDecimal(dzkAmt)) == 0){
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(discountPrice.toString());
|
|
|
+ }else{
|
|
|
+ //此处重新计算油升数原因:电子卡在计算支付0.01时优惠价格时,如果保留小数位数过低则会出现误差;
|
|
|
+ BigDecimal oilLiters_dzk = receivableAmt.divide(oilPrice,7, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal dzkDiscountPrice = oilLiters_dzk.toString().equals("0.0000000") ? oilPrice: new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
@@ -1093,9 +1118,17 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setDzkAmt("0.01");
|
|
|
payOrderResultInfo.setDzkDiscountPrice(oilPrice.toString());
|
|
|
}else {
|
|
|
- BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- dzkDiscountPrice = dzkDiscountPrice.compareTo(oilPrice) == 1 ? oilPrice : dzkDiscountPrice;
|
|
|
- payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ //如果电子卡的支付金额与微信支付金额相同
|
|
|
+ if(amt.compareTo(new BigDecimal(dzkAmt)) == 0){
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(discountPrice.toString());
|
|
|
+ }else{
|
|
|
+ //此处重新计算油升数原因:电子卡在计算支付0.01时优惠价格时,如果保留小数位数过低则会出现误差;
|
|
|
+ BigDecimal oilLiters_dzk = receivableAmt.divide(oilPrice,7, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal dzkDiscountPrice = oilLiters_dzk.toString().equals("0.0000000") ? oilPrice: new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ dzkDiscountPrice = dzkDiscountPrice.compareTo(oilPrice) == 1 ? oilPrice : dzkDiscountPrice;
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
@@ -1243,9 +1276,17 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setDzkAmt("0.01");
|
|
|
payOrderResultInfo.setDzkDiscountPrice(oilPrice.toString());
|
|
|
}else {
|
|
|
- BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- dzkDiscountPrice = dzkDiscountPrice.compareTo(oilPrice) ==1 ? oilPrice : dzkDiscountPrice;
|
|
|
- payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ //如果电子卡的支付金额与微信支付金额相同
|
|
|
+ if(amt.compareTo(new BigDecimal(dzkAmt)) == 0){
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(discountPrice.toString());
|
|
|
+ }else{
|
|
|
+ //此处重新计算油升数原因:电子卡在计算支付0.01时优惠价格时,如果保留小数位数过低则会出现误差;
|
|
|
+ BigDecimal oilLiters_dzk = receivableAmt.divide(oilPrice,7, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal dzkDiscountPrice = oilLiters_dzk.toString().equals("0.0000000") ? oilPrice: new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ dzkDiscountPrice = dzkDiscountPrice.compareTo(oilPrice) ==1 ? oilPrice : dzkDiscountPrice;
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
@@ -1396,9 +1437,17 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setDzkAmt("0.01");
|
|
|
payOrderResultInfo.setDzkDiscountPrice(oilPrice.toString());
|
|
|
}else {
|
|
|
- BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- dzkDiscountPrice =dzkDiscountPrice.compareTo(oilPrice) == 1 ? oilPrice: dzkDiscountPrice;
|
|
|
- payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ //如果电子卡的支付金额与微信支付金额相同
|
|
|
+ if(amt.compareTo(new BigDecimal(dzkAmt)) == 0){
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(discountPrice.toString());
|
|
|
+ }else{
|
|
|
+ //此处重新计算油升数原因:电子卡在计算支付0.01时优惠价格时,如果保留小数位数过低则会出现误差;
|
|
|
+ BigDecimal oilLiters_dzk = receivableAmt.divide(oilPrice,7, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal dzkDiscountPrice = oilLiters_dzk.toString().equals("0.0000000") ? oilPrice: new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ dzkDiscountPrice = dzkDiscountPrice.compareTo(oilPrice) ==1 ? oilPrice : dzkDiscountPrice;
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
@@ -1528,9 +1577,18 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setDzkAmt("0.01");
|
|
|
payOrderResultInfo.setDzkDiscountPrice(oilPrice.toString());
|
|
|
}else {
|
|
|
- BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- dzkDiscountPrice =dzkDiscountPrice.compareTo(oilPrice) == 1 ? oilPrice: dzkDiscountPrice;
|
|
|
- payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+
|
|
|
+ //如果电子卡的支付金额与微信支付金额相同
|
|
|
+ if(amt.compareTo(new BigDecimal(dzkAmt)) == 0){
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(discountPrice.toString());
|
|
|
+ }else{
|
|
|
+ //此处重新计算油升数原因:电子卡在计算支付0.01时优惠价格时,如果保留小数位数过低则会出现误差;
|
|
|
+ BigDecimal oilLiters_dzk = receivableAmt.divide(oilPrice,7, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal dzkDiscountPrice = oilLiters_dzk.toString().equals("0.0000000") ? oilPrice: new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //BigDecimal dzkDiscountPrice = new BigDecimal(dzkAmt).divide(oilLiters_dzk, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ dzkDiscountPrice = dzkDiscountPrice.compareTo(oilPrice) ==1 ? oilPrice : dzkDiscountPrice;
|
|
|
+ payOrderResultInfo.setDzkDiscountPrice(dzkDiscountPrice.toString());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return payOrderResultInfo;
|