Commit d6798e5b by zhangkb

修改单位评分规则算法逻辑以及单位评分结果添加字段

parent 4d398ce0
...@@ -128,13 +128,13 @@ public class CompareUnitCalActor extends AbstractActor{ ...@@ -128,13 +128,13 @@ public class CompareUnitCalActor extends AbstractActor{
startCompareUnitCalActor.tell(confirmMsg, ActorRef.noSender()); startCompareUnitCalActor.tell(confirmMsg, ActorRef.noSender());
}else { }else {
//计算单位得分(如果是caltype为0的单位评分规则直接计算单位得分) //计算单位得分(如果是caltype为0的单位评分规则直接计算单位得分)
if(objScoreRuleId!=null) { //if(objScoreRuleId!=null) {
ScoreRule scoreRule = scoreRuleServer.getById(objScoreRuleId); //ScoreRule scoreRule = scoreRuleServer.getById(objScoreRuleId);
if(scoreRule!=null && "0".equals(scoreRule.getCalType())) { //if(scoreRule!=null && "0".equals(scoreRule.getCalType())) {
scoreRuleServer.calObjScore(compareId, indIdsList, compareObjsList, //scoreRuleServer.calObjScore(compareId, indIdsList, compareObjsList,
date, scoreRule.getId()); //date, scoreRule.getId());
} //}
} //}
//记录日志 //记录日志
if(compCalLog!=null) { if(compCalLog!=null) {
......
...@@ -62,14 +62,14 @@ public class StartCompareUnitCalActor extends AbstractActor{ ...@@ -62,14 +62,14 @@ public class StartCompareUnitCalActor extends AbstractActor{
}else { }else {
afterExeList.add(unitDef); afterExeList.add(unitDef);
} }
//将对标单元关联的单位评分规则不为空且单位评分规则caltype不为0的对标单元加到calTypeExeList中 //单位评分规则不为空的对标单元加到calTypeExeList中
if(unitDef.getObjScoreRuleId()!=null) { if(unitDef.getObjScoreRuleId()!=null) {
ScoreRule scoreRule = scoreRuleServer.getById(unitDef.getObjScoreRuleId()); //ScoreRule scoreRule = scoreRuleServer.getById(unitDef.getObjScoreRuleId());
if(scoreRule!=null) { //if(scoreRule!=null) {
if(scoreRule.getCalType()!=null && !"0".equals(scoreRule.getCalType())) { //if(scoreRule.getCalType()!=null && !"0".equals(scoreRule.getCalType())) {
calTypeExeList.add(unitDef); calTypeExeList.add(unitDef);
} //}
} //}
} }
} }
firstExeUnitSize = firstExeList.size(); firstExeUnitSize = firstExeList.size();
...@@ -113,7 +113,7 @@ public class StartCompareUnitCalActor extends AbstractActor{ ...@@ -113,7 +113,7 @@ public class StartCompareUnitCalActor extends AbstractActor{
logger.info("进行后执行对标单元计算...."); logger.info("进行后执行对标单元计算....");
}else { }else {
if(!calTypeExeList.isEmpty()) { if(!calTypeExeList.isEmpty()) {
logger.info("计算caltype不为0的对标单元单位评分......"); logger.info("计算对标单元单位评分......");
for(CompareUnitDef unitDef : calTypeExeList) { for(CompareUnitDef unitDef : calTypeExeList) {
scoreRuleServer.calObjScore(unitDef.getCompareId(), scoreRuleServer.calObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")), Arrays.asList(unitDef.getIndIds().split(",")),
...@@ -131,7 +131,7 @@ public class StartCompareUnitCalActor extends AbstractActor{ ...@@ -131,7 +131,7 @@ public class StartCompareUnitCalActor extends AbstractActor{
.match(AfterExeConfirmMsg.class, afterExeConfirmMsg -> { .match(AfterExeConfirmMsg.class, afterExeConfirmMsg -> {
if (++numberOfAfterConfirm >= afterExeUnitSize) {//全部后执行的子actor全部返回 if (++numberOfAfterConfirm >= afterExeUnitSize) {//全部后执行的子actor全部返回
if(!calTypeExeList.isEmpty()) { if(!calTypeExeList.isEmpty()) {
logger.info("计算caltype不为0的对标单元单位评分......"); logger.info("计算对标单元单位评分......");
for(CompareUnitDef unitDef : calTypeExeList) { for(CompareUnitDef unitDef : calTypeExeList) {
scoreRuleServer.calObjScore(unitDef.getCompareId(), scoreRuleServer.calObjScore(unitDef.getCompareId(),
Arrays.asList(unitDef.getIndIds().split(",")), Arrays.asList(unitDef.getIndIds().split(",")),
......
...@@ -24,4 +24,6 @@ public class ObjScoreCalResult { ...@@ -24,4 +24,6 @@ public class ObjScoreCalResult {
private Integer date;//对标日期 private Integer date;//对标日期
private String scoreValue;//考核对象得分 private String scoreValue;//考核对象得分
private String improveValue;//考核对象改善得分 private String improveValue;//考核对象改善得分
private String scoreSumValue;//指标总积分
private Integer indCount;//指标个数
} }
...@@ -121,21 +121,24 @@ public class ScoreRuleService { ...@@ -121,21 +121,24 @@ public class ScoreRuleService {
} }
} }
//计算组内考核指标平均值或者总和 type:0 计算组内所有考核指标平均数 3指标总得分 //计算组内考核指标平均值或者总和 type:0 计算地区所有纳入考核指标平均数 3指标总得分
private ObjScoreCalResult calGroupIndAverageOrSum(ObjScoreCalResult objResult,ScoreRule scoreRule,List<String> indIds, private ObjScoreCalResult calGroupIndAverageOrSum(ObjScoreCalResult objResult,ScoreRule scoreRule,
String compareObj,int date,String type){ String compareObj,int date,String type){
objResult.setCompareObj(compareObj); objResult.setCompareObj(compareObj);
objResult.setScoreValue("0.0"); objResult.setScoreValue("0.0");
objResult.setImproveValue("0.0"); objResult.setImproveValue("0.0");
objResult.setDate(date); objResult.setDate(date);
objResult.setIndIds(String.join(",", indIds)); //objResult.setIndIds(String.join(",", indIds));
//根据日期,对标对象和考核的指标获取考核指标结果详情 //根据日期,对标对象和考核的指标获取考核指标结果详情
Map<String,Object> paremMap = new HashMap<>(); //Map<String,Object> paremMap = new HashMap<>();
paremMap.put("compareObj", compareObj); //paremMap.put("compareObj", compareObj);
paremMap.put("date", date); //paremMap.put("date", date);
paremMap.put("indIds", indIds); //paremMap.put("indIds", indIds);
//List<DriveIndCalResultDef> calResults = driveIndCalResultDefMapper.
//findByCompareObjAndDateAndIndIdIn(paremMap);
List<DriveIndCalResultDef> calResults = driveIndCalResultDefMapper. List<DriveIndCalResultDef> calResults = driveIndCalResultDefMapper.
findByCompareObjAndDateAndIndIdIn(paremMap); findByCompareObjAndDate(compareObj, date);
int indCount = 0;//定义用户记录纳入考核指标个数
List<String> values = new ArrayList<>(); List<String> values = new ArrayList<>();
List<String> improveValues = new ArrayList<>(); List<String> improveValues = new ArrayList<>();
if(!calResults.isEmpty()) { if(!calResults.isEmpty()) {
...@@ -149,6 +152,7 @@ public class ScoreRuleService { ...@@ -149,6 +152,7 @@ public class ScoreRuleService {
//如果考核指标是参与单位计分的 //如果考核指标是参与单位计分的
if(StringUtils.isBlank(driveIndDef.getIsUnitCalScore()) || if(StringUtils.isBlank(driveIndDef.getIsUnitCalScore()) ||
"1".equals(driveIndDef.getIsUnitCalScore())) { "1".equals(driveIndDef.getIsUnitCalScore())) {
indCount += 1;
//得分类型:0 指标值直接参与计算 //得分类型:0 指标值直接参与计算
if("0".equals(scoreRule.getScoreType())) { if("0".equals(scoreRule.getScoreType())) {
if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue()) if(!"NaN".equals(calResult.getValue()) && !"Infinite".equals(calResult.getValue())
...@@ -191,6 +195,11 @@ public class ScoreRuleService { ...@@ -191,6 +195,11 @@ public class ScoreRuleService {
averageImproveValue = CalculateUtils.sumValue(improveValues); averageImproveValue = CalculateUtils.sumValue(improveValues);
} }
} }
//计算总积分
Double scoreSumValue = (Double.parseDouble(CalculateUtils.sumValue(values))+
Double.parseDouble(CalculateUtils.sumValue(improveValues)));
objResult.setScoreSumValue(String.valueOf(scoreSumValue));
objResult.setIndCount(indCount);
objResult.setScoreValue(averageValue); objResult.setScoreValue(averageValue);
objResult.setImproveValue(averageImproveValue); objResult.setImproveValue(averageImproveValue);
} }
...@@ -384,10 +393,10 @@ public class ScoreRuleService { ...@@ -384,10 +393,10 @@ public class ScoreRuleService {
if(objScoreCalResult == null) { if(objScoreCalResult == null) {
objScoreCalResult = new ObjScoreCalResult(); objScoreCalResult = new ObjScoreCalResult();
} }
//计算类型:0 计算组内所有考核指标平均数 //计算类型:0 地区所有纳入评价的考核指标平均数
if("0".equals(scoreRule.getCalType())) { if("0".equals(scoreRule.getCalType())) {
objScoreCalResult = this.calGroupIndAverageOrSum(objScoreCalResult, scoreRule, objScoreCalResult = this.calGroupIndAverageOrSum(objScoreCalResult, scoreRule,
indIds, compareObj, date, scoreRule.getCalType()); compareObj, date, scoreRule.getCalType());
}else if("1".equals(scoreRule.getCalType())) {//1 根据目录类别分类算平均分后根据权重计算考核指标 }else if("1".equals(scoreRule.getCalType())) {//1 根据目录类别分类算平均分后根据权重计算考核指标
objScoreCalResult = this.calIndCatalogTypeAverage(objScoreCalResult, scoreRule, objScoreCalResult = this.calIndCatalogTypeAverage(objScoreCalResult, scoreRule,
compareObj, date); compareObj, date);
...@@ -396,7 +405,7 @@ public class ScoreRuleService { ...@@ -396,7 +405,7 @@ public class ScoreRuleService {
compareObj, date); compareObj, date);
}else {//3:指标总得分 }else {//3:指标总得分
objScoreCalResult = this.calGroupIndAverageOrSum(objScoreCalResult, scoreRule, objScoreCalResult = this.calGroupIndAverageOrSum(objScoreCalResult, scoreRule,
indIds, compareObj, date, scoreRule.getCalType()); compareObj, date, scoreRule.getCalType());
} }
objScoreCalResult.setCompareId(compareId); objScoreCalResult.setCompareId(compareId);
......
...@@ -11,12 +11,13 @@ ...@@ -11,12 +11,13 @@
<insert id="batchSave" parameterType="java.util.List"> <insert id="batchSave" parameterType="java.util.List">
insert into obj_score_cal_result( insert into obj_score_cal_result(
compare_id, compare_obj, compare_obj_desc, ind_ids, date, score_value, improve_value) compare_id, compare_obj, compare_obj_desc, ind_ids, date, score_value, improve_value,
score_sum_value, ind_count)
values values
<foreach collection="datas" item="val" separator=","> <foreach collection="datas" item="val" separator=",">
( (
#{val.compareId}, #{val.compareObj}, #{val.compareObjDesc}, #{val.indIds}, #{val.date}, #{val.compareId}, #{val.compareObj}, #{val.compareObjDesc}, #{val.indIds}, #{val.date},
#{val.scoreValue},#{val.improveValue}) #{val.scoreValue},#{val.improveValue},#{val.scoreSumValue},#{val.indCount})
</foreach> </foreach>
</insert> </insert>
...@@ -45,6 +46,12 @@ ...@@ -45,6 +46,12 @@
<if test="val.improveValue != null"> <if test="val.improveValue != null">
improve_value = #{val.improveValue}, improve_value = #{val.improveValue},
</if> </if>
<if test="val.scoreSumValue != null">
score_sum_value = #{val.scoreSumValue},
</if>
<if test="val.indCount != null">
ind_count = #{val.indCount},
</if>
</set> </set>
where id = ${val.id} where id = ${val.id}
</foreach> </foreach>
......
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