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