列表与map的结合使用

 一、在项目开发中,应该要尽量减少与数据库的交互次数, 将得到的公司和部门的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;
    }

发布了53 篇原创文章 · 获赞 45 · 访问量 8858

猜你喜欢

转载自blog.csdn.net/qq_33036061/article/details/103986880