Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
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
项目统一框架
amos-boot-biz
Commits
2a018dea
Commit
2a018dea
authored
Jul 01, 2021
by
tangwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
注释导出
parent
825ac0e2
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
640 additions
and
727 deletions
+640
-727
BaseDto.java
...in/java/com/yeejoin/amos/boot/biz/common/dto/BaseDto.java
+6
-6
BeanConverUtil.java
...om/yeejoin/amos/boot/biz/common/utils/BeanConverUtil.java
+0
-66
ExcelDto.java
...va/com/yeejoin/amos/boot/module/jcs/api/dto/ExcelDto.java
+0
-2
FireChemicalDto.java
...yeejoin/amos/boot/module/jcs/api/dto/FireChemicalDto.java
+11
-25
ExcelListener.java
...yeejoin/amos/boot/module/jcs/api/excel/ExcelListener.java
+48
-48
ExcelUtil.java
...com/yeejoin/amos/boot/module/jcs/api/excel/ExcelUtil.java
+220
-225
ExplicitConstraint.java
...in/amos/boot/module/jcs/api/excel/ExplicitConstraint.java
+20
-20
ExplicitInterface.java
...oin/amos/boot/module/jcs/api/excel/ExplicitInterface.java
+12
-12
RoleNameExplicitConstraint.java
...boot/module/jcs/api/excel/RoleNameExplicitConstraint.java
+29
-29
TemplateCellWriteHandler.java
...s/boot/module/jcs/api/excel/TemplateCellWriteHandler.java
+78
-78
TemplateCellWriteHandlerDate.java
...ot/module/jcs/api/excel/TemplateCellWriteHandlerDate.java
+115
-115
ExcelController.java
.../amos/boot/module/jcs/biz/controller/ExcelController.java
+101
-101
pom.xml
pom.xml
+0
-0
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/dto/BaseDto.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
dto
;
package
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
dto
;
import
com.alibaba.excel.annotation.ExcelIgnore
;
//
import com.alibaba.excel.annotation.ExcelIgnore;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -18,22 +18,22 @@ public class BaseDto implements Serializable{
...
@@ -18,22 +18,22 @@ public class BaseDto implements Serializable{
/**
/**
*
*
*/
*/
@ExcelIgnore
//
@ExcelIgnore
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ExcelIgnore
//
@ExcelIgnore
@ApiModelProperty
(
value
=
"主键ID"
)
@ApiModelProperty
(
value
=
"主键ID"
)
protected
Long
sequenceNbr
;
protected
Long
sequenceNbr
;
@ExcelIgnore
//
@ExcelIgnore
@ApiModelProperty
(
value
=
"更新时间"
)
@ApiModelProperty
(
value
=
"更新时间"
)
protected
Date
recDate
;
protected
Date
recDate
;
@ExcelIgnore
//
@ExcelIgnore
@ApiModelProperty
(
value
=
"更新人"
)
@ApiModelProperty
(
value
=
"更新人"
)
protected
String
recUserId
;
protected
String
recUserId
;
/**
/**
* 是否删除
* 是否删除
*/
*/
@ExcelIgnore
//
@ExcelIgnore
@TableField
(
value
=
"is_delete"
)
@TableField
(
value
=
"is_delete"
)
private
Boolean
isDelete
;
private
Boolean
isDelete
;
}
}
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/utils/BeanConverUtil.java
deleted
100644 → 0
View file @
825ac0e2
package
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
utils
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
org.apache.commons.beanutils.BeanUtils
;
import
com.alibaba.excel.util.CollectionUtils
;
public
class
BeanConverUtil
{
/**
* 单个类转换
*
* @param sourceObj
* @param targetClass
* @param <T>
* @return
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
public
static
<
T
>
T
conver
(
Object
sourceObj
,
Class
<
T
>
targetClass
)
throws
IllegalAccessException
,
InvocationTargetException
{
if
(
sourceObj
==
null
||
targetClass
==
null
)
{
return
null
;
}
T
targetObj
=
null
;
try
{
targetObj
=
targetClass
.
newInstance
();
}
catch
(
InstantiationException
|
IllegalAccessException
e
)
{
return
null
;
}
BeanUtils
.
copyProperties
(
sourceObj
,
targetObj
);
return
targetObj
;
}
/**
* List之间转换
*
* @param sourceList
* @param targetClass
* @param <T>
* @return
*/
public
static
<
T
>
List
<
T
>
converList
(
List
<?>
sourceList
,
Class
<
T
>
targetClass
)
{
if
(
CollectionUtils
.
isEmpty
(
sourceList
)
||
targetClass
==
null
)
{
return
Collections
.
emptyList
();
}
return
sourceList
.
stream
().
map
(
sourceObj
->
{
try
{
return
conver
(
sourceObj
,
targetClass
);
}
catch
(
IllegalAccessException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
catch
(
InvocationTargetException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
return
null
;
}).
collect
(
Collectors
.
toList
());
}
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/dto/ExcelDto.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
dto
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
dto
;
import
com.yeejoin.amos.component.rule.RuleFact
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
@Data
@Data
@RuleFact
(
value
=
"导入导出"
,
project
=
"导入导出"
)
public
class
ExcelDto
{
public
class
ExcelDto
{
@ApiModelProperty
(
value
=
"文件名称"
)
@ApiModelProperty
(
value
=
"文件名称"
)
private
String
fileName
;
private
String
fileName
;
...
...
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/dto/FireChemicalDto.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
dto
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
dto
;
import
com.alibaba.excel.annotation.ExcelIgnore
;
//
import com.alibaba.excel.annotation.ExcelIgnore;
import
com.alibaba.excel.annotation.ExcelProperty
;
//
import com.alibaba.excel.annotation.ExcelProperty;
import
com.yeejoin.amos.boot.biz.common.dto.BaseDto
;
import
com.yeejoin.amos.boot.biz.common.dto.BaseDto
;
import
com.yeejoin.amos.boot.module.jcs.api.excel.ExplicitConstraint
;
//
import com.yeejoin.amos.boot.module.jcs.api.excel.ExplicitConstraint;
import
com.yeejoin.amos.boot.module.jcs.api.excel.RoleNameExplicitConstraint
;
//
import com.yeejoin.amos.boot.module.jcs.api.excel.RoleNameExplicitConstraint;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -22,81 +22,67 @@ import java.util.Date;
...
@@ -22,81 +22,67 @@ import java.util.Date;
@EqualsAndHashCode
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"FireChemicalDto"
,
description
=
"危化品"
)
@ApiModel
(
value
=
"FireChemicalDto"
,
description
=
"危化品"
)
public
class
FireChemicalDto
extends
BaseDto
{
public
class
FireChemicalDto
extends
BaseDto
{
@ExcelIgnore
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"casNo"
)
@ApiModelProperty
(
value
=
"casNo"
)
@ExcelProperty
(
value
=
"casNo"
,
index
=
1
)
private
String
casNo
;
private
String
casNo
;
@ApiModelProperty
(
value
=
"国际危险号"
)
@ApiModelProperty
(
value
=
"国际危险号"
)
@ExcelProperty
(
value
=
"国际危险号"
,
index
=
2
)
private
String
dangerId
;
private
String
dangerId
;
@ApiModelProperty
(
value
=
"防护处理"
)
@ApiModelProperty
(
value
=
"防护处理"
)
@ExcelProperty
(
value
=
"防护处理"
,
index
=
3
)
private
String
defendWay
;
private
String
defendWay
;
@ApiModelProperty
(
value
=
"处理措施"
)
@ApiModelProperty
(
value
=
"处理措施"
)
@ExcelProperty
(
value
=
"处理措施"
,
index
=
4
)
private
String
dispose
;
private
String
dispose
;
@ApiModelProperty
(
value
=
"英文名"
)
@ApiModelProperty
(
value
=
"英文名"
)
@ExcelProperty
(
value
=
"英文名"
,
index
=
5
)
private
String
englishName
;
private
String
englishName
;
@ApiModelProperty
(
value
=
"分子式"
)
@ApiModelProperty
(
value
=
"分子式"
)
@ExcelProperty
(
value
=
"分子式"
,
index
=
6
)
private
String
formula
;
private
String
formula
;
@ApiModelProperty
(
value
=
"主要成分"
)
@ApiModelProperty
(
value
=
"主要成分"
)
@ExcelProperty
(
value
=
"主要成分"
,
index
=
7
)
private
String
ingredient
;
private
String
ingredient
;
@ApiModelProperty
(
value
=
"泄漏处理"
)
@ApiModelProperty
(
value
=
"泄漏处理"
)
@ExcelProperty
(
value
=
"泄漏处理"
,
index
=
8
)
private
String
leakWay
;
private
String
leakWay
;
@ExcelProperty
(
value
=
"中文名"
,
index
=
0
)
@ApiModelProperty
(
value
=
"中文名"
)
@ApiModelProperty
(
value
=
"中文名"
)
private
String
name
;
private
String
name
;
@ApiModelProperty
(
value
=
"性状"
)
@ApiModelProperty
(
value
=
"性状"
)
@ExcelProperty
(
value
=
"性状"
,
index
=
9
)
private
String
property
;
private
String
property
;
@ApiModelProperty
(
value
=
"贮藏方法"
)
@ApiModelProperty
(
value
=
"贮藏方法"
)
@ExcelProperty
(
value
=
"贮藏方法"
,
index
=
10
)
private
String
store
;
private
String
store
;
@ApiModelProperty
(
value
=
"症状"
)
@ApiModelProperty
(
value
=
"症状"
)
@ExcelProperty
(
value
=
"症状"
,
index
=
11
)
private
String
symptom
;
private
String
symptom
;
@ApiModelProperty
(
value
=
"禁忌物/禁忌"
)
@ApiModelProperty
(
value
=
"禁忌物/禁忌"
)
@ExcelProperty
(
value
=
"禁忌物/禁忌"
,
index
=
12
)
private
String
tabu
;
private
String
tabu
;
@ExcelIgnore
@ApiModelProperty
(
value
=
"类型code"
)
@ApiModelProperty
(
value
=
"类型code"
)
private
String
typeCode
;
private
String
typeCode
;
@ExplicitConstraint
(
type
=
"CHEMICALTYPE"
,
indexNum
=
13
,
sourceClass
=
RoleNameExplicitConstraint
.
class
)
//动态下拉内容
@ApiModelProperty
(
value
=
"类型名称"
)
@ApiModelProperty
(
value
=
"类型名称"
)
@ExcelProperty
(
value
=
"类型名称"
,
index
=
13
)
private
String
type
;
private
String
type
;
// @ExplicitConstraint(indexNum=14,source = {"男","女"}) //固定下拉内容
// @ExplicitConstraint(indexNum=14,source = {"男","女"}) //固定下拉内容
@ExcelProperty
(
value
=
"国标号"
,
index
=
14
)
@ApiModelProperty
(
value
=
"国标号"
)
@ApiModelProperty
(
value
=
"国标号"
)
private
String
un
;
private
String
un
;
@ApiModelProperty
(
value
=
"化学品图片"
)
@ApiModelProperty
(
value
=
"化学品图片"
)
@ExcelProperty
(
value
=
"化学品图片"
,
index
=
15
)
private
String
image
;
private
String
image
;
@ExcelIgnore
@ApiModelProperty
(
value
=
"更新时间"
)
@ApiModelProperty
(
value
=
"更新时间"
)
private
Date
updateTime
;
private
Date
updateTime
;
@ExcelIgnore
@ApiModelProperty
(
value
=
"操作人名称"
)
@ApiModelProperty
(
value
=
"操作人名称"
)
private
String
recUserName
;
private
String
recUserName
;
...
...
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/excel/ExcelListener.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
excel
;
//
package com.yeejoin.amos.boot.module.jcs.api.excel;
//
import
java.util.ArrayList
;
//
import java.util.ArrayList;
import
java.util.List
;
//
import java.util.List;
//
import
com.alibaba.excel.context.AnalysisContext
;
//
import com.alibaba.excel.context.AnalysisContext;
import
com.alibaba.excel.event.AnalysisEventListener
;
//
import com.alibaba.excel.event.AnalysisEventListener;
import
com.alibaba.fastjson.JSON
;
//
import com.alibaba.fastjson.JSON;
//
//如果没有特殊说明,下面的案例将默认使用这个监听器
//
//
如果没有特殊说明,下面的案例将默认使用这个监听器
public
class
ExcelListener
<
T
>
extends
AnalysisEventListener
<
T
>
{
//
public class ExcelListener<T> extends AnalysisEventListener<T> {
//
List
<
T
>
list
=
new
ArrayList
<
T
>();
//
List<T> list = new ArrayList<T>();
//
public
List
<
T
>
getList
()
{
//
public List<T> getList() {
return
list
;
//
return list;
}
//
}
//
public
void
setList
(
List
<
T
>
list
)
{
//
public void setList(List<T> list) {
this
.
list
=
list
;
//
this.list = list;
}
//
}
//
/**
/
//
**
* 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
//
* 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
*/
//
*/
public
ExcelListener
()
{}
//
public ExcelListener() {}
//
/**
//
/**
* 这个每一条数据解析都会来调用
//
* 这个每一条数据解析都会来调用
*
//
*
* @param data
//
* @param data
* @param context
//
* @param context
*/
//
*/
@Override
//
@Override
public
void
invoke
(
T
data
,
AnalysisContext
context
)
{
//
public void invoke(T data, AnalysisContext context) {
list
.
add
(
data
);
//
list.add(data);
}
//
}
//
/**
//
/**
* 所有数据解析完成了 都会来调用
//
* 所有数据解析完成了 都会来调用
*
//
*
* @param context
//
* @param context
*/
//
*/
@Override
//
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
//
public void doAfterAllAnalysed(AnalysisContext context) {
//
}
//
}
}
//
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/excel/ExcelUtil.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
excel
;
//package com.yeejoin.amos.boot.module.jcs.api.excel;
//
import
java.io.IOException
;
//import java.io.IOException;
import
java.io.InputStream
;
//import java.io.InputStream;
import
java.io.OutputStream
;
//import java.io.OutputStream;
import
java.lang.reflect.Field
;
//import java.lang.reflect.Field;
import
java.nio.charset.StandardCharsets
;
//import java.nio.charset.StandardCharsets;
import
java.util.ArrayList
;
//import java.util.ArrayList;
import
java.util.HashMap
;
//import java.util.HashMap;
import
java.util.List
;
//import java.util.List;
import
java.util.Map
;
//import java.util.Map;
import
javax.servlet.http.HttpServletResponse
;
//import javax.servlet.http.HttpServletResponse;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
//import org.apache.poi.ss.usermodel.HorizontalAlignment;
import
org.apache.poi.ss.usermodel.IndexedColors
;
//import org.apache.poi.ss.usermodel.IndexedColors;
import
org.springframework.web.multipart.MultipartFile
;
//import org.springframework.web.multipart.MultipartFile;
//
import
com.alibaba.excel.EasyExcel
;
//import com.alibaba.excel.EasyExcel;
import
com.alibaba.excel.ExcelReader
;
//import com.alibaba.excel.ExcelReader;
import
com.alibaba.excel.read.metadata.ReadSheet
;
//import com.alibaba.excel.read.metadata.ReadSheet;
import
com.alibaba.excel.support.ExcelTypeEnum
;
//import com.alibaba.excel.support.ExcelTypeEnum;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
//import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import
com.alibaba.excel.write.metadata.style.WriteFont
;
//import com.alibaba.excel.write.metadata.style.WriteFont;
import
com.alibaba.excel.write.style.HorizontalCellStyleStrategy
;
//import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import
com.yeejoin.amos.boot.biz.common.utils.BeanConverUtil
;
//import com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper
;
//
//public class ExcelUtil {
public
class
ExcelUtil
{
// /**
/**
// * 生成excel模板
* 生成excel模板
// *
*
// * @param response
* @param response
// * @param fileName 下载的文件名,
* @param fileName 下载的文件名,
// * @param sheetName sheet名
* @param sheetName sheet名
// * @param data 导出的数据
* @param data 导出的数据
// * @param model 导出的头
* @param model 导出的头
// * @param heardHeight 头行高
* @param heardHeight 头行高
// * @param flag true模板填充下拉 false 不填充
* @param flag true模板填充下拉 false 不填充
// */
*/
// public static void createTemplate(HttpServletResponse response, String fileName,
public
static
void
createTemplate
(
HttpServletResponse
response
,
String
fileName
,
// String sheetName, List<? extends Object> data,
String
sheetName
,
List
<?
extends
Object
>
data
,
// Class<?> model, DataDictionaryMapper dataDictionaryMapper,boolean flag) {
Class
<?>
model
,
DataDictionaryMapper
dataDictionaryMapper
,
boolean
flag
)
{
//
// HorizontalCellStyleStrategy horizontalCellStyleStrategy = setMyCellStyle();
HorizontalCellStyleStrategy
horizontalCellStyleStrategy
=
setMyCellStyle
();
// try {
try
{
// //下拉列表集合
//下拉列表集合
// Map<Integer, String[]> explicitListConstraintMap = new HashMap<>();
Map
<
Integer
,
String
[]>
explicitListConstraintMap
=
new
HashMap
<>();
// if(flag) {
if
(
flag
)
{
// //循环获取对应列得下拉列表信息
//循环获取对应列得下拉列表信息
// Field[] declaredFields = model.getDeclaredFields();
Field
[]
declaredFields
=
model
.
getDeclaredFields
();
// for (int i = 0; i < declaredFields.length; i++) {
for
(
int
i
=
0
;
i
<
declaredFields
.
length
;
i
++)
{
// Field field = declaredFields[i];
Field
field
=
declaredFields
[
i
];
// //解析注解信息
//解析注解信息
// ExplicitConstraint explicitConstraint = field.getAnnotation(ExplicitConstraint.class);
ExplicitConstraint
explicitConstraint
=
field
.
getAnnotation
(
ExplicitConstraint
.
class
);
// resolveExplicitConstraint(explicitListConstraintMap,explicitConstraint,dataDictionaryMapper);
resolveExplicitConstraint
(
explicitListConstraintMap
,
explicitConstraint
,
dataDictionaryMapper
);
// }
}
// }
}
// EasyExcel.write(getOutputStream(fileName, response, ExcelTypeEnum.XLSX), model).
EasyExcel
.
write
(
getOutputStream
(
fileName
,
response
,
ExcelTypeEnum
.
XLSX
),
model
).
// excelType(ExcelTypeEnum.XLSX).sheet(sheetName)
excelType
(
ExcelTypeEnum
.
XLSX
).
sheet
(
sheetName
)
// .registerWriteHandler(new TemplateCellWriteHandlerDate(explicitListConstraintMap))
.
registerWriteHandler
(
new
TemplateCellWriteHandlerDate
(
explicitListConstraintMap
))
// .registerWriteHandler(new TemplateCellWriteHandler())
.
registerWriteHandler
(
new
TemplateCellWriteHandler
())
// .registerWriteHandler(horizontalCellStyleStrategy)
.
registerWriteHandler
(
horizontalCellStyleStrategy
)
// .doWrite(data);
.
doWrite
(
data
);
// } catch (Exception e) {
}
catch
(
Exception
e
)
{
// e.printStackTrace();
e
.
printStackTrace
();
// throw new RuntimeException("系统异常!");
throw
new
RuntimeException
(
"系统异常!"
);
//
// }
}
// }
}
// /**
/**
// * 读取 Excel(第一个 sheet) 指定行开始读取
* 读取 Excel(第一个 sheet) 指定行开始读取
// * @param excel 文件
* @param excel 文件
// * @param rowType 模板实体类
* @param rowType 模板实体类
// * @param header 指定不读取的表头行数,
* @param header 指定不读取的表头行数,
// * @param <T>
* @param <T>
// * @return 集合数据
* @return 集合数据
// * @throws ExcelException
* @throws ExcelException
// */
*/
// public static <T> List<T> readFirstSheetExcel(MultipartFile excel, Class<T> rowType,int header) throws Exception {
public
static
<
T
>
List
<
T
>
readFirstSheetExcel
(
MultipartFile
excel
,
Class
<
T
>
rowType
,
int
header
)
throws
Exception
{
// ExcelReader reader = getReader(excel, header);
ExcelReader
reader
=
getReader
(
excel
,
header
);
// if (reader == null) {
if
(
reader
==
null
)
{
// return new ArrayList<>();
return
new
ArrayList
<>();
// }
}
// return readExcel(reader, rowType, 0);
return
readExcel
(
reader
,
rowType
,
0
);
// }
}
//
//
//
// /**
/**
// * 读取 Excel(多个 sheet)
* 读取 Excel(多个 sheet)
// * @param reader 读取的excel
* @param reader 读取的excel
// * @param rowModel excel模板实体类
* @param rowModel excel模板实体类
// * @param sheetCount sheet
* @param sheetCount sheet
// * @param <T>
* @param <T>
// * @return
* @return
// */
*/
// public static <T> List<T> readExcel(ExcelReader reader, Class<T> rowModel, int sheetCount) {
public
static
<
T
>
List
<
T
>
readExcel
(
ExcelReader
reader
,
Class
<
T
>
rowModel
,
int
sheetCount
)
{
// if (reader == null) {
if
(
reader
==
null
)
{
// return new ArrayList<>();
return
new
ArrayList
<>();
// }
}
// ExcelListener<T> excelListener = new ExcelListener<>();
ExcelListener
<
T
>
excelListener
=
new
ExcelListener
<>();
// ReadSheet readSheet = EasyExcel.readSheet(sheetCount)
ReadSheet
readSheet
=
EasyExcel
.
readSheet
(
sheetCount
)
// .head(rowModel)
.
head
(
rowModel
)
// .registerReadListener(excelListener)
.
registerReadListener
(
excelListener
)
// .build();
.
build
();
// reader.read(readSheet);
reader
.
read
(
readSheet
);
// return excelListener.getList();
return
excelListener
.
getList
();
// }
}
//
//
//
/**
//
* 利用BeanCopy转换list
// /**
*/
// *
public
static
<
T
>
List
<
T
>
getExtendsBeanList
(
List
<?>
list
,
Class
<
T
>
typeClazz
)
{
// * @param excel 需要解析的 Excel 文件
return
BeanConverUtil
.
converList
(
list
,
typeClazz
);
// * @param header 指定不读取表头行数,
}
// * @return
/**
// * @throws ExcelException
*
// */
* @param excel 需要解析的 Excel 文件
// public static ExcelReader getReader(MultipartFile excel,int header) throws Exception {
* @param header 指定不读取表头行数,
// String fileName = excel.getOriginalFilename();
* @return
// if (fileName == null) {
* @throws ExcelException
// throw new Exception("文件不存在!");
*/
// }
public
static
ExcelReader
getReader
(
MultipartFile
excel
,
int
header
)
throws
Exception
{
// if (!fileName.toLowerCase().endsWith(ExcelTypeEnum.XLS.getValue()) && !fileName.toLowerCase().endsWith(ExcelTypeEnum.XLSX.getValue())) {
String
fileName
=
excel
.
getOriginalFilename
();
// throw new Exception("文件类型异常!");
if
(
fileName
==
null
)
{
// }
throw
new
Exception
(
"文件不存在!"
);
// InputStream inputStream;
}
// try {
if
(!
fileName
.
toLowerCase
().
endsWith
(
ExcelTypeEnum
.
XLS
.
getValue
())
&&
!
fileName
.
toLowerCase
().
endsWith
(
ExcelTypeEnum
.
XLSX
.
getValue
()))
{
// inputStream = excel.getInputStream();
throw
new
Exception
(
"文件类型异常!"
);
// return EasyExcel.read(inputStream).
}
// headRowNumber(header).
InputStream
inputStream
;
// build();
try
{
// } catch (IOException e) {
inputStream
=
excel
.
getInputStream
();
// //do something
return
EasyExcel
.
read
(
inputStream
).
// }
headRowNumber
(
header
).
// return null;
build
();
// }
}
catch
(
IOException
e
)
{
//
//do something
//
}
//
return
null
;
// /**
}
// * 解析注解内容 获取下列表信息
// * @param explicitConstraint
// * @return
// */
/**
// public static Map<Integer, String[]> resolveExplicitConstraint( Map<Integer, String[]> explicitListConstraintMap,ExplicitConstraint explicitConstraint, DataDictionaryMapper dataDictionaryMapper){
* 解析注解内容 获取下列表信息
// if (explicitConstraint == null) {
* @param explicitConstraint
// return null;
* @return
// }
*/
// //固定下拉信息
public
static
Map
<
Integer
,
String
[]>
resolveExplicitConstraint
(
Map
<
Integer
,
String
[]>
explicitListConstraintMap
,
ExplicitConstraint
explicitConstraint
,
DataDictionaryMapper
dataDictionaryMapper
){
// String[] source = explicitConstraint.source();
if
(
explicitConstraint
==
null
)
{
// if (source.length > 0) {
return
null
;
// explicitListConstraintMap.put(explicitConstraint.indexNum(), source);
}
// }
//固定下拉信息
// //动态下拉信息
String
[]
source
=
explicitConstraint
.
source
();
// Class<? extends ExplicitInterface>[] classes = explicitConstraint.sourceClass();
if
(
source
.
length
>
0
)
{
// if (classes.length>0){
explicitListConstraintMap
.
put
(
explicitConstraint
.
indexNum
(),
source
);
// ExplicitInterface explicitInterface = null;
}
// try {
//动态下拉信息
// explicitInterface = classes[0].newInstance();
Class
<?
extends
ExplicitInterface
>[]
classes
=
explicitConstraint
.
sourceClass
();
// String[] source1 = explicitInterface.source(explicitConstraint.type(),dataDictionaryMapper);
if
(
classes
.
length
>
0
){
// if (source1.length>0){
ExplicitInterface
explicitInterface
=
null
;
// explicitListConstraintMap.put(explicitConstraint.indexNum(), source1);
try
{
// }
explicitInterface
=
classes
[
0
].
newInstance
();
// } catch (InstantiationException e) {
String
[]
source1
=
explicitInterface
.
source
(
explicitConstraint
.
type
(),
dataDictionaryMapper
);
// e.printStackTrace();
if
(
source1
.
length
>
0
){
// } catch (IllegalAccessException e) {
explicitListConstraintMap
.
put
(
explicitConstraint
.
indexNum
(),
source1
);
// e.printStackTrace();
}
// }
}
catch
(
InstantiationException
e
)
{
// }
e
.
printStackTrace
();
// return null;
}
catch
(
IllegalAccessException
e
)
{
// }
e
.
printStackTrace
();
//
}
//
}
//
return
null
;
//
}
// /**
// * 导出文件时为Writer生成OutputStream
// */
// private static OutputStream getOutputStream(String fileName, HttpServletResponse response, ExcelTypeEnum excelTypeEnum) throws Exception {
// //创建本地文件
/**
// String filePath = fileName + excelTypeEnum.getValue();
* 导出文件时为Writer生成OutputStream
// try {
*/
// fileName = new String(filePath.getBytes(), StandardCharsets.ISO_8859_1);
private
static
OutputStream
getOutputStream
(
String
fileName
,
HttpServletResponse
response
,
ExcelTypeEnum
excelTypeEnum
)
throws
Exception
{
// response.setCharacterEncoding(StandardCharsets.UTF_8.name());
//创建本地文件
// response.setContentType("application/vnd.ms-excel");
String
filePath
=
fileName
+
excelTypeEnum
.
getValue
();
// response.addHeader("Content-Disposition", "filename=" + fileName);
try
{
// return response.getOutputStream();
fileName
=
new
String
(
filePath
.
getBytes
(),
StandardCharsets
.
ISO_8859_1
);
// } catch (IOException e) {
response
.
setCharacterEncoding
(
StandardCharsets
.
UTF_8
.
name
());
// throw new Exception("系统异常");
response
.
setContentType
(
"application/vnd.ms-excel"
);
// }
response
.
addHeader
(
"Content-Disposition"
,
"filename="
+
fileName
);
// }
return
response
.
getOutputStream
();
//
}
catch
(
IOException
e
)
{
// /**
throw
new
Exception
(
"系统异常"
);
// * 创建我的cell 策略
}
// *
}
// * @return
// */
/**
// public static HorizontalCellStyleStrategy setMyCellStyle() {
* 创建我的cell 策略
//
*
// // 头的策略
* @return
// WriteCellStyle headWriteCellStyle = new WriteCellStyle();
*/
// // 设置表头居中对齐
public
static
HorizontalCellStyleStrategy
setMyCellStyle
()
{
// headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
// // 颜色
// 头的策略
// headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
WriteCellStyle
headWriteCellStyle
=
new
WriteCellStyle
();
// WriteFont headWriteFont = new WriteFont();
// 设置表头居中对齐
// headWriteFont.setFontHeightInPoints((short) 10);
headWriteCellStyle
.
setHorizontalAlignment
(
HorizontalAlignment
.
CENTER
);
// // 字体
// 颜色
// headWriteCellStyle.setWriteFont(headWriteFont);
headWriteCellStyle
.
setFillForegroundColor
(
IndexedColors
.
GREY_25_PERCENT
.
getIndex
());
// headWriteCellStyle.setWrapped(true);
WriteFont
headWriteFont
=
new
WriteFont
();
// // 内容的策略
headWriteFont
.
setFontHeightInPoints
((
short
)
10
);
// WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
// 字体
// // 设置内容靠中对齐
headWriteCellStyle
.
setWriteFont
(
headWriteFont
);
// contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
headWriteCellStyle
.
setWrapped
(
true
);
// // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
// 内容的策略
// HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
WriteCellStyle
contentWriteCellStyle
=
new
WriteCellStyle
();
// // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
// 设置内容靠中对齐
// return horizontalCellStyleStrategy;
contentWriteCellStyle
.
setHorizontalAlignment
(
HorizontalAlignment
.
CENTER
);
// }
// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
//}
HorizontalCellStyleStrategy
horizontalCellStyleStrategy
=
new
HorizontalCellStyleStrategy
(
headWriteCellStyle
,
contentWriteCellStyle
);
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
return
horizontalCellStyleStrategy
;
}
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/excel/ExplicitConstraint.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
excel
;
//
package com.yeejoin.amos.boot.module.jcs.api.excel;
//
import
java.lang.annotation.*
;
//
import java.lang.annotation.*;
/**
/
//
**
* 导出模板数据
//
* 导出模板数据
*/
//
*/
@Documented
//
@Documented
@Retention
(
RetentionPolicy
.
RUNTIME
)
//
@Retention(RetentionPolicy.RUNTIME)
@Target
({
ElementType
.
FIELD
})
//
@Target({ElementType.FIELD})
public
@interface
ExplicitConstraint
{
//
public @interface ExplicitConstraint {
//定义固定下拉内容
//
//定义固定下拉内容
String
[]
source
()
default
{};
//
String[]source()default {};
//定义动态下拉内容,
//
//定义动态下拉内容,
Class
[]
sourceClass
()
default
{};
//
Class[]sourceClass()default {};
//列标号必须和字段下标一致
//
//列标号必须和字段下标一致
int
indexNum
()
default
0
;
//
int indexNum() default 0;
//
字典type
//
字典type
String
type
()
default
""
;
//
String type() default "";
//
}
//
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/excel/ExplicitInterface.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
excel
;
//
package com.yeejoin.amos.boot.module.jcs.api.excel;
//
import
com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper
;
//
import com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper;
//
public
interface
ExplicitInterface
{
//
public interface ExplicitInterface {
/**
//
/**
* 动态下拉列表的内容数组
//
* 动态下拉列表的内容数组
* @return
//
* @return
* type 字典类型
//
* type 字典类型
*/
//
*/
String
[]
source
(
String
type
,
DataDictionaryMapper
dataDictionaryMapper
);
//
String[] source(String type,DataDictionaryMapper dataDictionaryMapper);
}
//
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/excel/RoleNameExplicitConstraint.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
excel
;
//
package com.yeejoin.amos.boot.module.jcs.api.excel;
//
import
java.util.List
;
//
import java.util.List;
import
java.util.stream.Collectors
;
//
import java.util.stream.Collectors;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
//
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.yeejoin.amos.boot.module.jcs.api.entity.DataDictionary
;
//
import com.yeejoin.amos.boot.module.jcs.api.entity.DataDictionary;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper
;
//
import com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper;
//
/***
/
//
***
*
//
*
* 获取动态值
//
* 获取动态值
*
//
*
* **/
//
* **/
public
class
RoleNameExplicitConstraint
implements
ExplicitInterface
{
//
public class RoleNameExplicitConstraint implements ExplicitInterface {
//
@Override
//
@Override
public
String
[]
source
(
String
type
,
DataDictionaryMapper
dataDictionaryMapper
)
{
//
public String[] source(String type,DataDictionaryMapper dataDictionaryMapper) {
QueryWrapper
<
DataDictionary
>
queryWrapper
=
new
QueryWrapper
<>();
//
QueryWrapper<DataDictionary> queryWrapper = new QueryWrapper<>();
queryWrapper
.
eq
(
"type"
,
type
);
//
queryWrapper.eq("type", type);
queryWrapper
.
orderByAsc
(
"sort_num"
);
//
queryWrapper.orderByAsc("sort_num");
List
<
DataDictionary
>
list
=
dataDictionaryMapper
.
selectList
(
queryWrapper
);
//
List<DataDictionary> list= dataDictionaryMapper.selectList(queryWrapper);
List
<
String
>
names
=
list
.
stream
().
map
(
dataDictionary
->{
//
List<String> names = list.stream().map(dataDictionary->{
return
dataDictionary
.
getName
()+
"@"
+
dataDictionary
.
getCode
();
//
return dataDictionary.getName()+"@"+dataDictionary.getCode();
}
//
}
).
collect
(
Collectors
.
toList
());
//
).collect(Collectors.toList());
String
[]
str
=
names
.
toArray
(
new
String
[
names
.
size
()]);
//
String[] str=names.toArray(new String[names.size()]);
return
str
;
//
return str;
}
//
}
}
//
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/excel/TemplateCellWriteHandler.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
excel
;
//
package com.yeejoin.amos.boot.module.jcs.api.excel;
//
import
org.apache.poi.ss.usermodel.Cell
;
//
import org.apache.poi.ss.usermodel.Cell;
import
org.apache.poi.ss.usermodel.CellStyle
;
//
import org.apache.poi.ss.usermodel.CellStyle;
import
org.apache.poi.ss.usermodel.DataFormat
;
//
import org.apache.poi.ss.usermodel.DataFormat;
import
org.apache.poi.ss.usermodel.FillPatternType
;
//
import org.apache.poi.ss.usermodel.FillPatternType;
import
org.apache.poi.ss.usermodel.Font
;
//
import org.apache.poi.ss.usermodel.Font;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
//
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import
org.apache.poi.ss.usermodel.IndexedColors
;
//
import org.apache.poi.ss.usermodel.IndexedColors;
import
org.apache.poi.ss.usermodel.Row
;
//
import org.apache.poi.ss.usermodel.Row;
import
org.apache.poi.ss.usermodel.VerticalAlignment
;
//
import org.apache.poi.ss.usermodel.VerticalAlignment;
import
org.apache.poi.ss.usermodel.Workbook
;
//
import org.apache.poi.ss.usermodel.Workbook;
import
com.alibaba.excel.metadata.CellData
;
//
import com.alibaba.excel.metadata.CellData;
import
com.alibaba.excel.metadata.Head
;
//
import com.alibaba.excel.metadata.Head;
import
com.alibaba.excel.write.handler.CellWriteHandler
;
//
import com.alibaba.excel.write.handler.CellWriteHandler;
import
com.alibaba.excel.write.metadata.holder.WriteSheetHolder
;
//
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import
com.alibaba.excel.write.metadata.holder.WriteTableHolder
;
//
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
//
/**
/
//
**
* excel通用单元格格式类
//
* excel通用单元格格式类
*/
//
*/
public
class
TemplateCellWriteHandler
implements
CellWriteHandler
{
//
public class TemplateCellWriteHandler implements CellWriteHandler {
//
@Override
//
@Override
public
void
beforeCellCreate
(
WriteSheetHolder
writeSheetHolder
,
WriteTableHolder
writeTableHolder
,
Row
row
,
//
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
Head
head
,
int
relativeRowIndex
,
boolean
isHead
)
{
//
Head head, int relativeRowIndex, boolean isHead) {
// TODO Auto-generated method stub
//
// TODO Auto-generated method stub
//
}
//
}
//
@Override
//
@Override
public
void
afterCellCreate
(
WriteSheetHolder
writeSheetHolder
,
WriteTableHolder
writeTableHolder
,
CellData
cellData
,
//
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData,
Cell
cell
,
Head
head
,
int
relativeRowIndex
,
boolean
isHead
)
{
//
Cell cell, Head head, int relativeRowIndex, boolean isHead) {
Workbook
workbooks
=
writeSheetHolder
.
getSheet
().
getWorkbook
();
//
Workbook workbooks = writeSheetHolder.getSheet().getWorkbook();
writeSheetHolder
.
getSheet
().
setColumnWidth
(
cell
.
getColumnIndex
(),
20
*
256
);
//
writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), 20 * 256);
CellStyle
cellStyle
=
workbooks
.
createCellStyle
();
//
CellStyle cellStyle = workbooks.createCellStyle();
cellStyle
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
//居中
//
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//居中
cellStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
//
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle
.
setFillPattern
(
FillPatternType
.
SOLID_FOREGROUND
);
//设置前景填充样式
//
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//设置前景填充样式
cellStyle
.
setFillForegroundColor
(
IndexedColors
.
ROYAL_BLUE
.
getIndex
());
//前景填充色
//
cellStyle.setFillForegroundColor(IndexedColors.ROYAL_BLUE.getIndex());//前景填充色
Font
font1
=
workbooks
.
createFont
();
//设置字体
//
Font font1 = workbooks.createFont();//设置字体
font1
.
setBold
(
true
);
//
font1.setBold(true);
font1
.
setColor
((
short
)
1
);
//
font1.setColor((short)1);
font1
.
setFontHeightInPoints
((
short
)
15
);
//
font1.setFontHeightInPoints((short)15);
cellStyle
.
setFont
(
font1
);
//
cellStyle.setFont(font1);
cell
.
setCellStyle
(
cellStyle
);
//
cell.setCellStyle(cellStyle);
//其他列
//
//其他列
if
(!
isHead
){
//
if (!isHead){
CellStyle
style
=
workbooks
.
createCellStyle
();
//
CellStyle style = workbooks.createCellStyle();
DataFormat
dataFormat
=
workbooks
.
createDataFormat
();
//
DataFormat dataFormat = workbooks.createDataFormat();
style
.
setDataFormat
(
dataFormat
.
getFormat
(
"@"
));
//
style.setDataFormat(dataFormat.getFormat("@"));
style
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
//
style.setVerticalAlignment(VerticalAlignment.CENTER);
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
//
style.setAlignment(HorizontalAlignment.CENTER);
cell
.
setCellStyle
(
style
);
//
cell.setCellStyle(style);
}
//
}
//设置日期
//
//设置日期
if
(!
isHead
&&
cell
.
getColumnIndex
()==
19
||
!
isHead
&&
cell
.
getColumnIndex
()==
21
||
!
isHead
&&
cell
.
getColumnIndex
()==
20
){
//
if (!isHead && cell.getColumnIndex()==19 || !isHead && cell.getColumnIndex()==21|| !isHead && cell.getColumnIndex()==20){
CellStyle
style
=
workbooks
.
createCellStyle
();
//
CellStyle style = workbooks.createCellStyle();
DataFormat
dataFormat
=
workbooks
.
createDataFormat
();
//
DataFormat dataFormat = workbooks.createDataFormat();
style
.
setDataFormat
(
dataFormat
.
getFormat
(
"yyyy/mm/dd hh:mm:ss"
));
//
style.setDataFormat(dataFormat.getFormat("yyyy/mm/dd hh:mm:ss"));
style
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
//
style.setVerticalAlignment(VerticalAlignment.CENTER);
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
//
style.setAlignment(HorizontalAlignment.CENTER);
cell
.
setCellStyle
(
style
);
//
cell.setCellStyle(style);
}
//
}
//设置金额
//
//设置金额
if
(!
isHead
&&
cell
.
getColumnIndex
()==
15
||!
isHead
&&
cell
.
getColumnIndex
()==
16
||!
isHead
&&
cell
.
getColumnIndex
()==
22
||!
isHead
&&
cell
.
getColumnIndex
()==
24
||!
isHead
&&
cell
.
getColumnIndex
()==
25
){
//
if (!isHead && cell.getColumnIndex()==15 ||!isHead && cell.getColumnIndex()==16||!isHead && cell.getColumnIndex()==22 ||!isHead && cell.getColumnIndex()==24||!isHead && cell.getColumnIndex()==25){
CellStyle
style
=
workbooks
.
createCellStyle
();
//
CellStyle style = workbooks.createCellStyle();
DataFormat
dataFormat
=
workbooks
.
createDataFormat
();
//
DataFormat dataFormat = workbooks.createDataFormat();
style
.
setDataFormat
(
dataFormat
.
getFormat
(
"0.00"
));
//
style.setDataFormat(dataFormat.getFormat("0.00"));
style
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
//
style.setVerticalAlignment(VerticalAlignment.CENTER);
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
//
style.setAlignment(HorizontalAlignment.CENTER);
cell
.
setCellStyle
(
style
);
//
cell.setCellStyle(style);
}
//
}
}
//
}
//
//
//
}
//
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/excel/TemplateCellWriteHandlerDate.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
excel
;
//
package com.yeejoin.amos.boot.module.jcs.api.excel;
//
//
import
org.apache.poi.ss.usermodel.DataValidationHelper
;
//
import org.apache.poi.ss.usermodel.DataValidationHelper;
import
org.apache.poi.ss.usermodel.Name
;
//
import org.apache.poi.ss.usermodel.Name;
import
org.apache.poi.ss.usermodel.Workbook
;
//
import org.apache.poi.ss.usermodel.Workbook;
import
com.alibaba.excel.write.metadata.holder.WriteSheetHolder
;
//
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import
com.alibaba.excel.write.handler.SheetWriteHandler
;
//
import com.alibaba.excel.write.handler.SheetWriteHandler;
import
com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder
;
//
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import
org.apache.poi.ss.usermodel.DataValidation
;
//
import org.apache.poi.ss.usermodel.DataValidation;
import
org.apache.poi.ss.usermodel.DataValidationConstraint
;
//
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import
org.apache.poi.ss.usermodel.Sheet
;
//
import org.apache.poi.ss.usermodel.Sheet;
import
org.apache.poi.ss.util.CellRangeAddressList
;
//
import org.apache.poi.ss.util.CellRangeAddressList;
import
java.util.HashMap
;
//
import java.util.HashMap;
import
java.util.Map
;
//
import java.util.Map;
//
/**
/
//
**
* excel通用单元格格式类下拉框赋值
//
* excel通用单元格格式类下拉框赋值
*/
//
*/
public
class
TemplateCellWriteHandlerDate
implements
SheetWriteHandler
{
//
public class TemplateCellWriteHandlerDate implements SheetWriteHandler {
//
/**
//
/**
* 构造器注入
//
* 构造器注入
*/
//
*/
//
private
Map
<
Integer
,
String
[]>
explicitListConstraintMap
=
new
HashMap
<>();
//
private Map<Integer, String[]> explicitListConstraintMap = new HashMap<>();
public
TemplateCellWriteHandlerDate
(
Map
<
Integer
,
String
[]>
explicitListConstraintMap
)
{
//
public TemplateCellWriteHandlerDate(Map<Integer, String[]> explicitListConstraintMap) {
this
.
explicitListConstraintMap
=
explicitListConstraintMap
;
//
this.explicitListConstraintMap = explicitListConstraintMap;
}
//
}
/**
//
/**
* 避免生成的导入模板下拉值获取不到
//
* 避免生成的导入模板下拉值获取不到
*/
//
*/
private
static
final
Integer
LIMIT_NUMBER
=
50
;
//
private static final Integer LIMIT_NUMBER = 50;
//
//
//
/**
//
/**
* 返回excel列标A-Z-AA-ZZ
//
* 返回excel列标A-Z-AA-ZZ
*
//
*
* @param num 列数
//
* @param num 列数
* @return java.lang.String
//
* @return java.lang.String
*/
//
*/
private
String
getExcelLine
(
int
num
)
{
//
private String getExcelLine(int num) {
String
line
=
""
;
//
String line = "";
int
first
=
num
/
26
;
//
int first = num / 26;
int
second
=
num
%
26
;
//
int second = num % 26;
if
(
first
>
0
)
{
//
if (first > 0) {
line
=
(
char
)
(
'A'
+
first
-
1
)
+
""
;
//
line = (char) ('A' + first - 1) + "";
}
//
}
line
+=
(
char
)
(
'A'
+
second
)
+
""
;
//
line += (char) ('A' + second) + "";
return
line
;
//
return line;
}
//
}
//
@Override
//
@Override
public
void
beforeSheetCreate
(
WriteWorkbookHolder
writeWorkbookHolder
,
WriteSheetHolder
writeSheetHolder
)
{
//
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
// TODO Auto-generated method stub
//
// TODO Auto-generated method stub
//
}
//
}
//
@Override
//
@Override
public
void
afterSheetCreate
(
WriteWorkbookHolder
writeWorkbookHolder
,
WriteSheetHolder
writeSheetHolder
)
{
//
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
//
if
(
explicitListConstraintMap
!=
null
)
{
//
if(explicitListConstraintMap!=null) {
// 这里可以对cell进行任何操作
//
// 这里可以对cell进行任何操作
Sheet
sheet
=
writeSheetHolder
.
getSheet
();
//
Sheet sheet = writeSheetHolder.getSheet();
DataValidationHelper
helper
=
sheet
.
getDataValidationHelper
();
//
DataValidationHelper helper = sheet.getDataValidationHelper();
//
// k 为存在下拉数据集的单元格下表 v为下拉数据集
//
// k 为存在下拉数据集的单元格下表 v为下拉数据集
explicitListConstraintMap
.
forEach
((
k
,
v
)
->
{
//
explicitListConstraintMap.forEach((k, v) -> {
// 设置下拉单元格的首行 末行 首列 末列
//
// 设置下拉单元格的首行 末行 首列 末列
CellRangeAddressList
rangeList
=
new
CellRangeAddressList
(
1
,
65536
,
k
,
k
);
//
CellRangeAddressList rangeList = new CellRangeAddressList(1, 65536, k, k);
// 如果下拉值总数大于100,则使用一个新sheet存储,避免生成的导入模板下拉值获取不到
//
// 如果下拉值总数大于100,则使用一个新sheet存储,避免生成的导入模板下拉值获取不到
if
(
v
.
length
>
LIMIT_NUMBER
)
{
//
if (v.length > LIMIT_NUMBER) {
//定义sheet的名称
//
//定义sheet的名称
//1.创建一个隐藏的sheet 名称为 hidden + k
//
//1.创建一个隐藏的sheet 名称为 hidden + k
String
sheetName
=
"hidden"
+
k
;
//
String sheetName = "hidden" + k;
Workbook
workbook
=
writeWorkbookHolder
.
getWorkbook
();
//
Workbook workbook = writeWorkbookHolder.getWorkbook();
Sheet
hiddenSheet
=
workbook
.
createSheet
(
sheetName
);
//
Sheet hiddenSheet = workbook.createSheet(sheetName);
for
(
int
i
=
0
,
length
=
v
.
length
;
i
<
length
;
i
++)
{
//
for (int i = 0, length = v.length; i < length; i++) {
// 开始的行数i,列数k
//
// 开始的行数i,列数k
hiddenSheet
.
createRow
(
i
).
createCell
(
k
).
setCellValue
(
v
[
i
]);
//
hiddenSheet.createRow(i).createCell(k).setCellValue(v[i]);
}
//
}
Name
category1Name
=
workbook
.
createName
();
//
Name category1Name = workbook.createName();
category1Name
.
setNameName
(
sheetName
);
//
category1Name.setNameName(sheetName);
String
excelLine
=
getExcelLine
(
k
);
//
String excelLine = getExcelLine(k);
// =hidden!$H:$1:$H$50 sheet为hidden的 H1列开始H50行数据获取下拉数组
//
// =hidden!$H:$1:$H$50 sheet为hidden的 H1列开始H50行数据获取下拉数组
String
refers
=
"="
+
sheetName
+
"!$"
+
excelLine
+
"$1:$"
+
excelLine
+
"$"
+
(
v
.
length
+
1
);
//
String refers = "=" + sheetName + "!$" + excelLine + "$1:$" + excelLine + "$" + (v.length + 1);
// 将刚才设置的sheet引用到你的下拉列表中
//
// 将刚才设置的sheet引用到你的下拉列表中
DataValidationConstraint
constraint
=
helper
.
createFormulaListConstraint
(
refers
);
//
DataValidationConstraint constraint = helper.createFormulaListConstraint(refers);
DataValidation
dataValidation
=
helper
.
createValidation
(
constraint
,
rangeList
);
//
DataValidation dataValidation = helper.createValidation(constraint, rangeList);
writeSheetHolder
.
getSheet
().
addValidationData
(
dataValidation
);
//
writeSheetHolder.getSheet().addValidationData(dataValidation);
// 设置存储下拉列值得sheet为隐藏
//
// 设置存储下拉列值得sheet为隐藏
int
hiddenIndex
=
workbook
.
getSheetIndex
(
sheetName
);
//
int hiddenIndex = workbook.getSheetIndex(sheetName);
if
(!
workbook
.
isSheetHidden
(
hiddenIndex
))
{
//
if (!workbook.isSheetHidden(hiddenIndex)) {
workbook
.
setSheetHidden
(
hiddenIndex
,
true
);
//
workbook.setSheetHidden(hiddenIndex, true);
}
//
}
}
//
}
// 下拉列表约束数据
//
// 下拉列表约束数据
DataValidationConstraint
constraint
=
helper
.
createExplicitListConstraint
(
v
);
//
DataValidationConstraint constraint = helper.createExplicitListConstraint(v);
// 设置约束
//
// 设置约束
DataValidation
validation
=
helper
.
createValidation
(
constraint
,
rangeList
);
//
DataValidation validation = helper.createValidation(constraint, rangeList);
// 阻止输入非下拉选项的值
//
// 阻止输入非下拉选项的值
validation
.
setErrorStyle
(
DataValidation
.
ErrorStyle
.
STOP
);
//
validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
validation
.
setShowErrorBox
(
true
);
//
validation.setShowErrorBox(true);
validation
.
setSuppressDropDownArrow
(
true
);
//
validation.setSuppressDropDownArrow(true);
validation
.
createErrorBox
(
"提示"
,
"此值与单元格定义格式不一致"
);
//
validation.createErrorBox("提示", "此值与单元格定义格式不一致");
// validation.createPromptBox("填写说明:","填写内容只能为下拉数据集中的单位,其他单位将会导致无法入仓");
//
// validation.createPromptBox("填写说明:","填写内容只能为下拉数据集中的单位,其他单位将会导致无法入仓");
sheet
.
addValidationData
(
validation
);
//
sheet.addValidationData(validation);
});
//
});
}
//
}
//
//
}
//
}
//
}
//
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/controller/ExcelController.java
View file @
2a018dea
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
controller
;
//
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import
org.springframework.web.bind.annotation.RequestMapping
;
//
import org.springframework.web.bind.annotation.RequestMapping;
import
io.swagger.annotations.ApiOperation
;
//
import io.swagger.annotations.ApiOperation;
import
io.swagger.annotations.Api
;
//
import io.swagger.annotations.Api;
import
org.springframework.web.bind.annotation.RestController
;
//
import org.springframework.web.bind.annotation.RestController;
import
org.springframework.web.multipart.MultipartFile
;
//
import org.springframework.web.multipart.MultipartFile;
//
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
//
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
//
import
org.apache.commons.beanutils.BeanUtils
;
//
import org.apache.commons.beanutils.BeanUtils;
import
org.bouncycastle.crypto.RuntimeCryptoException
;
//
import org.bouncycastle.crypto.RuntimeCryptoException;
import
org.springframework.beans.factory.annotation.Autowired
;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import
java.lang.reflect.InvocationTargetException
;
//
import java.lang.reflect.InvocationTargetException;
import
java.util.ArrayList
;
//
import java.util.ArrayList;
import
java.util.List
;
//
import java.util.List;
//
import
javax.servlet.http.HttpServletResponse
;
//
import javax.servlet.http.HttpServletResponse;
import
org.springframework.web.bind.annotation.*
;
//
import org.springframework.web.bind.annotation.*;
//
import
com.yeejoin.amos.boot.module.jcs.api.dto.ExcelDto
;
//
import com.yeejoin.amos.boot.module.jcs.api.dto.ExcelDto;
import
com.yeejoin.amos.boot.module.jcs.api.dto.FireChemicalDto
;
//
import com.yeejoin.amos.boot.module.jcs.api.dto.FireChemicalDto;
import
com.yeejoin.amos.boot.module.jcs.api.entity.FireChemical
;
//
import com.yeejoin.amos.boot.module.jcs.api.entity.FireChemical;
import
com.yeejoin.amos.boot.module.jcs.api.excel.ExcelUtil
;
//
import com.yeejoin.amos.boot.module.jcs.api.excel.ExcelUtil;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper
;
//
import com.yeejoin.amos.boot.module.jcs.api.mapper.DataDictionaryMapper;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.FireChemicalServiceImpl
;
//
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.FireChemicalServiceImpl;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.FireStationServiceImpl
;
//
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.FireStationServiceImpl;
//
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
//
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
//
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import
org.typroject.tyboot.core.foundation.utils.Bean
;
//
import org.typroject.tyboot.core.foundation.utils.Bean;
//
//
/**
/
//
**
* 导出导入
//
* 导出导入
*
//
*
* @author system_generator
//
* @author system_generator
* @date 2021-06-29
//
* @date 2021-06-29
*/
//
*/
@RestController
//
@RestController
@Api
(
tags
=
"导出"
)
//
@Api(tags = "导出")
@RequestMapping
(
value
=
"/excel"
)
//
@RequestMapping(value = "/excel")
public
class
ExcelController
extends
BaseController
{
//
public class ExcelController extends BaseController {
//
//
@Autowired
//
@Autowired
DataDictionaryMapper
dataDictionaryMapper
;
//
DataDictionaryMapper dataDictionaryMapper;
@Autowired
//
@Autowired
FireChemicalServiceImpl
fireChemicalServiceImpl
;
//
FireChemicalServiceImpl fireChemicalServiceImpl;
private
final
String
packageUrl
=
"com.yeejoin.amos.boot.module.jcs.api.dto."
;
//
private final String packageUrl="com.yeejoin.amos.boot.module.jcs.api.dto.";
//
@TycloudOperation
(
needAuth
=
false
,
ApiLevel
=
UserType
.
AGENCY
)
//
@TycloudOperation(needAuth = false,ApiLevel = UserType.AGENCY)
@ApiOperation
(
value
=
"下载模板"
)
//
@ApiOperation(value = "下载模板")
@GetMapping
(
"/template"
)
//
@GetMapping("/template")
public
void
template
(
HttpServletResponse
response
,
ExcelDto
excelDto
)
{
//
public void template(HttpServletResponse response,ExcelDto excelDto ) {
try
{
//
try {
String
url
=
packageUrl
+
excelDto
.
getClassUrl
();
//
String url=packageUrl+excelDto.getClassUrl();
Class
clz
=
Class
.
forName
(
url
);
//
Class clz = Class.forName(url);
ExcelUtil
.
createTemplate
(
response
,
excelDto
.
getFileName
(),
excelDto
.
getSheetName
(),
null
,
clz
,
dataDictionaryMapper
,
true
);
//
ExcelUtil.createTemplate(response, excelDto.getFileName(), excelDto.getSheetName(), null,clz, dataDictionaryMapper,true);
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
e
.
printStackTrace
();
//
e.printStackTrace();
throw
new
RuntimeException
(
"系统异常!"
);
//
throw new RuntimeException("系统异常!");
}
//
}
}
//
}
//
@TycloudOperation
(
needAuth
=
false
,
ApiLevel
=
UserType
.
AGENCY
)
//
@TycloudOperation(needAuth = false,ApiLevel = UserType.AGENCY)
@ApiOperation
(
value
=
"导出危险品"
)
//
@ApiOperation(value = "导出危险品")
@GetMapping
(
"/getFireStationFile"
)
//
@GetMapping("/getFireStationFile")
public
void
getFireStationFile
(
HttpServletResponse
response
,
ExcelDto
excelDto
)
{
//
public void getFireStationFile(HttpServletResponse response,ExcelDto excelDto ) {
try
{
//
try {
List
<
FireChemicalDto
>
date
=
fireChemicalServiceImpl
.
queryForFireChemicalList
();
//
List<FireChemicalDto> date= fireChemicalServiceImpl.queryForFireChemicalList();
ExcelUtil
.
createTemplate
(
response
,
excelDto
.
getFileName
(),
excelDto
.
getSheetName
(),
date
,
FireChemicalDto
.
class
,
dataDictionaryMapper
,
false
);
//
ExcelUtil.createTemplate(response, excelDto.getFileName(), excelDto.getSheetName(), date,FireChemicalDto.class, dataDictionaryMapper,false);
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
e
.
printStackTrace
();
//
e.printStackTrace();
throw
new
RuntimeException
(
"系统异常!"
);
//
throw new RuntimeException("系统异常!");
}
//
}
}
//
}
@TycloudOperation
(
needAuth
=
false
,
ApiLevel
=
UserType
.
AGENCY
)
//
@TycloudOperation(needAuth = false,ApiLevel = UserType.AGENCY)
@ApiOperation
(
value
=
"上传文件数据-"
)
//
@ApiOperation(value = "上传文件数据-")
@PostMapping
(
"/upload"
)
//
@PostMapping("/upload")
public
void
template2
(
MultipartFile
multipartFile
,
HttpServletResponse
response
)
throws
Exception
{
//
public void template2(MultipartFile multipartFile, HttpServletResponse response) throws Exception {
//
//
List
<
FireChemicalDto
>
demoExcelEntities
=
ExcelUtil
.
readFirstSheetExcel
(
multipartFile
,
FireChemicalDto
.
class
,
1
);
//
List<FireChemicalDto> demoExcelEntities = ExcelUtil.readFirstSheetExcel(multipartFile, FireChemicalDto.class, 1);
List
<
FireChemical
>
demoExcelEntityErrorList
=
new
ArrayList
<>();
//
List<FireChemical> demoExcelEntityErrorList = new ArrayList<>();
demoExcelEntities
.
forEach
(
//
demoExcelEntities.forEach(
demoExcelEntity
->
{
//
demoExcelEntity -> {
FireChemical
demoExcelEntityError
=
new
FireChemical
();
//
FireChemical demoExcelEntityError = new FireChemical();
demoExcelEntityError
=
Bean
.
toPo
(
demoExcelEntity
,
demoExcelEntityError
);
//
demoExcelEntityError = Bean.toPo(demoExcelEntity, demoExcelEntityError);
if
(
demoExcelEntityError
.
getType
()!=
null
)
{
//
if(demoExcelEntityError.getType()!=null) {
String
[]
dr
=
demoExcelEntityError
.
getType
().
split
(
"@"
);
//
String[] dr= demoExcelEntityError.getType().split("@");
demoExcelEntityError
.
setType
(
dr
[
0
]);
//
demoExcelEntityError.setType(dr[0]);
demoExcelEntityError
.
setTypeCode
(
dr
[
1
]);
//
demoExcelEntityError.setTypeCode(dr[1]);
}
//
}
demoExcelEntityErrorList
.
add
(
demoExcelEntityError
);
//
demoExcelEntityErrorList.add(demoExcelEntityError);
}
//
}
);
//
);
fireChemicalServiceImpl
.
saveOrUpdateBatch
(
demoExcelEntityErrorList
);
//
fireChemicalServiceImpl.saveOrUpdateBatch(demoExcelEntityErrorList);
}
//
}
//
}
//
}
pom.xml
View file @
2a018dea
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