一、在项目开发中,应该要尽量减少与数据库的交互次数, 将得到的公司和部门的id作为map的key,name值作为id的对应的value。 在设置属性时,再根据map.get(key)来获取值,此处先批量传入id来获取到所有的公司和部门。
List<CompanyCO> companyCOS=organizationService.listCompaniesByIds(companyIds);
完整代码:
public List<DepartMentMappingDTO> exportDepartMentMappingByCond(String oaDepartment, String hrDepartment, String oaBudgetItem,Long fecCompanyId,Long fecDepartmentId, String fecDepartment, String t0Code, String t3Code,String oaCompany, Page page) {
List<DepartMentMapping> list = baseMapper.selectPage(page, new EntityWrapper<DepartMentMapping>()
.eq(fecDepartmentId!=null,"fec_department_id",fecDepartmentId)
.like(oaDepartment!=null,"oa_department", oaDepartment)
.like(hrDepartment!=null,"hr_department",hrDepartment)
.like(oaBudgetItem!=null,"oa_budget_item",oaBudgetItem)
.like(t0Code!=null,"t0_code",t0Code)
.like(t3Code!=null,"t3_code",t3Code)
.like(fecDepartment!=null,"fec_department",fecDepartment)
.like(oaCompany!=null,"oa_company",oaCompany)
.eq(fecCompanyId!=null,"fec_company_id",fecCompanyId));
List<DepartMentMappingDTO> dtolist = new ArrayList<>();
List<Long> companyIds=new ArrayList<>();
List<Long> departmentIds=new ArrayList<>();
Map<Long,String> companyMap=new HashMap<>();
Map<Long,String> departmentMap=new HashMap<>();
list.stream().forEach(e -> {
companyIds.add(e.getFecCompanyId());
if (!companyMap.containsKey(e.getFecCompanyId())){
companyMap.put(e.getFecCompanyId(),"");
}
});
list.stream().forEach(e -> {
departmentIds.add(e.getFecDepartmentId());
if (!departmentMap.containsKey(e.getFecDepartmentId())){
departmentMap.put(e.getFecDepartmentId(),"");
}
});
List<CompanyCO> companyCOS=organizationService.listCompaniesByIds(companyIds);
List<DepartmentCO> departmentCOS=organizationService.listDepartmentsByIds(departmentIds);
companyCOS.forEach(e->{
Long id=e.getId();
if (companyMap.containsKey(id)){
companyMap.put(id,e.getName());
}
});
departmentCOS.forEach(e->{
Long id=e.getId();
if (departmentMap.containsKey(id)){
departmentMap.put(id,e.getName());
}
});
if(!CollectionUtils.isEmpty(list)){
for (int i=0;i<list.size();i++){
DepartMentMapping e=list.get(i);
DepartMentMappingDTO dto = new DepartMentMappingDTO();
dto.setOaCompany(e.getOaCompany());
dto.setOaDepartment(e.getOaDepartment());
dto.setOaBudgetItem(e.getOaBudgetItem());
dto.setFecDepartmentName(companyMap.get(e.getFecCompanyId()));
dto.setFecCompanyName(departmentMap.get(e.getFecDepartmentId()));
dtolist.add(dto);
}
}
return dtolist;
}