提交 4ed64011 作者: lixiaojuan

名字统一

上级 f30ace05
package com.zzsn.excelexportservice.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ColumnParamVO {
//数据权限栏目标识
private String flagCode;
private String id;
//专题id
private String subjectId;
//文章链接
private String url;
//专题标题
private String title;
//专题摘要
private String summary;
//内容
private String content;
//作者
private String author;
//发布时间
private String publishDate;
//来源
private String origin;
//国家
private String country;
//得分
private String score;
//企业名称
private String enterpriseName;
//信息类型
private String InfoType;
//专题库类型
private String libraryType;
//置顶标识(0取消置顶 1置顶)
private Integer type;
private String sourceAddress;
//开始时间
private String startTime;
//企业代码
private String socialCreditCode;
//地区名称
private String regionName;
//结束时间
private String endTime;
//专题库类型(1:政策;2:领导讲话;3:专家观点;4:企业案例)
private Integer classificationType;
private String classificationTypes;
//审核操作(0:未审核 1:审核通过 2:审核未通过 3:暂定 默认值为0)
private List<Integer> checkStatusList;
private Integer checkStatus;
//删除标记(1:删除;0:保留)
private Integer deleteFlag = 0;
//用户id
private String userId;
//项目id、栏目id、栏目组id
private String columnId;
//是否音频、视频
private String video = "";
//搜索内容
private String searchInfo = "";
//排序的列 ["score"(相关性),"publishDate"(发布时间)]
private String column = "common";
//排序字段 [desc|asc]默认desc
private String order = "desc";
//页码
private Integer pageNo = 1;
private Integer pageNo2;
private Integer pageNo3;
//页大小
private Integer pageSize = 10;
//是否所有
private String ynAll = "";
//是否是栏目
private String ynChannel = "0";
//是否是项目
private String ynProject = "0";
//筛选的栏目id
private String channelId = "";
/**标签*/
List<Label> labels;
//关键词检索范围 [1标题 2正文 3 全部]
private Integer searchScope;
//精确度["精确"| --]
private String searchAccuracy;
//操作类型 add .update
private String action;
//日期最大值
private String maxValue;
//字段
private String fields;
//倾向性
private String orientation;
//是否支持组合查询
private Boolean multiLabel =false;
//数据所在的索引名称
private String index;
/**
* 榜单id,多个之间,分割
*/
private String rankings;
private String typeName;
/**
* 使用机构脚本 1:使用机构排序脚本
*/
private String useOriginScript;
/**
* 用户选择的文章id
*/
private List<String> articleIds;
}
...@@ -14,7 +14,7 @@ public class ExportReq { ...@@ -14,7 +14,7 @@ public class ExportReq {
private String apiPath; // 数据接口路径,例如 /user/list private String apiPath; // 数据接口路径,例如 /user/list
private String fileName; private String fileName;
private String sheetName; private String sheetName;
private String base64Img; // 图片base64编码 private String imagesBase64; // 图片base64编码
private Map<String, Object> queryParams; // 查询参数 private Map<String, Object> queryParams; // 查询参数
......
...@@ -85,4 +85,24 @@ public class RequestParamHelper { ...@@ -85,4 +85,24 @@ public class RequestParamHelper {
return null; return null;
} }
public static String getStringParam(Map<String, Object> params, String key) {
if (params == null || !params.containsKey(key)) {
return null;
}
Object val = params.get(key);
if (val == null) {
return null;
}
// 如果已经是 String 类型,直接返回
if (val instanceof String) {
String str = (String) val;
return str.trim().isEmpty() ? null : str.trim();
}
// 其他类型转换为 String
return val.toString().trim();
}
} }
package com.zzsn.excelexportservice.exportStrategys;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zzsn.excelexportservice.dto.ColumnParamVO;
import com.zzsn.excelexportservice.dto.ExportDataResponse;
import com.zzsn.excelexportservice.dto.ExportReq;
import com.zzsn.excelexportservice.feign.ClbColumFeign;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* @Author: lxj
* @Date: 2025/9/30 11:37
*/
@Component
public class ClbStrategy implements ExportStrategy {
@Resource
private ClbColumFeign clbColumFeign;
private final ObjectMapper mapper = new ObjectMapper();
private final Map<String, TriFunction<HttpServletRequest, Map<String, Object>, ExportReq, ExportDataResponse<?>>> pathMapping = new HashMap<>();
@PostConstruct
public void init() {
register("/channel/datapull/column/getEnterpriseDynamicNum/export/excel",
(request, queryParams, exportReq) -> clbColumFeign.getEnterpriseDynamicNum(
mapper.convertValue(queryParams, ColumnParamVO.class)
));
// 以后可以继续 put 其他 CMS 导出接口
}
private void register(String path,
TriFunction<HttpServletRequest, Map<String, Object>, ExportReq, ExportDataResponse<?>> func) {
pathMapping.put(path, (request, queryParams, exportReq) -> {
try {
return func.apply(request, queryParams, exportReq);
} catch (com.dtflys.forest.exceptions.ForestRuntimeException fre) {
// Forest 调用异常,比如 token 过期或连接失败
return new ExportDataResponse<>(2, "调用 column 接口失败:" + fre.getMessage(),
Collections.emptyList(), Collections.emptyList());
} catch (Exception e) {
// 其他不可预期的异常
return new ExportDataResponse<>(3, "导出内部错误:" + e.getMessage(),
Collections.emptyList(), Collections.emptyList());
}
});
}
@Override
public String getServiceName() {
return "service-column";
}
@Override
public String getApiPath() {
return null; // 所有接口由本策略处理
}
@Override
public ExportDataResponse<?> execute(HttpServletRequest request, Map<String, Object> queryParams, ExportReq exportReq) {
TriFunction<HttpServletRequest, Map<String, Object>, ExportReq, ExportDataResponse<?>> func =
pathMapping.get(exportReq.getApiPath());
if (func == null) {
return new ExportDataResponse<>(404, "未找到匹配的接口: " + exportReq.getApiPath(),
Collections.emptyList(), Collections.emptyList());
}
return func.apply(request, queryParams, exportReq);
}
}
\ No newline at end of file
...@@ -31,56 +31,56 @@ public class ResearchStrategy implements ExportStrategy { ...@@ -31,56 +31,56 @@ public class ResearchStrategy implements ExportStrategy {
// 热词趋势导出 // 热词趋势导出
register("/research/benchmark/analyse/getHotKeywordTendency/export/excel", register("/research/benchmark/analyse/getHotKeywordTendency/export/excel",
(request, queryParams, exportReq) -> zdqyFeign.getHotKeywordTendency( (request, queryParams, exportReq) -> zdqyFeign.getHotKeywordTendency(
RequestParamHelper.getParam(queryParams, "tid"), RequestParamHelper.getStringParam(queryParams, "tid"),
RequestParamHelper.getParam(queryParams, "kids"), RequestParamHelper.getStringParam(queryParams, "kids"),
RequestParamHelper.getParam(queryParams, "coids"), RequestParamHelper.getStringParam(queryParams, "coids"),
RequestParamHelper.getParam(queryParams, "countryNames"), RequestParamHelper.getStringParam(queryParams, "countryNames"),
RequestParamHelper.getParam(queryParams, "industryNames"), RequestParamHelper.getStringParam(queryParams, "industryNames"),
RequestParamHelper.getParam(queryParams, "countryType"), RequestParamHelper.getIntegerParam(queryParams, "countryType"),
RequestParamHelper.getParam(queryParams, "topKids"), RequestParamHelper.getStringParam(queryParams, "topKids"),
RequestParamHelper.getParam(queryParams, "startDate"), RequestParamHelper.getStringParam(queryParams, "startDate"),
RequestParamHelper.getParam(queryParams, "endDate"), RequestParamHelper.getStringParam(queryParams, "endDate"),
RequestParamHelper.getParam(queryParams, "dateType"), RequestParamHelper.getIntegerParam(queryParams, "dateType"),
RequestParamHelper.getParam(queryParams, "weeks"), RequestParamHelper.getIntegerParam(queryParams, "weeks"),
RequestParamHelper.getParam(queryParams, "labels"), RequestParamHelper.getStringParam(queryParams, "labels"),
RequestParamHelper.getParam(queryParams, "articleNum"), RequestParamHelper.getIntegerParam(queryParams, "articleNum"),
RequestParamHelper.getParam(queryParams, "count"), RequestParamHelper.getIntegerParam(queryParams, "count"),
RequestParamHelper.getParam(queryParams, "queryType"), RequestParamHelper.getStringParam(queryParams, "queryType"),
RequestParamHelper.getParam(queryParams, "flagCode"), RequestParamHelper.getStringParam(queryParams, "flagCode"),
RequestParamHelper.getParam(queryParams, "rankings"), RequestParamHelper.getStringParam(queryParams, "rankings"),
RequestParamHelper.getParam(queryParams, "columnId") RequestParamHelper.getStringParam(queryParams, "columnId")
)); ));
// 特殊关键词集导出 // 特殊关键词集导出
register("/research/special/universal/getKeyWordsSetById/export/excel", register("/research/special/universal/getKeyWordsSetById/export/excel",
(request, queryParams, exportReq) -> zdqyFeign.getKeyWordsSetById( (request, queryParams, exportReq) -> zdqyFeign.getKeyWordsSetById(
RequestParamHelper.getParam(queryParams, "id"), RequestParamHelper.getStringParam(queryParams, "id"),
RequestParamHelper.getParam(queryParams, "limitNumber"), RequestParamHelper.getIntegerParam(queryParams, "limitNumber"),
RequestParamHelper.getParam(queryParams, "keyWordsNum"), RequestParamHelper.getIntegerParam(queryParams, "keyWordsNum"),
RequestParamHelper.getParam(queryParams, "title") RequestParamHelper.getStringParam(queryParams, "title")
)); ));
// 热词列表导出 // 热词列表导出
register("/research/benchmark/analyse/getHotKeywordList/export/excel", register("/research/benchmark/analyse/getHotKeywordList/export/excel",
(request, queryParams, exportReq) -> zdqyFeign.getHotKeywordListExport( (request, queryParams, exportReq) -> zdqyFeign.getHotKeywordListExport(
// String类型参数使用getStringParam避免类型转换错误 // String类型参数使用getStringParam避免类型转换错误
RequestParamHelper.getParam(queryParams, "tid"), RequestParamHelper.getStringParam(queryParams, "tid"),
RequestParamHelper.getParam(queryParams, "kids"), RequestParamHelper.getStringParam(queryParams, "kids"),
RequestParamHelper.getParam(queryParams, "coids"), RequestParamHelper.getStringParam(queryParams, "coids"),
RequestParamHelper.getParam(queryParams, "countryNames"), RequestParamHelper.getStringParam(queryParams, "countryNames"),
RequestParamHelper.getParam(queryParams, "industryNames"), RequestParamHelper.getStringParam(queryParams, "industryNames"),
RequestParamHelper.getParam(queryParams, "labels"), RequestParamHelper.getStringParam(queryParams, "labels"),
// Integer类型参数保持不变 // Integer类型参数保持不变
RequestParamHelper.getIntegerParam(queryParams, "countryType"), RequestParamHelper.getIntegerParam(queryParams, "countryType"),
RequestParamHelper.getParam(queryParams, "startDate"), RequestParamHelper.getStringParam(queryParams, "startDate"),
RequestParamHelper.getParam(queryParams, "endDate"), RequestParamHelper.getStringParam(queryParams, "endDate"),
RequestParamHelper.getIntegerParam(queryParams, "dateType"), RequestParamHelper.getIntegerParam(queryParams, "dateType"),
RequestParamHelper.getIntegerParam(queryParams, "count"), RequestParamHelper.getIntegerParam(queryParams, "count"),
RequestParamHelper.getParam(queryParams, "queryType"), RequestParamHelper.getStringParam(queryParams, "queryType"),
RequestParamHelper.getParam(queryParams, "flagCode"), RequestParamHelper.getStringParam(queryParams, "flagCode"),
RequestParamHelper.getParam(queryParams, "rankings"), RequestParamHelper.getStringParam(queryParams, "rankings"),
RequestParamHelper.getParam(queryParams, "columnId") RequestParamHelper.getStringParam(queryParams, "columnId")
)); ));
// 通用接口导出 // 通用接口导出
......
package com.zzsn.excelexportservice.feign; package com.zzsn.excelexportservice.feign;
import com.zzsn.excelexportservice.dto.ColumnParamVO;
import com.zzsn.excelexportservice.dto.ExportDataResponse;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/** /**
* @Author: lxj * @Author: lxj
* @Date: 2025/9/26 14:09 * @Date: 2025/9/26 14:09
*/ */
//@FeignClient(name = "research-center-fourth-server" @FeignClient(name = "service-column"
//// , url = "${excel.export.services.research-center-fourth-server.data-url}" , url = "${excel.export.services.service-column.data-url}"
//) )
//public interface ClbColumFeign { public interface ClbColumFeign {
// @PostMapping("/channel/datapull/column/getEnterpriseDynamicNum")
//} @PostMapping("/channel/datapull/column/getEnterpriseDynamicNum/export/excel")
ExportDataResponse getEnterpriseDynamicNum(@RequestBody ColumnParamVO columnParamVO);
}
...@@ -51,7 +51,7 @@ public class ExcelExportService { ...@@ -51,7 +51,7 @@ public class ExcelExportService {
try { try {
workbook = new SXSSFWorkbook(1000); workbook = new SXSSFWorkbook(1000);
workbook.setCompressTempFiles(true); workbook.setCompressTempFiles(true);
int i=1;
for (ExportReq exportReq : exportReqList) { for (ExportReq exportReq : exportReqList) {
ExportDataResponse resp = null; ExportDataResponse resp = null;
String serviceName = exportReq.getServiceName(); String serviceName = exportReq.getServiceName();
...@@ -68,7 +68,7 @@ public class ExcelExportService { ...@@ -68,7 +68,7 @@ public class ExcelExportService {
resp = strategy.execute(request, queryParams, exportReq); resp = strategy.execute(request, queryParams, exportReq);
if (resp == null || resp.getCode() != 0) { if (resp == null || (resp.getCode() != 0 && resp.getCode() != 200)) {
log.error("导出数据失败, serviceName: {}, apiPath: {}, errorMsg: {}", log.error("导出数据失败, serviceName: {}, apiPath: {}, errorMsg: {}",
serviceName, exportReq.getApiPath(), resp != null ? resp.getMsg() : "null"); serviceName, exportReq.getApiPath(), resp != null ? resp.getMsg() : "null");
sendError(response, resp != null ? resp.getMsg() : "导出失败: 未知错误"); sendError(response, resp != null ? resp.getMsg() : "导出失败: 未知错误");
...@@ -79,7 +79,7 @@ public class ExcelExportService { ...@@ -79,7 +79,7 @@ public class ExcelExportService {
String sheetName = generateSafeSheetName( String sheetName = generateSafeSheetName(
StringUtils.isNotBlank(exportReq.getSheetName()) StringUtils.isNotBlank(exportReq.getSheetName())
? exportReq.getSheetName() ? exportReq.getSheetName()
: "Sheet_" + serviceName : "Sheet" + i++
); );
Sheet sheet = workbook.createSheet(sheetName); Sheet sheet = workbook.createSheet(sheetName);
...@@ -87,9 +87,9 @@ public class ExcelExportService { ...@@ -87,9 +87,9 @@ public class ExcelExportService {
int endCol = 13; int endCol = 13;
// 判断是否有图片 // 判断是否有图片
if (StringUtils.isNotBlank(exportReq.getBase64Img())) { if (StringUtils.isNotBlank(exportReq.getImagesBase64())) {
log.info("开始插入图片------->" + System.currentTimeMillis()); log.info("开始插入图片------->" + System.currentTimeMillis());
drawImg(workbook, sheet, exportReq.getBase64Img(), startRow, endCol); drawImg(workbook, sheet, exportReq.getImagesBase64(), startRow, endCol);
startRow++; // 图片占用一行,从下一行开始写标题 startRow++; // 图片占用一行,从下一行开始写标题
} }
......
...@@ -20,6 +20,8 @@ excel: ...@@ -20,6 +20,8 @@ excel:
data-url: http://server-1-95-77-159.ciglobal.cn:10089 data-url: http://server-1-95-77-159.ciglobal.cn:10089
enterprise-service: enterprise-service:
data-url: http://server-1-95-77-159.ciglobal.cn:10089 data-url: http://server-1-95-77-159.ciglobal.cn:10089
service-column:
data-url: http://server-1-95-77-159.ciglobal.cn:10089
# #
forest: forest:
connect-timeout: 600000 # HTTP请求连接超时时间 connect-timeout: 600000 # HTTP请求连接超时时间
......
...@@ -20,6 +20,8 @@ excel: ...@@ -20,6 +20,8 @@ excel:
data-url: https://sasac-rc.com data-url: https://sasac-rc.com
enterprise-service: enterprise-service:
data-url: https://sasac-rc.com data-url: https://sasac-rc.com
service-column:
data-url: https://sasac-rc.com
# #
forest: forest:
connect-timeout: 600000 # HTTP请求连接超时时间 connect-timeout: 600000 # HTTP请求连接超时时间
......
...@@ -20,6 +20,8 @@ excel: ...@@ -20,6 +20,8 @@ excel:
data-url: http://server-1-95-77-159.ciglobal.cn:10089 data-url: http://server-1-95-77-159.ciglobal.cn:10089
enterprise-service: enterprise-service:
data-url: http://server-1-95-77-159.ciglobal.cn:10089 data-url: http://server-1-95-77-159.ciglobal.cn:10089
service-column:
data-url: http://server-1-95-77-159.ciglobal.cn:10089
# #
forest: forest:
connect-timeout: 600000 # HTTP请求连接超时时间 connect-timeout: 600000 # HTTP请求连接超时时间
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论