jk-GitHub-coder 4 gadi atpakaļ
vecāks
revīzija
1000eb4a2d

+ 134 - 308
YijiaRestful/src/main/java/com/platform/yijia/controller/PayOrderController.java

@@ -448,6 +448,13 @@ public class PayOrderController {
         return resultMap;
     }
 
+    /*
+     * 修订优惠计算: 2021年4月20日15:31:30
+     * 修订内容 :
+     *    修改为目前只有三种优惠:等级优惠根据立减 满减 独立直降 是否启用 等级直降来确定是否使用等级直降
+     *    优惠为 1 是:表示不走优惠,没有优惠只走等级直降的优惠
+     *
+     */
     public Map<String ,Object> calculateAmtNew(PayOrderRequest payOrderRequest){
         Map<String ,Object> resultMap = new HashMap<>();
         if(payOrderRequest.getReceivableAmt() !=null){  //应收金额
@@ -477,12 +484,14 @@ public class PayOrderController {
             Map<String ,Object> params = new HashMap<String, Object>();
             params.put("stationId", stationId);
             params.put("oilName", oilName);
+            params.put("receivableAmt", receivableAmt);
+            params.put("oilPrice", oilPrice);
+            params.put("mobilePhone", mobilePhone);
+            params.put("minaOpenid", openId);
             BigDecimal receivableAmt_b = new BigDecimal(receivableAmt); //传入的应收金额
             switch (stationDiscountWay){
                 case "1":       //1.等级直降
                     //查询等级直降的优惠方式
-                    params.put("mobilePhone", mobilePhone);
-                    params.put("minaOpenid", openId);
                     //查询客户等级信息
                     List<Map<String, Object>> customerGradeInfo = customerGradeServices.getCustomerGradeInfo(params);
                     if(customerGradeInfo != null && customerGradeInfo.size() >0){   //已存在客户等级信息
@@ -528,6 +537,7 @@ public class PayOrderController {
                     //有优惠规则
                     if(customerMarkertPlanList_1 !=null && customerMarkertPlanList_1.size() >0){
                         boolean flag = true;
+                        String isAddDiscount="0";
                         for (Map m : customerMarkertPlanList_1){
                             //如果当前应收金额大于条件金额
                             BigDecimal discountAmt_b = new BigDecimal(m.get("discountAmt").toString());   //条件金额
@@ -537,7 +547,16 @@ public class PayOrderController {
                                 discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
                                 amt = receivableAmt_b.subtract(discountAmt);   //实收金额
                                 oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP);   //加油升数
-                                discountPrice = amt.divide(oilLiters);        //优惠价格
+                                discountPrice = amt.divide(oilLiters,2,BigDecimal.ROUND_HALF_UP);        //优惠价格
+                                //是否共享会员优惠叠加
+                                String vipDiscountyPlus = m.get("vipDiscountyPlus").toString();
+                                if(vipDiscountyPlus.equals("1")){
+                                    isAddDiscount ="1";
+                                    Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                                    discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
+                                    amt = amt.subtract(discountAmt);
+                                    discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
+                                }
                                 resultMap.put("discountAmt", discountAmt.doubleValue());
                                 resultMap.put("amt", amt.doubleValue());
                                 resultMap.put("oilLiters", oilLiters.doubleValue());
@@ -546,20 +565,20 @@ public class PayOrderController {
                                 break;
                             }
                         }
-                        if(flag){
-                            resultMap.put("discountAmt", 0);
-                            resultMap.put("amt", receivableAmt.doubleValue());
-                            oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP);
-                            resultMap.put("oilLiters", oilLiters.doubleValue());
-                            resultMap.put("discountPrice", oilPrice);
+                        if(flag && isAddDiscount.equals("1")){
+                            Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                            resultMap.put("discountAmt", map.get("discountAmt").toString());
+                            resultMap.put("amt", map.get("amt").toString());
+                            resultMap.put("oilLiters", map.get("oilLiters").toString());
+                            resultMap.put("discountPrice", map.get("discountPrice").toString());
                         }
                     }else {
                         //没有优惠规则
-                        resultMap.put("discountAmt", 0);
-                        resultMap.put("amt", receivableAmt.doubleValue());
-                        oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);
-                        resultMap.put("oilLiters", oilLiters.doubleValue());
-                        resultMap.put("discountPrice", oilPrice);
+                        Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                        resultMap.put("discountAmt", map.get("discountAmt").toString());
+                        resultMap.put("amt", map.get("amt").toString());
+                        resultMap.put("oilLiters", map.get("oilLiters").toString());
+                        resultMap.put("discountPrice", map.get("discountPrice").toString());
                     }
                     break;
                 case "3":       //3.立减
@@ -568,15 +587,25 @@ public class PayOrderController {
                     List<Map> customerMarkertPlanList_2 = customerGradeServices.getCustomerMarkertPlanList(params);
                     if(customerMarkertPlanList_2 !=null && customerMarkertPlanList_2.size() >0){
                         boolean flag = true;
+                        String isAddDiscount="0";
                         for (Map m : customerMarkertPlanList_2){
                             //如果当前应收金额大于条件金额
                             BigDecimal discountAmt_b = new BigDecimal(m.get("discountAmt").toString());   //条件金额
                             if(receivableAmt_b.compareTo(discountAmt_b) ==1 || receivableAmt_b.compareTo(discountAmt_b) ==0){
-                                BigDecimal gasoilDiscountAmt_b = new BigDecimal(m.get("gasoilDiscountAmt").toString());   //满多少优惠多少的金额
+                                BigDecimal gasoilDiscountAmt_b = new BigDecimal(m.get("gasoilDiscountAmt").toString());   //满多少优惠多少的金额
                                 discountAmt = gasoilDiscountAmt_b;  //优惠金额
                                 amt = receivableAmt_b.subtract(gasoilDiscountAmt_b);   //实收金额
                                 oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);   //加油升数
-                                discountPrice = amt.divide(oilLiters);        //优惠价格
+                                discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);        //优惠价格
+                                //是否共享会员优惠叠加
+                                String vipDiscountyPlus = m.get("vipDiscountyPlus").toString();
+                                if(vipDiscountyPlus.equals("1")){
+                                    isAddDiscount ="1";
+                                    Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                                    discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
+                                    amt = amt.subtract(discountAmt);
+                                    discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
+                                }
                                 resultMap.put("discountAmt", discountAmt.doubleValue());
                                 resultMap.put("amt", amt.doubleValue());
                                 resultMap.put("oilLiters", oilLiters.doubleValue());
@@ -585,20 +614,20 @@ public class PayOrderController {
                                 break;
                             }
                         }
-                        if(flag){   //用户加油金额不符合优惠条件
-                            resultMap.put("discountAmt", 0);
-                            resultMap.put("amt", receivableAmt.doubleValue());
-                            oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);
-                            resultMap.put("oilLiters", oilLiters.doubleValue());
-                            resultMap.put("discountPrice", oilPrice);
+                        if(flag && isAddDiscount.equals("1")){   //用户加油金额不符合优惠条件
+                            Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                            resultMap.put("discountAmt", map.get("discountAmt").toString());
+                            resultMap.put("amt", map.get("amt").toString());
+                            resultMap.put("oilLiters", map.get("oilLiters").toString());
+                            resultMap.put("discountPrice", map.get("discountPrice").toString());
                         }
                     }else {
                         //没有优惠规则
-                        resultMap.put("discountAmt", 0);
-                        resultMap.put("amt", receivableAmt.doubleValue());
-                        oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);
-                        resultMap.put("oilLiters", oilLiters.doubleValue());
-                        resultMap.put("discountPrice", oilPrice);
+                        Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                        resultMap.put("discountAmt", map.get("discountAmt").toString());
+                        resultMap.put("amt", map.get("amt").toString());
+                        resultMap.put("oilLiters", map.get("oilLiters").toString());
+                        resultMap.put("discountPrice", map.get("discountPrice").toString());
                     }
                     break;
                 case "4":       //4.独立直降
@@ -607,6 +636,7 @@ public class PayOrderController {
                     List<Map> customerMarkertPlanList_3 = customerGradeServices.getCustomerMarkertPlanList(params);
                     if(customerMarkertPlanList_3 !=null && customerMarkertPlanList_3.size() >0){
                         boolean flag= true;
+                        String isAddDiscount="0";
                         for(Map m : customerMarkertPlanList_3){
                             BigDecimal discountAmt_b = new BigDecimal(m.get("discountAmt").toString());   //条件金额
                             BigDecimal gasoilDiscountAmt_b = new BigDecimal(m.get("gasoilDiscountAmt").toString());
@@ -618,6 +648,15 @@ public class PayOrderController {
                                     discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
                                     amt = receivableAmt_b.subtract(discountAmt);
                                     discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);        //优惠价格
+                                    //是否共享会员优惠叠加
+                                    String vipDiscountyPlus = m.get("vipDiscountyPlus").toString();
+                                    if(vipDiscountyPlus.equals("1")){
+                                        isAddDiscount ="1";
+                                        Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                                        discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
+                                        amt = amt.subtract(discountAmt);
+                                        discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
+                                    }
                                     resultMap.put("discountAmt", discountAmt.doubleValue());
                                     resultMap.put("amt", amt.doubleValue());
                                     resultMap.put("oilLiters", oilLiters.doubleValue());
@@ -631,6 +670,15 @@ public class PayOrderController {
                                     discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
                                     amt = receivableAmt_b.subtract(discountAmt);
                                     discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);        //优惠价格
+                                    //是否共享会员优惠叠加
+                                    String vipDiscountyPlus = m.get("vipDiscountyPlus").toString();
+                                    if(vipDiscountyPlus.equals("1")){
+                                        isAddDiscount ="1";
+                                        Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                                        discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
+                                        amt = amt.subtract(discountAmt);
+                                        discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
+                                    }
                                     resultMap.put("discountAmt", discountAmt.doubleValue());
                                     resultMap.put("amt", amt.doubleValue());
                                     resultMap.put("oilLiters", oilLiters.doubleValue());
@@ -640,298 +688,76 @@ public class PayOrderController {
                                 }
                             }
                         }
-                        if(flag){
-                            resultMap.put("discountAmt", 0);
-                            resultMap.put("amt", receivableAmt.doubleValue());
-                            oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);
-                            resultMap.put("oilLiters", oilLiters.doubleValue());
-                            resultMap.put("discountPrice", oilPrice);
+                        if(flag && isAddDiscount.equals("1")){
+                            Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                            resultMap.put("discountAmt", map.get("discountAmt").toString());
+                            resultMap.put("amt", map.get("amt").toString());
+                            resultMap.put("oilLiters", map.get("oilLiters").toString());
+                            resultMap.put("discountPrice", map.get("discountPrice").toString());
                         }
                     }else {
                         //没有优惠规则
-                        resultMap.put("discountAmt", 0);
-                        resultMap.put("amt", receivableAmt.doubleValue());
-                        oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);
-                        resultMap.put("oilLiters", oilLiters.doubleValue());
-                        resultMap.put("discountPrice", oilPrice);
+                        Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
+                        resultMap.put("discountAmt", map.get("discountAmt").toString());
+                        resultMap.put("amt", map.get("amt").toString());
+                        resultMap.put("oilLiters", map.get("oilLiters").toString());
+                        resultMap.put("discountPrice", map.get("discountPrice").toString());
                     }
                     break;
             }
+        }
+        return resultMap;
+    }
 
-            //resultData = ResultData.success(resultMap);
+    //计算等级直降
+    public Map<String, Object> calcuteDengJiZhiJiang(Map params){
+        Double receivableAmt = Double.valueOf(params.get("receivableAmt").toString());
+        Map<String, Object> resultMap = new HashMap();
+        BigDecimal oilLiters = null;
+        BigDecimal discountAmt =null;
+        BigDecimal discountPrice = null;
+        BigDecimal amt = null;
+        BigDecimal receivableAmt_b = new BigDecimal(receivableAmt); //传入的应收金额
+        String oilPrice = params.get("oilPrice").toString();
+        List<Map<String, Object>> customerGradeInfo = customerGradeServices.getCustomerGradeInfo(params);
+        if(customerGradeInfo != null && customerGradeInfo.size() >0){   //已存在客户等级信息
+            //使用客户已存在的等级计算优惠
+            oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP);
+            discountAmt = oilLiters.multiply(new BigDecimal(customerGradeInfo.get(0).get("gasoilDiscountLitre").toString()));
+            discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+            amt = receivableAmt_b.subtract(discountAmt);
+            discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
+            resultMap.put("discountAmt", discountAmt.doubleValue());
+            resultMap.put("amt", amt.doubleValue());
+            resultMap.put("oilLiters", oilLiters.doubleValue());
+            resultMap.put("discountPrice", discountPrice.doubleValue());
+        }else {
+            //不存在客户等级信息时,查询油站的客户等级直降优惠(查询结果根据会员成长值条件做升序查询)
+            List<Map> customerGradeList = customerGradeServices.getCustomerGradeList(params);
+            //如果存在
+            if(customerGradeList !=null && customerGradeList.size() >0){
+                //用户第一次购买 取等级最低初始会员的优惠条件计算
+                oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);   //加油升数
+                discountAmt = oilLiters.multiply(new BigDecimal(customerGradeList.get(0).get("gasoilDiscountLitre").toString()));
+                discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+                amt = receivableAmt_b.subtract(discountAmt);
+                discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
+                resultMap.put("discountAmt", discountAmt.doubleValue());
+                resultMap.put("amt", amt.doubleValue());
+                resultMap.put("oilLiters", oilLiters.doubleValue());
+                resultMap.put("discountPrice", discountPrice.doubleValue());
+            }else {
+                //不存在
+                resultMap.put("discountAmt", 0);
+                resultMap.put("amt", receivableAmt.doubleValue());
+                oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_HALF_UP);
+                resultMap.put("oilLiters", oilLiters.doubleValue());
+                resultMap.put("discountPrice", oilPrice);
+            }
         }
         return resultMap;
     }
 
-    /**
-     * 计算消费生成积分
-     */
-//    public void calculateIntegralAndPushIntegral(CalculateIntegral calculateIntegral, CustomerManage customerManage){
-//        int integral =0;
-//        //获取该油站的优惠方式
-//        String discountPlanType = stationService.getStationDiscountWay(calculateIntegral.getStationId().toString());
-//        IntegralRule integralRule = new IntegralRule();
-//        integralRule.setStationId(calculateIntegral.getStationId());
-//        integralRule.setEmptyDate(new Date());
-//        integralRule.setOilName(calculateIntegral.getOilName());
-//        integralRule.setOilType(calculateIntegral.getOilType());
-//        //获取该油站的积分规则
-//        List<IntegralRule> integralRuleList = integralRuleService.getIntegralRule(integralRule);
-//        if(integralRuleList !=null && integralRuleList.size() >0){
-//            List<IntegralRuleDetail> integralRuleDetailList = integralRuleList.get(0).getIntegralRuleDetailList();
-//            String currentTime = null;
-//            String datePickerTime=null;         //活动时间
-//            String[] datePickerTimeArray ={};
-//            String integralActivity = integralRuleList.get(0).getIntegralActivity();
-//            String integralProportion =null;
-//            if(integralActivity.equals("1")){
-//                datePickerTime = integralRuleList.get(0).getDatePickerTime();
-//                integralProportion = integralRuleList.get(0).getIntegralProportion();
-//                if(datePickerTime.contains(",")){
-//                    datePickerTimeArray = datePickerTime.split(",");
-//                }else {
-//                    datePickerTimeArray= new String[1];
-//                    datePickerTimeArray[0] = datePickerTime;
-//                }
-//            }
-//            if(integralRuleDetailList !=null && integralRuleDetailList.size() >0){
-//                Calendar calendar = Calendar.getInstance();
-//                calendar.setTime(new Date());   //获取当前时间
-//                for (IntegralRuleDetail integralRuleDetail : integralRuleDetailList){
-//                    if(integralRuleDetail.getOilType().equals("1")){    //油品
-//                        if (integralRuleDetail.getRuleType().equals("1")){  //按照实收金额
-//                            if(calculateIntegral.getAmt().compareTo(integralRuleDetail.getRuleTerms()) == 1 || calculateIntegral.getAmt().compareTo(integralRuleDetail.getRuleTerms()) == 0){
-//                                BigDecimal divide = null;
-//                                BigDecimal multiply = null;
-//                                //判断油站配置的优惠类型
-//                                if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
-//                                    divide = calculateIntegral.getAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                                }else {
-//                                    divide = calculateIntegral.getAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                                }
-//                                if(integralActivity.equals("1") &&  datePickerTimeArray !=null && integralProportion !=null){
-//                                    String datePicker = integralRuleList.get(0).getDatePicker();
-//                                    switch (datePicker){
-//                                        case "1":   //  1.按周来
-//                                            int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-//                                            day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-//                                            currentTime = String.valueOf(day_Week);
-//                                            break;
-//                                        case "2":   //  2.每月的多少号
-//                                            int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-//                                            day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-//                                            currentTime = String.valueOf(day_month); //当前时间
-//                                            break;
-//                                        case "3":   //  3.固定日期
-//                                            currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
-//                                            break;
-//                                    }
-//                                    for (String s : datePickerTimeArray){
-//                                        if(s.equals(currentTime)){
-//                                            multiply = multiply.multiply(new BigDecimal(integralProportion));
-//                                            break;
-//                                        }
-//                                    }
-//                                }
-//                                integral =multiply.intValue();
-//                                break;
-//                            }
-//                        }else if (integralRuleDetail.getRuleType().equals("2")){    //按应收金额
-//                            if(calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==1 || calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==0){
-//                                BigDecimal divide = null;
-//                                BigDecimal multiply = null;
-//                                //判断油站配置的优惠类型
-//                                if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
-//                                    divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                                }else {
-//                                    divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                                }
-//                                if(integralActivity.equals("1") &&  datePickerTimeArray !=null && integralProportion !=null){
-//                                    String datePicker = integralRuleList.get(0).getDatePicker();
-//                                    switch (datePicker){
-//                                        case "1":   //  1.按周来
-//                                            int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-//                                            day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-//                                            currentTime = String.valueOf(day_Week);
-//                                            break;
-//                                        case "2":   //  2.每月的多少号
-//                                            int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-//                                            day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-//                                            currentTime = String.valueOf(day_month); //当前时间
-//                                            break;
-//                                        case "3":   //  3.固定日期
-//                                            currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
-//                                            break;
-//                                    }
-//                                    for (String s : datePickerTimeArray){
-//                                        if(s.equals(currentTime)){
-//                                            multiply = multiply.multiply(new BigDecimal(integralProportion));
-//                                            break;
-//                                        }
-//                                    }
-//                                }
-//                                integral = multiply.intValue();
-//                                break;
-//                            }
-//                        }else if (integralRuleDetail.getRuleType().equals("3")){    //按照加油升数
-//                            if(calculateIntegral.getOilLiters().compareTo(integralRuleDetail.getRuleTerms()) ==1 || calculateIntegral.getOilLiters().compareTo(integralRuleDetail.getRuleTerms()) ==0){
-//                                BigDecimal divide = null;
-//                                BigDecimal multiply = null;
-//                                //判断油站配置的优惠类型
-//                                if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
-//                                    divide = calculateIntegral.getOilLiters().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                                }else {
-//                                    divide = calculateIntegral.getOilLiters().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                                }
-//                                if(integralActivity.equals("1") &&  datePickerTimeArray !=null && integralProportion !=null){
-//                                    String datePicker = integralRuleList.get(0).getDatePicker();
-//                                    switch (datePicker){
-//                                        case "1":   //  1.按周来
-//                                            int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-//                                            day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-//                                            currentTime = String.valueOf(day_Week);
-//                                            break;
-//                                        case "2":   //  2.每月的多少号
-//                                            int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-//                                            day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-//                                            currentTime = String.valueOf(day_month); //当前时间
-//                                            break;
-//                                        case "3":   //  3.固定日期
-//                                            currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
-//                                            break;
-//                                    }
-//                                    for (String s : datePickerTimeArray){
-//                                        if(s.equals(currentTime)){
-//                                            multiply = multiply.multiply(new BigDecimal(integralProportion));
-//                                            break;
-//                                        }
-//                                    }
-//                                }
-//                                integral =multiply.intValue();
-//                                break;
-//                            }
-//                        }
-//                    }else if (integralRuleDetail.getOilType().equals("2")){     //非油品
-//                        if (calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==1 || calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==0){
-//                            BigDecimal divide = null;
-//                            BigDecimal multiply = null;
-//                            //判断油站配置的优惠类型
-//                            if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
-//                                divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                            }else {
-//                                divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-//                                multiply = divide.multiply(integralRuleDetail.getIntegral());
-//                            }
-//                            if(integralActivity.equals("1") &&  datePickerTimeArray !=null && integralProportion !=null){
-//                                String datePicker = integralRuleList.get(0).getDatePicker();
-//                                switch (datePicker){
-//                                    case "1":   //  1.按周来
-//                                        int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-//                                        day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-//                                        currentTime = String.valueOf(day_Week);
-//                                        break;
-//                                    case "2":   //  2.每月的多少号
-//                                        int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-//                                        day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-//                                        currentTime = String.valueOf(day_month); //当前时间
-//                                        break;
-//                                    case "3":   //  3.固定日期
-//                                        currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
-//                                        break;
-//                                }
-//                                for (String s : datePickerTimeArray){
-//                                    if(s.equals(currentTime)){
-//                                        multiply = multiply.multiply(new BigDecimal(integralProportion));
-//                                        break;
-//                                    }
-//                                }
-//                            }
-//                            integral = multiply.intValue();
-//                            break;
-//                        }
-//                    }
-//                }
-//            }
-//            calculateIntegral.setIntegral(integral);
-//            this.pushIntegral(calculateIntegral);
-//        }
-//    }
-//
-//    /*
-//     * 公众号推送积分
-//     * @param stationId 油站ID
-//     * @param integral  本次所得积分
-//     * @param openId    小程序用户openID
-//     */
-//    public void pushIntegral(CalculateIntegral calculateIntegral){
-//        Integer stationId = calculateIntegral.getStationId();
-//        int integral = calculateIntegral.getIntegral();
-//        String openId = calculateIntegral.getOpenId();
-//        String unionId = calculateIntegral.getUnionId();
-//        String gzhAppId ="";
-//        String gzhAppSecret ="";
-//        String stationName = "";        //油站名称
-//        BigDecimal surplusIntegral=null;
-//        String customerName =null;
-//        if(StringUtils.isNotBlank(openId)){
-//            Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
-//            if(m !=null && m.containsKey("stationName") && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
-//                stationName = m.get("stationName");
-//                gzhAppId = m.get("gzhAppId");
-//                gzhAppSecret = m.get("gzhAppSecret");
-//            }
-//            CustomerPoints customerPoints = new CustomerPoints();
-//            customerPoints.setStationId(stationId);
-//            customerPoints.setMinaOpenId(openId);
-//            customerPoints.setUnionId(unionId);
-//            CustomerPoints customerPointsInfo = customerPointsService.getCustomerPointsInfoByUnionId(customerPoints);
-//            if(customerPointsInfo !=null){
-//                customerName =customerPointsInfo.getCustomerName();
-//                surplusIntegral =new BigDecimal(customerPointsInfo.getPoints()).add(new BigDecimal(integral));
-//                CustomerPointsRecord customerPointsRecord = new CustomerPointsRecord();
-//                customerPointsRecord.setCreateTime(new Date());
-//                customerPointsRecord.setCustomerName(customerName);
-//                customerPointsRecord.setStationName(stationName);
-//                customerPointsRecord.setStationId(stationId);
-//                customerPointsRecord.setRecordType("+");
-//                customerPointsRecord.setUnionId(customerPointsInfo.getUnionId());
-//                customerPointsRecord.setIntegral(integral);
-//                customerPointsRecordService.insertCustomerPointsRecordInfo(customerPointsRecord);
-//                customerPoints.setUnionId(customerPointsInfo.getUnionId());
-//                customerPoints.setPoints(surplusIntegral.intValue());
-//                //更新客户积分
-//                customerPointsService.updateCustomerPointsInfo(customerPoints);
-//                String blogOpenId = customerPointsInfo.getBlogOpenId();     //公众号openId
-//                if(blogOpenId !=null){
-//                    //推送模板
-//                    List<WxMpTemplateData> wxMpTemplate = new ArrayList<>();
-//                    wxMpTemplate.add(new WxMpTemplateData("first","尊敬的"+customerName+",您好:\n" + "您在"+stationName+"的积分最新交易信息如下"));
-//                    wxMpTemplate.add(new WxMpTemplateData("time", new SimpleDateFormat("yyyy年MM月dd日HH时mm分").format(new Date())));
-//                    wxMpTemplate.add(new WxMpTemplateData("type", "增加"));
-//                    wxMpTemplate.add(new WxMpTemplateData("Point", String.valueOf(integral)));
-//                    wxMpTemplate.add(new WxMpTemplateData("From", stationName));
-//                    wxMpTemplate.add(new WxMpTemplateData("remark",
-//                            "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的可用积分为 "+surplusIntegral.toString()+" 分"));
-//                    GzhNewsTemplate gzhNewsTemplate = new GzhNewsTemplate();
-//                    gzhNewsTemplate.setStationId(stationId);
-//                    gzhNewsTemplate.setTemplateType("1");
-//                    GzhNewsTemplate gzhNewsTemplateInfo = gzhNewsTemplateService.getGzhNewsTemplate(gzhNewsTemplate);
-//                    if(gzhNewsTemplateInfo !=null && gzhNewsTemplateInfo.getTemplateId() !=null){
-//                        wxPushUtil.push(gzhAppId, gzhAppSecret, gzhNewsTemplateInfo.getTemplateId(), blogOpenId, wxMpTemplate);
-//                    }
-//                }
-//
-//            }
-//
-//        }
-//    }
 
     /**
      * 根据订单号获取订单信息

+ 0 - 1
YijiaRestful/src/main/java/com/platform/yijia/dao/CustomerManagerMapper.java

@@ -1,6 +1,5 @@
 package com.platform.yijia.dao;
 
-import com.platform.yijia.param.request.CustomerGrade;
 import com.platform.yijia.pojo.CustomerGroup;
 import com.platform.yijia.pojo.CustomerManage;
 

+ 17 - 19
YijiaRestful/src/test/java/com/palatform/yijia/test.java

@@ -15,25 +15,23 @@ public class test {
 //        System.out.println(equal);
         //DigestUtils.sha1();
 
-//        BigDecimal receivableAmt_b =new BigDecimal(200);
-//        BigDecimal discountAmt_b = new BigDecimal(13);
-//        BigDecimal gasoilDiscountAmt_b = new BigDecimal(13.56);
-//
-//        BigDecimal discountAmt = receivableAmt_b.divide(discountAmt_b, 2, BigDecimal.ROUND_HALF_UP).multiply(gasoilDiscountAmt_b);
-//        discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
-//        System.out.println(discountAmt);
-
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(new Date());   //获取当前时间
-        int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-        System.out.println(day_Week);
-        day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-        String currentTime = String.valueOf(day_Week);
-        System.out.println(currentTime);
-        int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-        day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-        currentTime = String.valueOf(day_month); //当前时间
-        System.out.println(currentTime);
+
+
+        BigDecimal b1 = new BigDecimal("64.7024");//24.698,24.702
+        BigDecimal b2 = new BigDecimal("1.234");
+
+//        System.out.println(b1.add(b2));
+//        System.out.println(b1.subtract(b2));
+//        System.out.println(b1.multiply(b2));
+        //ROUND_HALF_UP:四舍五入(一般采用这个)
+        System.out.println(b1.divide(b2,2,BigDecimal.ROUND_HALF_UP));
+        //ROUND_HALF_DOWN:四舍五入,如果结果小数位只比保留位多一位且最后一位为5则不进位
+        System.out.println(b1.divide(b2,3,BigDecimal.ROUND_HALF_DOWN));
+        //ROUND_UP:始终加一
+        System.out.println(b1.divide(b2,3,BigDecimal.ROUND_UP));
+        //ROUND_DOWN:直接截取
+        System.out.println(b1.divide(b2,3,BigDecimal.ROUND_DOWN));
+
     }