Bladeren bron

优惠价格修改

jk-GitHub-coder 3 jaren geleden
bovenliggende
commit
327530d27f

+ 27 - 4
YijiaRestful/src/main/java/com/platform/yijia/controller/PayOrderController.java

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

+ 1 - 0
YijiaRestful/src/main/java/com/platform/yijia/pojo/PayOrderResultInfo.java

@@ -10,6 +10,7 @@ public class PayOrderResultInfo {
 
     private String ordNo;           //优惠金额
     private String discountAmt;     //优惠金额
+    private String gradeDiscountPriceAmt;    //价格优惠金额
     private String dzkDiscountAmt;     //优惠金额
     private String receivableAmt;   //应收金额
     private String amt;             //实收金额