区间值比较算法


一、配置类CarConsumScoreConfig.java

package com.system.utils;
public class CarConsumScoreConfig {
	private Integer purchaseScore;//购车费用评分
	private Integer upkeepScore;//保养评分
	private Integer valueRatioScore;//保值率评分
	private Integer evaluScore;//评价评分
	private Integer dealerDistrScore;//经销商分布评分
	public  Integer scoreArray        []={0,20,40,60,80,100};//得分数组
	public String purchaseRebate    [][]={{"1.0000","1.0000"},{"1.0000","0.9500"},{"0.9499","0.8000"},{"0.7999","0.7000"},{"0.6999","0.6000"},{"0.5999","0.0000"}};//购车费用折扣区间,如报价小数点两位时,折扣区间要保留四位,否则会有空档,会出现查不到得分的情况默认给0分.
	public String upkeepRebate      [][]={{"0.0800","1.0000"},{"0.0600","0.0790"},{"0.0400","0.0590"},{"0.0200","0.0390"},{"0.0100","0.0190"},{"0.0000","0.0000"}};
	public String valueRatioRebate  [][]={{"0","0"},{"1","60"},{"61","65"},{"66","75"},{"76","80"},{"80","100"}};
	public String dealerDistr1Rebate[][]={{"0","0"},{"1","8"},{"9","10"},{"11","14"},{"15","20"},{"20","2000"}};
	public String dealerDistr2Rebate[][]={{"0","0"},{"1","6"},{"7","8"},{"9","12"},{"12","15"},{"15","2000"}};
	public String dealerDistr3Rebate[][]={{"0","0"},{"1","2"},{"3","3"},{"4","4"},{"5","5"},{"6","2000"}};
	
	
	public Integer getPurchaseScore() {
		return purchaseScore;
	}

	public void setPurchaseScore(Integer purchaseScore) {
		this.purchaseScore = purchaseScore;
	}

	public Integer getUpkeepScore() {
		return upkeepScore;
	}

	public void setUpkeepScore(Integer upkeepScore) {
		this.upkeepScore = upkeepScore;
	}

	public Integer getValueRatioScore() {
		return valueRatioScore;
	}

	public void setValueRatioScore(Integer valueRatioScore) {
		this.valueRatioScore = valueRatioScore;
	}

	public Integer getEvaluScore() {
		return evaluScore;
	}

	public void setEvaluScore(Integer evaluScore) {
		this.evaluScore = evaluScore;
	}

	public Integer getDealerDistrScore() {
		return dealerDistrScore;
	}

	public void setDealerDistrScore(Integer dealerDistrScore) {
		this.dealerDistrScore = dealerDistrScore;
	}
}

二、业务算法类

/**
 * @author 孟令杰 
 * @time  2017年9月28
 */
package com.system.utils;
import java.math.BigDecimal;
public class CarConsumScoreUtils {
	private CarConsumScoreConfig config=new CarConsumScoreConfig();
	//-------------->获取购车费用得分-------------------------//
	public Integer getPurchase(BigDecimal offer,BigDecimal guide){
		int score=-1;
		try {
			for(int i=0;i<config.purchaseRebate.length;i++){
				int compareValueLeft=offer.compareTo(guide.multiply(new BigDecimal(config.purchaseRebate[i][0])));//报价 和 指导价的折后价格比较
				int compareValueright=offer.compareTo(guide.multiply(new BigDecimal(config.purchaseRebate[i][1])));//报价 和 指导价的折后价格比较
				if((compareValueLeft==0||compareValueLeft==-1)&&(compareValueright==0||compareValueright==1)){//结果是:-1 小于,0 等于,1 大于
					score=config.scoreArray[i];break;
				}else{
					score=0;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return score; 
	}
	//-------------->获取保养费用得分-------------------------//
	public Integer getUpkeep(BigDecimal offer,BigDecimal guide){
		int score=-1;
		try {
			for(int i=0;i<config.upkeepRebate.length;i++){
				int compareValueLeft=offer.compareTo(guide.multiply(new BigDecimal(config.upkeepRebate[i][0])));
				int compareValueright=offer.compareTo(guide.multiply(new BigDecimal(config.upkeepRebate[i][1])));
				if((compareValueLeft==0||compareValueLeft==1)&&(compareValueright==0||compareValueright==-1)){//结果是:-1 小于,0 等于,1 大于
					score=config.scoreArray[i];break;
				}else{
					score=0;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return score; 
	}
	//-------------->获取保值率得分-------------------------//
	public Integer getValueRatio(BigDecimal valueRatio){
		int score=-1;
		try {
			for(int i=0;i<config.valueRatioRebate.length;i++){
				int compareValueLeft=valueRatio.compareTo(new BigDecimal(config.valueRatioRebate[i][0]));
				int compareValueright=valueRatio.compareTo(new BigDecimal(config.valueRatioRebate[i][1]));
				if((compareValueLeft==0||compareValueLeft==1)&&(compareValueright==0||compareValueright==-1)){//结果是:-1 小于,0 等于,1 大于
					score=config.scoreArray[i];break;
				}else{
					score=0;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return score; 
	}
	//-------------->获取经销商分布得分-------------------------//
	public Integer getDealerDistr(BigDecimal distr,int level){
		int score=-1;
		try {
			String dealerDistrRebate[][]=getDealerDistrArray(level);
			for(int i=0;i<dealerDistrRebate.length;i++){
				int compareValueLeft=distr.compareTo(new BigDecimal(dealerDistrRebate[i][0]));
				int compareValueright=distr.compareTo(new BigDecimal(dealerDistrRebate[i][1]));
				if((compareValueLeft==0||compareValueLeft==1)&&(compareValueright==0||compareValueright==-1)){
					score=config.scoreArray[i];break;
				}else{
					score=0;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return score; 
	}
	//-------------->获取经销商分布集合-------------------------//
	public String[][] getDealerDistrArray(int level){
		String dealerDistrRebate[][]=null;
		switch(level)
		{
			case 1:
				dealerDistrRebate=config.dealerDistr1Rebate;
				break;
			case 2:
				dealerDistrRebate=config.dealerDistr2Rebate;
				break;	
			case 3:
				dealerDistrRebate=config.dealerDistr3Rebate;
				break;	
		}
		return  dealerDistrRebate;
	}
	//-------------->获取  主观评价 得分-------------------------//
	public Integer getEvalu(BigDecimal evalu1,BigDecimal evalu2){
		int score=-1;
		try {
			BigDecimal FF=evalu1.add(evalu2);
			BigDecimal fen=new BigDecimal(100).divide(FF);
			BigDecimal scorefen=fen.multiply(evalu1);
			score=scorefen.intValue();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return score;
	}
	//-------------->获取 评分 测试Demo-------------------------//
	public static void main(String[] args) {
		CarConsumScoreConfig config=new CarConsumScoreConfig();
		CarConsumScoreUtils upk=new CarConsumScoreUtils();
		//-------------->测试:获取购车费用得分-------------------------//
//		config.setPurchaseScore(ccsu.getPurchase(new BigDecimal("54.99"),new BigDecimal("100")));//报价  指导价
//		System.out.println(config.getPurchaseScore());
		//-------------->测试:获取保养费用得分-------------------------//
//		config.setUpkeepScore(upk.getUpkeep(new BigDecimal("7"),new BigDecimal("100")));//保养费、指导价、城市级别
//		System.out.println(config.getUpkeepScore());
		//-------------->测试:获取保值率得分-------------------------//
//		config.setValueRatioScore(upk.getValueRatio(new BigDecimal("9")));//保值率
//		System.out.println(config.getValueRatioScore());
		//-------------->测试:经销商分布得分-------------------------//
//		config.setDealerDistrScore(upk.getDealerDistr(new BigDecimal("9"), 2));//经销商数量 、城市级别
//		System.out.println(config.getDealerDistrScore());
		//-------------->测试:主观评价-------------------------//
		config.setEvaluScore(upk.getEvalu(new BigDecimal("5"),new BigDecimal("5")));
		System.out.println(config.getEvaluScore());
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟令杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值