for (BdFindOutPlanGroupDTO comDTO : result) { Result<FeignOrgDTO> feignOrgDTOResult = remoteIpmpOrgService.getInfoById(comDTO.getCompanyId().toString()); if (StringUtils.isNotNull(feignOrgDTOResult.getData())) { if (StringUtils.isNotNull(feignOrgDTOResult.getData())) { comDTO.setCompanyName(feignOrgDTOResult.getData().getOrgName()); } else { comDTO.setCompanyName(comDTO.getCompanyId().toString()); } } else { comDTO.setCompanyName(comDTO.getCompanyId().toString()); } BdFindOutPlanGroupDtlQueryDTO findOutPlanGroupDtlQueryDTO = new BdFindOutPlanGroupDtlQueryDTO(); findOutPlanGroupDtlQueryDTO.setFindOutPlanGroupId(Long.parseLong(comDTO.getFindOutPlanGroupId())); List<BdFindOutPlanGroupDtlDO> bdFindOutPlanGroupDtlDOS = findOutPlanGroupDtlMapper.selectList(findOutPlanGroupDtlQueryDTO); List<BdFindOutPlanGroupDtlDTO> dtoList = BeanUtils.copyToList(bdFindOutPlanGroupDtlDOS, BdFindOutPlanGroupDtlDTO.class); //获取项目id与项目名称对应关系 if (StringUtils.isNotEmpty(dtoList)) { List<Long> projectIdList = dtoList.stream().map(BdFindOutPlanGroupDtlDTO::getProjectId).collect(Collectors.toList()); ApiMdProjectDTO apiMdProjectDTO = new ApiMdProjectDTO(); apiMdProjectDTO.setProjectIds(projectIdList.stream().map(x -> x + "").collect(Collectors.toList())); Result<List<ApiMdProjectDTO>> projectInfoList = remoteProjecctService.listProject(apiMdProjectDTO); Map<String, String> stringStringMap = CollectionUtils.toMap( projectInfoList.getData(), ApiMdProjectDTO::getProjectId, ApiMdProjectDTO::getProjectName ); //将从其他表获取的数值做填充 dtoList.forEach(d -> { //如果md_project表未查询到名称,则显示id d.setProjectName(Optional.ofNullable(stringStringMap.get(d.getProjectId().toString())).orElse(d.getProjectId().toString())); }); } comDTO.setFindOutPlanGroupDtlDTOS(dtoList); } 代码优化
时间: 2024-02-14 21:10:23 浏览: 151
以下是对代码的优化建议:
1. 建议将远程调用服务的代码封装到一个方法中,使得代码更加简洁和易于维护。
2. 在进行远程调用之前,可以先判断需要的参数是否为空,以避免不必要的远程调用。
3. 在获取数据后,可以使用Java 8的流式编程和Lambda表达式来简化代码,例如使用stream()、map()、collect()等方法。
4. 建议使用Java 8的Optional类来避免空指针异常的出现,使代码更加健壮。
综上所述,代码可以进行如下优化:
```
for (BdFindOutPlanGroupDTO comDTO : result) {
// 获取公司名称
String companyName = comDTO.getCompanyId().toString();
Result<FeignOrgDTO> feignOrgDTOResult = getOrgInfoById(comDTO.getCompanyId().toString());
if (feignOrgDTOResult.isSuccess() && StringUtils.isNotNull(feignOrgDTOResult.getData())) {
companyName = feignOrgDTOResult.getData().getOrgName();
}
comDTO.setCompanyName(companyName);
// 获取项目信息
BdFindOutPlanGroupDtlQueryDTO findOutPlanGroupDtlQueryDTO = new BdFindOutPlanGroupDtlQueryDTO();
findOutPlanGroupDtlQueryDTO.setFindOutPlanGroupId(Long.parseLong(comDTO.getFindOutPlanGroupId()));
List<BdFindOutPlanGroupDtlDO> bdFindOutPlanGroupDtlDOS = findOutPlanGroupDtlMapper.selectList(findOutPlanGroupDtlQueryDTO);
List<BdFindOutPlanGroupDtlDTO> dtoList = BeanUtils.copyToList(bdFindOutPlanGroupDtlDOS, BdFindOutPlanGroupDtlDTO.class);
if (StringUtils.isNotEmpty(dtoList)) {
// 获取项目id与项目名称对应关系
List<Long> projectIdList = dtoList.stream().map(BdFindOutPlanGroupDtlDTO::getProjectId).collect(Collectors.toList());
Result<List<ApiMdProjectDTO>> projectInfoList = getProjectInfoList(projectIdList);
if (projectInfoList.isSuccess()) {
Map<String, String> stringStringMap = projectInfoList.getData().stream().collect(Collectors.toMap(ApiMdProjectDTO::getProjectId, ApiMdProjectDTO::getProjectName));
// 填充数据
dtoList.forEach(d -> {
d.setProjectName(Optional.ofNullable(stringStringMap.get(d.getProjectId().toString())).orElse(d.getProjectId().toString()));
});
}
}
comDTO.setFindOutPlanGroupDtlDTOS(dtoList);
}
// 获取组织信息
private Result<FeignOrgDTO> getOrgInfoById(String companyId) {
if (StringUtils.isEmpty(companyId)) {
return Result.fail("公司ID不能为空");
}
return remoteIpmpOrgService.getInfoById(companyId);
}
// 获取项目信息列表
private Result<List<ApiMdProjectDTO>> getProjectInfoList(List<Long> projectIdList) {
if (CollectionUtils.isEmpty(projectIdList)) {
return Result.fail("项目ID列表不能为空");
}
ApiMdProjectDTO apiMdProjectDTO = new ApiMdProjectDTO();
apiMdProjectDTO.setProjectIds(projectIdList.stream().map(x -> x + "").collect(Collectors.toList()));
return remoteProjecctService.listProject(apiMdProjectDTO);
}
```
阅读全文