Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
T
tianjin-cement
Project
Project
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
竹天卫
tianjin-cement
Commits
bea3477f
Commit
bea3477f
authored
Mar 12, 2021
by
shulidong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
委托单产值导出方法2
parent
a5b58c15
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
263 additions
and
23 deletions
+263
-23
EntrustController.java
...wise/sc/cement/business/controller/EntrustController.java
+3
-1
IEntrustService.java
...a/cn/wise/sc/cement/business/service/IEntrustService.java
+4
-0
EntrustServiceImpl.java
...e/sc/cement/business/service/impl/EntrustServiceImpl.java
+184
-0
ExcelUtil.java
.../main/java/cn/wise/sc/cement/business/util/ExcelUtil.java
+72
-22
No files found.
cement-business/src/main/java/cn/wise/sc/cement/business/controller/EntrustController.java
View file @
bea3477f
...
...
@@ -81,10 +81,12 @@ public class EntrustController {
public
void
export
(
String
startDate
,
String
endDate
,
Integer
status
,
Integer
clientId
,
String
projectName
,
String
projectCode
,
String
fileName
,
HttpServletResponse
response
)
{
long
a
=
System
.
currentTimeMillis
();
try
{
entrustService
.
export
(
startDate
,
endDate
,
status
,
entrustService
.
export
Consignation
(
startDate
,
endDate
,
status
,
clientId
,
projectName
,
projectCode
,
fileName
,
response
);
System
.
out
.
println
(
System
.
currentTimeMillis
()-
a
);
}
catch
(
Exception
e
)
{
log
.
debug
(
"委托列表导出{}"
,
e
);
}
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/service/IEntrustService.java
View file @
bea3477f
...
...
@@ -144,6 +144,10 @@ public interface IEntrustService extends IService<Entrust> {
Integer
clientId
,
String
projectName
,
String
projectCode
,
String
fileName
,
HttpServletResponse
response
);
void
exportConsignation
(
String
startDate
,
String
endDate
,
Integer
status
,
Integer
clientId
,
String
projectName
,
String
projectCode
,
String
fileName
,
HttpServletResponse
response
);
BaseResponse
<
EntrustVo
>
getBaseDtail
(
Integer
id
);
BaseResponse
<
EntrustVo
>
getBaseDtailClient
(
Integer
id
);
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/service/impl/EntrustServiceImpl.java
View file @
bea3477f
...
...
@@ -23,6 +23,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.VerticalAlignment
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFCellStyle
;
import
org.apache.poi.xssf.usermodel.XSSFFont
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -5332,6 +5341,181 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
}
}
@Resource
private
ITeamService
teamService
;
@Resource
private
ISampleDistributionService
sampleDistributionService
;
@Override
public
void
exportConsignation
(
String
startDate
,
String
endDate
,
Integer
status
,
Integer
clientId
,
String
projectName
,
String
projectCode
,
String
fileName
,
HttpServletResponse
response
)
{
//1.首先查询所有可见的检测项
QueryWrapper
<
Team
>
teamQueryWrapper
=
new
QueryWrapper
<>();
teamQueryWrapper
.
eq
(
"is_display"
,
1
);
List
<
Team
>
teamList
=
teamService
.
list
(
teamQueryWrapper
);
//转化成id为key的map
Map
<
Integer
,
Team
>
teamMap
=
teamList
.
stream
().
collect
(
Collectors
.
toMap
(
Team:
:
getId
,
a
->
a
,
(
k1
,
k2
)
->
k1
));
//2.条件查询委托单项
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"startDate"
,
startDate
);
params
.
put
(
"endDate"
,
endDate
);
params
.
put
(
"status"
,
status
);
params
.
put
(
"clientId"
,
clientId
);
params
.
put
(
"projectName"
,
projectName
);
params
.
put
(
"projectCode"
,
projectCode
);
List
<
Map
<
String
,
Object
>>
entrustList
=
entrustMapper
.
exportList
(
params
);
//获取所有的委托单号
List
<
Integer
>
queryList
=
entrustList
.
stream
().
map
(
x
->
Integer
.
parseInt
(
x
.
get
(
"entrustId"
).
toString
())).
collect
(
Collectors
.
toList
());
//3.根据委托单号获取样品
QueryWrapper
<
Sample
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
in
(
"entrust_id"
,
queryList
);
List
<
Sample
>
sampleList
=
sampleService
.
list
(
queryWrapper
);
//4.查询所有的派发检测项
QueryWrapper
<
SampleDistribution
>
sdqueryWrapper
=
new
QueryWrapper
<>();
sdqueryWrapper
.
in
(
"entrust_id"
,
queryList
);
sdqueryWrapper
.
in
(
"sample_id"
,
sampleList
.
stream
().
filter
(
x
->
x
.
getCementCode
().
equals
(
x
.
getParallelCode
())).
map
(
Sample:
:
getId
).
collect
(
Collectors
.
toList
()));
List
<
SampleDistribution
>
sampleDistributions
=
sampleDistributionService
.
list
(
sdqueryWrapper
);
//5.分组并统计
Map
<
Integer
,
List
<
SampleDistribution
>>
groupByEntrustId
=
sampleDistributions
.
stream
().
collect
(
Collectors
.
groupingBy
(
SampleDistribution:
:
getEntrustId
,
Collectors
.
toList
()));
//6.开始填充数据。首先填充表头
XSSFWorkbook
wb
=
new
XSSFWorkbook
();
XSSFSheet
sheet
=
wb
.
createSheet
();
XSSFCellStyle
style
=
wb
.
createCellStyle
();
XSSFFont
font
=
wb
.
createFont
();
//水平居中
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
//垂直居中
style
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
//生成表头
String
[]
in_fo
=
{
"委托单号"
,
"委托单位"
,
"项目编号"
,
"项目名称"
,
"委托人"
,
"样品数量"
,
"发样日期"
,
"是否加急"
,
"实际产值"
,
};
List
<
String
>
infoHeader
=
Arrays
.
asList
(
in_fo
);
generatoronsignationWorkbook
(
font
,
style
,
sheet
,
infoHeader
,
teamList
.
stream
().
map
(
Team:
:
getName
).
collect
(
Collectors
.
toList
()));
//填充数据,从第二行开始
int
rownum
=
2
;
for
(
int
j
=
0
;
j
<
entrustList
.
size
();
j
++)
{
Map
<
String
,
Object
>
entrust
=
entrustList
.
get
(
j
);
int
entrustId
=
Integer
.
parseInt
(
entrust
.
get
(
"entrustId"
).
toString
());
if
(
groupByEntrustId
.
get
(
entrustId
)
!=
null
)
{
XSSFRow
row0
=
sheet
.
createRow
(
rownum
++);
Map
<
Integer
,
List
<
SampleDistribution
>>
sampleDistribuGroup
=
groupByEntrustId
.
get
(
entrustId
).
stream
().
collect
(
Collectors
.
groupingBy
(
SampleDistribution:
:
getTeamId
,
Collectors
.
toList
()));
//处理委托人信息表头
for
(
int
i
=
0
;
i
<
infoHeader
.
size
();
i
++)
{
XSSFCell
tempCell
=
row0
.
createCell
(
i
);
tempCell
.
setCellValue
(
entrust
.
get
(
infoHeader
.
get
(
i
))
==
null
?
""
:
entrust
.
get
(
infoHeader
.
get
(
i
)).
toString
());
tempCell
.
setCellStyle
(
style
);
}
//处理检测项总产值表头
for
(
int
i
=
infoHeader
.
size
();
i
<
teamList
.
size
()
+
infoHeader
.
size
();
i
++)
{
XSSFCell
tempCell
=
row0
.
createCell
(
i
);
Team
team
=
teamList
.
get
(
i
-
infoHeader
.
size
());
tempCell
.
setCellValue
(
sampleDistribuGroup
.
get
(
team
.
getId
())
==
null
?
""
:
team
.
getCharge
().
multiply
(
new
BigDecimal
(
sampleDistribuGroup
.
get
(
team
.
getId
()).
size
())).
toString
());
tempCell
.
setCellStyle
(
style
);
}
//增加1空列
{
XSSFCell
tempCell
=
row0
.
createCell
(
teamList
.
size
()
+
infoHeader
.
size
());
tempCell
.
setCellValue
(
""
);
tempCell
.
setCellStyle
(
style
);
}
//处理检测项信息表头
for
(
int
i
=
teamList
.
size
()
+
infoHeader
.
size
()
+
1
;
i
<
infoHeader
.
size
()
+
1
+
teamList
.
size
()
*
3
;
i
++)
{
Team
team
=
teamList
.
get
((
i
-
teamList
.
size
()
-
infoHeader
.
size
()
-
1
)
/
2
);
XSSFCell
tempCell1
=
row0
.
createCell
(
i
);
tempCell1
.
setCellStyle
(
style
);
tempCell1
.
setCellValue
(
sampleDistribuGroup
.
get
(
team
.
getId
())
==
null
?
""
:
team
.
getCharge
().
toString
());
XSSFCell
tempCell2
=
row0
.
createCell
(++
i
);
tempCell2
.
setCellValue
(
sampleDistribuGroup
.
get
(
team
.
getId
())
==
null
?
""
:
sampleDistribuGroup
.
get
(
team
.
getId
()).
size
()
+
""
);
tempCell2
.
setCellStyle
(
style
);
}
}
}
ExcelUtil
.
excelExportNew
(
fileName
==
null
||
fileName
.
trim
().
length
()
<=
0
?
"委托列表"
:
fileName
,
wb
,
response
);
}
private
static
void
generatoronsignationWorkbook
(
XSSFFont
font
,
XSSFCellStyle
style
,
XSSFSheet
sheet
,
List
<
String
>
infoHeader
,
List
<
String
>
teamsHeader
)
{
//委托项的表头
int
rownum
=
0
;
//创建第一行
XSSFRow
row0
=
sheet
.
createRow
(
rownum
++);
//处理委托人信息表头
for
(
int
i
=
0
;
i
<
infoHeader
.
size
();
i
++)
{
XSSFCell
tempCell
=
row0
.
createCell
(
i
);
tempCell
.
setCellValue
(
infoHeader
.
get
(
i
));
tempCell
.
setCellStyle
(
style
);
}
//处理检测项总产值表头
for
(
int
i
=
infoHeader
.
size
();
i
<
teamsHeader
.
size
()
+
infoHeader
.
size
();
i
++)
{
XSSFCell
tempCell
=
row0
.
createCell
(
i
);
tempCell
.
setCellValue
(
ExcelUtil
.
applyFontsub
(
teamsHeader
.
get
(
i
-
infoHeader
.
size
()),
font
));
tempCell
.
setCellStyle
(
style
);
}
//增加1空列
{
XSSFCell
tempCell
=
row0
.
createCell
(
teamsHeader
.
size
()
+
infoHeader
.
size
());
tempCell
.
setCellValue
(
""
);
tempCell
.
setCellStyle
(
style
);
}
//处理检测项信息表头
for
(
int
i
=
teamsHeader
.
size
()
+
infoHeader
.
size
()
+
1
;
i
<
infoHeader
.
size
()
+
1
+
teamsHeader
.
size
()
*
3
;
i
++)
{
String
header
=
teamsHeader
.
get
((
i
-
teamsHeader
.
size
()
-
infoHeader
.
size
()
-
1
)
/
2
);
XSSFCell
tempCell1
=
row0
.
createCell
(
i
);
tempCell1
.
setCellStyle
(
style
);
tempCell1
.
setCellValue
(
ExcelUtil
.
applyFontsub
(
header
,
font
));
XSSFCell
tempCell2
=
row0
.
createCell
(++
i
);
tempCell2
.
setCellValue
(
ExcelUtil
.
applyFontsub
(
header
,
font
));
tempCell2
.
setCellStyle
(
style
);
//合并表头
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
0
,
0
,
i
-
1
,
i
));
}
//创建第二行
XSSFRow
row1
=
sheet
.
createRow
(
rownum
++);
//处理委托人信息表头
for
(
int
i
=
0
;
i
<
infoHeader
.
size
();
i
++)
{
XSSFCell
tempCell
=
row1
.
createCell
(
i
);
tempCell
.
setCellValue
(
""
);
tempCell
.
setCellStyle
(
style
);
//合并表头
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
0
,
1
,
i
,
i
));
}
//处理检测项总产值表头
for
(
int
i
=
infoHeader
.
size
();
i
<
teamsHeader
.
size
()
+
infoHeader
.
size
();
i
++)
{
XSSFCell
tempCell
=
row1
.
createCell
(
i
);
tempCell
.
setCellValue
(
"计算产值"
);
tempCell
.
setCellStyle
(
style
);
}
//增加1空列
{
XSSFCell
tempCell
=
row0
.
createCell
(
teamsHeader
.
size
()
+
infoHeader
.
size
());
tempCell
.
setCellValue
(
""
);
tempCell
.
setCellStyle
(
style
);
}
//处理检测项信息表头
for
(
int
i
=
teamsHeader
.
size
()
+
1
+
infoHeader
.
size
();
i
<
infoHeader
.
size
()
+
1
+
teamsHeader
.
size
()
*
3
;
i
++)
{
XSSFCell
tempCell1
=
row1
.
createCell
(
i
);
tempCell1
.
setCellValue
(
"单价"
);
tempCell1
.
setCellStyle
(
style
);
XSSFCell
tempCell2
=
row1
.
createCell
(++
i
);
tempCell2
.
setCellValue
(
"数量"
);
tempCell2
.
setCellStyle
(
style
);
}
}
/**
* 查看样品流转信息
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/util/ExcelUtil.java
View file @
bea3477f
package
cn
.
wise
.
sc
.
cement
.
business
.
util
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.util.Arrays
;
import
java.util.List
;
import
javax.servlet.http.HttpServletResponse
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
org.apache.poi.hssf.usermodel.HSSFCellStyle
;
import
org.apache.poi.hssf.usermodel.HSSFFont
;
import
org.apache.poi.hssf.usermodel.HSSFRichTextString
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.ss.usermodel.Cell
;
import
org.apache.poi.ss.usermodel.CellStyle
;
import
org.apache.poi.ss.usermodel.Font
;
import
org.apache.poi.ss.usermodel.FontFormatting
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.usermodel.VerticalAlignment
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.wp.usermodel.Paragraph
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFCellStyle
;
import
org.apache.poi.xssf.usermodel.XSSFFont
;
...
...
@@ -26,6 +19,15 @@ import org.apache.poi.xssf.usermodel.XSSFRow;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* excel工具类
*
...
...
@@ -159,6 +161,42 @@ public class ExcelUtil {
}
}
public
static
void
excelExportNew
(
String
fileName
,
Workbook
workbook
,
HttpServletResponse
response
)
{
if
(
workbook
!=
null
)
{
ByteArrayOutputStream
byteArrayOutputStream
=
null
;
try
{
byteArrayOutputStream
=
new
ByteArrayOutputStream
();
workbook
.
write
(
byteArrayOutputStream
);
String
suffix
=
".xls"
;
response
.
setContentType
(
"application/vnd.ms-excel;charset=utf-8"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
new
String
((
fileName
+
suffix
).
getBytes
(),
"iso-8859-1"
));
OutputStream
outputStream
=
response
.
getOutputStream
();
outputStream
.
write
(
byteArrayOutputStream
.
toByteArray
());
outputStream
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
byteArrayOutputStream
!=
null
)
{
byteArrayOutputStream
.
close
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
try
{
workbook
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
/**
* @param headers 列头
* @param datas 数据
...
...
@@ -244,7 +282,7 @@ public class ExcelUtil {
applyRichStringFontsub
(
value
,
richString
,
xxsfFont
);
cell
.
setCellValue
(
richString
);
// value = cell.getStringCellValue();
}
else
{
}
else
{
cell
.
setCellValue
(
value
);
cell
.
setCellStyle
(
style
);
}
...
...
@@ -259,7 +297,6 @@ public class ExcelUtil {
}*/
}
}
}
...
...
@@ -287,6 +324,19 @@ public class ExcelUtil {
}
}
public
static
XSSFRichTextString
applyFontsub
(
String
sub
,
XSSFFont
xxsfFont
)
{
XSSFRichTextString
richString
=
new
XSSFRichTextString
();
if
(
sub
.
contains
(
"<sub>"
)
||
sub
.
contains
(
"</sub>"
))
{
xxsfFont
.
setTypeOffset
(
FontFormatting
.
SS_SUB
);
richString
.
setString
(
sub
.
replaceAll
(
"</sub>"
,
"<sub>"
).
replaceAll
(
"<sub>"
,
""
));
//提取下标位置
applyRichStringFontsub
(
sub
,
richString
,
xxsfFont
);
}
else
{
richString
.
setString
(
sub
);
}
return
richString
;
}
private
static
void
applyRichStringFontsup
(
String
sup
,
XSSFRichTextString
richString
,
XSSFFont
xxsfFont
)
{
String
[]
split
=
sup
.
replaceAll
(
"</sup>"
,
"<sup>"
).
split
(
"<sup>"
);
String
it_str
=
""
;
...
...
@@ -364,14 +414,14 @@ public class ExcelUtil {
}
/**
* @param infoHeader 委托人信息表头
* @param infoHeader
委托人信息表头
* @param teamsHeader 检测项表头
* @return
*/
private
static
XSSFWorkbook
generatoronsignationWorkbook
(
List
<
String
>
infoHeader
,
List
<
String
>
teamsHeader
)
{
XSSFWorkbook
wb
=
new
XSSFWorkbook
();
XSSFSheet
sheet
=
wb
.
createSheet
(
"sheet1"
);
XSSFCellStyle
style
=
wb
.
createCellStyle
();
XSSFCellStyle
style
=
wb
.
createCellStyle
();
//水平居中
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
//垂直居中
...
...
@@ -409,7 +459,7 @@ public class ExcelUtil {
tempCell2
.
setCellValue
(
header
);
tempCell2
.
setCellStyle
(
style
);
//合并表头
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
0
,
0
,
i
-
1
,
i
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
0
,
0
,
i
-
1
,
i
));
}
//创建第二行
XSSFRow
row1
=
sheet
.
createRow
(
rownum
++);
...
...
@@ -434,7 +484,7 @@ public class ExcelUtil {
tempCell
.
setCellStyle
(
style
);
}
//处理检测项信息表头
for
(
int
i
=
teamsHeader
.
size
()
+
1
+
infoHeader
.
size
();
i
<
infoHeader
.
size
()+
1
+
teamsHeader
.
size
()
*
3
;
i
++)
{
for
(
int
i
=
teamsHeader
.
size
()
+
1
+
infoHeader
.
size
();
i
<
infoHeader
.
size
()
+
1
+
teamsHeader
.
size
()
*
3
;
i
++)
{
XSSFCell
tempCell1
=
row1
.
createCell
(
i
);
tempCell1
.
setCellValue
(
"单价"
);
tempCell1
.
setCellStyle
(
style
);
...
...
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