不满意评价数量得分(50 分):取不满意评价数量(超期未受理件数和超期未处理记为不满意)最多与最少的小区差额,按每 2.5 分一档,共 20 档,从最少向最多依次递减。如:A 小区不满意数量最多有 100 件,B 小区不满意数量最少有 0 件,则每档数量为(100-0)/20=5 件,即不满意评价每增加 5 件得分减少 2.5 分。具体计分如下:
不满意评价数量 得分
0 50
(1-5) 47.5
(6-10) 45
...... ......
(86-90) 5
(91-95) 2.5
优化前代码
public static double assignment(Double coefficient,Integer dissatisfiedNum){//coefficient为档位 dissatisfiedNum 为不满意数
double result = 50;
if (dissatisfiedNum == 0){
result = 50-2.5*0;
}
if (0 < dissatisfiedNum && dissatisfiedNum <= coefficient*1){
result = 50 - 2.5 * 1;
}
if (coefficient*1 < dissatisfiedNum && dissatisfiedNum <= coefficient*2){
result = 50 - 2.5 * 2;
}
if (coefficient*2 < dissatisfiedNum && dissatisfiedNum <= coefficient*3) {
result = 50 - 2.5 * 3;
}
if (coefficient*3 < dissatisfiedNum && dissatisfiedNum <= coefficient*4) {
result = 50 - 2.5 * 4;
}
if (coefficient*4 < dissatisfiedNum && dissatisfiedNum <= coefficient*5) {
result = 50 - 2.5 * 5;
}
if (coefficient*5 < dissatisfiedNum && dissatisfiedNum <= coefficient*6) {
result = 50 - 2.5 * 6;
}
if (coefficient*6 < dissatisfiedNum && dissatisfiedNum <= coefficient*7) {
result = 50 - 2.5 * 7;
}
if (coefficient*7 < dissatisfiedNum && dissatisfiedNum <= coefficient*8) {
result = 50 - 2.5 * 8;
}
if (coefficient*8 < dissatisfiedNum && dissatisfiedNum <= coefficient*9) {
result = 50 - 2.5 * 9;
}
if (coefficient*9 < dissatisfiedNum && dissatisfiedNum <= coefficient*10) {
result = 50 - 2.5 * 10;
}
if (coefficient*10 < dissatisfiedNum && dissatisfiedNum <= coefficient*11) {
result = 50 - 2.5 * 11;
}
if (coefficient*11 < dissatisfiedNum && dissatisfiedNum <= coefficient*12) {
result = 50 - 2.5 * 12;
}
if (coefficient* 12 < dissatisfiedNum && dissatisfiedNum <= coefficient*13) {
result = 50 - 2.5 * 13;
}
if (coefficient*13 < dissatisfiedNum && dissatisfiedNum <= coefficient*14) {
result = 50 - 2.5 * 14;
}
if (coefficient*14 < dissatisfiedNum && dissatisfiedNum <= coefficient*15) {
result = 50 - 2.5 * 15;
}
if (coefficient*15 < dissatisfiedNum && dissatisfiedNum <= coefficient*16) {
result = 50 - 2.5 * 16;
}
if (coefficient*16 < dissatisfiedNum && dissatisfiedNum <= coefficient*17) {
result = 50 - 2.5 * 17;
}
if (coefficient*17 < dissatisfiedNum && dissatisfiedNum <= coefficient*18) {
result = 50 - 2.5 * 18;
}
if (coefficient*18 < dissatisfiedNum && dissatisfiedNum <= coefficient*19) {
result = 50 - 2.5 * 19;
}
if (coefficient*19 < dissatisfiedNum && dissatisfiedNum <= coefficient*20) {
result = 50 - 2.5 * 20;
}
if ( coefficient*20 < dissatisfiedNum) {
result = 0;
}
优化后代码
public static double assignment(Double coefficient,Integer dissatisfiedNum){
//不满意得分算法优化 找出规律 利用不满意数除以档位取ceil值
return 50 - Math.ceil(dissatisfiedNum/coefficient)*2.5;
}