|
@@ -712,115 +712,48 @@ public class PayController {
|
|
|
BigDecimal orderLiters = new BigDecimal(infoMap.get("orderLiters").toString()); //本次加油升数
|
|
|
//循环规则明细
|
|
|
for(IntegralRuleDetail integralRuleDetail : integralRuleDetailList){
|
|
|
- //规则类型
|
|
|
- String ruleType = integralRuleDetail.getRuleType();
|
|
|
- if(ruleType !=null && ruleType =="1" && realAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
|
|
|
- //以实收金额为准时
|
|
|
- if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
|
|
|
- //计算积分并取整
|
|
|
- BigDecimal integral = realAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
|
|
|
- //设置积分多倍时间时
|
|
|
- if(datePicker !=null){
|
|
|
- for(String str: datePicker){
|
|
|
- //如果当前时间在改日期比例时间内
|
|
|
- if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
|
|
|
- integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ if(integralRuleDetail.getOilType().equals("1")){ //油品
|
|
|
+ //规则类型
|
|
|
+ String ruleType = integralRuleDetail.getRuleType();
|
|
|
+ if(ruleType !=null && ruleType =="1" && realAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
|
|
|
+ //以实收金额为准时
|
|
|
+ if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
|
|
|
+ //计算积分并取整
|
|
|
+ countIntegral (realAmt, integralRuleDetail, datePicker, currentTime, rule, customerPoints, customerPointsRecord, customerPointsInfo);
|
|
|
+ break;
|
|
|
+ }else {
|
|
|
+ //计算积分并取整
|
|
|
+ countIntegral (realAmt, integralRuleDetail, datePicker, currentTime, rule, customerPoints, customerPointsRecord, customerPointsInfo);
|
|
|
+ break;
|
|
|
}
|
|
|
- customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
|
|
|
- break;
|
|
|
- }else {
|
|
|
- //计算积分并取整
|
|
|
- BigDecimal integral = realAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
|
|
|
- //设置积分多倍时间时
|
|
|
- if(datePicker !=null){
|
|
|
- for(String str: datePicker){
|
|
|
- if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
|
|
|
- integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ }else if(ruleType !=null && ruleType =="2" && receivableAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
|
|
|
+ //应收金额为准时
|
|
|
+ if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
|
|
|
+ //计算积分并取整
|
|
|
+ countIntegral (receivableAmt, integralRuleDetail, datePicker, currentTime, rule, customerPoints, customerPointsRecord, customerPointsInfo);
|
|
|
+ break;
|
|
|
+ }else {
|
|
|
+ //计算积分并取整
|
|
|
+ countIntegral (receivableAmt, integralRuleDetail, datePicker, currentTime, rule, customerPoints, customerPointsRecord, customerPointsInfo);
|
|
|
+ break;
|
|
|
}
|
|
|
- customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }else if(ruleType !=null && ruleType =="2" && receivableAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
|
|
|
- //应收金额为准时
|
|
|
- if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
|
|
|
- //计算积分并取整
|
|
|
- BigDecimal integral = receivableAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
|
|
|
- //设置积分多倍时间时
|
|
|
- if(datePicker !=null){
|
|
|
- for(String str: datePicker){
|
|
|
- if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
|
|
|
- integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
|
|
|
- break;
|
|
|
- }else {
|
|
|
- //计算积分并取整
|
|
|
- BigDecimal integral = receivableAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
|
|
|
- //设置积分多倍时间时
|
|
|
- if(datePicker !=null){
|
|
|
- for(String str: datePicker){
|
|
|
- if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
|
|
|
- integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
|
|
|
- break;
|
|
|
- }
|
|
|
|
|
|
- }else if(ruleType !=null && ruleType =="3" && orderLiters.compareTo(integralRuleDetail.getRuleTerms()) ==1){
|
|
|
- //加油升数为准时
|
|
|
- if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
|
|
|
- //计算积分并取整
|
|
|
- BigDecimal integral = orderLiters.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
|
|
|
- //设置积分多倍时间时
|
|
|
- if(datePicker !=null){
|
|
|
- for(String str: datePicker){
|
|
|
- if (str.contains(currentTime) && rule.get(0).getIntegralProportion() !=null ){
|
|
|
- integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
|
|
|
- break;
|
|
|
- }else {
|
|
|
- //计算积分并取整
|
|
|
- BigDecimal integral = orderLiters.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
|
|
|
- //设置积分多倍时间时
|
|
|
- if(datePicker !=null){
|
|
|
- for(String str: datePicker){
|
|
|
- if (str.contains(currentTime) && rule.get(0).getIntegralProportion() !=null ){
|
|
|
- integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ }else if(ruleType !=null && ruleType =="3" && orderLiters.compareTo(integralRuleDetail.getRuleTerms()) ==1){
|
|
|
+ //加油升数为准时
|
|
|
+ if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
|
|
|
+ //计算积分并取整
|
|
|
+ countIntegral (orderLiters, integralRuleDetail, datePicker, currentTime, rule, customerPoints, customerPointsRecord, customerPointsInfo);
|
|
|
+ break;
|
|
|
+ }else {
|
|
|
+ //计算积分并取整
|
|
|
+ countIntegral (orderLiters, integralRuleDetail, datePicker, currentTime, rule, customerPoints, customerPointsRecord, customerPointsInfo);
|
|
|
+ break;
|
|
|
}
|
|
|
- customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
- customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
|
|
|
- break;
|
|
|
}
|
|
|
+ }else if(integralRuleDetail.getOilType().equals("2")){ //非油品
|
|
|
+ //计算积分并取整
|
|
|
+ countIntegral (realAmt, integralRuleDetail, datePicker, currentTime, rule, customerPoints, customerPointsRecord, customerPointsInfo);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1012,4 +945,24 @@ public class PayController {
|
|
|
req.put("msg","失败");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //计算积分并赋值
|
|
|
+ public void countIntegral (BigDecimal b1, IntegralRuleDetail integralRuleDetail,
|
|
|
+ String[] datePicker, String currentTime, List<IntegralRule> rule,
|
|
|
+ CustomerPoints customerPoints, CustomerPointsRecord customerPointsRecord, CustomerPoints customerPointsInfo){
|
|
|
+ BigDecimal integral = b1.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
|
|
|
+ //设置积分多倍时间时
|
|
|
+ if(datePicker !=null){
|
|
|
+ for(String str: datePicker){
|
|
|
+ if (str.contains(currentTime) && rule.get(0).getIntegralProportion() !=null ){
|
|
|
+ integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
+ customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
|
|
|
+ customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
|
|
|
+ }
|
|
|
+
|
|
|
}
|