diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java similarity index 96% rename from epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java rename to epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java index 6f9d3aba4e..c9d9c6d76b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java @@ -11,7 +11,7 @@ import java.io.Serializable; * @DESC */ @Data -public class ImportHouseGeneralDTO implements Serializable { +public class ImportGeneralDTO implements Serializable { private static final long serialVersionUID = -345610717773879687L; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 4e3c885065..c5ed882ca1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -19,7 +19,7 @@ package com.epmet.dao; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.ImportHouseGeneralDTO; +import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.result.BaseInfoFamilyBuildingResultDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.entity.CustomerAgencyEntity; @@ -112,7 +112,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 9:48 上午 */ - List selectAllGridByOrgId(@Param("orgId")String orgId); + List selectAllGridByOrgId(@Param("orgId")String orgId); /** * @Description 查询网格下所有的小区 @@ -120,7 +120,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 10:21 上午 */ - List selectAllNeighborHoodByGridIds(@Param("orgIds")List orgId); + List selectAllNeighborHoodByGridIds(@Param("orgIds")List orgId); /** * @Description 根据小区ID查询楼栋 @@ -128,7 +128,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 1:25 下午 */ - List selectAllBuildingByNeighborHoodId(@Param("neighborHoodId")String neighborHoodId); + List selectAllBuildingByNeighborHoodId(@Param("neighborHoodId")String neighborHoodId); /** * @Description 根据楼栋ID查询楼栋单元 @@ -136,7 +136,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 1:58 下午 */ - List selectAllBuildingUnitByBuildingId(@Param("building")String building); + List selectAllBuildingUnitByBuildingId(@Param("building")String building); /** * @Description 根据ID查询小区 @@ -144,7 +144,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 3:16 下午 */ - ImportHouseGeneralDTO selectNeighborHoodById(@Param("id")String id); + ImportGeneralDTO selectNeighborHoodById(@Param("id")String id); /** * @Description 根据ID查询楼栋 @@ -152,7 +152,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 4:26 下午 */ - ImportHouseGeneralDTO selectBuildingById(@Param("id")String id); + ImportGeneralDTO selectBuildingById(@Param("id")String id); /** * @Description 查询已存在的房屋 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 new file mode 100644 index 0000000000..0866793cf6 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -0,0 +1,56 @@ +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.dto.ImportGeneralDTO; +import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.redis.IcHouseRedis; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Author zxc + * @DateTime 2022/2/15 10:06 上午 + * @DESC + */ +public class ImportBuildingInfoListener extends AnalysisEventListener { + + List nums = new ArrayList<>(); + Integer num = NumConstant.ZERO; + + List needDisposeList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); + + String gridName = null; + String agencyName = null; + + Map gridInfos = null; + List gridInfoDTOs = null; + Map neighborHoodInfos = null; + List neighborHoodInfoDTOs = null; + ImportGeneralDTO neighborHoodGeneralDTO = null; + Map buildingInfos = null; + List buildingInfoDTOs = null; + ImportGeneralDTO buildingGeneralDTO = null; + + private ImportInfoFormDTO formDTO; + private IcHouseRedis icHouseRedis; + + public ImportBuildingInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis){ + this.formDTO = formDTO; + this.icHouseRedis = icHouseRedis; + } + + @Override + public void invoke(BuildingInfoModel data, AnalysisContext context) { + + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index baa2900486..39d8820783 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -2,26 +2,22 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; -import com.alibaba.fastjson.JSON; 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.CustomerAgencyConstant; import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.IcBuildingDao; -import com.epmet.dto.ImportHouseGeneralDTO; +import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.result.ImportResultDTO; import com.epmet.entity.IcHouseEntity; import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HouseRentFlagEnums; import com.epmet.enums.HouseTypeEnums; -import com.epmet.excel.IcNeighborHoodExcel; import com.epmet.redis.IcHouseRedis; -import com.epmet.service.HouseService; import com.epmet.service.IcHouseService; import com.epmet.service.IcNeighborHoodService; import org.apache.commons.lang3.StringUtils; @@ -41,22 +37,22 @@ public class ImportHouseInfoListener extends AnalysisEventListener nums = new ArrayList<>(); Integer num = NumConstant.ZERO; - List needDisposeList = new ArrayList<>(); - List needInsertList = new ArrayList<>(); + List needDisposeList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); String gridName = null; String agencyName = null; Map gridInfos = null; - List gridInfoDTOs = null; + List gridInfoDTOs = null; Map neighborHoodInfos = null; - List neighborHoodInfoDTOs = null; - ImportHouseGeneralDTO neighborHoodGeneralDTO = null; + List neighborHoodInfoDTOs = null; + ImportGeneralDTO neighborHoodGeneralDTO = null; Map buildingInfos = null; - List buildingInfoDTOs = null; - ImportHouseGeneralDTO buildingGeneralDTO = null; + List buildingInfoDTOs = null; + ImportGeneralDTO buildingGeneralDTO = null; Map buildingUnitInfos = null; - List buildingUnitInfoDTOs = null; + List buildingUnitInfoDTOs = null; private ImportInfoFormDTO formDTO; private IcBuildingDao icBuildingDao; @@ -78,7 +74,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); + List importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); needInsertList.addAll(importInfo); Map collect = needInsertList.stream().collect(Collectors.groupingBy(n -> n.getBuildingUnitId() + "_" + n.getDoorName(), Collectors.counting())); collect.forEach((k,v) -> { if (Integer.valueOf(v.toString()).compareTo(1) > 0){ - for (ImportHouseGeneralDTO r : needInsertList) { + for (ImportGeneralDTO r : needInsertList) { if (k.equals(r.getBuildingUnitId()+"_"+r.getDoorName())){ // 集合里重复的 r.setExistStatus(true); @@ -119,7 +115,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener ids = needInsertList.stream().map(m -> m.getBuildingUnitId() + "_" + m.getDoorName()).distinct().collect(Collectors.toList()); List existHouses = icBuildingDao.selectExistHouse(ids); existHouses.forEach(e -> { - for (ImportHouseGeneralDTO n : needInsertList) { + for (ImportGeneralDTO n : needInsertList) { if ((n.getBuildingUnitId()+"_"+n.getDoorName()).equals(e)){ // 库里存在的 n.setExistStatus(true); @@ -128,9 +124,9 @@ public class ImportHouseInfoListener extends AnalysisEventListener> groupByExistStatus = needInsertList.stream().collect(Collectors.groupingBy(ImportHouseGeneralDTO::getExistStatus)); - List importHouseGeneralDTOS = groupByExistStatus.get(false); - houseInsert(importHouseGeneralDTOS); + Map> groupByExistStatus = needInsertList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus)); + List importGeneralDTOS = groupByExistStatus.get(false); + houseInsert(importGeneralDTOS); // 清除 needDisposeList = new ArrayList<>(); needInsertList = new ArrayList<>(); @@ -154,7 +150,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener gridIds = new ArrayList<>(); if (orgType.equals(CustomerGridConstant.GRID)){ @@ -412,7 +408,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener houses){ + public void houseInsert(List houses){ if (!CollectionUtils.isEmpty(houses)){ icHouseService.insertBatch(ConvertUtils.sourceToTarget(houses, IcHouseEntity.class)); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java index 6407a7a948..dd02bcfad5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java @@ -18,24 +18,17 @@ package com.epmet.redis; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcHouseDao; -import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.ImportResultDTO; -import com.epmet.model.HouseInfoModel; -import com.epmet.model.HouseInfoModelDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Map; /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index afadcdd449..f990efb864 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -22,7 +22,7 @@ import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcNeighborHoodDTO; -import com.epmet.dto.ImportHouseGeneralDTO; +import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.entity.IcNeighborHoodEntity; import org.springframework.web.multipart.MultipartFile; @@ -132,9 +132,9 @@ public interface IcNeighborHoodService extends BaseService * * @Param formDTO * @Param list - * @Return {@link List< ImportHouseGeneralDTO>} + * @Return {@link List< ImportGeneralDTO >} * @Author zhaoqifeng * @Date 2022/2/14 9:40 */ - List getImportInfo(ImportInfoFormDTO formDTO, List list); + List getImportInfo(ImportInfoFormDTO formDTO, List list); } \ 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 34b6723f34..ada9613c63 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; @@ -43,6 +50,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; @@ -75,6 +83,8 @@ public class BuildingServiceImpl implements BuildingService { private CustomerStaffAgencyDao customerStaffAgencyDao; @Resource private IcBuildingUnitDao icBuildingUnitDao; + @Autowired + private IcHouseRedis icHouseRedis; @Override @Transactional(rollbackFor = Exception.class) @@ -384,7 +394,38 @@ public class BuildingServiceImpl implements BuildingService { */ @Override public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException { - return null; + ExcelReader excelReader = null; + try { + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + return new Result().error("读取文件失败"); + } + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) + .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis)) + .build(); + excelReader.read(readSheet); + } finally { + if (excelReader != null) { + excelReader.finish(); + } + } + ImportResultDTO dto = icHouseRedis.getImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == dto){ + return new Result<>(); + } + List nums = dto.getNums(); + Integer num = dto.getNum(); + String s = "共%s条数据,导入成功%s条。"; + if (nums.size() > NumConstant.ZERO){ + Collections.sort(nums); + s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; + return new Result<>().error(9999,String.format(s,num,num - nums.size())); + } + return new Result<>().ok(String.format(s,num,num)); } private List searchAllBuilding(ListIcNeighborHoodFormDTO formDTO) { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index c1d2cc3e9e..fdfe602d19 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -413,12 +413,12 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl} + * @Return {@link List< ImportGeneralDTO >} * @Author zhaoqifeng * @Date 2022/2/14 9:40 */ @Override - public List getImportInfo(ImportInfoFormDTO formDTO, List list) { + public List getImportInfo(ImportInfoFormDTO formDTO, List list) { list.forEach(item -> { if (StringUtils.isEmpty(item.getNeighborHoodId())) { //1.获取小区ID,判断小区是否存在,不存在则添加小区,存在则直接获取小区ID @@ -457,7 +457,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcNeighborHoodEntity::getGridId, info.getGridId()); @@ -485,7 +485,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl - SELECT ID AS gridId,GRID_NAME FROM customer_grid WHERE DEL_FLAG = '0' AND PID = #{orgId} - SELECT ID AS neighborHoodId, NEIGHBOR_HOOD_NAME, @@ -262,7 +262,7 @@ - SELECT ID AS buildingId, NEIGHBOR_HOOD_ID, @@ -273,7 +273,7 @@ - SELECT ID AS buildingUnitId, UNIT_NUM AS buildingUnit, @@ -284,7 +284,7 @@ - SELECT AGENCY_ID, GRID_ID, @@ -296,7 +296,7 @@ - SELECT b.ID AS buildingId, b.BUILDING_NAME,