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