Commit 4cf24f88 by zhangkb

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

parent 24ab1197
......@@ -310,7 +310,8 @@ public class IndicatorsReportService {
indReportData.setBestUnitValue(calDatas.get(0).getValue());
//优于平均数单位数
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,
......@@ -340,7 +341,7 @@ public class IndicatorsReportService {
indReportData.setSameImproveHeadThreeDesc(sameImproveHeadThreeDesc.toString());
start = 0;
//同比提升末三
StringBuilder sameImproveAfterThree = new StringBuilder("");//同比提升
StringBuilder sameImproveAfterThree = new StringBuilder("");//同比提升
StringBuilder sameImproveAfterThreeDesc = new StringBuilder("");//
resultRank = CalculateUtils.sortMapByValue(resultRank,1);//按照value从大到小排序
//根据省对市地区顺序排列排名并列的情况
......@@ -420,36 +421,51 @@ public class IndicatorsReportService {
Integer improveNum = 0;//单位提升数
Map<String,Integer> resultRank = new HashMap<>();
//查找同期考核结果
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("indId", indId);
paramMap.put("date", (date-100));
paramMap.put("compareObjs", compareObjs);
List<DriveIndCalResultDef> sameCalDatas = driveIndCalResultDefMapper
.findByIndIdAndDateAndCompareObjIn(paramMap);
if(!sameCalDatas.isEmpty()) {
Map<String,String> rankMap = new HashMap<>();
for(DriveIndCalResultDef currentCalData : currentCalDatas) {
for(DriveIndCalResultDef sameCalData : sameCalDatas) {
if(sameCalData.getCompareObj().equals(currentCalData.getCompareObj())
&& !"NaN".equals(sameCalData.getValue())
&&!"Infinite".equals(sameCalData.getValue())
&& !"NaN".equals(currentCalData.getValue())
&&!"Infinite".equals(currentCalData.getValue())) {
//如果本次考核结果排位和同期考核结果配位都存在
if(currentCalData.getRank()!=null && sameCalData.getRank()!=null) {
//根据指标id获取指标详情
DriveIndDef driveIndDef = driveIndDefMapper.selectByPrimaryKey(indId);
if(driveIndDef!=null) {
String indRule = driveIndDef.getIndRule();
//查找同期考核结果
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("indId", indId);
paramMap.put("date", (date-100));
paramMap.put("compareObjs", compareObjs);
List<DriveIndCalResultDef> sameCalDatas = driveIndCalResultDefMapper
.findByIndIdAndDateAndCompareObjIn(paramMap);
if(!sameCalDatas.isEmpty()) {
Map<String,String> rankMap = new HashMap<>();
for(DriveIndCalResultDef currentCalData : currentCalDatas) {
for(DriveIndCalResultDef sameCalData : sameCalDatas) {
if(sameCalData.getCompareObj().equals(currentCalData.getCompareObj())
&& !"NaN".equals(sameCalData.getValue())
&& !"Infinite".equals(sameCalData.getValue())
&& StringUtils.isNotBlank(sameCalData.getValue())
&& !"NaN".equals(currentCalData.getValue())
&& !"Infinite".equals(currentCalData.getValue())
&& StringUtils.isNotBlank(currentCalData.getValue())) {
//同比提升单位指本期与同期值相比要好的单位(考虑指标的正反向)
rankMap.put(currentCalData.getCompareObj(),
String.valueOf((currentCalData.getRank()-sameCalData.getRank())));
if((currentCalData.getRank()-sameCalData.getRank())>0) {
improveNum+=1;
String.valueOf(Double.parseDouble(currentCalData.getValue())-
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;
}
}
break;
}
break;
}
}
resultRank = CalculateUtils.rankValue(rankMap, indRule);
resultRank = CalculateUtils.sortMapByValue(resultRank,0);//按照value从小到大排序
}
resultRank = CalculateUtils.rankValue(rankMap, "0");
resultRank = CalculateUtils.sortMapByValue(resultRank,0);//按照value从小到大排序
}
result.put("improveNum", improveNum);
result.put("resultRank", resultRank);
......@@ -457,13 +473,20 @@ public class IndicatorsReportService {
}
//统计优于平均数量
private Integer bestAverageUnits(String average,List<DriveIndCalResultDef> calDatas) {
private Integer bestAverageUnits(String indRule,String average,List<DriveIndCalResultDef> calDatas) {
Integer result = 0;
for(DriveIndCalResultDef calData : calDatas) {
if(StringUtils.isNotBlank(calData.getValue()) && !"NaN".equals(calData.getValue())
&& !"Infinite".equals(calData.getValue())) {
if(Double.parseDouble(calData.getValue())>Double.parseDouble(average)) {
result+=1;
//如果是正向指标
if("0".equals(indRule)) {
if(Double.parseDouble(calData.getValue())>Double.parseDouble(average)) {
result+=1;
}
}else {//反向指标
if(Double.parseDouble(calData.getValue())<Double.parseDouble(average)) {
result+=1;
}
}
}
}
......
......@@ -195,7 +195,7 @@ public class CalculateUtils {
public static Map<String,Object> rankByObjSort(Map<String,Integer> rankMap,Map<String,Integer> objSort){
Map<String,Object> result = new HashMap<>();
//排名分类
Map<Integer,List<String>> rankClassifyMap = new HashMap<>();
Map<Integer,List<String>> rankClassifyMap = new LinkedHashMap<>();//修改为插入顺序的map
int rankNum = 3;
for(Map.Entry<String, Integer> map : rankMap.entrySet()) {
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