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
b258d5b8
Commit
b258d5b8
authored
Jul 21, 2020
by
zhangkb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对标省对市报表2代码
parent
25011298
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
182 additions
and
39 deletions
+182
-39
IndicatorsReportTwo.java
...e/indicators/model/entity/report/IndicatorsReportTwo.java
+6
-1
IndicatorsReportService.java
...le/indicators/service/report/IndicatorsReportService.java
+152
-14
CalculateUtils.java
...n/java/com/keymobile/indicators/utils/CalculateUtils.java
+24
-24
No files found.
src/main/java/com/keymobile/indicators/model/entity/report/IndicatorsReportTwo.java
View file @
b258d5b8
...
@@ -27,14 +27,19 @@ public class IndicatorsReportTwo {
...
@@ -27,14 +27,19 @@ public class IndicatorsReportTwo {
private
String
currentActualAverage
;
//本期全省平均值
private
String
currentActualAverage
;
//本期全省平均值
private
String
sameActualAverage
;
//同期全省平均值
private
String
sameActualAverage
;
//同期全省平均值
private
String
averageRate
;
//全省平均分同比
private
String
averageRate
;
//全省平均分同比
private
String
trend
;
//
全省平均分
变化趋势 0:趋好 1:趋坏
private
String
trend
;
//
指标
变化趋势 0:趋好 1:趋坏
private
String
currentAverage
;
//本期实际平均值
private
String
currentAverage
;
//本期实际平均值
private
String
bestUnit
;
//标杆单位
private
String
bestUnit
;
//标杆单位
private
String
bestUnitDesc
;
//标杆单位描述
private
String
bestUnitValue
;
//标杆值
private
String
bestUnitValue
;
//标杆值
private
Integer
bestAverageUnits
;
//优于平均单位数
private
Integer
bestAverageUnits
;
//优于平均单位数
private
Integer
sameImproveUnits
;
//同比提升单位数
private
Integer
sameImproveUnits
;
//同比提升单位数
private
String
rankHeadThree
;
//排名前三
private
String
rankHeadThree
;
//排名前三
private
String
rankHeadThreeDesc
;
//排名前三描述
private
String
rankAfterThree
;
//排名末三
private
String
rankAfterThree
;
//排名末三
private
String
rankAfterThreeDesc
;
//排名末三描述
private
String
sameImproveHeadThree
;
//同比提升前三
private
String
sameImproveHeadThree
;
//同比提升前三
private
String
sameImproveHeadThreeDesc
;
//同比提升前三描述
private
String
sameImproveAfterThree
;
//同比提升末三
private
String
sameImproveAfterThree
;
//同比提升末三
private
String
sameImproveAfterThreeDesc
;
//同比提升末三描述
}
}
src/main/java/com/keymobile/indicators/service/report/IndicatorsReportService.java
View file @
b258d5b8
package
com
.
keymobile
.
indicators
.
service
.
report
;
package
com
.
keymobile
.
indicators
.
service
.
report
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -77,21 +80,29 @@ public class IndicatorsReportService {
...
@@ -77,21 +80,29 @@ public class IndicatorsReportService {
}
}
}
}
public
void
dealDriveIndReportTwoData
(
String
compareUnitId
,
Integer
date
)
{
public
void
dealDriveIndReportTwoData
(
String
compareUnitId
,
List
<
String
>
indIds
,
List
<
String
>
compareObjs
,
Integer
date
)
{
String
type
=
this
.
getCompareType
(
date
);
String
type
=
this
.
getCompareType
(
date
);
List
<
DriveIndCalResultDef
>
calDatas
=
driveIndCalResultDefMapper
.
findByCompareIdAndDate
(
for
(
String
indId
:
indIds
)
{
compareUnitId
,
date
);
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
for
(
DriveIndCalResultDef
calData
:
calDatas
)
{
paramMap
.
put
(
"indId"
,
indId
);
//判断是否存在
paramMap
.
put
(
"date"
,
date
);
IndicatorsReportTwo
indReportData
=
reportTwoMapper
.
getDataByParam
(
calData
.
getIndId
(),
paramMap
.
put
(
"compareObjs"
,
compareObjs
);
compareUnitId
,
date
,
type
);
List
<
DriveIndCalResultDef
>
calDatas
=
driveIndCalResultDefMapper
if
(
indReportData
!=
null
)
{
.
findByIndIdAndDateAndCompareObjIn
(
paramMap
);
indReportData
=
new
IndicatorsReportTwo
();
if
(!
calDatas
.
isEmpty
())
{
//判断是否存在
IndicatorsReportTwo
indReportData
=
reportTwoMapper
.
getDataByParam
(
indId
,
compareUnitId
,
date
,
type
);
if
(
indReportData
!=
null
)
{
indReportData
=
new
IndicatorsReportTwo
();
}
indReportData
.
setCompareType
(
type
);
indReportData
.
setCompareUnitId
(
compareUnitId
);
indReportData
.
setCompareDate
(
date
);
this
.
saveOrUpdateReportTwo
(
indReportData
);
}
}
indReportData
.
setCompareType
(
type
);
indReportData
.
setUnit
(
calData
.
getUnit
());
//TODO:
this
.
saveOrUpdateReportTwo
(
indReportData
);
}
}
}
}
...
@@ -164,6 +175,129 @@ public class IndicatorsReportService {
...
@@ -164,6 +175,129 @@ public class IndicatorsReportService {
return
"deal indicators report one success"
;
return
"deal indicators report one success"
;
}
}
public
IndicatorsReportTwo
fillDriveIndiReportTwoData
(
String
indId
,
List
<
DriveIndCalResultDef
>
calDatas
,
IndicatorsReportTwo
indReportData
,
Integer
date
,
List
<
String
>
compareObjs
)
{
String
average
=
null
;
//定义存储指标组内平均值
//根据指标id获取指标详情
DriveIndDef
driveIndDef
=
driveIndDefMapper
.
selectByPrimaryKey
(
indId
);
if
(
driveIndDef
!=
null
)
{
indReportData
.
setIndId
(
driveIndDef
.
getIndId
());
indReportData
.
setIndName
(
driveIndDef
.
getIndName
());
indReportData
.
setUnit
(
driveIndDef
.
getIndUnit
());
}
//取出一项获取平均值
if
(!
calDatas
.
isEmpty
())
{
indReportData
.
setCurrentActualAverage
(
calDatas
.
get
(
0
).
getActualAverage
());
//查找同期对标结果
DriveIndCalResultDef
sameCalData
=
driveIndCalResultDefMapper
.
findByIndIdAndDateAndCompareObj
(
indId
,
(
date
-
100
),
calDatas
.
get
(
0
).
getCompareObj
());
if
(
sameCalData
!=
null
)
{
indReportData
.
setSameActualAverage
(
sameCalData
.
getActualAverage
());
//获取指标正反向类型
String
indRule
=
null
;
if
(
driveIndDef
!=
null
)
{
indRule
=
driveIndDef
.
getIndRule
();
}
//算平均分同比
String
averageRate
=
CalculateUtils
.
calGowth
(
calDatas
.
get
(
0
).
getActualAverage
(),
sameCalData
.
getActualAverage
(),
indRule
);
indReportData
.
setAverageRate
(
averageRate
);
//计算变化趋势
if
(
StringUtils
.
isNotBlank
(
averageRate
))
{
if
(
"1"
.
equals
(
indRule
))
{
//反向
if
(
Double
.
parseDouble
(
calDatas
.
get
(
0
).
getActualAverage
())>
Double
.
parseDouble
(
sameCalData
.
getActualAverage
()))
{
indReportData
.
setTrend
(
"1"
);
//趋差
}
else
{
indReportData
.
setTrend
(
"0"
);
}
}
else
{
//其他当正向处理
if
(
Double
.
parseDouble
(
calDatas
.
get
(
0
).
getActualAverage
())>
Double
.
parseDouble
(
sameCalData
.
getActualAverage
()))
{
indReportData
.
setTrend
(
"0"
);
//趋好
}
else
{
indReportData
.
setTrend
(
"1"
);
}
}
}
}
//填充本期实际平均值
if
(
calDatas
.
get
(
0
).
getActualAverage
()!=
null
&&
!
"0.0"
.
equals
(
calDatas
.
get
(
0
).
getActualAverage
()))
{
average
=
calDatas
.
get
(
0
).
getActualAverage
();
}
else
{
average
=
calDatas
.
get
(
0
).
getAverage
();
}
indReportData
.
setAverageRate
(
average
);
}
if
(!
calDatas
.
isEmpty
())
{
//标杆单位
indReportData
.
setBestUnit
(
calDatas
.
get
(
0
).
getCompareObj
());
indReportData
.
setBestUnitDesc
(
calDatas
.
get
(
0
).
getCompareObjDesc
());
//标杆值
indReportData
.
setBestUnitValue
(
calDatas
.
get
(
0
).
getValue
());
//优于平均数单位数
if
(
StringUtils
.
isNotBlank
(
average
))
{
indReportData
.
setBestAverageUnits
(
this
.
bestAverageUnits
(
average
,
calDatas
));
}
//同比提升单位
Map
<
String
,
Object
>
sameImproveResult
=
this
.
sameImproveUnits
(
indId
,
date
,
compareObjs
,
calDatas
);
indReportData
.
setSameImproveUnits
(
Integer
.
parseInt
(
sameImproveResult
.
get
(
"improveNum"
).
toString
()));
}
return
indReportData
;
}
//同比提升单位数
private
Map
<
String
,
Object
>
sameImproveUnits
(
String
indId
,
Integer
date
,
List
<
String
>
compareObjs
,
List
<
DriveIndCalResultDef
>
currentCalDatas
)
{
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
Integer
improveNum
=
0
;
//单位提升数
Map
<
String
,
Integer
>
resultRank
=
new
HashMap
<>();
//查找同期考核结果
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"indId"
,
indId
);
paramMap
.
put
(
"date"
,
(
date
-
100
));
paramMap
.
put
(
"compareObjs"
,
compareObjs
);
List
<
DriveIndCalResultDef
>
sameCalDatas
=
driveIndCalResultDefMapper
.
findByIndIdAndDateAndCompareObjIn
(
paramMap
);
if
(!
sameCalDatas
.
isEmpty
())
{
Map
<
String
,
String
>
rankMap
=
new
HashMap
<>();
for
(
DriveIndCalResultDef
currentCalData
:
currentCalDatas
)
{
for
(
DriveIndCalResultDef
sameCalData
:
sameCalDatas
)
{
if
(
sameCalData
.
getCompareObj
().
equals
(
currentCalData
.
getCompareObj
())
&&
!
"NaN"
.
equals
(
sameCalData
.
getValue
())
&&
!
"NaN"
.
equals
(
currentCalData
.
getValue
()))
{
rankMap
.
put
(
currentCalData
.
getCompareObj
(),
String
.
valueOf
((
currentCalData
.
getRank
()-
sameCalData
.
getRank
())));
if
((
currentCalData
.
getRank
()-
sameCalData
.
getRank
())>
0
)
{
improveNum
+=
1
;
}
break
;
}
}
}
resultRank
=
CalculateUtils
.
rankValue
(
rankMap
,
"0"
);
}
result
.
put
(
"improveNum"
,
improveNum
);
result
.
put
(
"resultRank"
,
resultRank
);
return
result
;
}
//统计优于平均数量
private
Integer
bestAverageUnits
(
String
average
,
List
<
DriveIndCalResultDef
>
calDatas
)
{
Integer
result
=
0
;
for
(
DriveIndCalResultDef
calData
:
calDatas
)
{
if
(
StringUtils
.
isNotBlank
(
calData
.
getValue
())
&&
!
"NaN"
.
equals
(
calData
.
getValue
())
&&
!
"Infinite"
.
equals
(
calData
.
getValue
()))
{
if
(
Double
.
parseDouble
(
calData
.
getValue
())>
Double
.
parseDouble
(
average
))
{
result
+=
1
;
}
}
}
return
result
;
}
public
IndicatorsReportOne
fillBaseIndiReportOneData
(
IndicatorsData
indiData
,
public
IndicatorsReportOne
fillBaseIndiReportOneData
(
IndicatorsData
indiData
,
IndicatorsReportOne
indReportData
)
{
IndicatorsReportOne
indReportData
)
{
indReportData
.
setIndId
(
indiData
.
getIndId
());
indReportData
.
setIndId
(
indiData
.
getIndId
());
...
@@ -213,8 +347,12 @@ public class IndicatorsReportService {
...
@@ -213,8 +347,12 @@ public class IndicatorsReportService {
indReportData
.
setLastSameScore
(
sameCalData
.
getScore
());
indReportData
.
setLastSameScore
(
sameCalData
.
getScore
());
indReportData
.
setLastSameImprove
(
sameCalData
.
getImproveScore
());
indReportData
.
setLastSameImprove
(
sameCalData
.
getImproveScore
());
//算同比
//算同比
String
growCalType
=
"1"
;
if
(
driveIndDef
!=
null
&&
StringUtils
.
isNotBlank
(
driveIndDef
.
getGrowCalType
()))
{
growCalType
=
driveIndDef
.
getGrowCalType
();
}
String
calGowth
=
CalculateUtils
.
calGowth
(
calData
.
getValue
(),
sameCalData
.
getValue
(),
String
calGowth
=
CalculateUtils
.
calGowth
(
calData
.
getValue
(),
sameCalData
.
getValue
(),
driveIndDef
.
getGrowCalType
()
);
growCalType
);
indReportData
.
setValueRate
(
calGowth
);
indReportData
.
setValueRate
(
calGowth
);
}
}
return
indReportData
;
return
indReportData
;
...
...
src/main/java/com/keymobile/indicators/utils/CalculateUtils.java
View file @
b258d5b8
...
@@ -34,8 +34,8 @@ public class CalculateUtils {
...
@@ -34,8 +34,8 @@ public class CalculateUtils {
public
static
String
calGowth
(
String
currentValue
,
String
sameValue
,
String
type
)
{
public
static
String
calGowth
(
String
currentValue
,
String
sameValue
,
String
type
)
{
String
gowthValue
=
""
;
String
gowthValue
=
""
;
StringBuilder
formula
=
new
StringBuilder
();
StringBuilder
formula
=
new
StringBuilder
();
if
(!
"NaN"
.
equals
(
currentValue
)
&&
!
"Infinite"
.
equals
(
currentValue
)
if
(!
"NaN"
.
equals
(
currentValue
)
&&
!
"Infinite"
.
equals
(
currentValue
)
&&
StringUtils
.
isNotBlank
(
currentValue
)
&&
!
"NaN"
.
equals
(
sameValue
)
&&
!
"Infinite"
.
equals
(
sameValue
))
{
&&
!
"NaN"
.
equals
(
sameValue
)
&&
!
"Infinite"
.
equals
(
sameValue
)
&&
StringUtils
.
isNotBlank
(
sameValue
)
)
{
Object
value
=
null
;
Object
value
=
null
;
if
(
"0"
.
equals
(
type
))
{
if
(
"0"
.
equals
(
type
))
{
formula
.
append
(
currentValue
).
append
(
"-"
).
append
(
sameValue
);
formula
.
append
(
currentValue
).
append
(
"-"
).
append
(
sameValue
);
...
@@ -64,7 +64,7 @@ public class CalculateUtils {
...
@@ -64,7 +64,7 @@ public class CalculateUtils {
//将map中的无效值挑出来
//将map中的无效值挑出来
for
(
Entry
<
String
,
String
>
entry
:
valueMap
.
entrySet
())
{
for
(
Entry
<
String
,
String
>
entry
:
valueMap
.
entrySet
())
{
if
(
"NaN"
.
equals
(
entry
.
getValue
())||
"Infinite"
.
equals
(
entry
.
getValue
())
if
(
"NaN"
.
equals
(
entry
.
getValue
())||
"Infinite"
.
equals
(
entry
.
getValue
())
||
"0.0000"
.
equals
(
entry
.
getValue
())
||
"0"
.
equals
(
entry
.
getValue
())
||
"0.0000"
.
equals
(
entry
.
getValue
())
/*|| "0".equals(entry.getValue())*/
||
""
.
equals
(
entry
.
getValue
()))
{
||
""
.
equals
(
entry
.
getValue
()))
{
invalidMap
.
put
(
entry
.
getKey
(),
entry
.
getValue
());
invalidMap
.
put
(
entry
.
getKey
(),
entry
.
getValue
());
}
else
{
}
else
{
...
@@ -229,29 +229,29 @@ public class CalculateUtils {
...
@@ -229,29 +229,29 @@ public class CalculateUtils {
}
}
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
//
Map<String,String> map = new HashMap<>();
Map
<
String
,
String
>
map
=
new
HashMap
<>();
// map.put("1001", "NaN
");
map
.
put
(
"1001"
,
"12
"
);
// map.put("1002", "NaN
");
map
.
put
(
"1002"
,
"-1
"
);
// map.put("1003", "NaN
");
map
.
put
(
"1003"
,
"-4
"
);
// map.put("1004", "NaN
");
map
.
put
(
"1004"
,
"3
"
);
// map.put("1005", "NaN
");
map
.
put
(
"1005"
,
"5
"
);
// map.put("1006", "NaN
");
map
.
put
(
"1006"
,
"7
"
);
// map.put("1007", "NaN
");
map
.
put
(
"1007"
,
"0
"
);
// map.put("1008", "NaN
");
map
.
put
(
"1008"
,
"-6
"
);
CalculateUtils
cal
=
new
CalculateUtils
();
CalculateUtils
cal
=
new
CalculateUtils
();
// Map<String,Integer> result = cal.rankValue(map, "1
");
Map
<
String
,
Integer
>
result
=
cal
.
rankValue
(
map
,
"0
"
);
//
System.out.println(result);
System
.
out
.
println
(
result
);
//
//
String
formula
=
"([1001]+[1002])/2"
;
//
String formula = "([1001]+[1002])/2";
Map
<
String
,
String
>
map
=
new
HashMap
<>();
//
Map<String,String> map = new HashMap<>();
map
.
put
(
"1001"
,
"3"
);
//
map.put("1001", "3");
map
.
put
(
"1002"
,
"5"
);
//
map.put("1002", "5");
formula
=
formula
.
replace
(
"[1001]"
,
"3"
);
//
formula = formula.replace("[1001]", "3");
formula
=
formula
.
replace
(
"[1002]"
,
"5"
);
//
formula = formula.replace("[1002]", "5");
String
result1
=
AviatorEvaluator
.
execute
(
formula
).
toString
();
//
String result1 = AviatorEvaluator.execute(formula).toString();
String
result2
=
cal
.
calculateFormula
(
formula
,
map
);
//
String result2 = cal.calculateFormula(formula, map);
System
.
out
.
println
(
result1
);
//
System.out.println(result1);
System
.
out
.
println
(
result2
);
//
System.out.println(result2);
// Double b = (double) Math.abs(34-50);
// Double b = (double) Math.abs(34-50);
// System.out.println(b);
// System.out.println(b);
// List<String> listA = new ArrayList<>();
// List<String> listA = new ArrayList<>();
...
...
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