From 08dade0fb59b05445dcf2532221301992b68c3f1 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 10:29:42 +0800 Subject: [PATCH] =?UTF-8?q?dto=E6=94=B9=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java # epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java --- .../com/epmet/model/BuildingInfoModel.java | 38 +++ .../com/epmet/model/HouseInfoModelDTO.java | 41 --- .../model/ImportBuildingInfoListener.java | 266 +----------------- .../service/impl/BuildingServiceImpl.java | 12 +- 4 files changed, 51 insertions(+), 306 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java delete mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java new file mode 100644 index 0000000000..e76c391324 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java @@ -0,0 +1,38 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * @Author zxc + * @DateTime 2022/2/15 10:07 上午 + * @DESC + */ +@Data +public class BuildingInfoModel { + + @ExcelProperty(value = "所属组织") + private String agencyName; + + @ExcelProperty(value = "所属网格") + private String gridName; + + @ExcelProperty(value = "小区名称") + private String neighborHoodName; + + @ExcelProperty(value = "楼栋名称") + private String buildingName; + + @ExcelProperty(value = "楼栋类型") + private String type; + + @ExcelProperty(value = "单元数") + private Integer totalUnitNum; + + @ExcelProperty(value = "层数") + private Integer totalFloorNum; + + @ExcelProperty(value = "户数") + private Integer totalHouseNum; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java deleted file mode 100644 index 2193e9cf2d..0000000000 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.epmet.model; - -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -/** - * @Author zxc - * @DateTime 2022/2/13 1:26 下午 - * @DESC - */ -@Data -public class HouseInfoModelDTO { - - private String agencyName; - - private String gridName; - - private String neighborHoodName; - - private String buildingName; - - private Integer buildingUnit; - - private String doorName; - - private String houseType; - - private String purpose; - - private String rentFlag; - - private String ownerName; - - private String ownerPhone; - - private String ownerIdCard; - - private Integer num; - -} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 69f53b8f91..0866793cf6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -1,30 +1,15 @@ - package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.exception.EpmetException; -import com.epmet.commons.tools.redis.common.CustomerOrgRedis; -import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; -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.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; -import com.epmet.dto.result.ImportResultDTO; -import com.epmet.enums.BuildingTypeEnums; 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; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @Author zxc @@ -53,264 +38,19 @@ public class ImportBuildingInfoListener extends AnalysisEventListener groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy( - n -> n.getAgencyName() + "_" + n.getGridName() + "_" + - n.getNeighborHoodName() + "_" + n.getBuildingName(), 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.getBuildingName())){ - // 集合里重复的 - r.setExistStatus(true); - nums.add(r.getNum()); - } - } - } - }); - Map> groupByStatus = needDisposeList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus)); - List importGeneralDTOS = groupByStatus.get(false); - if (!CollectionUtils.isEmpty(importGeneralDTOS)){ - List importInfo = neighborHoodService.getImportInfo(formDTO, importGeneralDTOS); - Map> groupByBuildingExistStatus = importInfo.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getBuildingExistStatus)); - List existList = groupByBuildingExistStatus.get(true); - if (!CollectionUtils.isEmpty(existList)){ - existList.forEach(e -> { - nums.add(e.getNum()); - }); - } - } - // 清除 - needDisposeList = new ArrayList<>(); - needInsertList = new ArrayList<>(); - gridName = null; - agencyName = null; - gridInfos = null; - gridInfoDTOs = null; - neighborHoodInfos = null; - neighborHoodInfoDTOs = null; - neighborHoodGeneralDTO = null; - buildingInfos = null; - buildingInfoDTOs = null; - buildingGeneralDTO = null; - } - - public void fillData(ImportGeneralDTO dto, String orgType){ - if (orgType.equals(CustomerGridConstant.GRID) || orgType.equals(CustomerGridConstant.AGENCY)){ - List gridIds = new ArrayList<>(); - if (orgType.equals(CustomerGridConstant.GRID)){ - gridIds = Arrays.asList(formDTO.getOrgId()); - }else if (orgType.equals(CustomerGridConstant.AGENCY)){ - gridIds = gridInfoDTOs.stream().map(m -> m.getGridId()).collect(Collectors.toList()); - } - neighborHoodInfos = null == neighborHoodInfos ? getNeighborHoodInfos(gridIds) : neighborHoodInfos; - Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), formDTO.getOrgId() + "_" + dto.getNeighborHoodName()); - // 赋值小区ID - dto.setNeighborHoodId(null == cacheNeighBorHood ? "" : cacheNeighBorHood.toString()); - } - if (StringUtils.isNotBlank(dto.getNeighborHoodId())){ - //小区ID不为空赋值楼栋ID - buildingInfos = null == buildingInfos ? getBuildingInfos(dto.getNeighborHoodId()) : buildingInfos; - Object cacheBuilding = icHouseRedis.getTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId(), dto.getNeighborHoodId() + "_" + dto.getBuildingName()); - dto.setBuildingId(null == cacheBuilding ? "" : cacheBuilding.toString()); - if (StringUtils.isNotBlank(dto.getBuildingId())){ - // 说明数据库已存在此楼栋,不需添加 - nums.add(num); - }else { - needDisposeList.add(dto); - } - }else { - needDisposeList.add(dto); - } - } - - /** - * @Description 左侧树点击小区时调用 - * @param dto - * @author zxc - * @date 2022/2/15 10:41 上午 - */ - public void disposeNeighborHoodBuilding(ImportGeneralDTO dto){ - neighborHoodGeneralDTO = null == neighborHoodGeneralDTO ? icBuildingDao.selectNeighborHoodById(formDTO.getOrgId()) : neighborHoodGeneralDTO; - //排除不是本小区的 - if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){ - nums.add(num); - }else { - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId()); - if (null == gridInfo){ - throw new EpmetException("查询网格失败..."); - } - // 1.排除网格名不一样但小区名一样 2.排除组织不一样,网格一样,小区一样 - if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) || - (!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){ - nums.add(num); - return; - } - dto.setNeighborHoodId(formDTO.getOrgId()); - dto.setGridId(neighborHoodGeneralDTO.getGridId()); - dto.setAgencyId(neighborHoodGeneralDTO.getAgencyId()); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); - if (null == agencyInfo){ - throw new EpmetException("查询组织信息失败..."); - } - dto.setPid(agencyInfo.getPid()); - dto.setPids(agencyInfo.getPids()); - // 填充各种ID - fillData(dto,CustomerGridConstant.NEIGHBORHOOD); - } - } - - /** - * @Description 左侧树点击网格时调用 - * @param dto - * @author zxc - * @date 2022/2/15 10:41 上午 - */ - public void disposeGridBuilding(ImportGeneralDTO dto){ - gridName = null == gridName ? icBuildingDao.selectGridNameById(formDTO.getOrgId()) : gridName; - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); - if (null == gridInfo){ - throw new EpmetException("查询网格失败..."); - } - //排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除 - if (!dto.getGridName().equals(gridName) || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){ - nums.add(num); - }else { - // - dto.setGridId(formDTO.getOrgId()); - dto.setAgencyId(gridInfo.getPid()); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); - if (null == agencyInfo){ - throw new EpmetException("查询组织信息失败..."); - } - dto.setPid(agencyInfo.getPid()); - dto.setPids(agencyInfo.getPids()); - // 填充各种ID - fillData(dto, CustomerGridConstant.GRID); - } - } - - /** - * @Description 左侧树点击组织时调用 - * @param dto - * @author zxc - * @date 2022/2/15 10:41 上午 - */ - public void disposeAgencyBuilding(ImportGeneralDTO dto){ - agencyName = null == agencyName ? icBuildingDao.selectAgencyNameById(formDTO.getOrgId()) : agencyName; - //排除不是本组织的 - if (!dto.getAgencyName().equals(agencyName)){ - nums.add(num); - }else { - // 根据组织查询出所有网格,甩出不是本组织下的网格 - gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; - if (null == gridInfos){ - // 组织下确实不存在网格 - nums.add(num); - return; - } - // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 - Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); - if (null == cacheGridName){ - nums.add(num); - return; - } - dto.setGridId(cacheGridName.toString()); - dto.setAgencyId(formDTO.getOrgId()); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); - if (null == agencyInfo){ - throw new EpmetException("查询组织信息失败..."); - } - dto.setPid(agencyInfo.getPid()); - dto.setPids(agencyInfo.getPids()); - // 填充各种ID - fillData(dto,CustomerGridConstant.AGENCY); - } - } - - /** - * @Description 获取网格信息 - * @param orgId - * @author zxc - * @date 2022/2/14 9:57 上午 - */ - public Map getGridInfos(String orgId){ - gridInfoDTOs = icBuildingDao.selectAllGridByOrgId(orgId); - gridInfos = gridInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridName(), n -> n.getGridId())); - icHouseRedis.setTemporaryCacheGrid(formDTO.getCustomerId(), gridInfos, formDTO.getUserId()); - return gridInfos; - } - - /** - * @Description 获取网格下的小区 - * @param gridIds - * @author zxc - * @date 2022/2/14 10:16 上午 - */ - public Map getNeighborHoodInfos(List gridIds){ - neighborHoodInfoDTOs = icBuildingDao.selectAllNeighborHoodByGridIds(gridIds); - neighborHoodInfos = neighborHoodInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridId() + "_" + n.getNeighborHoodName(), n -> n.getNeighborHoodId())); - icHouseRedis.setTemporaryCacheNeighBorHood(formDTO.getCustomerId(), neighborHoodInfos, formDTO.getUserId()); - return neighborHoodInfos; - } - - /** - * @Description 获取小区下的楼栋 - * @param neighborHoodId - * @author zxc - * @date 2022/2/14 1:32 下午 - */ - public Map getBuildingInfos(String neighborHoodId){ - buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(neighborHoodId); - buildingInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getNeighborHoodId() + "_" + n.getBuildingName(), n -> n.getBuildingId())); - icHouseRedis.setTemporaryCacheBuilding(formDTO.getCustomerId(), buildingInfos, formDTO.getUserId()); - return buildingInfos; } @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)); + } -} \ No newline at end of file +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 9996cc9db7..d81c28ad08 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -1,6 +1,9 @@ package com.epmet.service.impl; 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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -24,9 +27,13 @@ import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportResultDTO; import com.epmet.entity.*; import com.epmet.enums.BuildingTypeEnums; import com.epmet.excel.IcBuildingExcel; +import com.epmet.model.HouseInfoModel; +import com.epmet.model.ImportBuildingInfoListener; +import com.epmet.redis.IcHouseRedis; import com.epmet.service.BuildingService; import com.epmet.service.IcBuildingService; import com.epmet.service.IcBuildingUnitService; @@ -48,6 +55,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -403,8 +411,8 @@ public class BuildingServiceImpl implements BuildingService { } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener - ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) - .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService)) + ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) + .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis)) .build(); excelReader.read(readSheet); } finally {