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
3d306a4d
Commit
3d306a4d
authored
Jul 30, 2020
by
zhangkb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改报表2获取排名前三末三单位逻辑
parent
9f95096e
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
115 additions
and
17 deletions
+115
-17
IndicatorsReportService.java
...le/indicators/service/report/IndicatorsReportService.java
+43
-5
CalculateUtils.java
...n/java/com/keymobile/indicators/utils/CalculateUtils.java
+72
-12
No files found.
src/main/java/com/keymobile/indicators/service/report/IndicatorsReportService.java
View file @
3d306a4d
...
@@ -2,6 +2,7 @@ package com.keymobile.indicators.service.report;
...
@@ -2,6 +2,7 @@ package com.keymobile.indicators.service.report;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -195,8 +196,17 @@ public class IndicatorsReportService {
...
@@ -195,8 +196,17 @@ public class IndicatorsReportService {
return
"deal indicators report one success"
;
return
"deal indicators report one success"
;
}
}
@SuppressWarnings
(
"unchecked"
)
public
IndicatorsReportTwo
fillDriveIndiReportTwoData
(
String
indId
,
List
<
DriveIndCalResultDef
>
calDatas
,
public
IndicatorsReportTwo
fillDriveIndiReportTwoData
(
String
indId
,
List
<
DriveIndCalResultDef
>
calDatas
,
IndicatorsReportTwo
indReportData
,
Integer
date
,
List
<
String
>
compareObjs
)
{
IndicatorsReportTwo
indReportData
,
Integer
date
,
List
<
String
>
compareObjs
)
{
//针对省对市对标获取前三末三地区顺序
Map
<
String
,
Integer
>
objSort
=
new
HashMap
<>();
objSort
.
put
(
"4301"
,
1
);
objSort
.
put
(
"4302"
,
2
);
objSort
.
put
(
"4303"
,
3
);
objSort
.
put
(
"4304"
,
4
);
objSort
.
put
(
"4305"
,
5
);
objSort
.
put
(
"4306"
,
6
);
objSort
.
put
(
"4307"
,
7
);
objSort
.
put
(
"4308"
,
8
);
objSort
.
put
(
"4309"
,
9
);
objSort
.
put
(
"4310"
,
10
);
objSort
.
put
(
"4311"
,
11
);
objSort
.
put
(
"4312"
,
12
);
objSort
.
put
(
"4313"
,
13
);
objSort
.
put
(
"4331"
,
14
);
String
average
=
null
;
//定义存储指标组内平均值
String
average
=
null
;
//定义存储指标组内平均值
//根据指标id获取指标详情
//根据指标id获取指标详情
DriveIndDef
driveIndDef
=
driveIndDefMapper
.
selectByPrimaryKey
(
indId
);
DriveIndDef
driveIndDef
=
driveIndDefMapper
.
selectByPrimaryKey
(
indId
);
...
@@ -278,6 +288,11 @@ public class IndicatorsReportService {
...
@@ -278,6 +288,11 @@ public class IndicatorsReportService {
int
start
=
0
;
int
start
=
0
;
int
end
=
3
;
int
end
=
3
;
Map
<
String
,
Integer
>
resultRank
=
(
Map
<
String
,
Integer
>)
sameImproveResult
.
get
(
"resultRank"
);
Map
<
String
,
Integer
>
resultRank
=
(
Map
<
String
,
Integer
>)
sameImproveResult
.
get
(
"resultRank"
);
//根据省对市地区顺序排列排名并列的情况
Map
<
String
,
Object
>
objSortRank
=
CalculateUtils
.
rankByObjSort
(
resultRank
,
objSort
);
resultRank
=
(
Map
<
String
,
Integer
>)
objSortRank
.
get
(
"rankMap"
);
end
=
Integer
.
parseInt
(
objSortRank
.
get
(
"rankNum"
).
toString
());
if
(!
resultRank
.
isEmpty
())
{
if
(!
resultRank
.
isEmpty
())
{
StringBuilder
sameImproveHeadThree
=
new
StringBuilder
(
""
);
//同比提升前三
StringBuilder
sameImproveHeadThree
=
new
StringBuilder
(
""
);
//同比提升前三
StringBuilder
sameImproveHeadThreeDesc
=
new
StringBuilder
(
""
);
StringBuilder
sameImproveHeadThreeDesc
=
new
StringBuilder
(
""
);
...
@@ -296,6 +311,11 @@ public class IndicatorsReportService {
...
@@ -296,6 +311,11 @@ public class IndicatorsReportService {
StringBuilder
sameImproveAfterThree
=
new
StringBuilder
(
""
);
//同比提升前三
StringBuilder
sameImproveAfterThree
=
new
StringBuilder
(
""
);
//同比提升前三
StringBuilder
sameImproveAfterThreeDesc
=
new
StringBuilder
(
""
);
//
StringBuilder
sameImproveAfterThreeDesc
=
new
StringBuilder
(
""
);
//
resultRank
=
CalculateUtils
.
sortMapByValue
(
resultRank
,
1
);
//按照value从大到小排序
resultRank
=
CalculateUtils
.
sortMapByValue
(
resultRank
,
1
);
//按照value从大到小排序
//根据省对市地区顺序排列排名并列的情况
objSortRank
=
CalculateUtils
.
rankByObjSort
(
resultRank
,
objSort
);
resultRank
=
(
Map
<
String
,
Integer
>)
objSortRank
.
get
(
"rankMap"
);
end
=
Integer
.
parseInt
(
objSortRank
.
get
(
"rankNum"
).
toString
());
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
resultRank
.
entrySet
())
{
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
resultRank
.
entrySet
())
{
sameImproveAfterThree
.
append
(
entry
.
getKey
()).
append
(
";"
);
sameImproveAfterThree
.
append
(
entry
.
getKey
()).
append
(
";"
);
sameImproveAfterThreeDesc
.
append
(
compareObjMapper
.
get
(
entry
.
getKey
())).
append
(
";"
);
sameImproveAfterThreeDesc
.
append
(
compareObjMapper
.
get
(
entry
.
getKey
())).
append
(
";"
);
...
@@ -311,9 +331,18 @@ public class IndicatorsReportService {
...
@@ -311,9 +331,18 @@ public class IndicatorsReportService {
start
=
0
;
start
=
0
;
StringBuilder
rankHeadThree
=
new
StringBuilder
(
""
);
StringBuilder
rankHeadThree
=
new
StringBuilder
(
""
);
StringBuilder
rankHeadThreeDesc
=
new
StringBuilder
(
""
);
StringBuilder
rankHeadThreeDesc
=
new
StringBuilder
(
""
);
Map
<
String
,
Integer
>
rankMap
=
new
LinkedHashMap
<>();
Map
<
String
,
String
>
objDescMap
=
new
HashMap
<>();
for
(
DriveIndCalResultDef
calData
:
calDatas
)
{
for
(
DriveIndCalResultDef
calData
:
calDatas
)
{
rankHeadThree
.
append
(
calData
.
getCompareObj
()).
append
(
";"
);
rankMap
.
put
(
calData
.
getCompareObj
(),
calData
.
getRank
());
rankHeadThreeDesc
.
append
(
calData
.
getCompareObjDesc
()).
append
(
";"
);
objDescMap
.
put
(
calData
.
getCompareObj
(),
calData
.
getCompareObjDesc
());
}
Map
<
String
,
Object
>
resultRankMap
=
CalculateUtils
.
rankByObjSort
(
rankMap
,
objSort
);
rankMap
=
(
Map
<
String
,
Integer
>)
resultRankMap
.
get
(
"rankMap"
);
end
=
Integer
.
parseInt
(
resultRankMap
.
get
(
"rankNum"
).
toString
());
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
rankMap
.
entrySet
())
{
rankHeadThree
.
append
(
entry
.
getKey
()).
append
(
";"
);
rankHeadThreeDesc
.
append
(
objDescMap
.
get
(
entry
.
getKey
())).
append
(
";"
);
start
+=
1
;
start
+=
1
;
if
(
start
>=
end
)
{
if
(
start
>=
end
)
{
break
;
break
;
...
@@ -321,7 +350,9 @@ public class IndicatorsReportService {
...
@@ -321,7 +350,9 @@ public class IndicatorsReportService {
}
}
indReportData
.
setRankHeadThree
(
rankHeadThree
.
toString
());
indReportData
.
setRankHeadThree
(
rankHeadThree
.
toString
());
indReportData
.
setRankHeadThreeDesc
(
rankHeadThreeDesc
.
toString
());
indReportData
.
setRankHeadThreeDesc
(
rankHeadThreeDesc
.
toString
());
//排名莫三
rankMap
.
clear
();
//排名末三
start
=
0
;
start
=
0
;
StringBuilder
rankAfterThree
=
new
StringBuilder
(
""
);
StringBuilder
rankAfterThree
=
new
StringBuilder
(
""
);
StringBuilder
rankAfterThreeDesc
=
new
StringBuilder
(
""
);
StringBuilder
rankAfterThreeDesc
=
new
StringBuilder
(
""
);
...
@@ -330,8 +361,15 @@ public class IndicatorsReportService {
...
@@ -330,8 +361,15 @@ public class IndicatorsReportService {
"Infinite"
.
equals
(
calDatas
.
get
(
i
).
getValue
()))
{
"Infinite"
.
equals
(
calDatas
.
get
(
i
).
getValue
()))
{
continue
;
continue
;
}
}
rankAfterThree
.
append
(
calDatas
.
get
(
i
).
getCompareObj
()).
append
(
";"
);
rankMap
.
put
(
calDatas
.
get
(
i
).
getCompareObj
(),
calDatas
.
get
(
i
).
getRank
());
rankAfterThreeDesc
.
append
(
calDatas
.
get
(
i
).
getCompareObjDesc
()).
append
(
";"
);
}
rankMap
=
CalculateUtils
.
sortMapByValue
(
rankMap
,
1
);
//按照value从大到小排序
resultRankMap
=
CalculateUtils
.
rankByObjSort
(
rankMap
,
objSort
);
rankMap
=
(
Map
<
String
,
Integer
>)
resultRankMap
.
get
(
"rankMap"
);
end
=
Integer
.
parseInt
(
resultRankMap
.
get
(
"rankNum"
).
toString
());
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
rankMap
.
entrySet
())
{
rankAfterThree
.
append
(
entry
.
getKey
()).
append
(
";"
);
rankAfterThreeDesc
.
append
(
objDescMap
.
get
(
entry
.
getKey
())).
append
(
";"
);
start
+=
1
;
start
+=
1
;
if
(
start
>=
end
)
{
if
(
start
>=
end
)
{
break
;
break
;
...
...
src/main/java/com/keymobile/indicators/utils/CalculateUtils.java
View file @
3d306a4d
...
@@ -187,6 +187,65 @@ public class CalculateUtils {
...
@@ -187,6 +187,65 @@ public class CalculateUtils {
return
calValue
;
return
calValue
;
}
}
//根据地区特定顺序处理并列排名情况
public
static
Map
<
String
,
Object
>
rankByObjSort
(
Map
<
String
,
Integer
>
rankMap
,
Map
<
String
,
Integer
>
objSort
){
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
//排名分类
Map
<
Integer
,
List
<
String
>>
rankClassifyMap
=
new
HashMap
<>();
int
rankNum
=
3
;
for
(
Map
.
Entry
<
String
,
Integer
>
map
:
rankMap
.
entrySet
())
{
if
(
objSort
.
get
(
map
.
getKey
())==
null
)
{
rankClassifyMap
.
clear
();
break
;
}
List
<
String
>
rankClassifyList
=
new
ArrayList
<>();
if
(
rankClassifyMap
.
get
(
map
.
getValue
())!=
null
)
{
rankClassifyList
.
addAll
(
rankClassifyMap
.
get
(
map
.
getValue
()));
}
rankClassifyList
.
add
(
map
.
getKey
());
rankClassifyMap
.
put
(
map
.
getValue
(),
rankClassifyList
);
}
if
(!
rankClassifyMap
.
isEmpty
())
{
if
(
rankClassifyMap
.
get
(
1
)!=
null
)
{
if
(
rankClassifyMap
.
get
(
1
).
size
()>
3
)
{
rankNum
=
rankClassifyMap
.
get
(
1
).
size
();
}
}
}
Map
<
String
,
Integer
>
resultRankMap
=
new
LinkedHashMap
<>();
for
(
Map
.
Entry
<
Integer
,
List
<
String
>>
map
:
rankClassifyMap
.
entrySet
())
{
if
(
map
.
getValue
().
size
()==
1
)
{
resultRankMap
.
put
(
map
.
getValue
().
get
(
0
),
map
.
getKey
());
continue
;
}
List
<
String
>
rankClassifyList
=
map
.
getValue
();
Map
<
String
,
Integer
>
objRankMap
=
new
HashMap
<>();
for
(
String
obj
:
rankClassifyList
)
{
if
(
objSort
.
get
(
obj
)!=
null
)
{
objRankMap
.
put
(
obj
,
objSort
.
get
(
obj
));
}
else
{
objRankMap
.
clear
();
break
;
}
}
if
(!
objRankMap
.
isEmpty
())
{
//地区从小到大排序
objRankMap
=
sortByValueAsc
(
objRankMap
);
for
(
Map
.
Entry
<
String
,
Integer
>
obj
:
objRankMap
.
entrySet
())
{
resultRankMap
.
put
(
obj
.
getKey
(),
map
.
getKey
());
}
}
}
result
.
put
(
"rankNum"
,
rankNum
);
if
(!
resultRankMap
.
isEmpty
())
{
result
.
put
(
"rankMap"
,
resultRankMap
);
}
else
{
result
.
put
(
"rankMap"
,
rankMap
);
}
System
.
out
.
println
(
result
);
return
result
;
}
private
static
Comparator
<
Map
.
Entry
>
comparatorByValueAsc
=
(
Map
.
Entry
o1
,
Map
.
Entry
o2
)
->
{
private
static
Comparator
<
Map
.
Entry
>
comparatorByValueAsc
=
(
Map
.
Entry
o1
,
Map
.
Entry
o2
)
->
{
if
(
o1
.
getValue
()
instanceof
Comparable
)
{
if
(
o1
.
getValue
()
instanceof
Comparable
)
{
return
((
Comparable
)
o1
.
getValue
()).
compareTo
(
o2
.
getValue
());
return
((
Comparable
)
o1
.
getValue
()).
compareTo
(
o2
.
getValue
());
...
@@ -267,19 +326,20 @@ public class CalculateUtils {
...
@@ -267,19 +326,20 @@ 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"
,
"12"
);
//
map.put("1001", "12");
map
.
put
(
"1002"
,
"-1"
);
//
map.put("1002", "-1");
map
.
put
(
"1003"
,
"-4"
);
//
map.put("1003", "-4");
map
.
put
(
"1004"
,
"3"
);
//
map.put("1004", "3");
map
.
put
(
"1005"
,
"5"
);
//
map.put("1005", "5");
map
.
put
(
"1006"
,
"7"
);
//
map.put("1006", "7");
map
.
put
(
"1007"
,
"0"
);
//
map.put("1007", "0");
map
.
put
(
"1008"
,
"-6"
);
//
map.put("1008", "-6");
CalculateUtils
cal
=
new
CalculateUtils
();
CalculateUtils
cal
=
new
CalculateUtils
();
Map
<
String
,
Integer
>
result
=
cal
.
rankValue
(
map
,
"0"
);
cal
.
rankByObjSort
(
new
HashMap
<
String
,
Integer
>(),
new
HashMap
<
String
,
Integer
>());
result
=
cal
.
sortMapByValue
(
result
,
1
);
// Map<String,Integer> result = cal.rankValue(map, "0");
System
.
out
.
println
(
result
);
// result = cal.sortMapByValue(result,1);
// 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<>();
...
...
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