| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 根据订单号获取订单信息 
			 |