Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
leader-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
leader-base
Commits
9e25f8ad
提交
9e25f8ad
authored
2月 12, 2025
作者:
925993793@qq.com
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
人物批量导入/导出 籍贯字段逻辑修改
上级
b52f5a0d
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
225 行增加
和
4 行删除
+225
-4
RemoteSystemService.java
...va/com/zzsn/leaderbase/feign/api/RemoteSystemService.java
+20
-0
SysDictItem.java
...in/java/com/zzsn/leaderbase/feign/entity/SysDictItem.java
+93
-0
CharacterBasicInfoServiceImpl.java
...eaderbase/service/impl/CharacterBasicInfoServiceImpl.java
+112
-4
没有找到文件。
src/main/java/com/zzsn/leaderbase/feign/api/RemoteSystemService.java
0 → 100644
浏览文件 @
9e25f8ad
package
com
.
zzsn
.
leaderbase
.
feign
.
api
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
//feign调用
@FeignClient
(
value
=
"jeecg-system"
)
public
interface
RemoteSystemService
{
/**
* 根据字典编码查询字典项列表
*
* @param dictCode 字典编码
* @author lkg
* @date 2025/2/11
*/
@GetMapping
(
"/sys/api/listItemByDictCode"
)
String
sysDictItemList
(
@RequestParam
String
dictCode
);
}
src/main/java/com/zzsn/leaderbase/feign/entity/SysDictItem.java
0 → 100644
浏览文件 @
9e25f8ad
package
com
.
zzsn
.
leaderbase
.
feign
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.jeecgframework.poi.excel.annotation.Excel
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <p>
*
* </p>
*
* @Author zhangweijian
* @since 2018-12-28
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
SysDictItem
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
private
String
id
;
/**
* 字典id
*/
private
String
dictId
;
/**
* 字典项文本
*/
@Excel
(
name
=
"字典项文本"
,
width
=
20
)
private
String
itemText
;
/**
* 字典项值
*/
@Excel
(
name
=
"字典项值"
,
width
=
30
)
private
String
itemValue
;
/**
* 描述
*/
@Excel
(
name
=
"描述"
,
width
=
40
)
private
String
description
;
/**
* 排序
*/
@Excel
(
name
=
"排序"
,
width
=
15
,
type
=
4
)
private
Integer
sortOrder
;
/**
* 状态(1启用 0不启用)
*/
private
Integer
status
;
private
String
createBy
;
private
Date
createTime
;
private
String
updateBy
;
private
Date
updateTime
;
/**
* 上级id
*/
private
String
pid
;
/**
* 是否有下级
*/
private
String
hasChild
;
/**
* 节点全路径(字典id)
*/
private
String
pathIds
;
/**
* 层级
*/
private
Integer
level
;
}
src/main/java/com/zzsn/leaderbase/service/impl/CharacterBasicInfoServiceImpl.java
浏览文件 @
9e25f8ad
...
...
@@ -3,6 +3,7 @@ package com.zzsn.leaderbase.service.impl;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -11,16 +12,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zzsn.leaderbase.entity.CharacterBasicInfo
;
import
com.zzsn.leaderbase.entity.CharacterCategoryStructure
;
import
com.zzsn.leaderbase.feign.api.RemoteSystemService
;
import
com.zzsn.leaderbase.feign.entity.SysDictItem
;
import
com.zzsn.leaderbase.mapper.CharacterBasicInfoMapper
;
import
com.zzsn.leaderbase.service.CharacterBasicInfoService
;
import
com.zzsn.leaderbase.service.CharacterTagService
;
import
com.zzsn.leaderbase.service.IGeneratorIdService
;
import
com.zzsn.leaderbase.service.LeaderCategoryService
;
import
com.zzsn.leaderbase.util.AuthUtil
;
import
com.zzsn.leaderbase.util.ExcelUtil
;
import
com.zzsn.leaderbase.util.LoginUser
;
import
com.zzsn.leaderbase.vo.BasicInfoListVo
;
import
com.zzsn.leaderbase.vo.CharacterVo
;
import
com.zzsn.leaderbase.vo.Result
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.ss.usermodel.*
;
...
...
@@ -62,6 +68,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
@Autowired
LeaderCategoryService
leaderCategoryService
;
@Autowired
private
RemoteSystemService
remoteSystemService
;
@Override
public
CharacterVo
getByUid
(
String
uid
)
{
return
baseMapper
.
getByUid
(
uid
);
...
...
@@ -320,6 +329,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
sheetNameList
.
add
(
sheetName
);
}
Map
<
String
,
String
>
typeNameKeyMap
=
getTypeMapper
(
category
).
stream
().
collect
(
Collectors
.
toMap
(
CharacterCategoryStructure:
:
getTypeName
,
CharacterCategoryStructure:
:
getId
));
List
<
SysDictItem
>
dictItemList
=
dictItemList
(
"Region_dic"
);
Map
<
String
,
List
<
SysDictItem
>>
dictValueMap
=
dictItemList
.
stream
().
collect
(
Collectors
.
groupingBy
(
SysDictItem:
:
getItemText
,
Collectors
.
toList
()));
Map
<
String
,
List
<
SysDictItem
>>
dictPathIdsMap
=
dictItemList
.
stream
().
collect
(
Collectors
.
groupingBy
(
SysDictItem:
:
getPathIds
,
Collectors
.
toList
()));
//人物类别映射集合,用来转化typeId和类别名称
for
(
String
sheetName
:
sheetNameList
)
{
Sheet
sheet
=
workbook
.
getSheet
(
sheetName
);
...
...
@@ -342,6 +354,10 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
if
(
"分类"
.
equals
(
titleName
)
&&
"typeId"
.
equals
(
importFieldMap
.
get
(
titleName
)))
{
stringCellValue
=
typeNameKeyMap
.
get
(
stringCellValue
);
}
//籍贯 转换
if
(
"籍贯"
.
equals
(
titleName
)
&&
"nativePlace"
.
equals
(
importFieldMap
.
get
(
titleName
)))
{
stringCellValue
=
nativePlaceChange
(
stringCellValue
,
dictValueMap
,
dictPathIdsMap
);
}
//将导入文件中不为null的列放入beanMap,key为导入列在数据库中对应的表列名
if
(
StringUtils
.
isNotEmpty
(
stringCellValue
))
{
beanMap
.
put
(
importFieldMap
.
get
(
titleName
),
stringCellValue
);
...
...
@@ -351,7 +367,6 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
}
}
}
System
.
out
.
println
(
beanMap
);
//过滤掉根据导入文档类型中文名找不到对应类别的数据(这些不做处理)
if
(
StringUtils
.
isNotEmpty
((
CharSequence
)
beanMap
.
get
(
"typeId"
)))
{
list
.
add
(
BeanUtil
.
mapToBean
(
beanMap
,
CharacterBasicInfo
.
class
,
true
,
CopyOptions
.
create
().
setIgnoreError
(
true
)));
...
...
@@ -454,7 +469,59 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
}
return
result
;
}
private
String
nativePlaceChange
(
String
stringCellValue
,
Map
<
String
,
List
<
SysDictItem
>>
dictValueMap
,
Map
<
String
,
List
<
SysDictItem
>>
dictPathIdsMap
){
if
(
StringUtils
.
isNotBlank
(
stringCellValue
))
{
if
(
stringCellValue
.
contains
(
"/"
)){
String
[]
split
=
stringCellValue
.
split
(
"/"
);
//判断节点是否全部包含
boolean
match
=
true
;
for
(
String
s
:
split
)
{
boolean
b
=
dictValueMap
.
containsKey
(
s
);
if
(!
b
)
{
match
=
false
;
break
;
}
}
if
(
match
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
for
(
int
j
=
0
;
j
<
split
.
length
;
j
++)
{
if
(
j
==
0
)
{
List
<
SysDictItem
>
sysDictItems
=
dictValueMap
.
get
(
split
[
j
]);
stringBuilder
.
append
(
","
).
append
(
sysDictItems
.
get
(
0
).
getId
());
}
else
{
List
<
SysDictItem
>
sysDictItems
=
dictValueMap
.
get
(
split
[
j
]);
for
(
SysDictItem
sysDictItem
:
sysDictItems
)
{
if
(
sysDictItem
.
getPathIds
().
contains
(
stringBuilder
.
substring
(
1
)))
{
stringBuilder
.
append
(
","
).
append
(
sysDictItem
.
getId
());
break
;
}
}
}
}
String
substring
=
stringBuilder
.
substring
(
1
);
if
(
dictPathIdsMap
.
containsKey
(
substring
))
{
stringCellValue
=
dictPathIdsMap
.
get
(
substring
).
get
(
0
).
getItemValue
();
}
else
{
stringCellValue
=
null
;
}
}
else
{
stringCellValue
=
null
;
}
}
else
{
if
(
dictValueMap
.
containsKey
(
stringCellValue
)){
List
<
SysDictItem
>
sysDictItems
=
dictValueMap
.
get
(
stringCellValue
);
stringCellValue
=
sysDictItems
.
get
(
0
).
getItemValue
();
}
else
{
stringCellValue
=
null
;
}
}
}
return
stringCellValue
;
}
private
List
<
CharacterCategoryStructure
>
getTypeMapper
(
String
category
)
{
//根据名称模糊查询
LambdaQueryWrapper
<
CharacterCategoryStructure
>
characterCategoryStructureLambdaQueryWrapper
=
Wrappers
.
lambdaQuery
();
...
...
@@ -546,6 +613,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
});
int
rowNum
=
1
;
Map
<
String
,
String
>
typeIdeKeyMap
=
getTypeMapper
(
category
).
stream
().
collect
(
Collectors
.
toMap
(
CharacterCategoryStructure:
:
getId
,
CharacterCategoryStructure:
:
getTypeName
));
List
<
SysDictItem
>
dictItemList
=
dictItemList
(
"Region_dic"
);
Map
<
String
,
SysDictItem
>
dictValueMap
=
dictItemList
.
stream
().
collect
(
Collectors
.
toMap
(
SysDictItem:
:
getItemValue
,
e
->
e
));
Map
<
String
,
SysDictItem
>
dictItemIdMap
=
dictItemList
.
stream
().
collect
(
Collectors
.
toMap
(
SysDictItem:
:
getId
,
e
->
e
));
//数据填充到Excel工作表
for
(
CharacterBasicInfo
characterBasicInfo
:
characterBasicInfos
)
{
Row
row
=
sheet
.
createRow
(
rowNum
++);
...
...
@@ -559,10 +629,17 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
Map
<
String
,
Object
>
characterMap
=
BeanUtil
.
beanToMap
(
characterBasicInfo
);
if
(
columnName
!=
null
)
{
Object
value
=
characterMap
.
get
(
columnName
);
if
(
"typeId"
.
equals
(
columnName
))
{
if
(
ObjectUtils
.
isNotEmpty
(
value
)
&&
"typeId"
.
equals
(
columnName
)){
value
=
typeIdeKeyMap
.
get
(
value
);
}
if
(
ObjectUtils
.
isNotEmpty
(
value
)
&&
"nativePlace"
.
equals
(
columnName
))
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
String
pathIds
=
dictValueMap
.
get
(
value
).
getPathIds
();
for
(
String
itemId
:
pathIds
.
split
(
","
))
{
stringBuilder
.
append
(
"/"
).
append
(
dictItemIdMap
.
get
(
itemId
).
getItemText
());
}
value
=
stringBuilder
.
substring
(
1
);
}
if
(
value
!=
null
)
{
if
(
value
instanceof
String
)
{
cell
.
setCellValue
((
String
)
value
);
...
...
@@ -596,4 +673,35 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
// 返回Excel文件作为字节数组响应
return
new
ResponseEntity
<>(
byteArrayOutputStream
.
toByteArray
(),
headers
,
HttpStatus
.
OK
);
}
private
List
<
SysDictItem
>
dictItemList
(
String
dictCode
){
String
s
=
remoteSystemService
.
sysDictItemList
(
dictCode
);
return
JSON
.
parseArray
(
s
,
SysDictItem
.
class
);
/*List<SysDictItem> list = new ArrayList<>();
SysDictItem item = new SysDictItem();
item.setId("1865339606107422721");
item.setItemText("国内地域");
item.setItemValue("Domestic");
item.setPathIds("1865339606107422721");
list.add(item);
SysDictItem item1 = new SysDictItem();
item1.setId("1865339606120005633");
item1.setItemText("中国");
item1.setItemValue("China");
item1.setPathIds("1865339606107422721,1865339606120005633");
list.add(item1);
SysDictItem item2 = new SysDictItem();
item2.setId("1865339606518464514");
item2.setItemText("河南省");
item2.setItemValue("410000000000");
item2.setPathIds("1865339606107422721,1865339606120005633,1865339606518464514");
list.add(item2);
SysDictItem item3 = new SysDictItem();
item3.setId("1865339641427656705");
item3.setItemText("焦作市");
item3.setItemValue("410800000000");
item3.setPathIds("1865339606107422721,1865339606120005633,1865339606518464514,1865339641427656705");
list.add(item3);
return list;*/
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论