springboot中,feign 调用时,参数对象中的Integer类型null,转为0的处理

在调用时,消费方传给feign为null,服务方收到的却是0,在消费方启动类加上以下代码,不行,服务方也加上

@Bean
	public HttpMessageConverters fastJsonHttpMessageConverters() {
		//创建FastJson信息转换对象
		FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
		//创建FastJson对象并设定序列化规则
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
		fastJsonHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));
		//规则赋予转换对象`
		fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
		return new HttpMessageConverters(fastJsonHttpMessageConverter, new StringHttpMessageConverter(Charset.forName("UTF-8")));
	}

根据代码1“@FeignClient(name = "UserUgsApi", url = "${newbim.login-domain}") public interface IApplicationServicePlatformClient {@PostMapping("/ums/v1/feign/omp/project/search") ResultWrapper<QueryAllProject> listUserProject(@RequestHeader("BSP_TOKEN") String bspToken, @RequestHeader("BSP_USER_ID") String bspUserId, @RequestHeader("BSP_USER_ENV_ID") String bspUserEnvId, @RequestHeader("BSP_USER_TENANT") String bspUserTenant, @RequestBody ProjectCondition queryProjectDto);” 代码2"@Component @Slf4j public class ApplicationServicePlatformClientProxy { @Autowired private IApplicationServicePlatformClient applicationServicePlatformClient; public QueryAllProject listUserProject(String appId, String companyId, String designStatusList, String pageSize, ProjectCondition userId) { ResultWrapper<QueryAllProject> result = null; try { result = applicationServicePlatformClient.listUserProject(appId, companyId, designStatusList, pageSize, userId); } catch (Exception e) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:", e); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } if (result == null || result.getData() == null) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:result={}", result); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } return result.getData(); } }",修改并优化下面代码:@Override public List<ProjectCountVO> projectCount(String beginTime, String endTime, Integer forceType, String projectId) { List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId); if(CollectionUtil.isEmpty(taskTaskList)){ return Collections.emptyList(); } List<ProjectCountVO> result = new ArrayList<>(); Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId)); for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) { projectId = projectTaskEntry.getKey(); ProjectCountVO projectCountVO = new ProjectCountVO();
最新发布
05-24
@Override public List<ProjectCountVO> projectCount(String beginTime, String endTime, Integer forceType, String projectId) { List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId); if (CollectionUtil.isEmpty(taskTaskList)) { return Collections.emptyList(); } List<ProjectCountVO> result = new ArrayList<>(); Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId)); IApplicationServicePlatformClient applicationServicePlatformClient = Feign.builder() .encoder(new JacksonEncoder()) .decoder(new JacksonDecoder()) .target(IApplicationServicePlatformClient.class, "http://localhost:8080"); for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) { projectId = projectTaskEntry.getKey(); ProjectCountVO projectCountVO = new ProjectCountVO(); ResultWrapper<QueryAllProject> queryAllProjectResultWrapper = null; try { queryAllProjectResultWrapper = applicationServicePlatformClient.listUserProject("BSP_TOKEN", "BSP_USER_ID", "BSP_USER_ENV_ID", "BSP_USER_TENANT", new ProjectCondition(projectId)); } catch (Exception e) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:", e); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } if (queryAllProjectResultWrapper == null || queryAllProjectResultWrapper.getData() == null) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:result={}", queryAllProjectResultWrapper); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } QueryAllProject queryAllProject = queryAllProjectResultWrapper.getData(); if (queryAllProject == null) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:result={}", queryAllProjectResultWrapper); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } String projectName = queryAllProject.getProjectName(); projectCountVO.setProjectName(projectName); projectCountVO.setProjectId(projectId); Integer totalCount = projectTaskEntry.getValue().size(); Integer finishCount = (int) projectTaskEntry.getValue().stream().filter(task -> task.getTaskStatus() == TaskStatusEnum.FINISH.getStatus()).count(); projectCountVO.setTotalCount(totalCount); projectCountVO.setFinishCount(finishCount); projectCountVO.setUnFinishCount(totalCount - finishCount); result.add(projectCountVO); } return result; } ``` 在代码,我使用了Feign调用远程服务,获取项目名称。具体实现是在for循环,对于每个项目,都调用一次远程服务获取项目名称。注意,这里的远程服务地址我写的是http://localhost:8080,需要根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值