Commit 4cf24f88 by zhangkb

修改报表2算同比排名,同比单位数逻辑

parent 24ab1197
...@@ -310,7 +310,8 @@ public class IndicatorsReportService { ...@@ -310,7 +310,8 @@ public class IndicatorsReportService {
indReportData.setBestUnitValue(calDatas.get(0).getValue()); indReportData.setBestUnitValue(calDatas.get(0).getValue());
//优于平均数单位数 //优于平均数单位数
if(StringUtils.isNotBlank(average)) { if(StringUtils.isNotBlank(average)) {
indReportData.setBestAverageUnits(this.bestAverageUnits(average, calDatas)); indReportData.setBestAverageUnits(this.bestAverageUnits(
driveIndDef.getIndRule(),average, calDatas));
} }
//同比提升单位 //同比提升单位
Map<String,Object> sameImproveResult = this.sameImproveUnits(indId, date, compareObjs, Map<String,Object> sameImproveResult = this.sameImproveUnits(indId, date, compareObjs,
...@@ -340,7 +341,7 @@ public class IndicatorsReportService { ...@@ -340,7 +341,7 @@ public class IndicatorsReportService {
indReportData.setSameImproveHeadThreeDesc(sameImproveHeadThreeDesc.toString()); indReportData.setSameImproveHeadThreeDesc(sameImproveHeadThreeDesc.toString());
start = 0; start = 0;
//同比提升末三 //同比提升末三
StringBuilder sameImproveAfterThree = new StringBuilder("");//同比提升 StringBuilder sameImproveAfterThree = new StringBuilder("");//同比提升
StringBuilder sameImproveAfterThreeDesc = new StringBuilder("");// StringBuilder sameImproveAfterThreeDesc = new StringBuilder("");//
resultRank = CalculateUtils.sortMapByValue(resultRank,1);//按照value从大到小排序 resultRank = CalculateUtils.sortMapByValue(resultRank,1);//按照value从大到小排序
//根据省对市地区顺序排列排名并列的情况 //根据省对市地区顺序排列排名并列的情况
...@@ -420,6 +421,10 @@ public class IndicatorsReportService { ...@@ -420,6 +421,10 @@ public class IndicatorsReportService {
Integer improveNum = 0;//单位提升数 Integer improveNum = 0;//单位提升数
Map<String,Integer> resultRank = new HashMap<>(); Map<String,Integer> resultRank = new HashMap<>();
//根据指标id获取指标详情
DriveIndDef driveIndDef = driveIndDefMapper.selectByPrimaryKey(indId);
if(driveIndDef!=null) {
String indRule = driveIndDef.getIndRule();
//查找同期考核结果 //查找同期考核结果
Map<String,Object> paramMap = new HashMap<>(); Map<String,Object> paramMap = new HashMap<>();
paramMap.put("indId", indId); paramMap.put("indId", indId);
...@@ -433,14 +438,24 @@ public class IndicatorsReportService { ...@@ -433,14 +438,24 @@ public class IndicatorsReportService {
for(DriveIndCalResultDef sameCalData : sameCalDatas) { for(DriveIndCalResultDef sameCalData : sameCalDatas) {
if(sameCalData.getCompareObj().equals(currentCalData.getCompareObj()) if(sameCalData.getCompareObj().equals(currentCalData.getCompareObj())
&& !"NaN".equals(sameCalData.getValue()) && !"NaN".equals(sameCalData.getValue())
&&!"Infinite".equals(sameCalData.getValue()) && !"Infinite".equals(sameCalData.getValue())
&& StringUtils.isNotBlank(sameCalData.getValue())
&& !"NaN".equals(currentCalData.getValue()) && !"NaN".equals(currentCalData.getValue())
&&!"Infinite".equals(currentCalData.getValue())) { && !"Infinite".equals(currentCalData.getValue())
//如果本次考核结果排位和同期考核结果配位都存在 && StringUtils.isNotBlank(currentCalData.getValue())) {
if(currentCalData.getRank()!=null && sameCalData.getRank()!=null) { //同比提升单位指本期与同期值相比要好的单位(考虑指标的正反向)
rankMap.put(currentCalData.getCompareObj(), rankMap.put(currentCalData.getCompareObj(),
String.valueOf((currentCalData.getRank()-sameCalData.getRank()))); String.valueOf(Double.parseDouble(currentCalData.getValue())-
if((currentCalData.getRank()-sameCalData.getRank())>0) { Double.parseDouble(sameCalData.getValue())));
//如果是正向指标
if("0".equals(indRule)) {
if(Double.parseDouble(currentCalData.getValue())-
Double.parseDouble(sameCalData.getValue())>0) {
improveNum+=1;
}
}else {//反向
if(Double.parseDouble(currentCalData.getValue())-
Double.parseDouble(sameCalData.getValue())<0) {
improveNum+=1; improveNum+=1;
} }
} }
...@@ -448,23 +463,31 @@ public class IndicatorsReportService { ...@@ -448,23 +463,31 @@ public class IndicatorsReportService {
} }
} }
} }
resultRank = CalculateUtils.rankValue(rankMap, "0"); resultRank = CalculateUtils.rankValue(rankMap, indRule);
resultRank = CalculateUtils.sortMapByValue(resultRank,0);//按照value从小到大排序 resultRank = CalculateUtils.sortMapByValue(resultRank,0);//按照value从小到大排序
} }
}
result.put("improveNum", improveNum); result.put("improveNum", improveNum);
result.put("resultRank", resultRank); result.put("resultRank", resultRank);
return result; return result;
} }
//统计优于平均数量 //统计优于平均数量
private Integer bestAverageUnits(String average,List<DriveIndCalResultDef> calDatas) { private Integer bestAverageUnits(String indRule,String average,List<DriveIndCalResultDef> calDatas) {
Integer result = 0; Integer result = 0;
for(DriveIndCalResultDef calData : calDatas) { for(DriveIndCalResultDef calData : calDatas) {
if(StringUtils.isNotBlank(calData.getValue()) && !"NaN".equals(calData.getValue()) if(StringUtils.isNotBlank(calData.getValue()) && !"NaN".equals(calData.getValue())
&& !"Infinite".equals(calData.getValue())) { && !"Infinite".equals(calData.getValue())) {
//如果是正向指标
if("0".equals(indRule)) {
if(Double.parseDouble(calData.getValue())>Double.parseDouble(average)) { if(Double.parseDouble(calData.getValue())>Double.parseDouble(average)) {
result+=1; result+=1;
} }
}else {//反向指标
if(Double.parseDouble(calData.getValue())<Double.parseDouble(average)) {
result+=1;
}
}
} }
} }
return result; return result;
......
...@@ -195,7 +195,7 @@ public class CalculateUtils { ...@@ -195,7 +195,7 @@ public class CalculateUtils {
public static Map<String,Object> rankByObjSort(Map<String,Integer> rankMap,Map<String,Integer> objSort){ public static Map<String,Object> rankByObjSort(Map<String,Integer> rankMap,Map<String,Integer> objSort){
Map<String,Object> result = new HashMap<>(); Map<String,Object> result = new HashMap<>();
//排名分类 //排名分类
Map<Integer,List<String>> rankClassifyMap = new HashMap<>(); Map<Integer,List<String>> rankClassifyMap = new LinkedHashMap<>();//修改为插入顺序的map
int rankNum = 3; int rankNum = 3;
for(Map.Entry<String, Integer> map : rankMap.entrySet()) { for(Map.Entry<String, Integer> map : rankMap.entrySet()) {
if(objSort.get(map.getKey())==null) { if(objSort.get(map.getKey())==null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment