|  |  | @ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams; | 
			
		
	
		
			
				
					|  |  |  | import com.alibaba.excel.EasyExcel; | 
			
		
	
		
			
				
					|  |  |  | import com.alibaba.excel.ExcelReader; | 
			
		
	
		
			
				
					|  |  |  | import com.alibaba.excel.read.metadata.ReadSheet; | 
			
		
	
		
			
				
					|  |  |  | import com.alibaba.fastjson.JSON; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.NumConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.StrConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; | 
			
		
	
	
		
			
				
					|  |  | @ -175,14 +176,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { | 
			
		
	
		
			
				
					|  |  |  |             pids = getPids(formDTO.getAgencyId()); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         formDTO.setPids(pids); | 
			
		
	
		
			
				
					|  |  |  |         PageInfo<IcHouseListResultDTO> pageInfo = null; | 
			
		
	
		
			
				
					|  |  |  |         if (formDTO.getIsPage()){ | 
			
		
	
		
			
				
					|  |  |  |             pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(),formDTO.getIsPage()) | 
			
		
	
		
			
				
					|  |  |  |         PageInfo<IcHouseListResultDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(),formDTO.getIsPage()) | 
			
		
	
		
			
				
					|  |  |  |                     .doSelectPageInfo(() -> icHouseDao.searchHouseByPage(formDTO)); | 
			
		
	
		
			
				
					|  |  |  |         }else{ | 
			
		
	
		
			
				
					|  |  |  |             List<IcHouseListResultDTO> resultDTOS = icHouseDao.searchHouseByPage(formDTO); | 
			
		
	
		
			
				
					|  |  |  |             pageInfo = new PageInfo<>(resultDTOS,resultDTOS.size()); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         List<IcHouseListResultDTO> records = pageInfo.getList(); | 
			
		
	
		
			
				
					|  |  |  |         records.forEach(item->{ | 
			
		
	
	
		
			
				
					|  |  | @ -214,10 +210,17 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { | 
			
		
	
		
			
				
					|  |  |  |     public void exportBuildinginfo(IcHouseListFormDTO formDTO, HttpServletResponse response) throws Exception { | 
			
		
	
		
			
				
					|  |  |  |         //如果类型是house 查房屋
 | 
			
		
	
		
			
				
					|  |  |  |         //导出房屋
 | 
			
		
	
		
			
				
					|  |  |  |         PageData<IcHouseListResultDTO> icHouseExcels = getHouseList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         List<IcHouseListResultDTO> list = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         do { | 
			
		
	
		
			
				
					|  |  |  |             PageData<IcHouseListResultDTO> icHouseExcels = getHouseList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |             if (CollectionUtils.isEmpty(icHouseExcels.getList())){ | 
			
		
	
		
			
				
					|  |  |  |                 break; | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             list.addAll(icHouseExcels.getList()); | 
			
		
	
		
			
				
					|  |  |  |         }while (list.size() == formDTO.getPageSize()); | 
			
		
	
		
			
				
					|  |  |  |         TemplateExportParams templatePath = new TemplateExportParams("excel/house_export.xlsx"); | 
			
		
	
		
			
				
					|  |  |  |         Map<String,Object> map = new HashMap<>(); | 
			
		
	
		
			
				
					|  |  |  |         map.put("maplist",icHouseExcels.getList()); | 
			
		
	
		
			
				
					|  |  |  |         map.put("maplist", list); | 
			
		
	
		
			
				
					|  |  |  |         ExcelPoiUtils.exportExcel(templatePath ,map,"房屋信息录入表",response); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -474,14 +477,15 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { | 
			
		
	
		
			
				
					|  |  |  |             icBuildingService.update(icBuildingDTO); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |     Cache<String,Integer> exportNumCacheMap = CacheBuilder.newBuilder().build(); | 
			
		
	
		
			
				
					|  |  |  |     Cache<String,List<HouseIcResiUserResultDTO.HouseMemberResultDTO>> memberMap = CacheBuilder.newBuilder().expireAfterAccess(1, TimeUnit.SECONDS).build(); | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public PageData<HouseMemberResultDTO> getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO) { | 
			
		
	
		
			
				
					|  |  |  |     public PageData<HouseMemberResultDTO> getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO, Cache<String, Boolean> haveSearchCache) { | 
			
		
	
		
			
				
					|  |  |  |         RentTenantDataFormDTO resiParam = new RentTenantDataFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |         resiParam.setCustomerId(tokenDto.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  |         resiParam.setAgencyId(formDTO.getAgencyId()); | 
			
		
	
		
			
				
					|  |  |  |         resiParam.setGridId(formDTO.getGridId()); | 
			
		
	
		
			
				
					|  |  |  |         resiParam.setPageSize(NumConstant.ONE_THOUSAND); | 
			
		
	
		
			
				
					|  |  |  |         resiParam.setIsPage(false); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //查询级别 默认按照小区去查
 | 
			
		
	
		
			
				
					|  |  |  |         int searchLevel = 0; | 
			
		
	
	
		
			
				
					|  |  | @ -502,8 +506,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { | 
			
		
	
		
			
				
					|  |  |  |         PageData<HouseMemberResultDTO> result = new PageData<>(resultList,houseData.getList().size()); | 
			
		
	
		
			
				
					|  |  |  |         int finalSearchLevel = searchLevel; | 
			
		
	
		
			
				
					|  |  |  |         AtomicInteger num = new AtomicInteger((formDTO.getPageNo()-1) * formDTO.getPageSize()); | 
			
		
	
		
			
				
					|  |  |  |         Cache<String,List<HouseIcResiUserResultDTO.HouseMemberResultDTO>> memberMap = CacheBuilder.newBuilder().expireAfterAccess(1, TimeUnit.SECONDS).build(); | 
			
		
	
		
			
				
					|  |  |  |         resultDTOS.parallelStream().forEach(o ->{ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         resultDTOS.stream().forEach(o ->{ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             resiParam.setNeighborHoodId(o.getNeighborHoodId()); | 
			
		
	
		
			
				
					|  |  |  |             if (finalSearchLevel == 1){ | 
			
		
	
		
			
				
					|  |  |  |                 resiParam.setBuildingId(o.getBuildingId()); | 
			
		
	
	
		
			
				
					|  |  | @ -511,12 +516,19 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { | 
			
		
	
		
			
				
					|  |  |  |             if (finalSearchLevel == 2){ | 
			
		
	
		
			
				
					|  |  |  |                 resiParam.setHouseId(o.getHouseId()); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             getHouseMembers(resiParam, memberMap); | 
			
		
	
		
			
				
					|  |  |  |             this.getHouseMembers(resiParam, memberMap,haveSearchCache); | 
			
		
	
		
			
				
					|  |  |  |             List<HouseIcResiUserResultDTO.HouseMemberResultDTO> members = memberMap.getIfPresent(o.getHouseId()); | 
			
		
	
		
			
				
					|  |  |  |             if (members == null){ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             int n = num.incrementAndGet(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             //没有住户 则直接写房屋
 | 
			
		
	
		
			
				
					|  |  |  |             if (CollectionUtils.isEmpty(members)){ | 
			
		
	
		
			
				
					|  |  |  |                 HouseMemberResultDTO resultDTO = ConvertUtils.sourceToTarget(o, HouseMemberResultDTO.class); | 
			
		
	
		
			
				
					|  |  |  |                 resultDTO.setNum(n); | 
			
		
	
		
			
				
					|  |  |  |                 resultList.add(resultDTO); | 
			
		
	
		
			
				
					|  |  |  |                 return; | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             int n = num.incrementAndGet(); | 
			
		
	
		
			
				
					|  |  |  |             //有住户 房屋信息是重复的
 | 
			
		
	
		
			
				
					|  |  |  |             members.forEach(m->{ | 
			
		
	
		
			
				
					|  |  |  |                 HouseMemberResultDTO resultDTO = ConvertUtils.sourceToTarget(m, HouseMemberResultDTO.class); | 
			
		
	
		
			
				
					|  |  |  |                 resultDTO.setNum(n); | 
			
		
	
	
		
			
				
					|  |  | @ -538,20 +550,36 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { | 
			
		
	
		
			
				
					|  |  |  |         return result; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     public void getHouseMembers(RentTenantDataFormDTO resiParam, Cache<String, List<HouseIcResiUserResultDTO.HouseMemberResultDTO>> memberMap) { | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * desc:分情况获取 房屋内居民 | 
			
		
	
		
			
				
					|  |  |  |      * @param resiParam | 
			
		
	
		
			
				
					|  |  |  |      * @param memberMap | 
			
		
	
		
			
				
					|  |  |  |      * @param haveSearchCache | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     public void getHouseMembers(RentTenantDataFormDTO resiParam, Cache<String, List<HouseIcResiUserResultDTO.HouseMemberResultDTO>> memberMap, Cache<String, Boolean> haveSearchCache) { | 
			
		
	
		
			
				
					|  |  |  |         String searchKey = resiParam.getHouseId()+resiParam.getBuildingId()+resiParam.getNeighborHoodId()+resiParam.getAgencyId(); | 
			
		
	
		
			
				
					|  |  |  |         Boolean haveSearch = haveSearchCache.getIfPresent(searchKey); | 
			
		
	
		
			
				
					|  |  |  |         if (haveSearch!= null && haveSearch){ | 
			
		
	
		
			
				
					|  |  |  |             return; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         haveSearchCache.put(searchKey,true); | 
			
		
	
		
			
				
					|  |  |  |         List<HouseIcResiUserResultDTO> memberListTemp = null; | 
			
		
	
		
			
				
					|  |  |  |         resiParam.setPageNo(NumConstant.ONE); | 
			
		
	
		
			
				
					|  |  |  |         do { | 
			
		
	
		
			
				
					|  |  |  |             Result<List<HouseIcResiUserResultDTO>> memberResult = epmetUserOpenFeignClient.getHouseMemberList(resiParam); | 
			
		
	
		
			
				
					|  |  |  |             log.debug("=======查询居民:"+ resiParam.getPageNo()+",size:"+resiParam.getPageSize()+",result:"+memberResult.getData().size()); | 
			
		
	
		
			
				
					|  |  |  |             if (!memberResult.success()) { | 
			
		
	
		
			
				
					|  |  |  |                 throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "调用user服务失败"); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             memberListTemp = memberResult.getData(); | 
			
		
	
		
			
				
					|  |  |  |             log.debug("=======查询居民结果:"+ JSON.toJSONString(memberListTemp)); | 
			
		
	
		
			
				
					|  |  |  |             if (CollectionUtils.isEmpty(memberListTemp)) { | 
			
		
	
		
			
				
					|  |  |  |                 continue; | 
			
		
	
		
			
				
					|  |  |  |                 break; | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             resiParam.setPageSize(resiParam.getPageSize()+1); | 
			
		
	
		
			
				
					|  |  |  |             resiParam.setPageNo(resiParam.getPageNo()+1); | 
			
		
	
		
			
				
					|  |  |  |             memberListTemp.parallelStream().forEach(h -> memberMap.put(h.getHomeId(), h.getHouseMemberList())); | 
			
		
	
		
			
				
					|  |  |  |         } while (memberListTemp != null && memberListTemp.size() == resiParam.getPageSize()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         } while (memberListTemp.size() == resiParam.getPageSize()); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
	
		
			
				
					|  |  | 
 |