Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
Project
Project
Details
Activity
Releases
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
youjj
cloud-platform
Commits
36b43985
Commit
36b43985
authored
Nov 28, 2019
by
hanfeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
总业绩统计
parent
e2c062c2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
71 additions
and
42 deletions
+71
-42
TotalPerformanceBiz.java
...java/com/xxfc/platform/order/biz/TotalPerformanceBiz.java
+71
-42
No files found.
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/TotalPerformanceBiz.java
View file @
36b43985
...
...
@@ -5,13 +5,16 @@ import cn.hutool.core.util.ObjectUtil;
import
com.github.pagehelper.PageInfo
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.xxfc.platform.order.contant.enumerate.AccountTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.BookkeepingTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.pojo.Achievement
;
import
com.xxfc.platform.order.pojo.QueryCriteria
;
import
com.xxfc.platform.order.pojo.ReturnOrderAmount
;
import
com.xxfc.platform.order.pojo.TotalOrderRevenue
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
io.swagger.models.auth.In
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.poi.hssf.usermodel.HSSFDataFormat
;
...
...
@@ -25,7 +28,9 @@ import javax.servlet.ServletOutputStream;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 总业绩报表service层
...
...
@@ -166,17 +171,21 @@ public class TotalPerformanceBiz {
*/
public
void
exportEntry
(
QueryCriteria
queryCriteria
,
String
name
,
ServletOutputStream
outputStream
)
throws
IOException
{
XSSFWorkbook
hssfWorkbook
=
new
XSSFWorkbook
();
XSSFSheet
sheet
=
hssfWorkbook
.
createSheet
(
"收入"
);
CellStyle
generalCellStyle
=
createGeneralCellStyle
(
hssfWorkbook
);
XSSFWorkbook
wb
=
new
XSSFWorkbook
();
XSSFSheet
sheet
=
wb
.
createSheet
(
"收入"
);
CellStyle
generalCellStyle
=
createGeneralCellStyle
(
wb
);
XSSFRow
row1
=
sheet
.
createRow
(
0
);
String
[]
head
=
new
String
[]{
"下单时间"
,
"订单ID"
,
"订单类型"
,
"应收金额"
,
"优惠金额"
,
"实收金额"
,
"客户姓名"
,
"客户手机号"
,
"邀约人/身份"
,
"要约人手机号"
,
"业绩所属公司"
,
"支付方式"
};
createHeader
(
row1
,
0
,
head
,
generalCellStyle
);
createHeader
(
row1
,
head
,
generalCellStyle
);
List
<
Achievement
>
achievements
=
baseOrderBiz
.
entryStatisticalData
(
queryCriteria
);
if
(
CollectionUtil
.
isEmpty
(
achievements
))
{
throw
new
BaseException
(
"无数据"
);
}
List
<
String
[]>
achievementArray
=
getAchievementArrays
(
achievements
,
12
);
//计算合计
HashMap
<
Integer
,
BigDecimal
>
map
=
Maps
.
newHashMap
();
List
<
String
[]>
achievementArray
=
getAchievementArrays
(
achievements
,
12
,
map
);
createCellData
(
sheet
,
1
,
generalCellStyle
,
achievementArray
);
...
...
@@ -188,18 +197,20 @@ public class TotalPerformanceBiz {
cell1
.
setCellValue
(
"合计"
);
//第五列求和
int
[]
cel
=
new
int
[]{
3
,
4
,
5
};
sum
(
sheet
,
lastRowNum
,
cel
);
hssfWorkbook
.
write
(
outputStream
);
hssfWorkbook
.
close
();
sum
(
rown
,
cel
,
map
);
wb
.
write
(
outputStream
);
wb
.
close
();
}
public
void
sum
(
XSSFSheet
sheet
,
int
lastRowNum
,
int
[]
cel
)
{
for
(
int
i
:
cel
)
{
String
colString
=
CellReference
.
convertNumToColString
(
i
);
//该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
String
sumstring
=
"SUM("
+
colString
+
"2:"
+
colString
+
(
lastRowNum
)
+
")"
;
sheet
.
getRow
(
lastRowNum
).
createCell
(
i
).
setCellFormula
(
sumstring
);
public
void
sum
(
XSSFRow
row
,
int
[]
cel
,
Map
<
Integer
,
BigDecimal
>
map
)
{
for
(
int
i
=
0
;
i
<
cel
.
length
;
i
++)
{
// String colString = CellReference.convertNumToColString(i);
// //该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
// String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")";
// sheet.getRow(lastRowNum).createCell(i).setCellFormula(sumstring);
XSSFCell
cell
=
row
.
createCell
(
cel
[
i
]);
cell
.
setCellValue
(
map
.
get
(
i
).
toString
());
}
}
...
...
@@ -211,7 +222,10 @@ public class TotalPerformanceBiz {
* @param length
* @return
*/
private
List
<
String
[]>
getAchievementArrays
(
List
<
Achievement
>
achievements
,
int
length
)
{
private
List
<
String
[]>
getAchievementArrays
(
List
<
Achievement
>
achievements
,
int
length
,
Map
<
Integer
,
BigDecimal
>
map
)
{
BigDecimal
totalReceivable
=
BigDecimal
.
ZERO
;
BigDecimal
totalReality
=
BigDecimal
.
ZERO
;
BigDecimal
totalDiscount
=
BigDecimal
.
ZERO
;
ArrayList
<
String
[]>
arrayList
=
Lists
.
newArrayList
();
for
(
Achievement
achievement
:
achievements
)
{
String
[]
data
=
new
String
[
length
];
...
...
@@ -219,8 +233,11 @@ public class TotalPerformanceBiz {
data
[
1
]
=
achievement
.
getNo
();
data
[
2
]
=
achievement
.
getType
();
data
[
3
]
=
achievement
.
getOrderAmount
().
toString
();
totalReceivable
=
totalReceivable
.
add
(
achievement
.
getOrderAmount
());
data
[
4
]
=
achievement
.
getFavorablePrice
().
toString
();
totalReality
=
totalReality
.
add
(
achievement
.
getFavorablePrice
());
data
[
5
]
=
achievement
.
getRealAmount
().
toString
();
totalDiscount
=
totalDiscount
.
add
(
achievement
.
getRealAmount
());
data
[
6
]
=
achievement
.
getRealname
();
data
[
7
]
=
achievement
.
getUsername
();
data
[
8
]
=
String
.
format
(
"%s/%s"
,
achievement
.
getParentRealname
()
==
null
?
""
:
achievement
.
getParentRealname
(),
achievement
.
getPositionName
()
==
null
?
""
:
achievement
.
getPositionName
());
...
...
@@ -229,6 +246,11 @@ public class TotalPerformanceBiz {
data
[
11
]
=
achievement
.
getPayWay
();
arrayList
.
add
(
data
);
}
map
.
put
(
0
,
totalReceivable
);
map
.
put
(
1
,
totalReality
);
map
.
put
(
2
,
totalDiscount
);
return
arrayList
;
}
...
...
@@ -241,17 +263,18 @@ public class TotalPerformanceBiz {
* @param outputStream
*/
public
void
exportAccount
(
QueryCriteria
queryCriteria
,
String
name
,
ServletOutputStream
outputStream
)
throws
IOException
{
XSSFWorkbook
hssfWorkbook
=
new
XSSFWorkbook
();
XSSFSheet
sheet
=
hssfWorkbook
.
createSheet
(
"支出"
);
CellStyle
generalCellStyle
=
createGeneralCellStyle
(
hssfWorkbook
);
XSSFWorkbook
wb
=
new
XSSFWorkbook
();
XSSFSheet
sheet
=
wb
.
createSheet
(
"支出"
);
CellStyle
generalCellStyle
=
createGeneralCellStyle
(
wb
);
XSSFRow
row1
=
sheet
.
createRow
(
0
);
String
[]
head
=
new
String
[]{
"退款日期"
,
"订单ID"
,
"订单类型"
,
"退还类型"
,
"退还押金"
,
"客户名"
,
"客户手机号"
};
createHeader
(
row1
,
0
,
head
,
generalCellStyle
);
createHeader
(
row1
,
head
,
generalCellStyle
);
HashMap
<
String
,
BigDecimal
>
map
=
Maps
.
newHashMap
();
List
<
ReturnOrderAmount
>
returnOrderAmounts
=
outStatisticalData
(
queryCriteria
);
List
<
String
[]>
achievementArray
=
getReturnOrderAmountArrays
(
returnOrderAmounts
,
7
);
List
<
String
[]>
achievementArray
=
getReturnOrderAmountArrays
(
returnOrderAmounts
,
7
,
map
);
if
(
CollectionUtil
.
isEmpty
(
achievementArray
))
{
throw
new
BaseException
(
"无数据"
);
}
...
...
@@ -263,15 +286,16 @@ public class TotalPerformanceBiz {
//设置第一列
XSSFCell
cell1
=
rown
.
createCell
(
0
);
cell1
.
setCellValue
(
"合计"
);
cell1
.
setCellStyle
(
generalCellStyle
);
//第五列求和
String
colString
=
CellReference
.
convertNumToColString
(
4
);
//该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
String
sumstring
=
"SUM("
+
colString
+
"2:"
+
colString
+
(
lastRowNum
)
+
")"
;
sheet
.
getRow
(
lastRowNum
).
createCell
(
4
).
setCellFormula
(
sumstring
);
hssfWorkbook
.
write
(
outputStream
);
hssfWorkbook
.
close
();
//
String colString = CellReference.convertNumToColString(4);
//
//该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
//
String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")";
XSSFCell
cell
=
sheet
.
getRow
(
lastRowNum
).
createCell
(
4
);
cell
.
setCellValue
(
map
.
get
(
"totalRefund"
).
toString
());
cell
.
setCellStyle
(
generalCellStyle
);
wb
.
write
(
outputStream
);
wb
.
close
();
}
/**
...
...
@@ -281,7 +305,8 @@ public class TotalPerformanceBiz {
* @param length
* @return
*/
private
List
<
String
[]>
getReturnOrderAmountArrays
(
List
<
ReturnOrderAmount
>
returnOrderAmounts
,
int
length
)
{
private
List
<
String
[]>
getReturnOrderAmountArrays
(
List
<
ReturnOrderAmount
>
returnOrderAmounts
,
int
length
,
Map
<
String
,
BigDecimal
>
map
)
{
BigDecimal
totalRefund
=
BigDecimal
.
ZERO
;
ArrayList
<
String
[]>
arrayList
=
Lists
.
newArrayList
();
for
(
ReturnOrderAmount
returnOrderAmount
:
returnOrderAmounts
)
{
String
[]
data
=
new
String
[
length
];
...
...
@@ -290,36 +315,37 @@ public class TotalPerformanceBiz {
data
[
2
]
=
returnOrderAmount
.
getType
();
data
[
3
]
=
returnOrderAmount
.
getRefundInstruction
();
data
[
4
]
=
returnOrderAmount
.
getRefundAmount
().
toString
();
totalRefund
=
totalRefund
.
add
(
returnOrderAmount
.
getRefundAmount
());
data
[
5
]
=
returnOrderAmount
.
getRealname
();
data
[
6
]
=
returnOrderAmount
.
getUsername
();
arrayList
.
add
(
data
);
}
map
.
put
(
"totalRefund"
,
totalRefund
);
return
arrayList
;
}
private
CellStyle
createGeneralCellStyle
(
XSSFWorkbook
hssfWorkbook
)
{
CellStyle
cellStyleGeneral
=
createHeaderCellStyle
(
hssfWorkbook
);
private
CellStyle
createGeneralCellStyle
(
XSSFWorkbook
wb
)
{
CellStyle
cellStyleGeneral
=
createHeaderCellStyle
(
wb
);
cellStyleGeneral
.
setWrapText
(
true
);
XSSFFont
generalFont
=
createFont
(
hssfWorkbook
);
XSSFFont
generalFont
=
createFont
(
wb
);
generalFont
.
setBold
(
false
);
cellStyleGeneral
.
setFont
(
generalFont
);
return
cellStyleGeneral
;
}
private
void
createHeader
(
Row
row
,
int
cellStartIndex
,
String
[]
header
,
CellStyle
cellStyle
)
{
private
void
createHeader
(
Row
row
,
String
[]
header
,
CellStyle
cellStyle
)
{
for
(
int
i
=
0
;
i
<
header
.
length
;
i
++)
{
Cell
cell
=
row
.
createCell
(
cellStartIndex
);
Cell
cell
=
row
.
createCell
(
i
);
cell
.
setCellValue
(
header
[
i
]);
cell
.
setCellStyle
(
cellStyle
);
cellStartIndex
+=
1
;
}
}
private
CellStyle
createHeaderCellStyle
(
XSSFWorkbook
hssfWorkbook
)
{
XSSFCellStyle
cellStyleHeader
=
hssfWorkbook
.
createCellStyle
();
XSSFDataFormat
dataFormat
=
hssfWorkbook
.
createDataFormat
();
private
CellStyle
createHeaderCellStyle
(
XSSFWorkbook
wb
)
{
XSSFCellStyle
cellStyleHeader
=
wb
.
createCellStyle
();
XSSFDataFormat
dataFormat
=
wb
.
createDataFormat
();
cellStyleHeader
.
setDataFormat
(
dataFormat
.
getFormat
(
"#,##0.00"
));
cellStyleHeader
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
cellStyleHeader
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
...
...
@@ -329,26 +355,29 @@ public class TotalPerformanceBiz {
cellStyleHeader
.
setBorderTop
(
CellStyle
.
BORDER_THIN
);
cellStyleHeader
.
setBorderRight
(
CellStyle
.
BORDER_THIN
);
XSSFFont
headerFont
=
createFont
(
hssfWorkbook
);
XSSFFont
headerFont
=
createFont
(
wb
);
cellStyleHeader
.
setFont
(
headerFont
);
return
cellStyleHeader
;
}
private
XSSFFont
createFont
(
XSSFWorkbook
hssfWorkbook
)
{
XSSFFont
font
=
hssfWorkbook
.
createFont
();
private
XSSFFont
createFont
(
XSSFWorkbook
wb
)
{
XSSFFont
font
=
wb
.
createFont
();
font
.
setFontName
(
"黑体"
);
font
.
setBold
(
true
);
return
font
;
}
private
void
createCellData
(
Sheet
sheet
,
int
startRowIndex
,
CellStyle
cellStyle
,
List
<
String
[]>
memberOrderList
)
{
for
(
String
[]
data
:
memberOrderList
)
{
Row
row
=
sheet
.
createRow
(
startRowIndex
++);
createHeader
(
row
,
0
,
data
,
cellStyle
);
createHeader
(
row
,
data
,
cellStyle
);
}
}
}
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