Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
leader-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
leader-base
Commits
b346f14b
提交
b346f14b
authored
1月 20, 2025
作者:
贺晋豫
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
人物 导入导出接口修改、新增模板下载接口
上级
f56fb9ae
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
111 行增加
和
33 行删除
+111
-33
CharacterBasicInfoController.java
...n/leaderbase/controller/CharacterBasicInfoController.java
+17
-21
CharacterBasicInfoService.java
...om/zzsn/leaderbase/service/CharacterBasicInfoService.java
+5
-3
CharacterBasicInfoServiceImpl.java
...eaderbase/service/impl/CharacterBasicInfoServiceImpl.java
+89
-9
没有找到文件。
src/main/java/com/zzsn/leaderbase/controller/CharacterBasicInfoController.java
浏览文件 @
b346f14b
...
@@ -214,14 +214,14 @@ public class CharacterBasicInfoController {
...
@@ -214,14 +214,14 @@ public class CharacterBasicInfoController {
}
}
@PostMapping
(
"/exportExcel"
)
@PostMapping
(
"/exportExcel"
)
public
ResponseEntity
<
byte
[]>
exportExcel
(
@RequestBody
BasicInfoListVo
basicInfoListVo
,
@RequestParam
String
category
)
{
public
ResponseEntity
<
byte
[]>
exportExcel
(
@RequestBody
BasicInfoListVo
basicInfoListVo
)
{
basicInfoListVo
.
setCategory
(
category
);
String
category
=
basicInfoListVo
.
getCategory
(
);
basicInfoListVo
.
setColumn
(
SortUtil
.
humpToLine
(
basicInfoListVo
.
getColumn
()));
basicInfoListVo
.
setColumn
(
SortUtil
.
humpToLine
(
basicInfoListVo
.
getColumn
()));
List
<
CharacterBasicInfo
>
list
=
characterBasicInfoService
.
getAllList
(
basicInfoListVo
);
List
<
CharacterBasicInfo
>
list
=
characterBasicInfoService
.
getAllList
(
basicInfoListVo
);
Map
<
String
,
String
>
importFieldMap
=
getImportFieldMap
(
category
);
Map
<
String
,
String
>
importFieldMap
=
getImportFieldMap
(
category
);
ResponseEntity
<
byte
[]>
responseEntity
;
ResponseEntity
<
byte
[]>
responseEntity
;
try
{
try
{
responseEntity
=
characterBasicInfoService
.
exportExcel
(
list
,
importFieldMap
);
responseEntity
=
characterBasicInfoService
.
exportExcel
(
category
,
list
,
importFieldMap
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
throw
new
RuntimeException
(
e
);
}
}
...
@@ -233,7 +233,19 @@ public class CharacterBasicInfoController {
...
@@ -233,7 +233,19 @@ public class CharacterBasicInfoController {
Map
<
String
,
String
>
importFieldMap
=
getImportFieldMap
(
category
);
Map
<
String
,
String
>
importFieldMap
=
getImportFieldMap
(
category
);
ResponseEntity
<
byte
[]>
responseEntity
;
ResponseEntity
<
byte
[]>
responseEntity
;
try
{
try
{
responseEntity
=
characterBasicInfoService
.
exportExcelByIds
(
ids
,
importFieldMap
);
responseEntity
=
characterBasicInfoService
.
exportExcelByIds
(
category
,
ids
,
importFieldMap
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
responseEntity
;
}
@GetMapping
(
"/exportTemplate"
)
public
ResponseEntity
<
byte
[]>
exportTemplate
(
@RequestParam
String
category
)
{
Map
<
String
,
String
>
importFieldMap
=
getImportFieldMap
(
category
);
ResponseEntity
<
byte
[]>
responseEntity
;
try
{
responseEntity
=
characterBasicInfoService
.
exportTemplate
(
importFieldMap
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
throw
new
RuntimeException
(
e
);
}
}
...
@@ -266,20 +278,11 @@ public class CharacterBasicInfoController {
...
@@ -266,20 +278,11 @@ public class CharacterBasicInfoController {
importFieldMap1
.
put
(
"出生年月"
,
"birthday"
);
importFieldMap1
.
put
(
"出生年月"
,
"birthday"
);
importFieldMap1
.
put
(
"籍贯"
,
"nativePlace"
);
importFieldMap1
.
put
(
"籍贯"
,
"nativePlace"
);
importFieldMap1
.
put
(
"毕业院校"
,
"school"
);
importFieldMap1
.
put
(
"毕业院校"
,
"school"
);
importFieldMap1
.
put
(
"毕业专业"
,
"schoolSpeciality"
);
importFieldMap1
.
put
(
"学历"
,
"education"
);
importFieldMap1
.
put
(
"学历"
,
"education"
);
importFieldMap1
.
put
(
"单位名称"
,
"department"
);
importFieldMap1
.
put
(
"单位名称"
,
"department"
);
importFieldMap1
.
put
(
"所在部门"
,
"depart"
);
importFieldMap1
.
put
(
"职务"
,
"duty"
);
importFieldMap1
.
put
(
"职务"
,
"duty"
);
importFieldMap1
.
put
(
"任职开始时间"
,
"takeOfficeTime"
);
importFieldMap1
.
put
(
"任职开始时间"
,
"takeOfficeTime"
);
importFieldMap1
.
put
(
"任职结束时间"
,
"takeOfficeTimeEnd"
);
importFieldMap1
.
put
(
"任职结束时间"
,
"takeOfficeTimeEnd"
);
importFieldMap1
.
put
(
"顶尖专家/领军专家"
,
"expertType"
);
importFieldMap1
.
put
(
"研究领域"
,
"researchField"
);
importFieldMap1
.
put
(
"专业方向"
,
"speciality"
);
importFieldMap1
.
put
(
"已入选的人才计划"
,
"talentPlanning"
);
importFieldMap1
.
put
(
"专业技术职称"
,
"technicalTitles"
);
importFieldMap1
.
put
(
"专业技术职称取得时间"
,
"technicalDate"
);
importFieldMap1
.
put
(
"参加工作时间"
,
"workDate"
);
importFieldMap1
.
put
(
"分类"
,
"typeId"
);
importFieldMap1
.
put
(
"分类"
,
"typeId"
);
}
}
...
@@ -315,19 +318,12 @@ public class CharacterBasicInfoController {
...
@@ -315,19 +318,12 @@ public class CharacterBasicInfoController {
importFieldMap3
.
put
(
"性别"
,
"sex"
);
importFieldMap3
.
put
(
"性别"
,
"sex"
);
importFieldMap3
.
put
(
"出生年月"
,
"birthday"
);
importFieldMap3
.
put
(
"出生年月"
,
"birthday"
);
importFieldMap3
.
put
(
"籍贯"
,
"nativePlace"
);
importFieldMap3
.
put
(
"籍贯"
,
"nativePlace"
);
importFieldMap3
.
put
(
"毕业
专业"
,
"schoolSpeciality
"
);
importFieldMap3
.
put
(
"毕业
院校"
,
"school
"
);
importFieldMap3
.
put
(
"学历"
,
"education"
);
importFieldMap3
.
put
(
"学历"
,
"education"
);
importFieldMap3
.
put
(
"单位名称"
,
"department"
);
importFieldMap3
.
put
(
"单位名称"
,
"department"
);
importFieldMap3
.
put
(
"所在部门"
,
"depart"
);
importFieldMap3
.
put
(
"职务"
,
"duty"
);
importFieldMap3
.
put
(
"职务"
,
"duty"
);
importFieldMap3
.
put
(
"任职开始时间"
,
"takeOfficeTime"
);
importFieldMap3
.
put
(
"任职开始时间"
,
"takeOfficeTime"
);
importFieldMap3
.
put
(
"任职结束时间"
,
"takeOfficeTimeEnd"
);
importFieldMap3
.
put
(
"任职结束时间"
,
"takeOfficeTimeEnd"
);
importFieldMap3
.
put
(
"顶尖专家/领军专家"
,
"expertType"
);
importFieldMap3
.
put
(
"研究领域"
,
"researchField"
);
importFieldMap3
.
put
(
"已入选的人才计划"
,
"talentPlanning"
);
importFieldMap3
.
put
(
"专业技术职称"
,
"technicalTitles"
);
importFieldMap3
.
put
(
"专业技术职称取得时间"
,
"technicalDate"
);
importFieldMap3
.
put
(
"参加工作时间"
,
"workDate"
);
importFieldMap3
.
put
(
"分类"
,
"typeId"
);
importFieldMap3
.
put
(
"分类"
,
"typeId"
);
}
}
}
}
...
...
src/main/java/com/zzsn/leaderbase/service/CharacterBasicInfoService.java
浏览文件 @
b346f14b
...
@@ -58,13 +58,15 @@ public interface CharacterBasicInfoService extends IService<CharacterBasicInfo>
...
@@ -58,13 +58,15 @@ public interface CharacterBasicInfoService extends IService<CharacterBasicInfo>
List
<
CharacterBasicInfo
>
getAllList
(
BasicInfoListVo
basicInfoListVo
);
List
<
CharacterBasicInfo
>
getAllList
(
BasicInfoListVo
basicInfoListVo
);
CharacterBasicInfo
getBasicInfoByUid
(
String
uid
);
CharacterBasicInfo
getBasicInfoByUid
(
String
uid
,
String
department
,
String
basicInfoDepartment
);
CharacterBasicInfo
getByNameAndByDepartment
(
String
category
,
String
typeId
,
String
name
,
String
department
);
CharacterBasicInfo
getByNameAndByDepartment
(
String
category
,
String
typeId
,
String
name
,
String
department
);
String
importExcel
(
String
absolutePath
,
String
category
,
Map
<
String
,
String
>
importFieldMap
);
String
importExcel
(
String
absolutePath
,
String
category
,
Map
<
String
,
String
>
importFieldMap
);
ResponseEntity
<
byte
[]>
exportExcel
(
List
<
CharacterBasicInfo
>
list
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
;
ResponseEntity
<
byte
[]>
exportExcel
(
String
category
,
List
<
CharacterBasicInfo
>
list
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
;
ResponseEntity
<
byte
[]>
exportExcelByIds
(
String
ids
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
;
ResponseEntity
<
byte
[]>
exportExcelByIds
(
String
category
,
String
ids
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
;
ResponseEntity
<
byte
[]>
exportTemplate
(
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
;
}
}
src/main/java/com/zzsn/leaderbase/service/impl/CharacterBasicInfoServiceImpl.java
浏览文件 @
b346f14b
...
@@ -2,6 +2,7 @@ package com.zzsn.leaderbase.service.impl;
...
@@ -2,6 +2,7 @@ package com.zzsn.leaderbase.service.impl;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
@@ -9,10 +10,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
...
@@ -9,10 +10,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zzsn.leaderbase.entity.CharacterBasicInfo
;
import
com.zzsn.leaderbase.entity.CharacterBasicInfo
;
import
com.zzsn.leaderbase.entity.CharacterCategoryStructure
;
import
com.zzsn.leaderbase.mapper.CharacterBasicInfoMapper
;
import
com.zzsn.leaderbase.mapper.CharacterBasicInfoMapper
;
import
com.zzsn.leaderbase.service.CharacterBasicInfoService
;
import
com.zzsn.leaderbase.service.CharacterBasicInfoService
;
import
com.zzsn.leaderbase.service.CharacterTagService
;
import
com.zzsn.leaderbase.service.CharacterTagService
;
import
com.zzsn.leaderbase.service.IGeneratorIdService
;
import
com.zzsn.leaderbase.service.IGeneratorIdService
;
import
com.zzsn.leaderbase.service.LeaderCategoryService
;
import
com.zzsn.leaderbase.util.ExcelUtil
;
import
com.zzsn.leaderbase.util.ExcelUtil
;
import
com.zzsn.leaderbase.vo.BasicInfoListVo
;
import
com.zzsn.leaderbase.vo.BasicInfoListVo
;
import
com.zzsn.leaderbase.vo.CharacterVo
;
import
com.zzsn.leaderbase.vo.CharacterVo
;
...
@@ -56,6 +59,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -56,6 +59,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
@Autowired
@Autowired
CharacterTagService
characterTagService
;
CharacterTagService
characterTagService
;
@Autowired
LeaderCategoryService
leaderCategoryService
;
@Override
@Override
public
CharacterVo
getByUid
(
String
uid
)
{
public
CharacterVo
getByUid
(
String
uid
)
{
return
baseMapper
.
getByUid
(
uid
);
return
baseMapper
.
getByUid
(
uid
);
...
@@ -271,9 +277,12 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -271,9 +277,12 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
}
}
@Override
@Override
public
CharacterBasicInfo
getBasicInfoByUid
(
String
uid
)
{
public
CharacterBasicInfo
getBasicInfoByUid
(
String
category
,
String
uid
,
String
department
)
{
LambdaQueryWrapper
<
CharacterBasicInfo
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
LambdaQueryWrapper
<
CharacterBasicInfo
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
eq
(
CharacterBasicInfo:
:
getUid
,
uid
);
queryWrapper
.
eq
(
CharacterBasicInfo:
:
getUid
,
uid
);
//新增过滤,因为根据uid 查询出来的数据,可能存在多个,所以需要根据部门进行过滤
queryWrapper
.
eq
(
CharacterBasicInfo:
:
getDepartment
,
department
);
queryWrapper
.
eq
(
CharacterBasicInfo:
:
getCategory
,
category
);
return
baseMapper
.
selectOne
(
queryWrapper
);
return
baseMapper
.
selectOne
(
queryWrapper
);
}
}
...
@@ -312,6 +321,8 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -312,6 +321,8 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
String
sheetName
=
sheetTmp
.
getSheetName
();
String
sheetName
=
sheetTmp
.
getSheetName
();
sheetNameList
.
add
(
sheetName
);
sheetNameList
.
add
(
sheetName
);
}
}
Map
<
String
,
String
>
typeNameKeyMap
=
getTypeMapper
(
category
).
stream
().
collect
(
Collectors
.
toMap
(
CharacterCategoryStructure:
:
getTypeName
,
CharacterCategoryStructure:
:
getId
));
//人物类别映射集合,用来转化typeId和类别名称
for
(
String
sheetName
:
sheetNameList
)
{
for
(
String
sheetName
:
sheetNameList
)
{
Sheet
sheet
=
workbook
.
getSheet
(
sheetName
);
Sheet
sheet
=
workbook
.
getSheet
(
sheetName
);
//获取标题行
//获取标题行
...
@@ -329,6 +340,11 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -329,6 +340,11 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
if
(
importFieldMap
.
containsKey
(
titleName
))
{
if
(
importFieldMap
.
containsKey
(
titleName
))
{
try
{
try
{
String
stringCellValue
=
sheetRow
.
getCell
(
cell
.
getColumnIndex
()).
getStringCellValue
();
String
stringCellValue
=
sheetRow
.
getCell
(
cell
.
getColumnIndex
()).
getStringCellValue
();
//如果是分类列,转换成id
if
(
"分类"
.
equals
(
titleName
)
&&
"typeId"
.
equals
(
importFieldMap
.
get
(
titleName
)))
{
stringCellValue
=
typeNameKeyMap
.
get
(
stringCellValue
);
}
//将导入文件中不为null的列放入beanMap,key为导入列在数据库中对应的表列名
if
(
StringUtils
.
isNotEmpty
(
stringCellValue
))
{
if
(
StringUtils
.
isNotEmpty
(
stringCellValue
))
{
beanMap
.
put
(
importFieldMap
.
get
(
titleName
),
stringCellValue
);
beanMap
.
put
(
importFieldMap
.
get
(
titleName
),
stringCellValue
);
}
}
...
@@ -338,8 +354,11 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -338,8 +354,11 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
}
}
}
}
System
.
out
.
println
(
beanMap
);
System
.
out
.
println
(
beanMap
);
//过滤掉根据导入文档类型中文名找不到对应类别的数据(这些不做处理)
if
(
StringUtils
.
isNotEmpty
((
CharSequence
)
beanMap
.
get
(
"typeId"
)))
{
list
.
add
(
BeanUtil
.
mapToBean
(
beanMap
,
CharacterBasicInfo
.
class
,
true
,
CopyOptions
.
create
().
setIgnoreError
(
true
)));
list
.
add
(
BeanUtil
.
mapToBean
(
beanMap
,
CharacterBasicInfo
.
class
,
true
,
CopyOptions
.
create
().
setIgnoreError
(
true
)));
}
}
}
//需要新增的数据列表
//需要新增的数据列表
List
<
CharacterBasicInfo
>
saveList
=
new
ArrayList
<>();
List
<
CharacterBasicInfo
>
saveList
=
new
ArrayList
<>();
//需要更新的数据列表
//需要更新的数据列表
...
@@ -362,7 +381,7 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -362,7 +381,7 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
//检查是否已有数据
//检查是否已有数据
CharacterBasicInfo
oldBasicInfo
=
null
;
CharacterBasicInfo
oldBasicInfo
=
null
;
if
(
StringUtils
.
isNotEmpty
(
basicInfo
.
getUid
()))
{
if
(
StringUtils
.
isNotEmpty
(
basicInfo
.
getUid
()))
{
oldBasicInfo
=
getBasicInfoByUid
(
basicInfo
.
getUid
());
oldBasicInfo
=
getBasicInfoByUid
(
category
,
basicInfo
.
getUid
(),
basicInfo
.
getDepartment
());
}
else
{
}
else
{
oldBasicInfo
=
getByNameAndByDepartment
(
category
,
basicInfo
.
getTypeId
(),
basicInfo
.
getName
(),
basicInfo
.
getDepartment
());
oldBasicInfo
=
getByNameAndByDepartment
(
category
,
basicInfo
.
getTypeId
(),
basicInfo
.
getName
(),
basicInfo
.
getDepartment
());
}
}
...
@@ -410,6 +429,10 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -410,6 +429,10 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
}
}
result
+=
"更新"
+
updateList
.
size
()
+
"条数据"
;
result
+=
"更新"
+
updateList
.
size
()
+
"条数据"
;
}
}
if
(
saveList
.
isEmpty
()&&
updateList
.
isEmpty
())
{
result
=
"无可处理数据(如有数据代表数据不规范)"
;
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
info
(
"导入专家信息异常:{}"
,
e
.
getMessage
(),
e
);
log
.
info
(
"导入专家信息异常:{}"
,
e
.
getMessage
(),
e
);
...
@@ -433,18 +456,70 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -433,18 +456,70 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
return
result
;
return
result
;
}
}
private
List
<
CharacterCategoryStructure
>
getTypeMapper
(
String
category
)
{
//根据名称模糊查询
LambdaQueryWrapper
<
CharacterCategoryStructure
>
characterCategoryStructureLambdaQueryWrapper
=
Wrappers
.
lambdaQuery
();
characterCategoryStructureLambdaQueryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
category
),
CharacterCategoryStructure:
:
getCategory
,
category
);
List
<
CharacterCategoryStructure
>
characterCategoryWrapper
=
leaderCategoryService
.
list
(
characterCategoryStructureLambdaQueryWrapper
);
return
characterCategoryWrapper
;
}
@Override
@Override
public
ResponseEntity
<
byte
[]>
exportExcel
(
List
<
CharacterBasicInfo
>
characterBasicInfos
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
public
ResponseEntity
<
byte
[]>
exportExcel
(
String
category
,
List
<
CharacterBasicInfo
>
characterBasicInfos
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
return
exportExcelByList
(
characterBasicInfos
,
importFieldMap
);
return
exportExcelByList
(
c
ategory
,
c
haracterBasicInfos
,
importFieldMap
);
}
}
@Override
@Override
public
ResponseEntity
<
byte
[]>
exportExcelByIds
(
String
ids
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
public
ResponseEntity
<
byte
[]>
exportExcelByIds
(
String
category
,
String
ids
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
List
<
CharacterBasicInfo
>
characterBasicInfos
=
listByIds
(
Arrays
.
asList
(
ids
.
split
(
","
)));
List
<
CharacterBasicInfo
>
characterBasicInfos
=
listByIds
(
Arrays
.
asList
(
ids
.
split
(
","
)));
return
exportExcelByList
(
characterBasicInfos
,
importFieldMap
);
return
exportExcelByList
(
category
,
characterBasicInfos
,
importFieldMap
);
}
@Override
public
ResponseEntity
<
byte
[]>
exportTemplate
(
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
return
generateTemplate
(
importFieldMap
);
}
private
ResponseEntity
<
byte
[]>
generateTemplate
(
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
// 创建Excel工作簿
Workbook
workbook
=
new
XSSFWorkbook
();
Sheet
sheet
=
workbook
.
createSheet
(
"人物信息"
);
// 填充数据到Excel工作表
Row
titlerow
=
sheet
.
createRow
(
0
);
// 创建字体样式
Font
headerFont
=
workbook
.
createFont
();
headerFont
.
setFontName
(
"Arial"
);
headerFont
.
setFontHeightInPoints
((
short
)
12
);
headerFont
.
setBold
(
true
);
// 创建单元格样式并应用字体
CellStyle
titleCellStyle
=
workbook
.
createCellStyle
();
titleCellStyle
.
setFont
(
headerFont
);
titleCellStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
titleCellStyle
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
titleCellStyle
.
setFillForegroundColor
(
IndexedColors
.
BRIGHT_GREEN
.
getIndex
());
titleCellStyle
.
setFillPattern
(
FillPatternType
.
SOLID_FOREGROUND
);
AtomicInteger
colNum
=
new
AtomicInteger
();
importFieldMap
.
forEach
((
key
,
value
)
->
{
int
andIncrement
=
colNum
.
getAndIncrement
();
Cell
cell
=
titlerow
.
createCell
(
andIncrement
);
cell
.
setCellValue
(
key
);
cell
.
setCellStyle
(
titleCellStyle
);
sheet
.
setColumnWidth
(
andIncrement
,
15
*
256
);
});
// 将Excel工作簿写入字节数组输出流
ByteArrayOutputStream
byteArrayOutputStream
=
new
ByteArrayOutputStream
();
workbook
.
write
(
byteArrayOutputStream
);
// 准备HTTP响应头
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
parseMediaType
(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
));
// 对文件名进行编码
String
encodedFileName
=
URLEncoder
.
encode
(
"人物导入模板.xlsx"
,
"utf-8"
);
headers
.
add
(
"Content-Disposition"
,
"attachment; filename="
+
encodedFileName
);
// 返回Excel文件作为字节数组响应
return
new
ResponseEntity
<>(
byteArrayOutputStream
.
toByteArray
(),
headers
,
HttpStatus
.
OK
);
}
}
private
ResponseEntity
<
byte
[]>
exportExcelByList
(
List
<
CharacterBasicInfo
>
characterBasicInfos
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
private
ResponseEntity
<
byte
[]>
exportExcelByList
(
String
category
,
List
<
CharacterBasicInfo
>
characterBasicInfos
,
Map
<
String
,
String
>
importFieldMap
)
throws
IOException
{
// 创建Excel工作簿
// 创建Excel工作簿
Workbook
workbook
=
new
XSSFWorkbook
();
Workbook
workbook
=
new
XSSFWorkbook
();
Sheet
sheet
=
workbook
.
createSheet
(
"人物信息"
);
Sheet
sheet
=
workbook
.
createSheet
(
"人物信息"
);
...
@@ -471,6 +546,7 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -471,6 +546,7 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
sheet
.
setColumnWidth
(
andIncrement
,
15
*
256
);
sheet
.
setColumnWidth
(
andIncrement
,
15
*
256
);
});
});
int
rowNum
=
1
;
int
rowNum
=
1
;
Map
<
String
,
String
>
typeIdeKeyMap
=
getTypeMapper
(
category
).
stream
().
collect
(
Collectors
.
toMap
(
CharacterCategoryStructure:
:
getId
,
CharacterCategoryStructure:
:
getTypeName
));
//数据填充到Excel工作表
//数据填充到Excel工作表
for
(
CharacterBasicInfo
characterBasicInfo
:
characterBasicInfos
)
{
for
(
CharacterBasicInfo
characterBasicInfo
:
characterBasicInfos
)
{
Row
row
=
sheet
.
createRow
(
rowNum
++);
Row
row
=
sheet
.
createRow
(
rowNum
++);
...
@@ -481,9 +557,13 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
...
@@ -481,9 +557,13 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
// 列名获取
// 列名获取
String
columnName
=
importFieldMap
.
get
(
titlerow
.
getCell
(
i
).
getStringCellValue
());
String
columnName
=
importFieldMap
.
get
(
titlerow
.
getCell
(
i
).
getStringCellValue
());
// 对象转化为map
// 对象转化为map
Map
<
String
,
Object
>
enterprise
Map
=
BeanUtil
.
beanToMap
(
characterBasicInfo
);
Map
<
String
,
Object
>
character
Map
=
BeanUtil
.
beanToMap
(
characterBasicInfo
);
if
(
columnName
!=
null
)
{
if
(
columnName
!=
null
)
{
Object
value
=
enterpriseMap
.
get
(
columnName
);
Object
value
=
characterMap
.
get
(
columnName
);
if
(
"typeId"
.
equals
(
columnName
))
{
value
=
typeIdeKeyMap
.
get
(
value
);
}
if
(
value
!=
null
)
{
if
(
value
!=
null
)
{
if
(
value
instanceof
String
)
{
if
(
value
instanceof
String
)
{
cell
.
setCellValue
((
String
)
value
);
cell
.
setCellValue
((
String
)
value
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论