JK 3 роки тому
батько
коміт
d82550a842

+ 8 - 4
YijiaRestful/src/main/java/com/platform/yijia/controller/ElectronicMembershipCardController.java

@@ -440,11 +440,13 @@ public class ElectronicMembershipCardController {
                                         payOrder.setDiscountAmt(Double.valueOf(discountAmtNew.toString()));
                                         break;
                                     case "2":
-                                        amtNew = new BigDecimal(dzkAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                                        BigDecimal divide = new BigDecimal(dzkAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                                        amtNew = new BigDecimal(dzkAmt).subtract(divide);
+                                        discountAmtNew =discountAmtNew.add(divide);
+                                        amtNew = amtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
                                         payOrder.setAmt(Double.valueOf(amtNew.toString()));
                                         payOrder.setDzkAmt(Double.valueOf(amtNew.toString()));
-                                        BigDecimal subtract1 = new BigDecimal(dzkAmt).subtract(amtNew);
-                                        discountAmtNew =subtract1.add(new BigDecimal(discountAmt));
+                                        discountAmtNew = discountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
                                         payOrder.setDiscountAmt(Double.valueOf(discountAmtNew.toString()));
                                         break;
                                 }
@@ -459,9 +461,11 @@ public class ElectronicMembershipCardController {
                                         break;
                                     case "2":
                                         amtNew = new BigDecimal(receivableAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                                        discountAmtNew = new BigDecimal(receivableAmt).subtract(amtNew);
+                                        amtNew = amtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
                                         payOrder.setAmt(Double.valueOf(amtNew.toString()));
                                         payOrder.setDzkAmt(Double.valueOf(amtNew.toString()));
-                                        discountAmtNew = new BigDecimal(receivableAmt).subtract(amtNew);
+                                        discountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
                                         payOrder.setDiscountAmt(Double.valueOf(discountAmtNew.toString()));
                                         break;
                                 }

+ 4 - 3
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -211,9 +211,10 @@ public class PayController {
                                             discountAmtNew = new BigDecimal(discountAmt.toString()).add(couponAmt);
                                             break;
                                         case "2":
-                                            amtNew = new BigDecimal(amt.toString()).multiply(couponAmt);
-                                            BigDecimal divide = new BigDecimal("100").subtract(couponAmt).divide(new BigDecimal("100"));
-                                            discountAmtNew = new BigDecimal(amt.toString()).multiply(divide);
+                                            //amtNew;
+                                            BigDecimal divide = new BigDecimal(amt.toString()).multiply(couponAmt).divide(new BigDecimal("100"));
+                                            discountAmtNew = discountAmtNew.add(divide);
+                                            amtNew = amtNew.subtract(divide);
                                             break;
                                     }
 

+ 94 - 7
YijiaRestful/src/main/java/com/platform/yijia/controller/PayOrderController.java

@@ -541,6 +541,7 @@ public class PayOrderController {
         String oilName = params.get("oilName").toString();
 
         Oil oil = new Oil();
+        oil.setDictType("oil");
         oil.setOilName(oilName);
         Oil oilInfo = sysDictDataService.selectOilType(oil);
         payOrderResultInfo.setCardOilsType(oilInfo.getOilsType());
@@ -1583,6 +1584,17 @@ public class PayOrderController {
                         discountAmtNew = discountAmtNew.add(couponAmt);
                         couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
                         couponReckonAmt.setAmt(amtNew.toString());
+                    }else {
+                        amtNew = new BigDecimal(receivableAmt).subtract(couponAmt);
+                        amtNew = amtNew.signum() == -1 ? new BigDecimal("0.01") : amtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
+                        if(!oilLiters.equals("0.00")){
+                            discountPriceNew = amtNew.divide(new BigDecimal(oilLiters), 2, BigDecimal.ROUND_HALF_UP);
+                        }
+                        couponReckonAmt.setDiscountPrice(discountPriceNew.toString());
+                        discountAmtNew = new BigDecimal("0.00");
+                        discountAmtNew = discountAmtNew.add(couponAmt);
+                        couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
+                        couponReckonAmt.setAmt(amtNew.toString());
                     }
                 }
                 if(p.getAllDiscountType().equals("2")){
@@ -1599,6 +1611,19 @@ public class PayOrderController {
                         couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
                         couponReckonAmt.setDiscountPrice(discountPriceNew.toString());
                         couponReckonAmt.setAmt(amtNew.toString());
+                    }else {
+                        //优惠券后的优惠金额
+                        amtNew = new BigDecimal(receivableAmt).subtract(couponAmt);
+                        amtNew = amtNew.signum() == -1 ? new BigDecimal("0.01") : amtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
+                        //优惠券后的优惠价格
+                        if(!oilLiters.equals("0.00")){
+                            discountPriceNew = amtNew.divide(new BigDecimal(oilLiters), 2, BigDecimal.ROUND_HALF_UP);
+                        }
+                        discountAmtNew = new BigDecimal("0.00");
+                        discountAmtNew = discountAmtNew.add(couponAmt);
+                        couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
+                        couponReckonAmt.setDiscountPrice(discountPriceNew.toString());
+                        couponReckonAmt.setAmt(amtNew.toString());
                     }
                 }
                 if(p.getCardEnabledFlag().equals("1")){
@@ -1613,6 +1638,18 @@ public class PayOrderController {
                             dzkDiscountPriceNew = dzkAmtNew.divide(new BigDecimal(oilLiters), 2 ,BigDecimal.ROUND_HALF_UP);
                         }
                         couponReckonAmt.setDzkDiscountPrice(dzkDiscountPriceNew.toString());
+                    }else {
+                        //与电子卡共享
+                        dzkAmtNew = new BigDecimal(receivableAmt).subtract(couponAmt);
+                        dzkAmtNew = dzkAmtNew.signum() == -1 ? new BigDecimal("0.01") : dzkAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        dzkDiscountAmtNew = new BigDecimal("0.00");
+                        dzkDiscountAmtNew = dzkDiscountAmtNew.add(couponAmt);
+                        couponReckonAmt.setDzkDiscountAmt(dzkDiscountAmtNew.toString());
+                        couponReckonAmt.setDzkAmt(dzkAmtNew.toString());
+                        if(!oilLiters.equals("0.00")){
+                            dzkDiscountPriceNew = dzkAmtNew.divide(new BigDecimal(oilLiters), 2 ,BigDecimal.ROUND_HALF_UP);
+                        }
+                        couponReckonAmt.setDzkDiscountPrice(dzkDiscountPriceNew.toString());
                     }
                 }
                 break;
@@ -1621,29 +1658,62 @@ public class PayOrderController {
                     //表示等级
                     if(uc.getIsGradeFlag().equals("1")){
                         //表示与等级共享
-                        amtNew = new BigDecimal(amt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        //优惠券折扣金额
+                        BigDecimal zheKouAmt = new BigDecimal(amt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        discountAmtNew = discountAmtNew.add(zheKouAmt);
+                        amtNew = amtNew.subtract(zheKouAmt);
                         amtNew = amtNew.signum() == -1 ? new BigDecimal("0.01") : amtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
                         if(!oilLiters.equals("0.00")){
                             discountPriceNew = amtNew.divide(new BigDecimal(oilLiters), 2, BigDecimal.ROUND_HALF_UP);
                         }
-                        discountAmtNew = new BigDecimal(receivableAmt).subtract(amtNew);
+                        discountAmtNew = discountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
+                        couponReckonAmt.setDiscountPrice(discountPriceNew.toString());
+                        couponReckonAmt.setAmt(amtNew.toString());
+                    }else {
+                        //优惠券折扣金额
+                        BigDecimal zheKouAmt = new BigDecimal(receivableAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        discountAmtNew = new BigDecimal("0.00");
+                        discountAmtNew = discountAmtNew.add(zheKouAmt);
+                        amtNew = amtNew.subtract(discountAmtNew);
+                        amtNew = amtNew.signum() == -1 ? new BigDecimal("0.01") : amtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
+                        if(!oilLiters.equals("0.00")){
+                            discountPriceNew = amtNew.divide(new BigDecimal(oilLiters), 2, BigDecimal.ROUND_HALF_UP);
+                        }
+                        discountAmtNew = discountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
                         couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
                         couponReckonAmt.setDiscountPrice(discountPriceNew.toString());
                         couponReckonAmt.setAmt(amtNew.toString());
-
                     }
                 }
                 if(p.getAllDiscountType().equals("2")){
                     //表示营销
                     if(uc.getIsMarketFlag().equals("1")){
                         //优惠券后的优惠金额
-                        amtNew = new BigDecimal(amt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        BigDecimal zheKouAmt = new BigDecimal(amt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        discountAmtNew = discountAmtNew.add(zheKouAmt);
+                        amtNew = amtNew.subtract(zheKouAmt);
+                        amtNew = amtNew.signum() == -1 ? new BigDecimal("0.01") : amtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
+                        //优惠券后的优惠价格
+                        if(!oilLiters.equals("0.00")){
+                            discountPriceNew = amtNew.divide(new BigDecimal(oilLiters), 2, BigDecimal.ROUND_HALF_UP);
+                        }
+                        discountAmtNew = discountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
+                        couponReckonAmt.setDiscountPrice(discountPriceNew.toString());
+                        couponReckonAmt.setAmt(amtNew.toString());
+                    }else {
+                        //优惠券后的优惠金额
+                        BigDecimal zheKouAmt = new BigDecimal(receivableAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        discountAmtNew = new BigDecimal("0.00");
+                        discountAmtNew = discountAmtNew.add(zheKouAmt);
+                        amtNew = amtNew.subtract(discountAmtNew);
                         amtNew = amtNew.signum() == -1 ? new BigDecimal("0.01") : amtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
                         //优惠券后的优惠价格
                         if(!oilLiters.equals("0.00")){
                             discountPriceNew = amtNew.divide(new BigDecimal(oilLiters), 2, BigDecimal.ROUND_HALF_UP);
                         }
-                        discountAmtNew = new BigDecimal(receivableAmt).subtract(amtNew);
+                        discountAmtNew = discountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
                         couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
                         couponReckonAmt.setDiscountPrice(discountPriceNew.toString());
                         couponReckonAmt.setAmt(amtNew.toString());
@@ -1652,9 +1722,26 @@ public class PayOrderController {
                 if(p.getCardEnabledFlag().equals("1")){
                     if(uc.getIsCardFlag().equals("1")){
                         //与电子卡共享
-                        dzkAmtNew = new BigDecimal(dzkAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        BigDecimal zheKouDzkAmt = new BigDecimal(dzkAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        dzkDiscountAmtNew = dzkDiscountAmtNew.add(zheKouDzkAmt);
+                        //System.out.println("电子卡优惠金额:"+dzkDiscountAmtNew.toString());
+                        dzkAmtNew = dzkAmtNew.subtract(zheKouDzkAmt);
+                        dzkAmtNew = dzkAmtNew.signum() == -1 ? new BigDecimal("0.01") : dzkAmtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
+                        dzkDiscountAmtNew = dzkDiscountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        couponReckonAmt.setDzkDiscountAmt(dzkDiscountAmtNew.toString());
+                        couponReckonAmt.setDzkAmt(dzkAmtNew.toString());
+                        if(!oilLiters.equals("0.00")){
+                            dzkDiscountPriceNew = dzkAmtNew.divide(new BigDecimal(oilLiters), 2 ,BigDecimal.ROUND_HALF_UP);
+                        }
+                        couponReckonAmt.setDzkDiscountPrice(dzkDiscountPriceNew.toString());
+                    }else {
+                        BigDecimal zheKouDzkAmt = new BigDecimal(receivableAmt).multiply(couponAmt).divide(new BigDecimal("100"));
+                        dzkDiscountAmtNew = new BigDecimal("0.00");
+                        dzkDiscountAmtNew = dzkDiscountAmtNew.add(zheKouDzkAmt);
+                        //System.out.println("电子卡优惠金额:"+dzkDiscountAmtNew.toString());
+                        dzkAmtNew = dzkAmtNew.subtract(dzkDiscountAmtNew);
                         dzkAmtNew = dzkAmtNew.signum() == -1 ? new BigDecimal("0.01") : dzkAmtNew.setScale(2,BigDecimal.ROUND_HALF_UP);
-                        dzkDiscountAmtNew = new BigDecimal(receivableAmt).subtract(dzkAmtNew);
+                        dzkDiscountAmtNew = dzkDiscountAmtNew.setScale(2, BigDecimal.ROUND_HALF_UP);
                         couponReckonAmt.setDzkDiscountAmt(dzkDiscountAmtNew.toString());
                         couponReckonAmt.setDzkAmt(dzkAmtNew.toString());
                         if(!oilLiters.equals("0.00")){