Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
indicators
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhangkb
indicators
Commits
d6798e5b
Commit
d6798e5b
authored
Aug 20, 2020
by
zhangkb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改单位评分规则算法逻辑以及单位评分结果添加字段
parent
4d398ce0
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
46 additions
and
28 deletions
+46
-28
CompareUnitCalActor.java
...indicators/akka/actor/indicators/CompareUnitCalActor.java
+7
-7
StartCompareUnitCalActor.java
...ators/akka/actor/indicators/StartCompareUnitCalActor.java
+8
-8
ObjScoreCalResult.java
...dicators/model/entity/objscorerule/ObjScoreCalResult.java
+2
-0
ScoreRuleService.java
...mobile/indicators/service/hytobacco/ScoreRuleService.java
+20
-11
ObjScoreCalResultMapper.xml
...ain/resources/mybatis/mapping/ObjScoreCalResultMapper.xml
+9
-2
No files found.
src/main/java/com/keymobile/indicators/akka/actor/indicators/CompareUnitCalActor.java
View file @
d6798e5b
...
...
@@ -128,13 +128,13 @@ public class CompareUnitCalActor extends AbstractActor{
startCompareUnitCalActor
.
tell
(
confirmMsg
,
ActorRef
.
noSender
());
}
else
{
//计算单位得分(如果是caltype为0的单位评分规则直接计算单位得分)
if
(
objScoreRuleId
!=
null
)
{
ScoreRule
scoreRule
=
scoreRuleServer
.
getById
(
objScoreRuleId
);
if
(
scoreRule
!=
null
&&
"0"
.
equals
(
scoreRule
.
getCalType
()))
{
scoreRuleServer
.
calObjScore
(
compareId
,
indIdsList
,
compareObjsList
,
date
,
scoreRule
.
getId
());
}
}
//
if(objScoreRuleId!=null) {
//
ScoreRule scoreRule = scoreRuleServer.getById(objScoreRuleId);
//
if(scoreRule!=null && "0".equals(scoreRule.getCalType())) {
//
scoreRuleServer.calObjScore(compareId, indIdsList, compareObjsList,
//
date, scoreRule.getId());
//
}
//
}
//记录日志
if
(
compCalLog
!=
null
)
{
...
...
src/main/java/com/keymobile/indicators/akka/actor/indicators/StartCompareUnitCalActor.java
View file @
d6798e5b
...
...
@@ -62,14 +62,14 @@ public class StartCompareUnitCalActor extends AbstractActor{
}
else
{
afterExeList
.
add
(
unitDef
);
}
//
将对标单元关联的单位评分规则不为空且单位评分规则caltype不为0
的对标单元加到calTypeExeList中
//
单位评分规则不为空
的对标单元加到calTypeExeList中
if
(
unitDef
.
getObjScoreRuleId
()!=
null
)
{
ScoreRule
scoreRule
=
scoreRuleServer
.
getById
(
unitDef
.
getObjScoreRuleId
());
if
(
scoreRule
!=
null
)
{
if
(
scoreRule
.
getCalType
()!=
null
&&
!
"0"
.
equals
(
scoreRule
.
getCalType
()))
{
//
ScoreRule scoreRule = scoreRuleServer.getById(unitDef.getObjScoreRuleId());
//
if(scoreRule!=null) {
//
if(scoreRule.getCalType()!=null && !"0".equals(scoreRule.getCalType())) {
calTypeExeList
.
add
(
unitDef
);
}
}
//
}
//
}
}
}
firstExeUnitSize
=
firstExeList
.
size
();
...
...
@@ -113,7 +113,7 @@ public class StartCompareUnitCalActor extends AbstractActor{
logger
.
info
(
"进行后执行对标单元计算...."
);
}
else
{
if
(!
calTypeExeList
.
isEmpty
())
{
logger
.
info
(
"计算
caltype不为0的
对标单元单位评分......"
);
logger
.
info
(
"计算对标单元单位评分......"
);
for
(
CompareUnitDef
unitDef
:
calTypeExeList
)
{
scoreRuleServer
.
calObjScore
(
unitDef
.
getCompareId
(),
Arrays
.
asList
(
unitDef
.
getIndIds
().
split
(
","
)),
...
...
@@ -131,7 +131,7 @@ public class StartCompareUnitCalActor extends AbstractActor{
.
match
(
AfterExeConfirmMsg
.
class
,
afterExeConfirmMsg
->
{
if
(++
numberOfAfterConfirm
>=
afterExeUnitSize
)
{
//全部后执行的子actor全部返回
if
(!
calTypeExeList
.
isEmpty
())
{
logger
.
info
(
"计算
caltype不为0的
对标单元单位评分......"
);
logger
.
info
(
"计算对标单元单位评分......"
);
for
(
CompareUnitDef
unitDef
:
calTypeExeList
)
{
scoreRuleServer
.
calObjScore
(
unitDef
.
getCompareId
(),
Arrays
.
asList
(
unitDef
.
getIndIds
().
split
(
","
)),
...
...
src/main/java/com/keymobile/indicators/model/entity/objscorerule/ObjScoreCalResult.java
View file @
d6798e5b
...
...
@@ -24,4 +24,6 @@ public class ObjScoreCalResult {
private
Integer
date
;
//对标日期
private
String
scoreValue
;
//考核对象得分
private
String
improveValue
;
//考核对象改善得分
private
String
scoreSumValue
;
//指标总积分
private
Integer
indCount
;
//指标个数
}
src/main/java/com/keymobile/indicators/service/hytobacco/ScoreRuleService.java
View file @
d6798e5b
...
...
@@ -121,21 +121,24 @@ public class ScoreRuleService {
}
}
//计算组内考核指标平均值或者总和 type:0 计算
组内所有
考核指标平均数 3指标总得分
private
ObjScoreCalResult
calGroupIndAverageOrSum
(
ObjScoreCalResult
objResult
,
ScoreRule
scoreRule
,
List
<
String
>
indIds
,
//计算组内考核指标平均值或者总和 type:0 计算
地区所有纳入
考核指标平均数 3指标总得分
private
ObjScoreCalResult
calGroupIndAverageOrSum
(
ObjScoreCalResult
objResult
,
ScoreRule
scoreRule
,
String
compareObj
,
int
date
,
String
type
){
objResult
.
setCompareObj
(
compareObj
);
objResult
.
setScoreValue
(
"0.0"
);
objResult
.
setImproveValue
(
"0.0"
);
objResult
.
setDate
(
date
);
objResult
.
setIndIds
(
String
.
join
(
","
,
indIds
));
//
objResult.setIndIds(String.join(",", indIds));
//根据日期,对标对象和考核的指标获取考核指标结果详情
Map
<
String
,
Object
>
paremMap
=
new
HashMap
<>();
paremMap
.
put
(
"compareObj"
,
compareObj
);
paremMap
.
put
(
"date"
,
date
);
paremMap
.
put
(
"indIds"
,
indIds
);
//Map<String,Object> paremMap = new HashMap<>();
//paremMap.put("compareObj", compareObj);
//paremMap.put("date", date);
//paremMap.put("indIds", indIds);
//List<DriveIndCalResultDef> calResults = driveIndCalResultDefMapper.
//findByCompareObjAndDateAndIndIdIn(paremMap);
List
<
DriveIndCalResultDef
>
calResults
=
driveIndCalResultDefMapper
.
findByCompareObjAndDateAndIndIdIn
(
paremMap
);
findByCompareObjAndDate
(
compareObj
,
date
);
int
indCount
=
0
;
//定义用户记录纳入考核指标个数
List
<
String
>
values
=
new
ArrayList
<>();
List
<
String
>
improveValues
=
new
ArrayList
<>();
if
(!
calResults
.
isEmpty
())
{
...
...
@@ -149,6 +152,7 @@ public class ScoreRuleService {
//如果考核指标是参与单位计分的
if
(
StringUtils
.
isBlank
(
driveIndDef
.
getIsUnitCalScore
())
||
"1"
.
equals
(
driveIndDef
.
getIsUnitCalScore
()))
{
indCount
+=
1
;
//得分类型:0 指标值直接参与计算
if
(
"0"
.
equals
(
scoreRule
.
getScoreType
()))
{
if
(!
"NaN"
.
equals
(
calResult
.
getValue
())
&&
!
"Infinite"
.
equals
(
calResult
.
getValue
())
...
...
@@ -191,6 +195,11 @@ public class ScoreRuleService {
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
.
setImproveValue
(
averageImproveValue
);
}
...
...
@@ -384,10 +393,10 @@ public class ScoreRuleService {
if
(
objScoreCalResult
==
null
)
{
objScoreCalResult
=
new
ObjScoreCalResult
();
}
//计算类型:0
计算组内所有
考核指标平均数
//计算类型:0
地区所有纳入评价的
考核指标平均数
if
(
"0"
.
equals
(
scoreRule
.
getCalType
()))
{
objScoreCalResult
=
this
.
calGroupIndAverageOrSum
(
objScoreCalResult
,
scoreRule
,
indIds
,
compareObj
,
date
,
scoreRule
.
getCalType
());
compareObj
,
date
,
scoreRule
.
getCalType
());
}
else
if
(
"1"
.
equals
(
scoreRule
.
getCalType
()))
{
//1 根据目录类别分类算平均分后根据权重计算考核指标
objScoreCalResult
=
this
.
calIndCatalogTypeAverage
(
objScoreCalResult
,
scoreRule
,
compareObj
,
date
);
...
...
@@ -396,7 +405,7 @@ public class ScoreRuleService {
compareObj
,
date
);
}
else
{
//3:指标总得分
objScoreCalResult
=
this
.
calGroupIndAverageOrSum
(
objScoreCalResult
,
scoreRule
,
indIds
,
compareObj
,
date
,
scoreRule
.
getCalType
());
compareObj
,
date
,
scoreRule
.
getCalType
());
}
objScoreCalResult
.
setCompareId
(
compareId
);
...
...
src/main/resources/mybatis/mapping/ObjScoreCalResultMapper.xml
View file @
d6798e5b
...
...
@@ -11,12 +11,13 @@
<insert
id=
"batchSave"
parameterType=
"java.util.List"
>
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
<foreach
collection=
"datas"
item=
"val"
separator=
","
>
(
#{val.compareId}, #{val.compareObj}, #{val.compareObjDesc}, #{val.indIds}, #{val.date},
#{val.scoreValue},#{val.improveValue})
#{val.scoreValue},#{val.improveValue}
,#{val.scoreSumValue},#{val.indCount}
)
</foreach>
</insert>
...
...
@@ -45,6 +46,12 @@
<if
test=
"val.improveValue != null"
>
improve_value = #{val.improveValue},
</if>
<if
test=
"val.scoreSumValue != null"
>
score_sum_value = #{val.scoreSumValue},
</if>
<if
test=
"val.indCount != null"
>
ind_count = #{val.indCount},
</if>
</set>
where id = ${val.id}
</foreach>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment