Commit ed320d24 by zhangkb

修改对标单元单位评分计算逻辑

parent 3d306a4d
...@@ -14,6 +14,7 @@ import com.keymobile.indicators.akka.message.indicators.DriveIndIdCalMsg; ...@@ -14,6 +14,7 @@ import com.keymobile.indicators.akka.message.indicators.DriveIndIdCalMsg;
import com.keymobile.indicators.akka.message.indicators.FirstExeConfirmMsg; import com.keymobile.indicators.akka.message.indicators.FirstExeConfirmMsg;
import com.keymobile.indicators.model.entity.indicators.CompareUnitCalLog; import com.keymobile.indicators.model.entity.indicators.CompareUnitCalLog;
import com.keymobile.indicators.model.entity.indicators.CompareUnitDef; import com.keymobile.indicators.model.entity.indicators.CompareUnitDef;
import com.keymobile.indicators.model.entity.objscorerule.ScoreRule;
import com.keymobile.indicators.service.hytobacco.CompareUnitCalLogService; import com.keymobile.indicators.service.hytobacco.CompareUnitCalLogService;
import com.keymobile.indicators.service.hytobacco.ScoreRuleService; import com.keymobile.indicators.service.hytobacco.ScoreRuleService;
import com.keymobile.indicators.utils.SpringUtil; import com.keymobile.indicators.utils.SpringUtil;
...@@ -115,10 +116,13 @@ public class CompareUnitCalActor extends AbstractActor{ ...@@ -115,10 +116,13 @@ public class CompareUnitCalActor extends AbstractActor{
FirstExeConfirmMsg confirmMsg = new FirstExeConfirmMsg(1,""); FirstExeConfirmMsg confirmMsg = new FirstExeConfirmMsg(1,"");
startCompareUnitCalActor.tell(confirmMsg, ActorRef.noSender()); startCompareUnitCalActor.tell(confirmMsg, ActorRef.noSender());
}else { }else {
//计算单位得分 //计算单位得分(如果是caltype为0的单位评分规则直接计算单位得分)
if(objScoreRuleId!=null) { if(objScoreRuleId!=null) {
ScoreRule scoreRule = scoreRuleServer.getById(objScoreRuleId);
if(scoreRule!=null && "0".equals(scoreRule.getCalType())) {
scoreRuleServer.calObjScore(compareId, indIdsList, compareObjsList, scoreRuleServer.calObjScore(compareId, indIdsList, compareObjsList,
date, objScoreRuleId); date, scoreRule.getId());
}
} }
//记录日志 //记录日志
if(compCalLog!=null) { if(compCalLog!=null) {
......
package com.keymobile.indicators.akka.actor.indicators; package com.keymobile.indicators.akka.actor.indicators;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -10,8 +11,10 @@ import com.keymobile.indicators.akka.message.indicators.AfterExeConfirmMsg; ...@@ -10,8 +11,10 @@ import com.keymobile.indicators.akka.message.indicators.AfterExeConfirmMsg;
import com.keymobile.indicators.akka.message.indicators.CompareUnitCalMsg; import com.keymobile.indicators.akka.message.indicators.CompareUnitCalMsg;
import com.keymobile.indicators.akka.message.indicators.FirstExeConfirmMsg; import com.keymobile.indicators.akka.message.indicators.FirstExeConfirmMsg;
import com.keymobile.indicators.akka.message.indicators.StartCompareUnitCalMsg; import com.keymobile.indicators.akka.message.indicators.StartCompareUnitCalMsg;
import com.keymobile.indicators.model.entity.indicators.CompareUnitCalLog;
import com.keymobile.indicators.model.entity.indicators.CompareUnitDef; import com.keymobile.indicators.model.entity.indicators.CompareUnitDef;
import com.keymobile.indicators.model.entity.objscorerule.ScoreRule;
import com.keymobile.indicators.service.hytobacco.ScoreRuleService;
import com.keymobile.indicators.utils.SpringUtil;
import akka.actor.AbstractActor; import akka.actor.AbstractActor;
import akka.actor.ActorRef; import akka.actor.ActorRef;
...@@ -20,6 +23,8 @@ import akka.actor.Props; ...@@ -20,6 +23,8 @@ import akka.actor.Props;
public class StartCompareUnitCalActor extends AbstractActor{ public class StartCompareUnitCalActor extends AbstractActor{
private Logger logger = LoggerFactory.getLogger(StartCompareUnitCalActor.class); private Logger logger = LoggerFactory.getLogger(StartCompareUnitCalActor.class);
private ScoreRuleService scoreRuleServer = SpringUtil.getBean(ScoreRuleService.class);
private List<CompareUnitDef> firstExeList = new ArrayList<>();//先执行对标单元list private List<CompareUnitDef> firstExeList = new ArrayList<>();//先执行对标单元list
private List<CompareUnitDef> afterExeList = new ArrayList<>();//后执行对标单元list private List<CompareUnitDef> afterExeList = new ArrayList<>();//后执行对标单元list
...@@ -32,6 +37,8 @@ public class StartCompareUnitCalActor extends AbstractActor{ ...@@ -32,6 +37,8 @@ public class StartCompareUnitCalActor extends AbstractActor{
private int afterExeUnitSize = 0;//后执行的对标单元个数 private int afterExeUnitSize = 0;//后执行的对标单元个数
private List<CompareUnitDef> calTypeExeList = new ArrayList<>();//存储对标单元单位评分规则calType不为0的对标单元list
@Override @Override
public Receive createReceive() { public Receive createReceive() {
return receiveBuilder() return receiveBuilder()
...@@ -44,6 +51,15 @@ public class StartCompareUnitCalActor extends AbstractActor{ ...@@ -44,6 +51,15 @@ public class StartCompareUnitCalActor extends AbstractActor{
}else { }else {
afterExeList.add(unitDef); afterExeList.add(unitDef);
} }
//将对标单元关联的单位评分规则不为空且单位评分规则caltype不为0的对标单元加到calTypeExeList中
if(unitDef.getObjScoreRuleId()!=null) {
ScoreRule scoreRule = scoreRuleServer.getById(unitDef.getObjScoreRuleId());
if(scoreRule!=null) {
if(scoreRule.getCalType()!=null && !"0".equals(scoreRule.getCalType())) {
calTypeExeList.add(unitDef);
}
}
}
} }
firstExeUnitSize = firstExeList.size(); firstExeUnitSize = firstExeList.size();
afterExeUnitSize = afterExeList.size(); afterExeUnitSize = afterExeList.size();
...@@ -82,12 +98,30 @@ public class StartCompareUnitCalActor extends AbstractActor{ ...@@ -82,12 +98,30 @@ public class StartCompareUnitCalActor extends AbstractActor{
} }
logger.info("进行后执行对标单元计算...."); logger.info("进行后执行对标单元计算....");
}else { }else {
if(!calTypeExeList.isEmpty()) {
logger.info("计算caltype不为0的对标单元单位评分......");
for(CompareUnitDef unitDef : calTypeExeList) {
scoreRuleServer.calObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")),
Arrays.asList(unitDef.getCompareObjs().split(",")),
unitDef.getDate(), unitDef.getObjScoreRuleId());
}
}
logger.info("对标单元计算完成"); logger.info("对标单元计算完成");
} }
} }
}) })
.match(AfterExeConfirmMsg.class, afterExeConfirmMsg -> { .match(AfterExeConfirmMsg.class, afterExeConfirmMsg -> {
if (++numberOfAfterConfirm >= afterExeUnitSize) {//全部后执行的子actor全部返回 if (++numberOfAfterConfirm >= afterExeUnitSize) {//全部后执行的子actor全部返回
if(!calTypeExeList.isEmpty()) {
logger.info("计算caltype不为0的对标单元单位评分......");
for(CompareUnitDef unitDef : calTypeExeList) {
scoreRuleServer.calObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")),
Arrays.asList(unitDef.getCompareObjs().split(",")),
unitDef.getDate(), unitDef.getObjScoreRuleId());
}
}
logger.info("对标单元计算完成"); logger.info("对标单元计算完成");
} }
}) })
......
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