|
@@ -423,12 +423,14 @@ public class PayOrderController {
|
|
switch (discountTerm){
|
|
switch (discountTerm){
|
|
case "1": //按加油升数
|
|
case "1": //按加油升数
|
|
if(oilLiters.compareTo(discountAmt_B) ==1 || oilLiters.compareTo(discountAmt_B) ==0 ){
|
|
if(oilLiters.compareTo(discountAmt_B) ==1 || oilLiters.compareTo(discountAmt_B) ==0 ){
|
|
|
|
+ discountPrice = oilPrice.subtract(new BigDecimal(labelRuleDetailList.get(0).getDiscountLitersAmt()));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(labelRuleDetailList.get(0).getDiscountLitersAmt()));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(labelRuleDetailList.get(0).getDiscountLitersAmt()));
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case "2": //按加油金额
|
|
case "2": //按加油金额
|
|
if(receivableAmt.compareTo(discountAmt_B) ==1 || receivableAmt.compareTo(discountAmt_B) ==0 ){
|
|
if(receivableAmt.compareTo(discountAmt_B) ==1 || receivableAmt.compareTo(discountAmt_B) ==0 ){
|
|
|
|
+ discountPrice = oilPrice.subtract(new BigDecimal(labelRuleDetailList.get(0).getDiscountLitersAmt()));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(labelRuleDetailList.get(0).getDiscountLitersAmt()));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(labelRuleDetailList.get(0).getDiscountLitersAmt()));
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
@@ -439,7 +441,7 @@ public class PayOrderController {
|
|
}
|
|
}
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
|
|
|
+ //discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setDiscountPrice(discountPrice.toString());
|
|
payOrderResultInfo.setDiscountPrice(discountPrice.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
@@ -512,6 +514,7 @@ public class PayOrderController {
|
|
BigDecimal amt = new BigDecimal(0);
|
|
BigDecimal amt = new BigDecimal(0);
|
|
BigDecimal discountPrice = oilPrice;
|
|
BigDecimal discountPrice = oilPrice;
|
|
BigDecimal gradeDiscountAmt = new BigDecimal(0); //等级优惠金额
|
|
BigDecimal gradeDiscountAmt = new BigDecimal(0); //等级优惠金额
|
|
|
|
+ BigDecimal gradeDiscountPriceAmt = new BigDecimal(0); //等级优惠价格
|
|
BigDecimal dzkGradeDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需等级优惠金额值
|
|
BigDecimal dzkGradeDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需等级优惠金额值
|
|
BigDecimal dzkDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需营销优惠金额值
|
|
BigDecimal dzkDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需营销优惠金额值
|
|
|
|
|
|
@@ -523,6 +526,7 @@ public class PayOrderController {
|
|
//计算等级优惠
|
|
//计算等级优惠
|
|
PayOrderResultInfo payOrderResultInfoGrade = this.calculateGradeDiscount(params);
|
|
PayOrderResultInfo payOrderResultInfoGrade = this.calculateGradeDiscount(params);
|
|
gradeDiscountAmt = new BigDecimal(payOrderResultInfoGrade.getDiscountAmt());
|
|
gradeDiscountAmt = new BigDecimal(payOrderResultInfoGrade.getDiscountAmt());
|
|
|
|
+ gradeDiscountPriceAmt = new BigDecimal(payOrderResultInfoGrade.getGradeDiscountPriceAmt());
|
|
dzkGradeDiscountAmt = gradeDiscountAmt; //同时给电子卡赋值等级优惠金额
|
|
dzkGradeDiscountAmt = gradeDiscountAmt; //同时给电子卡赋值等级优惠金额
|
|
|
|
|
|
params.put("discountPlanType", "4");
|
|
params.put("discountPlanType", "4");
|
|
@@ -534,6 +538,7 @@ public class PayOrderController {
|
|
String discountTerm = m.get("discountTerm").toString();
|
|
String discountTerm = m.get("discountTerm").toString();
|
|
if(discountTerm.equals("1")){
|
|
if(discountTerm.equals("1")){
|
|
if(oilLiters.compareTo(discountAmt_b) ==1 || oilLiters.compareTo(discountAmt_b) ==0){
|
|
if(oilLiters.compareTo(discountAmt_b) ==1 || oilLiters.compareTo(discountAmt_b) ==0){
|
|
|
|
+ discountPrice = oilPrice.subtract(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
dzkDiscountAmt = discountAmt; //赋值电子卡优惠金额
|
|
dzkDiscountAmt = discountAmt; //赋值电子卡优惠金额
|
|
@@ -541,12 +546,14 @@ public class PayOrderController {
|
|
//该营销方案是否叠加等级优惠
|
|
//该营销方案是否叠加等级优惠
|
|
if(vipDiscountyPlus.equals("1")){
|
|
if(vipDiscountyPlus.equals("1")){
|
|
//如果叠加等级优惠
|
|
//如果叠加等级优惠
|
|
|
|
+ discountPrice = discountPrice.subtract(gradeDiscountPriceAmt);
|
|
discountAmt = discountAmt.add(gradeDiscountAmt);
|
|
discountAmt = discountAmt.add(gradeDiscountAmt);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}else if(discountTerm.equals("2")){
|
|
}else if(discountTerm.equals("2")){
|
|
if(receivableAmt.compareTo(discountAmt_b) ==1 || receivableAmt.compareTo(discountAmt_b) ==0){
|
|
if(receivableAmt.compareTo(discountAmt_b) ==1 || receivableAmt.compareTo(discountAmt_b) ==0){
|
|
|
|
+ discountPrice = oilPrice.subtract(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
dzkDiscountAmt = discountAmt; //赋值电子卡优惠金额
|
|
dzkDiscountAmt = discountAmt; //赋值电子卡优惠金额
|
|
@@ -554,6 +561,7 @@ public class PayOrderController {
|
|
//该营销方案是否叠加等级优惠
|
|
//该营销方案是否叠加等级优惠
|
|
if(vipDiscountyPlus.equals("1")){
|
|
if(vipDiscountyPlus.equals("1")){
|
|
//如果叠加等级优惠
|
|
//如果叠加等级优惠
|
|
|
|
+ discountPrice = discountPrice.subtract(gradeDiscountPriceAmt);
|
|
discountAmt = discountAmt.add(gradeDiscountAmt);
|
|
discountAmt = discountAmt.add(gradeDiscountAmt);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
@@ -563,7 +571,7 @@ public class PayOrderController {
|
|
}
|
|
}
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
|
|
|
+ //discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDzkDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDzkDiscountAmt(discountAmt.toString());
|
|
@@ -650,6 +658,7 @@ public class PayOrderController {
|
|
BigDecimal amt = new BigDecimal(0);
|
|
BigDecimal amt = new BigDecimal(0);
|
|
BigDecimal discountPrice = oilPrice;
|
|
BigDecimal discountPrice = oilPrice;
|
|
BigDecimal gradeDiscountAmt = new BigDecimal(0); //等级优惠金额
|
|
BigDecimal gradeDiscountAmt = new BigDecimal(0); //等级优惠金额
|
|
|
|
+ BigDecimal gradeDiscountPriceAmt = new BigDecimal("0");
|
|
BigDecimal dzkGradeDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需等级优惠金额值
|
|
BigDecimal dzkGradeDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需等级优惠金额值
|
|
BigDecimal dzkDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需营销优惠金额值
|
|
BigDecimal dzkDiscountAmt = new BigDecimal(0); //计算电子卡金额时所需营销优惠金额值
|
|
|
|
|
|
@@ -662,6 +671,7 @@ public class PayOrderController {
|
|
//计算等级优惠
|
|
//计算等级优惠
|
|
PayOrderResultInfo payOrderResultInfoGrade = this.calculateGradeDiscount(params);
|
|
PayOrderResultInfo payOrderResultInfoGrade = this.calculateGradeDiscount(params);
|
|
gradeDiscountAmt = new BigDecimal(payOrderResultInfoGrade.getDiscountAmt());
|
|
gradeDiscountAmt = new BigDecimal(payOrderResultInfoGrade.getDiscountAmt());
|
|
|
|
+ gradeDiscountPriceAmt = new BigDecimal(payOrderResultInfoGrade.getGradeDiscountPriceAmt());
|
|
dzkGradeDiscountAmt = gradeDiscountAmt; //同时给电子卡赋值等级优惠金额
|
|
dzkGradeDiscountAmt = gradeDiscountAmt; //同时给电子卡赋值等级优惠金额
|
|
|
|
|
|
params.put("discountPlanType", "3");
|
|
params.put("discountPlanType", "3");
|
|
@@ -674,6 +684,7 @@ public class PayOrderController {
|
|
switch (discountTerm){
|
|
switch (discountTerm){
|
|
case "1": //按加油升数
|
|
case "1": //按加油升数
|
|
if(oilLiters.compareTo(discountAmt_b) ==1 || oilLiters.compareTo(discountAmt_b) ==0){
|
|
if(oilLiters.compareTo(discountAmt_b) ==1 || oilLiters.compareTo(discountAmt_b) ==0){
|
|
|
|
+ discountPrice = oilPrice.subtract(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
//会员活动是否开启:1是;0否'
|
|
//会员活动是否开启:1是;0否'
|
|
@@ -687,6 +698,7 @@ public class PayOrderController {
|
|
//当前时间是否是活动会员日
|
|
//当前时间是否是活动会员日
|
|
boolean b = isActivityDay(discountType, discountDate);
|
|
boolean b = isActivityDay(discountType, discountDate);
|
|
if (b) {
|
|
if (b) {
|
|
|
|
+ discountPrice = oilPrice.subtract(new BigDecimal(discountActivityAmt));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(discountActivityAmt));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(discountActivityAmt));
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
@@ -697,6 +709,7 @@ public class PayOrderController {
|
|
break;
|
|
break;
|
|
case "2": //按加油金额
|
|
case "2": //按加油金额
|
|
if(receivableAmt.compareTo(discountAmt_b) ==1 || receivableAmt.compareTo(discountAmt_b) ==0){
|
|
if(receivableAmt.compareTo(discountAmt_b) ==1 || receivableAmt.compareTo(discountAmt_b) ==0){
|
|
|
|
+ discountPrice = oilPrice.subtract(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
//会员活动是否开启:1是;0否'
|
|
//会员活动是否开启:1是;0否'
|
|
@@ -710,6 +723,7 @@ public class PayOrderController {
|
|
//当前时间是否是活动会员日
|
|
//当前时间是否是活动会员日
|
|
boolean b = isActivityDay(discountType, discountDate);
|
|
boolean b = isActivityDay(discountType, discountDate);
|
|
if (b) {
|
|
if (b) {
|
|
|
|
+ discountPrice = oilPrice.subtract(new BigDecimal(discountActivityAmt));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(discountActivityAmt));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(discountActivityAmt));
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
@@ -725,12 +739,13 @@ public class PayOrderController {
|
|
//该营销方案是否叠加等级优惠
|
|
//该营销方案是否叠加等级优惠
|
|
if(vipDiscountyPlus.equals("1")){
|
|
if(vipDiscountyPlus.equals("1")){
|
|
//如果叠加等级优惠
|
|
//如果叠加等级优惠
|
|
|
|
+ discountPrice = discountPrice.subtract(gradeDiscountPriceAmt);
|
|
discountAmt = discountAmt.add(gradeDiscountAmt);
|
|
discountAmt = discountAmt.add(gradeDiscountAmt);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
|
|
|
+ //discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDzkDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDzkDiscountAmt(discountAmt.toString());
|
|
@@ -1093,6 +1108,7 @@ public class PayOrderController {
|
|
BigDecimal dzkDiscountAmt = discountAmt; //优惠金额
|
|
BigDecimal dzkDiscountAmt = discountAmt; //优惠金额
|
|
BigDecimal amt = new BigDecimal(0);
|
|
BigDecimal amt = new BigDecimal(0);
|
|
BigDecimal discountPrice = oilPrice;
|
|
BigDecimal discountPrice = oilPrice;
|
|
|
|
+ BigDecimal gradeDiscountPriceAmt = new BigDecimal("0"); //价格优惠金额
|
|
PayOrderResultInfo payOrderResultInfo = new PayOrderResultInfo();
|
|
PayOrderResultInfo payOrderResultInfo = new PayOrderResultInfo();
|
|
|
|
|
|
oilLiters = receivableAmt.divide(oilPrice,2, BigDecimal.ROUND_HALF_UP);
|
|
oilLiters = receivableAmt.divide(oilPrice,2, BigDecimal.ROUND_HALF_UP);
|
|
@@ -1113,6 +1129,8 @@ public class PayOrderController {
|
|
if(cList !=null && cList.size() >0){ //当前油站设置等级方案时
|
|
if(cList !=null && cList.size() >0){ //当前油站设置等级方案时
|
|
for(Map m : cList){
|
|
for(Map m : cList){
|
|
if(amtSum >= Double.valueOf(m.get("memberConditStart").toString())){
|
|
if(amtSum >= Double.valueOf(m.get("memberConditStart").toString())){
|
|
|
|
+ discountPrice = oilPrice.subtract(new BigDecimal(m.get("discountAmt").toString()));
|
|
|
|
+ gradeDiscountPriceAmt = new BigDecimal(m.get("discountAmt").toString());
|
|
discountAmt = oilLiters.multiply(new BigDecimal(m.get("discountAmt").toString()));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(m.get("discountAmt").toString()));
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
break;
|
|
break;
|
|
@@ -1123,13 +1141,18 @@ public class PayOrderController {
|
|
//当前客户所加油的订单不存在等级时
|
|
//当前客户所加油的订单不存在等级时
|
|
List<Map> customerGradeList = customerGradeServices.getCustomerGradeList(params); //升序查询 取第一条
|
|
List<Map> customerGradeList = customerGradeServices.getCustomerGradeList(params); //升序查询 取第一条
|
|
if(customerGradeList !=null && customerGradeList.size() >0){
|
|
if(customerGradeList !=null && customerGradeList.size() >0){
|
|
|
|
+ discountPrice = oilPrice.subtract(new BigDecimal(customerGradeList.get(0).get("discountAmt").toString()));
|
|
|
|
+ gradeDiscountPriceAmt = new BigDecimal(customerGradeList.get(0).get("discountAmt").toString());
|
|
discountAmt = oilLiters.multiply(new BigDecimal(customerGradeList.get(0).get("discountAmt").toString()));
|
|
discountAmt = oilLiters.multiply(new BigDecimal(customerGradeList.get(0).get("discountAmt").toString()));
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
|
|
|
+ //discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
|
+
|
|
|
|
+ payOrderResultInfo.setGradeDiscountPriceAmt(gradeDiscountPriceAmt.toString());
|
|
|
|
+
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDzkDiscountAmt(discountAmt.toString());
|
|
payOrderResultInfo.setDzkDiscountAmt(discountAmt.toString());
|