Commit d94d480c by hzc

对标运算加try捕获未知异常

parent 82229af3
......@@ -10,6 +10,7 @@ import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.indicators.CompareUnitCalLog;
import com.keymobile.indicators.service.hytobacco.CompareUnitCalLogService;
import com.keymobile.indicators.utils.LogManager;
import com.netflix.discovery.converters.jackson.EurekaXmlJacksonCodec;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -51,6 +52,7 @@ public class BeforeCompareUnitCalActor extends AbstractActor{
@Override
public Receive createReceive() {
try {
return receiveBuilder()
.match(StartCompareUnitCalMsg.class,beforeCompareUnitCalMsg -> {
List<CompareUnitDef> compareUnitDefs = beforeCompareUnitCalMsg.getCompareInitDefs();
......@@ -156,6 +158,12 @@ public class BeforeCompareUnitCalActor extends AbstractActor{
if(compCalLog!=null) {
compCalLog.setEndTime(System.currentTimeMillis()+"");
compCalLog.setRunStatus("1");
String logInfo = compCalLog.getLogInfo();
if(StringUtils.isBlank(logInfo)){
logInfo = "没异常";
}
logInfo = "整体试运算成功-运算过程:"+logInfo;
compCalLog.setLogInfo(logInfo);
compareUnitCalLogService.saveOrUndate(compCalLog);
}
LogManager.logInfo(Constants.LOG_INDICATOR_UNIT_CAL_API,"完成对标单元id:{},日期:{} 的试运行计算",compCalLogId,currentDate );
......@@ -164,18 +172,34 @@ public class BeforeCompareUnitCalActor extends AbstractActor{
if(compCalLog!=null) {
compCalLog.setEndTime(System.currentTimeMillis()+"");
compCalLog.setRunStatus("1");
if(compCalLog.getStatus()==1){
compCalLog.setLogInfo("运算成功");
String logInfo = compCalLog.getLogInfo();
if(StringUtils.isBlank(logInfo)){
logInfo = "没异常";
}
logInfo = "整体运算成功-运算过程:"+logInfo;
compCalLog.setLogInfo(logInfo);
compareUnitCalLogService.saveOrUndate(compCalLog);
}
LogManager.logInfo(Constants.LOG_INDICATOR_UNIT_CAL_API,"完成对标单元id:{},日期:{} 的运行计算",compCalLogId,currentDate );
LogManager.logInfo(Constants.LOG_INDICATOR_UNIT_CAL_API,"完成对标单元id:{},日期:{} 的正式运行计算",compCalLogId,currentDate );
logger.info("本期同期对标单元计算完成");
}
}
}
})
.build();
}catch (Exception e){
e.printStackTrace();
CompareUnitCalLog compCalLog = compareUnitCalLogService.findById(compCalLogId);
if(compCalLog!=null){
compCalLog.setEndTime(System.currentTimeMillis()+"");
compCalLog.setRunStatus("1");
compCalLog.setStatus(0);
compCalLog.setLogInfo("运算失败");
compareUnitCalLogService.saveOrUndate(compCalLog);
}
}
return null;
}
}
......@@ -65,6 +65,8 @@ public class CompareUnitCalActor extends AbstractActor{
@Override
public Receive createReceive() {
try {
return receiveBuilder()
.match(CompareUnitCalMsg.class,compareUnitCalMsg -> {
CompareUnitDef compareUnitDef = compareUnitCalMsg.getCompareUnitDef();
......@@ -75,7 +77,7 @@ public class CompareUnitCalActor extends AbstractActor{
objScoreRuleId = compareUnitDef.getObjScoreRuleId();
code = compareUnitCalMsg.getCode();
isTest = compareUnitCalMsg.getIsTest();
compCalLogId = compareUnitCalMsg.getCompCalLogId();
// //新增运行日志记录
// CompareUnitCalLog compCalLog = new CompareUnitCalLog(compareId,date,
// System.currentTimeMillis()+"","0");
......@@ -85,7 +87,7 @@ public class CompareUnitCalActor extends AbstractActor{
// compCalLog.setType(isTest);
//保存
// Integer compCalLogId = compareUnitCalLogService.saveOrUndate(compCalLog);
compCalLogId = compareUnitCalMsg.getCompCalLogId();
//获取对标对象
String compareObjsString = compareUnitDef.getCompareObjs();
//获取对标指标
......@@ -161,5 +163,18 @@ public class CompareUnitCalActor extends AbstractActor{
}
})
.build();
}catch (Exception e){
e.printStackTrace();
CompareUnitCalLog compCalLog = compareUnitCalLogService.findById(compCalLogId);
if(compCalLog!=null){
compCalLog.setEndTime(System.currentTimeMillis()+"");
compCalLog.setRunStatus("1");
compCalLog.setStatus(0);
compCalLog.setLogInfo("运算失败");
compareUnitCalLogService.saveOrUndate(compCalLog);
}
}
return null;
}
}
......@@ -4,6 +4,8 @@ import java.util.Map;
import com.keymobile.indicators.akka.message.indicators.BaseIndValueMsg;
import com.keymobile.indicators.akka.message.indicators.GetBaseIndValueMsg;
import com.keymobile.indicators.model.entity.indicators.CompareUnitCalLog;
import com.keymobile.indicators.service.hytobacco.CompareUnitCalLogService;
import com.keymobile.indicators.service.hytobacco.IndicatorsValueService;
import com.keymobile.indicators.utils.SpringUtil;
......@@ -13,37 +15,60 @@ public class GetBaseIndValueActor extends AbstractActor{
private IndicatorsValueService indicatorsValueService = SpringUtil.getBean(IndicatorsValueService.class);
private CompareUnitCalLogService compareUnitCalLogService = SpringUtil.getBean(CompareUnitCalLogService.class);
private Integer compCalLogId = null;
@Override
public Receive createReceive() {
return receiveBuilder()
.match(GetBaseIndValueMsg.class,getBaseIndValueMsg -> {
Receive receive = null;
try {
receive= receiveBuilder()
.match(GetBaseIndValueMsg.class, getBaseIndValueMsg -> {
//根据维度值和基础指标id获取指标值
Map<String,Object> indValueMap = indicatorsValueService.getIndicatorsValue(
compCalLogId = getBaseIndValueMsg.getCompCalLogId();
Map<String, Object> indValueMap = indicatorsValueService.getIndicatorsValue(
getBaseIndValueMsg.getIndId(), getBaseIndValueMsg.getDimValue(),
getBaseIndValueMsg.getCode());
if(indValueMap!=null) {
if(indValueMap.get("value")==null) {//如果指标值为空,返回失败结果
if (indValueMap != null) {
if (indValueMap.get("value") == null) {//如果指标值为空,返回失败结果
//返回指标值结果
getSender().tell(new BaseIndValueMsg(getBaseIndValueMsg.getIndId()
,null,indValueMap.get("compareObjDesc").toString(),0,
"获取指标id:"+
getBaseIndValueMsg.getIndId()+";维度:"+
getBaseIndValueMsg.getDimValue().get(0).getDimvalue()+","+
getBaseIndValueMsg.getDimValue().get(1).getDimvalue()+" 的指标值为空;"),getSelf());
}else {
, null, indValueMap.get("compareObjDesc").toString(), 0,
"获取指标id:" +
getBaseIndValueMsg.getIndId() + ";维度:" +
getBaseIndValueMsg.getDimValue().get(0).getDimvalue() + "," +
getBaseIndValueMsg.getDimValue().get(1).getDimvalue() + " 的指标值为空;"), getSelf());
} else {
getSender().tell(new BaseIndValueMsg(getBaseIndValueMsg.getIndId()
,indValueMap.get("value").toString(),
indValueMap.get("compareObjDesc").toString(),1,""),getSelf());
, indValueMap.get("value").toString(),
indValueMap.get("compareObjDesc").toString(), 1, ""), getSelf());
}
}else {
} else {
//返回指标值结果
getSender().tell(new BaseIndValueMsg(getBaseIndValueMsg.getIndId(),null,null,
0,"无法获取指标id:"+
getBaseIndValueMsg.getIndId()+";维度:"+
getBaseIndValueMsg.getDimValue().get(0).getDimvalue()+","+
getBaseIndValueMsg.getDimValue().get(1).getDimvalue()+" 的指标值;"),getSelf());
getSender().tell(new BaseIndValueMsg(getBaseIndValueMsg.getIndId(), null, null,
0, "无法获取指标id:" +
getBaseIndValueMsg.getIndId() + ";维度:" +
getBaseIndValueMsg.getDimValue().get(0).getDimvalue() + "," +
getBaseIndValueMsg.getDimValue().get(1).getDimvalue() + " 的指标值;"), getSelf());
}
})
.build();
}catch (Exception e){
e.printStackTrace();
CompareUnitCalLog compCalLog = compareUnitCalLogService.findById(compCalLogId);
if(compCalLog!=null){
compCalLog.setEndTime(System.currentTimeMillis()+"");
compCalLog.setRunStatus("1");
compCalLog.setStatus(0);
compCalLog.setLogInfo("运算失败");
compareUnitCalLogService.saveOrUndate(compCalLog);
}
}
return receive;
}
}
......@@ -63,8 +63,10 @@ public class StartCompareUnitCalActor extends AbstractActor{
@Override
public Receive createReceive() {
return receiveBuilder()
.match(StartCompareUnitCalMsg.class,startCompareUnitCalMsg -> {
Receive receive = null;
try {
receive = receiveBuilder()
.match(StartCompareUnitCalMsg.class, startCompareUnitCalMsg -> {
code = startCompareUnitCalMsg.getCode();
isTest = startCompareUnitCalMsg.getIsTest();
String user = startCompareUnitCalMsg.getUser();
......@@ -73,14 +75,14 @@ public class StartCompareUnitCalActor extends AbstractActor{
//将对标单元进行分类,需要先执行的先开始进行对标计算
for(CompareUnitDef unitDef : compareUnitDefs) {
if("1".equals(unitDef.getFirstExe())) {
for (CompareUnitDef unitDef : compareUnitDefs) {
if ("1".equals(unitDef.getFirstExe())) {
firstExeList.add(unitDef);
}else {
} else {
afterExeList.add(unitDef);
}
//单位评分规则不为空的对标单元加到calTypeExeList中
if(unitDef.getObjScoreRuleId()!=null) {
if (unitDef.getObjScoreRuleId() != null) {
//ScoreRule scoreRule = scoreRuleServer.getById(unitDef.getObjScoreRuleId());
//if(scoreRule!=null) {
//if(scoreRule.getCalType()!=null && !"0".equals(scoreRule.getCalType())) {
......@@ -91,8 +93,8 @@ public class StartCompareUnitCalActor extends AbstractActor{
}
firstExeUnitSize = firstExeList.size();
afterExeUnitSize = afterExeList.size();
if(!firstExeList.isEmpty()) {
for(CompareUnitDef unitDef : firstExeList) {
if (!firstExeList.isEmpty()) {
for (CompareUnitDef unitDef : firstExeList) {
CompareUnitCalMsg compareUnitCalMsg = new CompareUnitCalMsg(unitDef,
startCompareUnitCalMsg.getCode(),
startCompareUnitCalMsg.getIsTest());
......@@ -102,28 +104,28 @@ public class StartCompareUnitCalActor extends AbstractActor{
ActorRef compareUnitCalActor = this.getContext()
.actorOf(Props.create(CompareUnitCalActor.class,
()->new CompareUnitCalActor(getSelf())));
() -> new CompareUnitCalActor(getSelf())));
compareUnitCalActor.tell(compareUnitCalMsg, getSelf());
}
}else {
if(!afterExeList.isEmpty()) {
for(CompareUnitDef unitDef : afterExeList) {
} else {
if (!afterExeList.isEmpty()) {
for (CompareUnitDef unitDef : afterExeList) {
CompareUnitCalMsg compareUnitCalMsg = new CompareUnitCalMsg(unitDef,
startCompareUnitCalMsg.getCode(),
startCompareUnitCalMsg.getIsTest());
compareUnitCalMsg.setCompCalLogId(compCalLogId);
ActorRef compareUnitCalActor = this.getContext()
.actorOf(Props.create(CompareUnitCalActor.class,
()->new CompareUnitCalActor(getSelf())));
() -> new CompareUnitCalActor(getSelf())));
compareUnitCalActor.tell(compareUnitCalMsg, getSelf());
}
}else {
} else {
//发送确认消息给父actor
CurrentCompUnitExeMsg currentCompUnitExeMsg = new CurrentCompUnitExeMsg(1,"");
CurrentCompUnitExeMsg currentCompUnitExeMsg = new CurrentCompUnitExeMsg(1, "");
beforeCompareUnitActor.tell(currentCompUnitExeMsg, ActorRef.noSender());
if("0".equals(isTest)) {
if ("0".equals(isTest)) {
logger.info("对标单元试运行计算完成");
}else {
} else {
logger.info("对标单元计算完成");
}
}
......@@ -132,49 +134,49 @@ public class StartCompareUnitCalActor extends AbstractActor{
.match(FirstExeConfirmMsg.class, firstExeConfirmMsg -> {
if (++numberOfConfirm >= firstExeUnitSize) {//全部先执行的子actor全部返回
//再执行后执行的actor
if(!afterExeList.isEmpty()) {
for(CompareUnitDef unitDef : afterExeList) {
if (!afterExeList.isEmpty()) {
for (CompareUnitDef unitDef : afterExeList) {
CompareUnitCalMsg compareUnitCalMsg = new CompareUnitCalMsg(unitDef,
code,isTest);
code, isTest);
compareUnitCalMsg.setCompCalLogId(compCalLogId);
ActorRef compareUnitCalActor = this.getContext()
.actorOf(Props.create(CompareUnitCalActor.class,
()->new CompareUnitCalActor(getSelf())));
() -> new CompareUnitCalActor(getSelf())));
compareUnitCalActor.tell(compareUnitCalMsg, getSelf());
}
if("0".equals(isTest)) {
if ("0".equals(isTest)) {
logger.info("进行后执行对标单元试运行计算....");
}else {
} else {
logger.info("进行后执行对标单元计算....");
}
}else {
if(!calTypeExeList.isEmpty()) {
if("0".equals(isTest)) {
} else {
if (!calTypeExeList.isEmpty()) {
if ("0".equals(isTest)) {
logger.info("计算试运行对标单元单位评分......");
}else {
} else {
logger.info("计算对标单元单位评分......");
}
for(CompareUnitDef unitDef : calTypeExeList) {
for (CompareUnitDef unitDef : calTypeExeList) {
//试运行
if("0".equals(isTest)) {
if ("0".equals(isTest)) {
testScoreRuleServer.testCalObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")),
Arrays.asList(unitDef.getCompareObjs().split(",")),
unitDef.getDate(), unitDef.getObjScoreRuleId(),code);
}else {
unitDef.getDate(), unitDef.getObjScoreRuleId(), code);
} else {
scoreRuleServer.calObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")),
Arrays.asList(unitDef.getCompareObjs().split(",")),
unitDef.getDate(), unitDef.getObjScoreRuleId(),code);
unitDef.getDate(), unitDef.getObjScoreRuleId(), code);
}
}
}
//发送确认消息给父actor
CurrentCompUnitExeMsg currentCompUnitExeMsg = new CurrentCompUnitExeMsg(1,"");
CurrentCompUnitExeMsg currentCompUnitExeMsg = new CurrentCompUnitExeMsg(1, "");
beforeCompareUnitActor.tell(currentCompUnitExeMsg, ActorRef.noSender());
if("0".equals(isTest)) {
if ("0".equals(isTest)) {
logger.info("对标单元试运行计算完成");
}else {
} else {
logger.info("对标单元计算完成");
}
}
......@@ -182,37 +184,50 @@ public class StartCompareUnitCalActor extends AbstractActor{
})
.match(AfterExeConfirmMsg.class, afterExeConfirmMsg -> {
if (++numberOfAfterConfirm >= afterExeUnitSize) {//全部后执行的子actor全部返回
if(!calTypeExeList.isEmpty()) {
if("0".equals(isTest)) {
if (!calTypeExeList.isEmpty()) {
if ("0".equals(isTest)) {
logger.info("计算试运行对标单元单位评分......");
}else {
} else {
logger.info("计算对标单元单位评分......");
}
for(CompareUnitDef unitDef : calTypeExeList) {
for (CompareUnitDef unitDef : calTypeExeList) {
//试运行
if("0".equals(isTest)) {
if ("0".equals(isTest)) {
testScoreRuleServer.testCalObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")),
Arrays.asList(unitDef.getCompareObjs().split(",")),
unitDef.getDate(), unitDef.getObjScoreRuleId(),code);
}else {
unitDef.getDate(), unitDef.getObjScoreRuleId(), code);
} else {
scoreRuleServer.calObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")),
Arrays.asList(unitDef.getCompareObjs().split(",")),
unitDef.getDate(), unitDef.getObjScoreRuleId(),code);
unitDef.getDate(), unitDef.getObjScoreRuleId(), code);
}
}
}
//发送确认消息给父actor
CurrentCompUnitExeMsg currentCompUnitExeMsg = new CurrentCompUnitExeMsg(1,"");
CurrentCompUnitExeMsg currentCompUnitExeMsg = new CurrentCompUnitExeMsg(1, "");
beforeCompareUnitActor.tell(currentCompUnitExeMsg, ActorRef.noSender());
if("0".equals(isTest)) {
if ("0".equals(isTest)) {
logger.info("对标单元试运行计算完成");
}else {
} else {
logger.info("对标单元计算完成");
}
}
})
.build();
}catch (Exception e){
e.printStackTrace();
CompareUnitCalLog compCalLog = compareUnitCalLogService.findById(compCalLogId);
if(compCalLog!=null){
compCalLog.setEndTime(System.currentTimeMillis()+"");
compCalLog.setRunStatus("1");
compCalLog.setStatus(0);
compCalLog.setLogInfo("运算失败");
compareUnitCalLogService.saveOrUndate(compCalLog);
}
}
return receive;
}
}
......@@ -18,12 +18,22 @@ public class GetBaseIndValueMsg implements Serializable{
private String code;
private Integer compCalLogId;
public GetBaseIndValueMsg(String indId,List<DimValue> dimValue,String code) {
this.indId = indId;
this.dimValue.addAll(dimValue);
this.code = code;
}
public Integer getCompCalLogId() {
return compCalLogId;
}
public void setCompCalLogId(Integer compCalLogId) {
this.compCalLogId = compCalLogId;
}
public List<DimValue> getDimValue() {
return dimValue;
}
......
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