提交 450fa865 作者: 李晓娟

合并分支 'yjzx_test_export' 到 'yjzx_test'

性质500修复;导出接口提供

查看合并请求 !19
package com.zzsn.thinktank.controller;
import cn.hutool.core.map.MapUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.service.LeaderCategoryService;
import com.zzsn.thinktank.service.ThinktankBasicInfoService;
......@@ -31,6 +34,7 @@ import java.util.Map;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Version 1.0
......@@ -209,6 +213,46 @@ public class ThinktankBasicInfoController {
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);
}
/**
* 模板下载
*
......
......@@ -912,7 +912,13 @@ public class ThinktankBasicInfoServiceImpl extends ServiceImpl<ThinktankBasicInf
case "nature":
mapList = processGrouping(list, ThinktankBasicInfo::getNature, false,null);//性质
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 -> {
String dictKey = MapUtil.getStr(map, "data");
if (MapUtil.isNotEmpty(dictMap) && dictMap.containsKey(dictKey)) {
......
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论