一、配置类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());
}
}