Browse Source

小区导入

dev
zxc 4 years ago
parent
commit
dde9ff2ba8
  1. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
  2. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java
  3. 96
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java
  4. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java
  5. 20
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java

@ -86,6 +86,9 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
}
public void finalDispose(){
if (CollectionUtils.isEmpty(needDisposeList)){
return;
}
Map<String, Long> groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy(
n -> n.getAgencyName() + "_" + n.getGridName() + "_" +
n.getNeighborHoodName() + "_" + n.getBuildingName(), Collectors.counting()));
@ -206,7 +209,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener<BuildingIn
throw new EpmetException("查询网格失败...");
}
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (!dto.getGridName().equals(gridName) || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num);
}else {
//

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java

@ -97,6 +97,9 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
}
public void finalDispose(){
if (CollectionUtils.isEmpty(needDisposeList)){
return;
}
List<ImportGeneralDTO> importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList);
needInsertList.addAll(importInfo);
Map<String, Long> collect = needInsertList.stream().collect(Collectors.groupingBy(n -> n.getBuildingUnitId() + "_" + n.getDoorName(), Collectors.counting()));
@ -243,7 +246,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener<HouseInfoMode
throw new EpmetException("查询网格失败...");
}
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (!dto.getGridName().equals(gridName) || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num);
}else {
//

96
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java

@ -10,11 +10,17 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.NeighborHoodAndManagementDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.entity.IcNeighborHoodPropertyEntity;
import com.epmet.entity.IcPropertyManagementEntity;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcNeighborHoodService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
@ -48,12 +54,14 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
private IcHouseRedis icHouseRedis;
private IcBuildingDao icBuildingDao;
private IcNeighborHoodService neighborHoodService;
private IcPropertyManagementDao propertyManagementDao;
public ImportNeighborHoodInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService){
public ImportNeighborHoodInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService, IcPropertyManagementDao propertyManagementDao){
this.formDTO = formDTO;
this.icHouseRedis = icHouseRedis;
this.icBuildingDao = icBuildingDao;
this.neighborHoodService = neighborHoodService;
this.propertyManagementDao = propertyManagementDao;
}
@ -71,6 +79,80 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
}else if (formDTO.getOrgType().equals(CustomerGridConstant.AGENCY)){
disposeAgencyNeighborHood(dto);
}
// 数据筛选完毕,当num每满100条,处理一次
if (num%NumConstant.ONE_HUNDRED == NumConstant.ZERO){
finalDispose();
}
}
public void finalDispose(){
if (CollectionUtils.isEmpty(needDisposeList)){
return;
}
Map<String, Long> groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy(
n -> n.getAgencyName() + "_" + n.getGridName() + "_" + n.getNeighborHoodName(), Collectors.counting()));
groupByAllName.forEach((k,v) -> {
if (Integer.valueOf(v.toString()).compareTo(1) > 0){
for (ImportGeneralDTO r : needDisposeList) {
if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + r.getNeighborHoodName())){
// 集合里重复的
r.setExistStatus(true);
nums.add(r.getNum());
}
}
}
});
Map<Boolean, List<ImportGeneralDTO>> groupByStatus = needDisposeList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus));
List<ImportGeneralDTO> importGeneralDTOS = groupByStatus.get(false);
if (!CollectionUtils.isEmpty(importGeneralDTOS)){
List<ImportGeneralDTO> importInfo = neighborHoodService.getImportInfo(formDTO, importGeneralDTOS);
Map<Boolean, List<ImportGeneralDTO>> groupByBuildingExistStatus = importInfo.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getNeighborHoodExistStatus));
List<ImportGeneralDTO> existList = groupByBuildingExistStatus.get(true);
if (!CollectionUtils.isEmpty(existList)){
existList.forEach(e -> {
nums.add(e.getNum());
});
}
List<ImportGeneralDTO> notExistList = groupByBuildingExistStatus.get(false);
if (!CollectionUtils.isEmpty(notExistList)){
// 物业表插入
List<String> propertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList());
List<String> disposePropertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList());
List<String> existPropertyNames = propertyManagementDao.selectExistNames(propertyNames);
disposePropertyNames.removeAll(existPropertyNames);
List<IcPropertyManagementEntity> propertyManagementEntities = new ArrayList<>();
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(disposePropertyNames)){
disposePropertyNames.forEach(name -> {
IcPropertyManagementEntity e = new IcPropertyManagementEntity();
e.setName(name);
propertyManagementEntities.add(e);
});
}
neighborHoodService.insertPropertyManagement(propertyManagementEntities);
// 小区物业关系表插入
List<NeighborHoodAndManagementDTO> neighborHoodAndManagementDTOS = ConvertUtils.sourceToTarget(notExistList, NeighborHoodAndManagementDTO.class);
List<IcPropertyManagementEntity> propertyManagementInfos = propertyManagementDao.selectIdByName(propertyNames);
neighborHoodAndManagementDTOS.forEach(n -> propertyManagementInfos.stream().filter(p -> p.getName().equals(n.getPropertyName()))
.forEach(p -> {
n.setPropertyId(p.getId());
n.setNeighborHoodId(n.getNeighborHoodId());
}));
List<IcNeighborHoodPropertyEntity> icNeighborHoodPropertyEntities = ConvertUtils.sourceToTarget(neighborHoodAndManagementDTOS, IcNeighborHoodPropertyEntity.class);
neighborHoodService.neighborHoodPropertyInsert(icNeighborHoodPropertyEntities);
}
}
// 清除
needDisposeList = new ArrayList<>();
needInsertList = new ArrayList<>();
gridName = null;
agencyName = null;
gridInfos = null;
gridInfoDTOs = null;
neighborHoodInfos = null;
neighborHoodInfoDTOs = null;
neighborHoodGeneralDTO = null;
}
/**
@ -86,7 +168,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
throw new EpmetException("查询网格失败...");
}
//排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除
if (!dto.getGridName().equals(gridName) || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
if (dto.getGridName().compareTo(gridName) != 0 || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){
nums.add(num);
}else {
//
@ -186,6 +268,14 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener<Neighb
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
finalDispose();
// 删除缓存
icHouseRedis.delTemporaryCacheGrids(formDTO.getCustomerId(), formDTO.getUserId());
icHouseRedis.delTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId());
icHouseRedis.delTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId());
icHouseRedis.delTemporaryCacheBuildingUnit(formDTO.getCustomerId(), formDTO.getUserId());
icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId());
// 放结果
icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num));
}
}

6
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java

@ -25,6 +25,8 @@ import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.entity.IcNeighborHoodEntity;
import com.epmet.entity.IcNeighborHoodPropertyEntity;
import com.epmet.entity.IcPropertyManagementEntity;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@ -137,4 +139,8 @@ public interface IcNeighborHoodService extends BaseService<IcNeighborHoodEntity>
* @Date 2022/2/14 9:40
*/
List<ImportGeneralDTO> getImportInfo(ImportInfoFormDTO formDTO, List<ImportGeneralDTO> list);
void insertPropertyManagement(List<IcPropertyManagementEntity> propertyManagementEntities);
void neighborHoodPropertyInsert(List<IcNeighborHoodPropertyEntity> entities);
}

20
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

@ -211,7 +211,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
*/
@Override
public Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException {
ExcelImportResult<IcNeighborHoodExcel> importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcNeighborHoodExcel.class);
/*ExcelImportResult<IcNeighborHoodExcel> importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcNeighborHoodExcel.class);
List<IcNeighborHoodExcel> failList = importResult.getFailList();
//存放错误数据行号
List<Integer> numList = new ArrayList<>();
@ -223,7 +223,8 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
}
}
List<IcNeighborHoodExcel> result =importResult.getList();
return disposeImportNeighborhood(formDTO,result);
return disposeImportNeighborhood(formDTO,result);*/
return importNeighbor(formDTO,file);
}
/**
@ -398,7 +399,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class)
.registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this))
.registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao))
.build();
excelReader.read(readSheet);
} finally {
@ -440,12 +441,25 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
});
}
@Override
@Transactional(rollbackFor = Exception.class)
public void insertPropertyManagement(List<IcPropertyManagementEntity> propertyManagementEntities){
if (CollectionUtils.isEmpty(propertyManagementEntities)){
return;
}
List<List<IcPropertyManagementEntity>> partition1 = ListUtils.partition(propertyManagementEntities, NumConstant.ONE_HUNDRED);
partition1.forEach(p -> {
propertyManagementService.insertBatch(p);
});
}
/**
* @Description 小区物业关系表插入
* @param entities
* @author zxc
* @date 2022/2/13 10:09 上午
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void neighborHoodPropertyInsert(List<IcNeighborHoodPropertyEntity> entities){
List<List<IcNeighborHoodPropertyEntity>> partition = ListUtils.partition(entities, NumConstant.ONE_HUNDRED);

Loading…
Cancel
Save