Commit a4958234 by zhangkb

修改指标计算逻辑

parent 3bca250d
...@@ -142,110 +142,109 @@ public class DriveIndIdObjCalActor extends AbstractActor{ ...@@ -142,110 +142,109 @@ public class DriveIndIdObjCalActor extends AbstractActor{
} }
} }
logger.info(baseIndValueMsg.getConfirmMessage()); logger.info(baseIndValueMsg.getConfirmMessage());
}else { }
String indValue = baseIndValueMsg.getValue(); String indValue = baseIndValueMsg.getValue();
if(StringUtils.isBlank(indValue)) { if(StringUtils.isBlank(indValue)) {
indValue="0.0"; indValue="0.0";
} }
try { try {
driveIndFormula = driveIndFormula.replace("["+baseIndValueMsg.getIndId()+"]", driveIndFormula = driveIndFormula.replace("["+baseIndValueMsg.getIndId()+"]",
indValue); indValue);
//替换公式中的基础指标id为确定指标值 //替换公式中的基础指标id为确定指标值
//env.put(baseIndValueMsg.getIndId(), Double.valueOf(indValue)); //env.put(baseIndValueMsg.getIndId(), Double.valueOf(indValue));
}catch(Exception e) { }catch(Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.error("driveIndId:"+driveIndId+";"+ logger.error("driveIndId:"+driveIndId+";"+
"formula:"+driveIndFormula+";"+ "formula:"+driveIndFormula+";"+
"errorValue:"+indValue+";"+"paramEnv:"+env); "errorValue:"+indValue+";"+"paramEnv:"+env);
//日志记录 //日志记录
String logInfo = compCalLog.getLogInfo(); String logInfo = compCalLog.getLogInfo();
if(StringUtils.isNotBlank(logInfo)) { if(StringUtils.isNotBlank(logInfo)) {
logInfo+="替换公式值出错:driveIndId:"+driveIndId+";"+ logInfo+="替换公式值出错:driveIndId:"+driveIndId+";"+
"formula:"+driveIndFormula+";"+ "formula:"+driveIndFormula+";"+
"errorValue:"+indValue+";"+"paramEnv:"+env+"</n>"; "errorValue:"+indValue+";"+"paramEnv:"+env+"</n>";
compCalLog.setLogInfo(logInfo); compCalLog.setLogInfo(logInfo);
}else { }else {
compCalLog.setLogInfo("替换公式值出错:driveIndId:"+driveIndId+";"+ compCalLog.setLogInfo("替换公式值出错:driveIndId:"+driveIndId+";"+
"formula:"+driveIndFormula+";"+ "formula:"+driveIndFormula+";"+
"errorValue:"+indValue+";"+"paramEnv:"+env+"</n>"); "errorValue:"+indValue+";"+"paramEnv:"+env+"</n>");
}
} }
confirmList.add(baseIndValueMsg.getIsFinish()); }
if (++numberOfConfirm >= indIdSize) {//子actor全部返回 confirmList.add(baseIndValueMsg.getIsFinish());
if(!confirmList.contains(0)) {//取所有基础指标值没错 if (++numberOfConfirm >= indIdSize) {//子actor全部返回
//进行考核指标值计算 if(!confirmList.contains(0)) {//取所有基础指标值没错
try { //进行考核指标值计算
String driveIndValue = AviatorEvaluator.execute(driveIndFormula).toString(); try {
//保留四位小数 String driveIndValue = AviatorEvaluator.execute(driveIndFormula).toString();
if(!driveIndValue.equals("NaN") && !driveIndValue.equals("Infinite")) { //保留四位小数
driveIndValue = String.format("%.4f", if(!driveIndValue.equals("NaN") && !driveIndValue.equals("Infinite")) {
new BigDecimal(Double.valueOf(driveIndValue))); driveIndValue = String.format("%.4f",
} new BigDecimal(Double.valueOf(driveIndValue)));
//判断结果表中是否已存在该结果数据,存在则覆盖
DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findCalResultDataIsExist(compareId, compareObj, driveIndId, date);
if(driveIndCalResult==null) {
driveIndCalResult = new DriveIndCalResultDef(compareId,
driveIndId,compareObj,date,driveIndValue,unit,
"1","1","admin",code,baseIndValueMsg.getCompareObjDesc());
}else {
driveIndCalResult.setCode(code);
driveIndCalResult.setUnit(unit);
driveIndCalResult.setValue(driveIndValue);
driveIndCalResult.setLastUpdateTime(DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
//保存进考核指标结果表中
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
//返回指标值回去算平均值和排名
CalIndAverageAndRankMsg driveIndAverageAndRankMsg =
new CalIndAverageAndRankMsg(driveIndCalResult.getId(),
compareId,driveIndId,compareObj,date,driveIndValue,
unit,indType,scoreCardId,averageDriveIndFormula,compCalLogId);
driveIndIdCalActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
} catch (Exception e) {
//判断结果表中是否已存在该结果数据,存在则覆盖
DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findCalResultDataIsExist(compareId, compareObj, driveIndId, date);
if(driveIndCalResult==null) {
driveIndCalResult = new DriveIndCalResultDef(compareId,
driveIndId,compareObj,date,"NaN",unit,
"1","0","admin",code,baseIndValueMsg.getCompareObjDesc());
}else {
driveIndCalResult.setCode(code);
driveIndCalResult.setUnit(unit);
driveIndCalResult.setValue("NaN");
driveIndCalResult.setLastUpdateTime(DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
logger.error("driveIndId:"+driveIndId+";"+
"paramEnv:"+env+";formula:"+driveIndFormula);
//日志记录
String logInfo = compCalLog.getLogInfo();
if(StringUtils.isNotBlank(logInfo)) {
logInfo+="计算考核指标出错:driveIndId:"+driveIndId+";"+
"paramEnv:"+env+";formula:"+driveIndFormula+"</n>";
compCalLog.setLogInfo(logInfo);
}else {
compCalLog.setLogInfo("计算考核指标出错:driveIndId:"+driveIndId+";"+
"paramEnv:"+env+";formula:"+driveIndFormula+"</n>");
}
CalIndAverageAndRankMsg driveIndAverageAndRankMsg =
new CalIndAverageAndRankMsg(driveIndCalResult.getId(),
compareId,driveIndId,compareObj,date,"NaN",
unit,indType,scoreCardId,averageDriveIndFormula,compCalLogId);
driveIndIdCalActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
} }
}else { //判断结果表中是否已存在该结果数据,存在则覆盖
//返回考核指标因为考核指标公式中的数据项不存在而导致的计算错误标识 DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findCalResultDataIsExist(compareId, compareObj, driveIndId, date);
if(driveIndCalResult==null) {
driveIndCalResult = new DriveIndCalResultDef(compareId,
driveIndId,compareObj,date,driveIndValue,unit,
"1","1","admin",code,baseIndValueMsg.getCompareObjDesc());
}else {
driveIndCalResult.setCode(code);
driveIndCalResult.setUnit(unit);
driveIndCalResult.setValue(driveIndValue);
driveIndCalResult.setLastUpdateTime(DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
//保存进考核指标结果表中
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
//返回指标值回去算平均值和排名
CalIndAverageAndRankMsg driveIndAverageAndRankMsg =
new CalIndAverageAndRankMsg(driveIndCalResult.getId(),
compareId,driveIndId,compareObj,date,driveIndValue,
unit,indType,scoreCardId,averageDriveIndFormula,compCalLogId);
driveIndIdCalActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
} catch (Exception e) {
//判断结果表中是否已存在该结果数据,存在则覆盖
DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findCalResultDataIsExist(compareId, compareObj, driveIndId, date);
if(driveIndCalResult==null) {
driveIndCalResult = new DriveIndCalResultDef(compareId,
driveIndId,compareObj,date,"NaN",unit,
"1","0","admin",code,baseIndValueMsg.getCompareObjDesc());
}else {
driveIndCalResult.setCode(code);
driveIndCalResult.setUnit(unit);
driveIndCalResult.setValue("NaN");
driveIndCalResult.setLastUpdateTime(DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
logger.error("driveIndId:"+driveIndId+";"+
"paramEnv:"+env+";formula:"+driveIndFormula);
//日志记录
String logInfo = compCalLog.getLogInfo();
if(StringUtils.isNotBlank(logInfo)) {
logInfo+="计算考核指标出错:driveIndId:"+driveIndId+";"+
"paramEnv:"+env+";formula:"+driveIndFormula+"</n>";
compCalLog.setLogInfo(logInfo);
}else {
compCalLog.setLogInfo("计算考核指标出错:driveIndId:"+driveIndId+";"+
"paramEnv:"+env+";formula:"+driveIndFormula+"</n>");
}
CalIndAverageAndRankMsg driveIndAverageAndRankMsg = CalIndAverageAndRankMsg driveIndAverageAndRankMsg =
new CalIndAverageAndRankMsg(-1, new CalIndAverageAndRankMsg(driveIndCalResult.getId(),
compareId,driveIndId,compareObj,date,"NaN", compareId,driveIndId,compareObj,date,"NaN",
unit,indType,scoreCardId,averageDriveIndFormula,compCalLogId); unit,indType,scoreCardId,averageDriveIndFormula,compCalLogId);
driveIndIdCalActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender()); driveIndIdCalActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
} }
}else {
//返回考核指标因为考核指标公式中的数据项不存在而导致的计算错误标识
CalIndAverageAndRankMsg driveIndAverageAndRankMsg =
new CalIndAverageAndRankMsg(-1,
compareId,driveIndId,compareObj,date,"NaN",
unit,indType,scoreCardId,averageDriveIndFormula,compCalLogId);
driveIndIdCalActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
} }
} }
//保存日志 //保存日志
......
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