Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
think-tank
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
think-tank
Commits
2b0bf3a4
提交
2b0bf3a4
authored
10月 10, 2025
作者:
lixiaojuan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
性质500修复;导出接口提供
上级
acb5578d
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
101 行增加
和
1 行删除
+101
-1
ThinktankBasicInfoController.java
...sn/thinktank/controller/ThinktankBasicInfoController.java
+44
-0
ThinktankBasicInfoServiceImpl.java
...thinktank/service/impl/ThinktankBasicInfoServiceImpl.java
+7
-1
ExportDataResponse.java
src/main/java/com/zzsn/thinktank/vo/ExportDataResponse.java
+50
-0
没有找到文件。
src/main/java/com/zzsn/thinktank/controller/ThinktankBasicInfoController.java
浏览文件 @
2b0bf3a4
package
com
.
zzsn
.
thinktank
.
controller
;
package
com
.
zzsn
.
thinktank
.
controller
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.poi.excel.ExcelReader
;
import
cn.hutool.poi.excel.ExcelReader
;
import
cn.hutool.poi.excel.ExcelUtil
;
import
cn.hutool.poi.excel.ExcelUtil
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.zzsn.thinktank.constants.CommonConstants
;
import
com.zzsn.thinktank.entity.SysDictItem
;
import
com.zzsn.thinktank.entity.ThinktankBasicInfo
;
import
com.zzsn.thinktank.entity.ThinktankBasicInfo
;
import
com.zzsn.thinktank.service.LeaderCategoryService
;
import
com.zzsn.thinktank.service.LeaderCategoryService
;
import
com.zzsn.thinktank.service.ThinktankBasicInfoService
;
import
com.zzsn.thinktank.service.ThinktankBasicInfoService
;
...
@@ -31,6 +34,7 @@ import java.util.Map;
...
@@ -31,6 +34,7 @@ import java.util.Map;
import
java.io.ByteArrayOutputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* @Version 1.0
* @Version 1.0
...
@@ -209,6 +213,46 @@ public class ThinktankBasicInfoController {
...
@@ -209,6 +213,46 @@ public class ThinktankBasicInfoController {
return
Result
.
OK
(
mapList
);
return
Result
.
OK
(
mapList
);
}
}
@GetMapping
(
"/queryStatisticalAnalysis/export/excel"
)
public
ExportDataResponse
<?>
queryStatisticalAnalysisExport
(
String
type
,
HttpServletRequest
req
)
throws
Exception
{
ThinktankBasicInfoListVo
vo
=
new
ThinktankBasicInfoListVo
();
Page
<
ThinktankBasicInfo
>
page
=
new
Page
<
ThinktankBasicInfo
>(
1
,
999999
);
List
<
Map
<
String
,
Object
>>
mapList
=
thinktankBasicInfoService
.
queryStatisticalAnalysis
(
type
,
page
,
vo
,
req
);
List
<
ExportDataResponse
.
Header
>
headers
=
new
ArrayList
<>();
switch
(
type
)
{
case
"continent"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"洲"
));
break
;
case
"country"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"国家"
));
break
;
case
"tag"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"领域"
));
break
;
case
"lang"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"语言"
));
break
;
case
"nature"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"性质"
));
break
;
case
"influencePosition"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"影响力和地位"
));
break
;
case
"scale"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"智库规模"
));
break
;
case
"staffSize"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"人员规模"
));
break
;
case
"operateStatus"
:
headers
.
add
(
new
ExportDataResponse
.
Header
(
"data"
,
"运营状态"
));
break
;
}
headers
.
add
(
new
ExportDataResponse
.
Header
(
"num"
,
"数据"
));
return
ExportDataResponse
.
success
(
headers
,
mapList
);
}
/**
/**
* 模板下载
* 模板下载
*
*
...
...
src/main/java/com/zzsn/thinktank/service/impl/ThinktankBasicInfoServiceImpl.java
浏览文件 @
2b0bf3a4
...
@@ -912,7 +912,13 @@ public class ThinktankBasicInfoServiceImpl extends ServiceImpl<ThinktankBasicInf
...
@@ -912,7 +912,13 @@ public class ThinktankBasicInfoServiceImpl extends ServiceImpl<ThinktankBasicInf
case
"nature"
:
case
"nature"
:
mapList
=
processGrouping
(
list
,
ThinktankBasicInfo:
:
getNature
,
false
,
null
);
//性质
mapList
=
processGrouping
(
list
,
ThinktankBasicInfo:
:
getNature
,
false
,
null
);
//性质
List
<
SysDictItem
>
dictItemList
=
sysDictItemService
.
selectByItemCode
(
CommonConstants
.
DIC_THINK_TANK_NATURE
);
List
<
SysDictItem
>
dictItemList
=
sysDictItemService
.
selectByItemCode
(
CommonConstants
.
DIC_THINK_TANK_NATURE
);
Map
<
String
,
String
>
dictMap
=
dictItemList
.
stream
().
collect
(
Collectors
.
toMap
(
SysDictItem:
:
getItemValue
,
SysDictItem:
:
getItemText
));
// 方式1:保留第一个出现的重复值(推荐,除非明确需要覆盖)
Map
<
String
,
String
>
dictMap
=
dictItemList
.
stream
()
.
collect
(
Collectors
.
toMap
(
SysDictItem:
:
getItemValue
,
SysDictItem:
:
getItemText
,
(
existingValue
,
newValue
)
->
existingValue
// 遇到重复键时保留旧值
));
mapList
.
forEach
(
map
->
{
mapList
.
forEach
(
map
->
{
String
dictKey
=
MapUtil
.
getStr
(
map
,
"data"
);
String
dictKey
=
MapUtil
.
getStr
(
map
,
"data"
);
if
(
MapUtil
.
isNotEmpty
(
dictMap
)
&&
dictMap
.
containsKey
(
dictKey
))
{
if
(
MapUtil
.
isNotEmpty
(
dictMap
)
&&
dictMap
.
containsKey
(
dictKey
))
{
...
...
src/main/java/com/zzsn/thinktank/vo/ExportDataResponse.java
0 → 100644
浏览文件 @
2b0bf3a4
package
com
.
zzsn
.
thinktank
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Collections
;
import
java.util.List
;
/**
* @Author: lxj
* @Date: 2025/9/19 16:24
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ExportDataResponse
<
T
>
{
private
int
code
;
private
String
msg
;
private
List
<
Header
>
headers
;
private
List
<
T
>
dataList
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
static
class
Header
{
private
String
field
;
private
String
title
;
}
// 处理失败的 Result
public
static
<
T
>
ExportDataResponse
<
T
>
fromResultFail
(
Result
<?>
result
)
{
ExportDataResponse
<
T
>
resp
=
new
ExportDataResponse
<>();
resp
.
setCode
(
result
.
getCode
());
// 自定义失败码
resp
.
setMsg
(
result
.
getMessage
());
resp
.
setHeaders
(
Collections
.
emptyList
());
resp
.
setDataList
(
Collections
.
emptyList
());
return
resp
;
}
public
static
<
T
>
ExportDataResponse
<
T
>
success
(
List
<
Header
>
headers
,
List
<
T
>
dataList
)
{
ExportDataResponse
<
T
>
resp
=
new
ExportDataResponse
<>();
resp
.
setCode
(
0
);
// 自定义失败码
resp
.
setMsg
(
"success"
);
resp
.
setHeaders
(
headers
);
resp
.
setDataList
(
dataList
);
return
resp
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论