Commit ed320d24 by zhangkb

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

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