Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 7cd14cae
由
LN
编写于
2023-06-08 09:53:11 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
Merge remote-tracking branch 'origin/master'
2 个父辈
178acaa6
91c74957
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
141 行增加
和
4 行删除
src/main/java/com/neotel/smfcore/common/config/file/CustomCellWriteHeightConfig.java
src/main/java/com/neotel/smfcore/common/config/file/CustomCellWriteWeightConfig.java
src/main/java/com/neotel/smfcore/common/init/MenuInit.java
src/main/java/com/neotel/smfcore/common/utils/FileUtil.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/common/config/file/CustomCellWriteHeightConfig.java
0 → 100644
查看文件 @
7cd14ca
package
com
.
neotel
.
smfcore
.
common
.
config
.
file
;
import
com.alibaba.excel.write.style.row.AbstractRowHeightStyleStrategy
;
import
org.apache.poi.ss.usermodel.Cell
;
import
org.apache.poi.ss.usermodel.Row
;
import
java.util.Iterator
;
public
class
CustomCellWriteHeightConfig
extends
AbstractRowHeightStyleStrategy
{
/**
* 默认高度
*/
private
static
final
Integer
DEFAULT_HEIGHT
=
300
;
@Override
protected
void
setHeadColumnHeight
(
Row
row
,
int
relativeRowIndex
)
{
}
@Override
protected
void
setContentColumnHeight
(
Row
row
,
int
relativeRowIndex
)
{
Iterator
<
Cell
>
cellIterator
=
row
.
cellIterator
();
if
(!
cellIterator
.
hasNext
())
{
return
;
}
// 默认为 1行高度
Integer
maxHeight
=
1
;
while
(
cellIterator
.
hasNext
())
{
Cell
cell
=
cellIterator
.
next
();
switch
(
cell
.
getCellTypeEnum
())
{
case
STRING:
if
(
cell
.
getStringCellValue
().
indexOf
(
"\n"
)
!=
-
1
)
{
int
length
=
cell
.
getStringCellValue
().
split
(
"\n"
).
length
;
maxHeight
=
Math
.
max
(
maxHeight
,
length
);
}
break
;
default
:
break
;
}
}
row
.
setHeight
((
short
)
(
maxHeight
*
DEFAULT_HEIGHT
));
}
}
src/main/java/com/neotel/smfcore/common/config/file/CustomCellWriteWeightConfig.java
0 → 100644
查看文件 @
7cd14ca
package
com
.
neotel
.
smfcore
.
common
.
config
.
file
;
import
com.alibaba.excel.enums.CellDataTypeEnum
;
import
com.alibaba.excel.metadata.Head
;
import
com.alibaba.excel.metadata.data.CellData
;
import
com.alibaba.excel.metadata.data.WriteCellData
;
import
com.alibaba.excel.write.metadata.holder.WriteSheetHolder
;
import
com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.poi.ss.usermodel.Cell
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
CustomCellWriteWeightConfig
extends
AbstractColumnWidthStyleStrategy
{
// 可以根据这里的最大宽度,按自己需要进行调整,搭配单元格样式实现类中的,自动换行,效果更好
private
static
final
int
MAX_COLUMN_WIDTH
=
100
;
private
Map
<
Integer
,
Map
<
Integer
,
Integer
>>
CACHE
=
new
HashMap
(
8
);
@Override
protected
void
setColumnWidth
(
WriteSheetHolder
writeSheetHolder
,
List
<
WriteCellData
<?>>
cellDataList
,
Cell
cell
,
Head
head
,
Integer
relativeRowIndex
,
Boolean
isHead
)
{
boolean
needSetWidth
=
isHead
||
!
CollectionUtils
.
isEmpty
(
cellDataList
);
if
(
needSetWidth
)
{
Map
<
Integer
,
Integer
>
maxColumnWidthMap
=
(
Map
)
CACHE
.
get
(
writeSheetHolder
.
getSheetNo
());
if
(
maxColumnWidthMap
==
null
)
{
maxColumnWidthMap
=
new
HashMap
(
16
);
CACHE
.
put
(
writeSheetHolder
.
getSheetNo
(),
maxColumnWidthMap
);
}
Integer
columnWidth
=
this
.
dataLength
(
cellDataList
,
cell
,
isHead
);
if
(
columnWidth
>=
0
)
{
if
(
columnWidth
>
MAX_COLUMN_WIDTH
)
{
columnWidth
=
MAX_COLUMN_WIDTH
;
}
Integer
maxColumnWidth
=
(
Integer
)((
Map
)
maxColumnWidthMap
).
get
(
cell
.
getColumnIndex
());
if
(
maxColumnWidth
==
null
||
columnWidth
>
maxColumnWidth
)
{
((
Map
)
maxColumnWidthMap
).
put
(
cell
.
getColumnIndex
(),
columnWidth
);
writeSheetHolder
.
getSheet
().
setColumnWidth
(
cell
.
getColumnIndex
(),
columnWidth
*
256
);
}
}
}
}
private
Integer
dataLength
(
List
<
WriteCellData
<?>>
cellDataList
,
Cell
cell
,
Boolean
isHead
)
{
if
(
isHead
)
{
return
cell
.
getStringCellValue
().
getBytes
().
length
;
}
else
{
CellData
cellData
=
(
CellData
)
cellDataList
.
get
(
0
);
CellDataTypeEnum
type
=
cellData
.
getType
();
if
(
type
==
null
)
{
return
-
1
;
}
else
{
switch
(
type
)
{
case
STRING:
return
cellData
.
getStringValue
().
getBytes
().
length
;
case
BOOLEAN:
return
cellData
.
getBooleanValue
().
toString
().
getBytes
().
length
;
case
NUMBER:
return
cellData
.
getNumberValue
().
toString
().
getBytes
().
length
;
default
:
return
-
1
;
}
}
}
}
}
src/main/java/com/neotel/smfcore/common/init/MenuInit.java
查看文件 @
7cd14ca
...
@@ -115,7 +115,7 @@ public class MenuInit {
...
@@ -115,7 +115,7 @@ public class MenuInit {
//设备看板
//设备看板
addDefaultFunctionMenu
(
1
,
null
,
"设备看板"
,
"lockMaterial"
,
"lockMaterial/material/index"
,
"kanban"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
1
,
null
,
"设备看板"
,
"lockMaterial"
,
"lockMaterial/material/index"
,
"kanban"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
1
,
null
,
"电子看板"
,
"eleckanban"
,
"elec
k
anban/index"
,
"kanban"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
1
,
null
,
"电子看板"
,
"eleckanban"
,
"elec
K
anban/index"
,
"kanban"
,
DEFAULT_SHOW_MENU
);
//设备互联
//设备互联
addDefaultFunctionMenu
(
2
,
null
,
"设备互联"
,
"equipmentView"
,
"neolight/equipmentView/index"
,
"sKanban"
);
addDefaultFunctionMenu
(
2
,
null
,
"设备互联"
,
"equipmentView"
,
"neolight/equipmentView/index"
,
"sKanban"
);
...
...
src/main/java/com/neotel/smfcore/common/utils/FileUtil.java
查看文件 @
7cd14ca
...
@@ -22,7 +22,11 @@ import cn.hutool.poi.excel.ExcelUtil;
...
@@ -22,7 +22,11 @@ import cn.hutool.poi.excel.ExcelUtil;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.ExcelWriter
;
import
com.alibaba.excel.ExcelWriter
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.style.HorizontalCellStyleStrategy
;
import
com.neotel.smfcore.common.base.IExcelDownLoad
;
import
com.neotel.smfcore.common.base.IExcelDownLoad
;
import
com.neotel.smfcore.common.config.file.CustomCellWriteHeightConfig
;
import
com.neotel.smfcore.common.config.file.CustomCellWriteWeightConfig
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
...
@@ -364,6 +368,26 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -364,6 +368,26 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
}
}
/**
/**
* 一次性导出excel
*/
public
static
void
downloadExcelByConfig
(
String
fileName
,
List
<
List
<
String
>>
headers
,
List
<
List
<
Object
>>
datas
,
HttpServletResponse
response
)
throws
IOException
{
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response
.
setContentType
(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
);
response
.
setCharacterEncoding
(
"utf-8"
);
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
fileName
=
URLEncoder
.
encode
(
fileName
,
"UTF-8"
).
replaceAll
(
"\\+"
,
"%20"
);
//fileName = SYS_TEM_DIR + fileName + ".xlsx";
response
.
setHeader
(
"Content-disposition"
,
"attachment;filename*=utf-8''"
+
fileName
+
".xlsx"
);
WriteCellStyle
contentWriteCellStyle
=
new
WriteCellStyle
();
contentWriteCellStyle
.
setWrapped
(
true
);
EasyExcel
.
write
(
response
.
getOutputStream
()).
sheet
(
"Sheet1"
).
head
(
headers
)
.
registerWriteHandler
(
new
CustomCellWriteHeightConfig
())
.
registerWriteHandler
(
new
CustomCellWriteWeightConfig
())
.
registerWriteHandler
(
new
HorizontalCellStyleStrategy
(
null
,
contentWriteCellStyle
))
.
doWrite
(
datas
);
}
/**
* 设置Header
* 设置Header
*
*
* @param fileName
* @param fileName
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
7cd14ca
...
@@ -431,7 +431,7 @@ public class OrderController {
...
@@ -431,7 +431,7 @@ public class OrderController {
data
.
add
(
exception
);
data
.
add
(
exception
);
dataList
.
add
(
data
);
dataList
.
add
(
data
);
}
}
FileUtil
.
downloadExcel
(
liteOrder
.
getOrderNo
(),
header
,
dataList
,
response
);
FileUtil
.
downloadExcel
ByConfig
(
liteOrder
.
getOrderNo
(),
header
,
dataList
,
response
);
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
7cd14ca
...
@@ -124,9 +124,9 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
...
@@ -124,9 +124,9 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
public
void
setBarcodeStr
(
String
barcodeStr
,
int
amount
)
{
public
void
setBarcodeStr
(
String
barcodeStr
,
int
amount
)
{
if
(
StringUtils
.
isNotBlank
((
this
.
barcodeStr
)))
{
if
(
StringUtils
.
isNotBlank
((
this
.
barcodeStr
)))
{
this
.
barcodeStr
=
this
.
barcodeStr
+
"\n"
+
barcodeStr
+
"
:"
+
amount
;
this
.
barcodeStr
=
this
.
barcodeStr
+
"\n"
+
barcodeStr
+
"
("
+
amount
+
")"
;
}
else
{
}
else
{
this
.
barcodeStr
=
barcodeStr
+
"
:"
+
amount
;
this
.
barcodeStr
=
barcodeStr
+
"
("
+
amount
+
")"
;
}
}
}
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论