当前位置: 首页 > news >正文

springcloud feign远程调用请求参数对象变成linkhashmap处理

springcloud feign远程调用复杂请求参数对象,

controller接收后对象参数变成linkhashmap处理,使用jackjson,private final ObjectMapper objectMapper;

objectMapper.convertValue(item, clazz); 处理

feign客户端参数复杂集合List对象

@FeignClient(contextId = "remoteTaskService", value = ServiceNameConstants.UPMS_SERVICE)
public interface RemoteTaskService {@PostMapping(value = "/task/createAndExportTask")public  R createAndExportTask(@RequestBody TaskExportDTO taskExportRequest);}

@Data
public class TaskExportDTO {/*** 任务标题*/private String title;/*** easyExcel写入表头实体类* */private Object excelVO;/*** easyExcel写入表格数据集合类*/private List<Object> dataList;/*** 用户id*/private Long userId;/*** 转化使用实体类*/private Class clazz;/*** 重试任务ID (非必填)*/private Long repeatTaskId;}

feign客户端传参数:

	private final RemoteTaskService remoteTaskService; //客户端引入feign远程调用客户端List<Object> dataList=new ArrayList<>();for (int i = 0; i < 10; i++) {PostExcelVO postExcelVO = new PostExcelVO();postExcelVO.setPostId(Long.valueOf(i));postExcelVO.setPostName(j+"岗位名称" + i);postExcelVO.setPostCode(j+"岗位标识" + i);postExcelVO.setRemark(j+"岗位描述" + i);postExcelVO.setCreateTime(LocalDateTime.now());dataList.add(postExcelVO);}TaskExportDTO request=new TaskExportDTO();request.setTitle(TaskTitleEnum.POST.getTitle());request.setExcelVO(new PostExcelVO());request.setDataList(dataList);request.setClazz(PostExcelVO.class);request.setUserId(SecurityUtils.getUserid());// feign发起请求传参数remoteTaskService.createAndExportTask(request);

feign的实现controller类,使用jackjson 注入依赖

	private final ObjectMapper objectMapper;//注入jackjson注入依赖@Inner(value = false)@PostMapping(value = "/createAndExportTask")public R createAndExportTask(@RequestBody TaskExportDTO taskExportRequest){if (taskExportRequest == null) {return R.failed("请求参数不能为空");}String title = taskExportRequest.getTitle();Long repeatTaskId = taskExportRequest.getRepeatTaskId();Long userId = taskExportRequest.getUserId();Object excelVO = taskExportRequest.getExcelVO();List<?> dataList = taskExportRequest.getDataList();Class<?> clazz = taskExportRequest.getClazz();// 校验必要字段if (title == null || title.trim().isEmpty()) {return R.failed("任务标题不能为空");}if (userId == null) {return R.failed("用户id不能为空");}if (dataList == null || dataList.isEmpty()) {return R.failed("数据列表不能为空");}if (clazz == null) {return R.failed("目标类信息缺失");}Object conversionExcelVO = null;List<Object> conversionDataList = new ArrayList<>();try {// 使用 convertValue 替代 write-read 模式以提高性能// String itemStr = objectMapper.writeValueAsString(item);// Object obj = objectMapper.readValue(itemStr, clazz);if (excelVO != null) {conversionExcelVO = objectMapper.convertValue(excelVO, clazz);}for (Object item : dataList) {if (item != null) {Object convertedItem = objectMapper.convertValue(item, clazz);conversionDataList.add(convertedItem);}}} catch (IllegalArgumentException e) {log.error("对象转换失败", e);return R.failed("数据格式转换异常");}try {sysTaskService.createAndExportTask(title, conversionExcelVO, conversionDataList, repeatTaskId, userId);return R.ok();} catch (Exception e) {// 修复日志模板参数个数不一致的问题,并隐藏具体异常细节log.error("创建并导出任务失败,title: {}, repeatTaskId: {}", title, repeatTaskId, e);return R.failed("任务创建失败,请稍后再试");}}

http://www.dtcms.com/a/609759.html

相关文章:

  • “耐达讯自动化Profibus总线光端机在化工变频泵控制系统中的应用与价值解析”
  • centos7.2安装cacti1.2.27
  • 将 vue3 项目打包后部署在 springboot 项目运行
  • 福州短视频seo网站建筑网站首页大图
  • 阿根廷网站后缀毕业设计网站成品
  • 性能相关指标
  • 数据结构--6:优先级队列(堆)
  • ESP32 Wsl2 环境搭建
  • Elasticsearch:如何创建知识库并使用 AI Assistant 来配置连接器
  • Blender学习笔记(04)-- 选中实体的一部分,单独设置颜色
  • 哪个网站做攻略比较好品牌vi设计案例欣赏ppt
  • 珠海市网站建设企业网站编辑给续南明做的封面
  • 国产化Excel开发组件Spire.XLS教程:Python将列表导出为CSV文件(含一维/二维/字典列表)
  • 接口自动化测试框架实战(Pytest+Allure+Excel)
  • 苹果质量检测与分类 - YOLO13结合RFCAConv实现
  • YZ系列工具之YZ09: VBA_Excel之读心术
  • 三芯联动:“通信 + 供电 + 主控”的安全闭环与场景革命
  • EXCEL 数字编码化排序(如部门层级排序)
  • sse,短轮询,长轮询,webSocket
  • 芦笋嫩茎形态分类与识别_YOLO11-C3k2-MambaOut-SFSC模型实现_1
  • 昆明专业网站营销北京工程建设交易平台
  • 衡阳网站搜索引擎优化wordpress如何设水印图片
  • 对Docker部署的MySQL中的数据进行备份恢复
  • AI 时代企业新形态:超级个体与多智能体
  • 夜场酒吧娱乐ktv类企业网站源码网上花店网页制作素材
  • wordpress 微博链接地址南京百度网站快速优化
  • 新操作系统
  • 电商网站html模板介绍公司的简介范文
  • 卡索(CASO)汽车调查:数据智能时代,汽车产业竞争格局与战略升维路径探析
  • 新能源汽车电源环路设计:从PID补偿到数字化控制的落地实践