Commit 7587d22b by zhangkb

添加判断指标值除了NaN还有Infinite

parent 5a0c17c1
...@@ -143,7 +143,7 @@ public class DriveIndCalculateActor extends AbstractActor{ ...@@ -143,7 +143,7 @@ public class DriveIndCalculateActor extends AbstractActor{
try { try {
String driveIndValue = AviatorEvaluator.execute(driveIndFormula,env).toString(); String driveIndValue = AviatorEvaluator.execute(driveIndFormula,env).toString();
//保留四位小数 //保留四位小数
if(!driveIndValue.equals("NaN")&&!driveIndValue.equals("Infinite")) { if(!driveIndValue.equals("NaN") && !driveIndValue.equals("Infinite")) {
driveIndValue = String.format("%.4f", driveIndValue = String.format("%.4f",
new BigDecimal(Double.valueOf(driveIndValue))); new BigDecimal(Double.valueOf(driveIndValue)));
} }
...@@ -176,6 +176,13 @@ public class DriveIndCalculateActor extends AbstractActor{ ...@@ -176,6 +176,13 @@ public class DriveIndCalculateActor extends AbstractActor{
driveIndCalculateRegionActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender()); driveIndCalculateRegionActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
logger.error("env:"+env+";formula:"+driveIndFormula); logger.error("env:"+env+";formula:"+driveIndFormula);
} }
}else {
//返回考核指标因为考核指标公式中的数据项不存在而导致的计算错误标识
DriveIndAverageAndRankMsg driveIndAverageAndRankMsg =
new DriveIndAverageAndRankMsg(-1,
compareId,driveIndId,compareObj,date,"NaN",
unit,indType,markType,averageDriveIndFormula);
driveIndCalculateRegionActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
} }
} }
}) })
......
...@@ -34,7 +34,7 @@ public class DriveIndCalculateRegionActor extends AbstractActor{ ...@@ -34,7 +34,7 @@ public class DriveIndCalculateRegionActor extends AbstractActor{
private int compareObjSize = 0;//对标对象个数 private int compareObjSize = 0;//对标对象个数
private List<String> values = new ArrayList<>(); // private List<String> values = new ArrayList<>();
private Map<String,String> valueMap = new HashMap<>(); private Map<String,String> valueMap = new HashMap<>();
...@@ -70,10 +70,11 @@ public class DriveIndCalculateRegionActor extends AbstractActor{ ...@@ -70,10 +70,11 @@ public class DriveIndCalculateRegionActor extends AbstractActor{
String id = String.valueOf(driveIndAverageAndRankMsg.getId()); String id = String.valueOf(driveIndAverageAndRankMsg.getId());
String indType = driveIndAverageAndRankMsg.getIndType(); String indType = driveIndAverageAndRankMsg.getIndType();
Integer markType = driveIndAverageAndRankMsg.getMarkType();//评分卡id Integer markType = driveIndAverageAndRankMsg.getMarkType();//评分卡id
if(!"-1".equals(id)) {
valueMap.put(id, value); valueMap.put(id, value);
values.add(value); // values.add(value);
compareObjs.add(driveIndAverageAndRankMsg.getCompareObj()); compareObjs.add(driveIndAverageAndRankMsg.getCompareObj());
}
if (++numberOfConfirm >= compareObjSize) {//子actor全部返回 if (++numberOfConfirm >= compareObjSize) {//子actor全部返回
//考核地区只有一个“全省”的情况下 //考核地区只有一个“全省”的情况下
if(!"全省".equals(driveIndAverageAndRankMsg.getCompareObj())) { if(!"全省".equals(driveIndAverageAndRankMsg.getCompareObj())) {
......
...@@ -169,7 +169,7 @@ public class DriveIndDefService { ...@@ -169,7 +169,7 @@ public class DriveIndDefService {
} }
result = AviatorEvaluator.execute(driveIndFormula,env).toString(); result = AviatorEvaluator.execute(driveIndFormula,env).toString();
//保留四位小数 //保留四位小数
if(!result.equals("NaN")) { if(!"NaN".equals(result) && !"Infinite".equals(result)) {
result = String.format("%.4f", result = String.format("%.4f",
new BigDecimal(Double.valueOf(result))); new BigDecimal(Double.valueOf(result)));
} }
......
...@@ -126,7 +126,7 @@ public class IndScorecardService { ...@@ -126,7 +126,7 @@ public class IndScorecardService {
Iterator<DriveIndCalResultDef> it=currentDriveResult.iterator(); Iterator<DriveIndCalResultDef> it=currentDriveResult.iterator();
while(it.hasNext()){ while(it.hasNext()){
DriveIndCalResultDef driveCalResult = it.next(); DriveIndCalResultDef driveCalResult = it.next();
if("NaN".equals(driveCalResult.getValue()) if("NaN".equals(driveCalResult.getValue()) || "Infinite".equals(driveCalResult.getValue())
||"0.0000".equals(driveCalResult.getValue())||"0".equals(driveCalResult.getValue())){ ||"0.0000".equals(driveCalResult.getValue())||"0".equals(driveCalResult.getValue())){
it.remove(); it.remove();
} }
...@@ -145,7 +145,7 @@ public class IndScorecardService { ...@@ -145,7 +145,7 @@ public class IndScorecardService {
} }
} }
String value = currentCompareObjResult.getValue(); String value = currentCompareObjResult.getValue();
if(!"NaN".equals(value) if(!"NaN".equals(value) && !"Infinite".equals(value)
&& !"0.0000".equals(value) && !"0".equals(value)) { && !"0.0000".equals(value) && !"0".equals(value)) {
//综合评价 //综合评价
if("0".equals(scoreCard.getScoreType())) {//定义 if("0".equals(scoreCard.getScoreType())) {//定义
......
...@@ -701,7 +701,7 @@ public class IndicatorsValueService { ...@@ -701,7 +701,7 @@ public class IndicatorsValueService {
Iterator<DriveIndCalResultDef> it=currentDriveResult.iterator(); Iterator<DriveIndCalResultDef> it=currentDriveResult.iterator();
while(it.hasNext()){ while(it.hasNext()){
DriveIndCalResultDef driveCalResult = it.next(); DriveIndCalResultDef driveCalResult = it.next();
if("NaN".equals(driveCalResult.getValue()) if("NaN".equals(driveCalResult.getValue()) || "Infinite".equals(driveCalResult.getValue())
||"0.0000".equals(driveCalResult.getValue())||"0".equals(driveCalResult.getValue())){ ||"0.0000".equals(driveCalResult.getValue())||"0".equals(driveCalResult.getValue())){
it.remove(); it.remove();
} }
...@@ -725,7 +725,7 @@ public class IndicatorsValueService { ...@@ -725,7 +725,7 @@ public class IndicatorsValueService {
Iterator<DriveIndCalResultDef> sit=sameDriveResult.iterator(); Iterator<DriveIndCalResultDef> sit=sameDriveResult.iterator();
while(sit.hasNext()){ while(sit.hasNext()){
DriveIndCalResultDef driveCalResult = sit.next(); DriveIndCalResultDef driveCalResult = sit.next();
if("NaN".equals(driveCalResult.getValue()) if("NaN".equals(driveCalResult.getValue()) || "Infinite".equals(driveCalResult.getValue())
||"0.0000".equals(driveCalResult.getValue())||"0".equals(driveCalResult.getValue())){ ||"0.0000".equals(driveCalResult.getValue())||"0".equals(driveCalResult.getValue())){
sit.remove(); sit.remove();
} }
......
...@@ -110,7 +110,7 @@ public class ScoreRuleService { ...@@ -110,7 +110,7 @@ public class ScoreRuleService {
"1".equals(driveIndDef.getIsUnitCalScore())) { "1".equals(driveIndDef.getIsUnitCalScore())) {
//得分类型:0 指标值直接参与计算 //得分类型:0 指标值直接参与计算
if("0".equals(scoreRule.getScoreType())) { if("0".equals(scoreRule.getScoreType())) {
if(!"NaN".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
&& !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) { && !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
values.add(calResult.getValue()); values.add(calResult.getValue());
} }
...@@ -169,7 +169,7 @@ public class ScoreRuleService { ...@@ -169,7 +169,7 @@ public class ScoreRuleService {
if(calresultOp!=null) { if(calresultOp!=null) {
//得分类型:0 指标值直接参与计算 //得分类型:0 指标值直接参与计算
if("0".equals(scoreRule.getScoreType())) { if("0".equals(scoreRule.getScoreType())) {
if(!"NaN".equals(calresultOp.getValue())) { if(!"NaN".equals(calresultOp.getValue()) && !"Infinite".equals(calresultOp.getValue())) {
calFormula = calFormula.replace("["+indId+"]", calresultOp.getValue()); calFormula = calFormula.replace("["+indId+"]", calresultOp.getValue());
}else { }else {
calFormula = calFormula.replace("["+indId+"]", "0.0"); calFormula = calFormula.replace("["+indId+"]", "0.0");
...@@ -269,7 +269,7 @@ public class ScoreRuleService { ...@@ -269,7 +269,7 @@ public class ScoreRuleService {
if(indTypeWeight.getCatalogIdPath().indexOf(catalogIdPath)>=0) { if(indTypeWeight.getCatalogIdPath().indexOf(catalogIdPath)>=0) {
//得分类型:0 指标值直接参与计算 //得分类型:0 指标值直接参与计算
if("0".equals(scoreRule.getScoreType())) { if("0".equals(scoreRule.getScoreType())) {
if(!"NaN".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
&& !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) { && !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
values.add(calResult.getValue()); values.add(calResult.getValue());
} }
......
...@@ -151,7 +151,7 @@ public class ShortboardRuleService { ...@@ -151,7 +151,7 @@ public class ShortboardRuleService {
for(DriveIndCalResultDef calResult : calResults) { for(DriveIndCalResultDef calResult : calResults) {
//判断规则选择是大于还是小于 //判断规则选择是大于还是小于
if("0".equals(shortboardItem.getCalType())) {//大于 if("0".equals(shortboardItem.getCalType())) {//大于
if(!"NaN".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
&& !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) { && !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
//判断有没有实际的平均值 //判断有没有实际的平均值
if(!"0.0".equals(calResult.getActualAverage())) { if(!"0.0".equals(calResult.getActualAverage())) {
...@@ -167,7 +167,7 @@ public class ShortboardRuleService { ...@@ -167,7 +167,7 @@ public class ShortboardRuleService {
} }
} }
}else {//小于 }else {//小于
if(!"NaN".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
&& !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) { && !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
//判断有没有实际的平均值 //判断有没有实际的平均值
if(!"0.0".equals(calResult.getActualAverage())) { if(!"0.0".equals(calResult.getActualAverage())) {
...@@ -241,7 +241,7 @@ public class ShortboardRuleService { ...@@ -241,7 +241,7 @@ public class ShortboardRuleService {
} }
if(maxValue!=null) { if(maxValue!=null) {
for(DriveIndCalResultDef calResult : calResults) { for(DriveIndCalResultDef calResult : calResults) {
if(!"NaN".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
&& !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) { && !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
if(StringUtils.isNotBlank(shortboardItem.getValue())) { if(StringUtils.isNotBlank(shortboardItem.getValue())) {
//判断是比较差还是百分比 //判断是比较差还是百分比
...@@ -278,7 +278,7 @@ public class ShortboardRuleService { ...@@ -278,7 +278,7 @@ public class ShortboardRuleService {
String minValue = null; String minValue = null;
if(!calResults.isEmpty()) { if(!calResults.isEmpty()) {
for(int i=(calResults.size()-1);i>=0;i--) { for(int i=(calResults.size()-1);i>=0;i--) {
if(!"NaN".equals(calResults.get(i).getValue()) if(!"NaN".equals(calResults.get(i).getValue()) && !"Infinite".equals(calResults.get(i).getValue())
&& !"0.0000".equals(calResults.get(i).getValue()) && !"0".equals(calResults.get(i).getValue())) { && !"0.0000".equals(calResults.get(i).getValue()) && !"0".equals(calResults.get(i).getValue())) {
minValue = calResults.get(i).getValue(); minValue = calResults.get(i).getValue();
} }
...@@ -286,7 +286,7 @@ public class ShortboardRuleService { ...@@ -286,7 +286,7 @@ public class ShortboardRuleService {
} }
if(minValue!=null) { if(minValue!=null) {
for(DriveIndCalResultDef calResult : calResults) { for(DriveIndCalResultDef calResult : calResults) {
if(!"NaN".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
&& !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) { && !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
if(StringUtils.isNotBlank(shortboardItem.getValue())) { if(StringUtils.isNotBlank(shortboardItem.getValue())) {
//判断是比较差还是百分比 //判断是比较差还是百分比
...@@ -322,7 +322,7 @@ public class ShortboardRuleService { ...@@ -322,7 +322,7 @@ public class ShortboardRuleService {
findByIndIdAndDateAndCompareObjIn(paramMap);//根据考核指标id,日期和对标对象获取对标结果 findByIndIdAndDateAndCompareObjIn(paramMap);//根据考核指标id,日期和对标对象获取对标结果
if(!calResults.isEmpty()) { if(!calResults.isEmpty()) {
for(DriveIndCalResultDef calResult : calResults) { for(DriveIndCalResultDef calResult : calResults) {
if(!"NaN".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
&& !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) { && !"0.0000".equals(calResult.getValue()) && !"0".equals(calResult.getValue())) {
filterCalResults.add(calResult); filterCalResults.add(calResult);
} }
...@@ -357,9 +357,11 @@ public class ShortboardRuleService { ...@@ -357,9 +357,11 @@ public class ShortboardRuleService {
findByIndIdAndDateAndCompareObj(driveId,(date-100),compareObj); findByIndIdAndDateAndCompareObj(driveId,(date-100),compareObj);
if(currentIndCalResult!=null && sameIndCalResult!=null) { if(currentIndCalResult!=null && sameIndCalResult!=null) {
if(!"NaN".equals(currentIndCalResult.getValue()) && if(!"NaN".equals(currentIndCalResult.getValue()) &&
!"Infinite".equals(currentIndCalResult.getValue()) &&
!"0.0000".equals(currentIndCalResult.getValue()) && !"0.0000".equals(currentIndCalResult.getValue()) &&
!"0".equals(currentIndCalResult.getValue())) { !"0".equals(currentIndCalResult.getValue())) {
if(!"NaN".equals(sameIndCalResult.getValue()) && if(!"NaN".equals(sameIndCalResult.getValue()) &&
!"Infinite".equals(sameIndCalResult.getValue()) &&
!"0.0000".equals(sameIndCalResult.getValue()) && !"0.0000".equals(sameIndCalResult.getValue()) &&
!"0".equals(sameIndCalResult.getValue())) { !"0".equals(sameIndCalResult.getValue())) {
if(StringUtils.isNotBlank(shortboardItem.getValue())) { if(StringUtils.isNotBlank(shortboardItem.getValue())) {
......
...@@ -21,7 +21,8 @@ public class CalculateUtils { ...@@ -21,7 +21,8 @@ public class CalculateUtils {
public static String calGowth(String unit,String currentValue,String sameValue,String type) { public static String calGowth(String unit,String currentValue,String sameValue,String type) {
String gowthValue = ""; String gowthValue = "";
StringBuilder formula = new StringBuilder(); StringBuilder formula = new StringBuilder();
if(!"NaN".equals(currentValue) && !"NaN".equals(sameValue)) { if(!"NaN".equals(currentValue) && !"Infinite".equals(currentValue)
&& !"NaN".equals(sameValue) && !"Infinite".equals(sameValue)) {
Object value = null; Object value = null;
if("0".equals(type)) { if("0".equals(type)) {
if("%".equals(unit)) { if("%".equals(unit)) {
...@@ -54,7 +55,7 @@ public class CalculateUtils { ...@@ -54,7 +55,7 @@ public class CalculateUtils {
Map<String,String> invalidMap = new HashMap<>(); Map<String,String> invalidMap = new HashMap<>();
//将map中的无效值挑出来 //将map中的无效值挑出来
for(Entry<String,String> entry : valueMap.entrySet()) { for(Entry<String,String> entry : valueMap.entrySet()) {
if("NaN".equals(entry.getValue()) if("NaN".equals(entry.getValue())|| "Infinite".equals(entry.getValue())
|| "0.0000".equals(entry.getValue()) || "0".equals(entry.getValue()) || "0.0000".equals(entry.getValue()) || "0".equals(entry.getValue())
|| "".equals(entry.getValue())) { || "".equals(entry.getValue())) {
invalidMap.put(entry.getKey(),entry.getValue()); invalidMap.put(entry.getKey(),entry.getValue());
...@@ -135,14 +136,14 @@ public class CalculateUtils { ...@@ -135,14 +136,14 @@ public class CalculateUtils {
formula.append("("); formula.append("(");
for(int i=0;i<values.size();i++) { for(int i=0;i<values.size();i++) {
if(type==0) { if(type==0) {
if("NaN".equals(values.get(i)) if("NaN".equals(values.get(i)) || "Infinite".equals(values.get(i))
|| "0.0000".equals(values.get(i)) || "0".equals(values.get(i)) || "0.0000".equals(values.get(i)) || "0".equals(values.get(i))
|| "".equals(values.get(i))) { || "".equals(values.get(i))) {
size -= 1; size -= 1;
continue; continue;
} }
}else { }else {
if("NaN".equals(values.get(i)) if("NaN".equals(values.get(i)) || "Infinite".equals(values.get(i))
|| "".equals(values.get(i))) { || "".equals(values.get(i))) {
size -= 1; size -= 1;
continue; continue;
......
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