Commit 5882640a by zhangkb

对标单元计算添加单位计分规则计算代码

parent 798be07b
package com.keymobile.indicators.akka.actor.indicators;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......@@ -9,6 +10,8 @@ import com.keymobile.indicators.akka.message.indicators.CompareUnitCalMsg;
import com.keymobile.indicators.akka.message.indicators.DriveIndIdCalMsg;
import com.keymobile.indicators.akka.message.indicators.FirstExeConfirmMsg;
import com.keymobile.indicators.model.entity.indicators.CompareUnitDef;
import com.keymobile.indicators.service.hytobacco.ScoreRuleService;
import com.keymobile.indicators.utils.SpringUtil;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
......@@ -16,10 +19,26 @@ import akka.actor.Props;
public class CompareUnitCalActor extends AbstractActor{
private ScoreRuleService scoreRuleServer = SpringUtil.getBean(ScoreRuleService.class);
private int numberOfConfirm = 0;//定义返回确认消息的子actor
private int indIdSize = 0;//对标指标个数
private String compareId;//对标单元id
private Integer date;
private String firstExe;//是否先执行 0:否 1:是
private String averageObj;//平均分参考对象
private Integer objScoreRuleId;//单位得分规则id
private List<String> indIdsList = new ArrayList<>();//考核指标id list
private List<String> compareObjsList = new ArrayList<>();//考核对象list
private final ActorRef startCompareUnitCalActor;//定义父actor
static public Props props(ActorRef startCompareUnitCalActor) {
......@@ -35,6 +54,11 @@ public class CompareUnitCalActor extends AbstractActor{
return receiveBuilder()
.match(CompareUnitCalMsg.class,compareUnitCalMsg -> {
CompareUnitDef compareUnitDef = compareUnitCalMsg.getCompareUnitDef();
compareId = compareUnitDef.getCompareId();
date = compareUnitDef.getDate();
firstExe = compareUnitDef.getFirstExe();
averageObj = compareUnitDef.getAverageObj();
objScoreRuleId = compareUnitDef.getObjScoreRuleId();
//获取对标对象
String compareObjsString = compareUnitDef.getCompareObjs();
//获取对标指标
......@@ -42,14 +66,14 @@ public class CompareUnitCalActor extends AbstractActor{
if(StringUtils.isNotBlank(indIdsString) &&
StringUtils.isNotBlank(compareObjsString)) {
//获取考核指标id list
List<String> indIdsList = Arrays.asList(indIdsString.split(","));
indIdsList.addAll(Arrays.asList(indIdsString.split(",")));
//获取考核对象list
List<String> compareObjsList = Arrays.asList(compareObjsString.split(","));
compareObjsList.addAll(Arrays.asList(compareObjsString.split(",")));
indIdSize = indIdsList.size();
for(String indId : indIdsList) {
DriveIndIdCalMsg driveIndIdCalMsg = new DriveIndIdCalMsg(
compareUnitDef.getCompareId(),indId,compareObjsList,compareUnitDef.getDate(),
compareUnitDef.getFirstExe(),compareUnitDef.getAverageObj());
firstExe,averageObj);
//start akka
ActorRef driveIndIdCalActor = this.getContext()
.actorOf(Props.create(DriveIndIdCalActor.class,
......@@ -60,9 +84,18 @@ public class CompareUnitCalActor extends AbstractActor{
})
.match(FirstExeConfirmMsg.class, firstExeConfirmMsg -> {
if (++numberOfConfirm >= indIdSize) {//子actor全部返回
//发送确认信息给父actor
FirstExeConfirmMsg confirmMsg = new FirstExeConfirmMsg(1,"");
startCompareUnitCalActor.tell(confirmMsg, ActorRef.noSender());
//如果是先执行且没有平均分参考对象
if("1".equals(firstExe) && StringUtils.isBlank(averageObj)) {
//发送确认信息给父actor
FirstExeConfirmMsg confirmMsg = new FirstExeConfirmMsg(1,"");
startCompareUnitCalActor.tell(confirmMsg, ActorRef.noSender());
}else {
//计算单位得分
if(objScoreRuleId!=null) {
scoreRuleServer.calObjScore(compareId, indIdsList, compareObjsList,
date, objScoreRuleId);
}
}
}
})
.build();
......
......@@ -142,6 +142,9 @@ public class DriveIndIdCalActor extends AbstractActor{
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
}
}
//发送确认信息给父actor
FirstExeConfirmMsg firstExeConfirmMsg = new FirstExeConfirmMsg(1,"");
compareUnitCalActor.tell(firstExeConfirmMsg, ActorRef.noSender());
}
}
}
......
......@@ -13,5 +13,5 @@ public class CompareUnitDef {
private Integer date;//日期
private String firstExe;//是否先执行 0:否 1:是
private String averageObj;//平均分参考对象(主要场景:省对市考核中会有基础指标值会同级全省的值,然后对于不分组的对标单元的平均分参考的是全省的值算出的平均分)
private String objScoreRuleId;//单位规则评分id
private Integer objScoreRuleId;//单位规则评分id
}
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