|  |  | @ -1,38 +1,67 @@ | 
			
		
	
		
			
				
					|  |  |  | package com.epmet.service.impl; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import com.alibaba.excel.EasyExcel; | 
			
		
	
		
			
				
					|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
			
		
	
		
			
				
					|  |  |  | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 
			
		
	
		
			
				
					|  |  |  | import com.baomidou.mybatisplus.core.toolkit.IdWorker; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.NumConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.StrConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.dto.result.OptionResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.enums.OrgLevelEnum; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.enums.OrgTypeEnum; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.exception.EpmetErrorCode; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.exception.EpmetException; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.exception.ExceptionUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.page.PageData; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.redis.RedisUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.redis.common.CustomerOrgRedis; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.redis.common.CustomerStaffRedis; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.ConvertUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.EpmetRequestHolder; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.PidUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.SpringContextUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.constants.ImportTaskConstants; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dao.CommunityBuildingManagerDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dao.IcBuildingDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.CustomerAgencyDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.CustomerGridDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.IcBuildingDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.ImportTaskCommonFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.NeighborHoodOptionFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.CommunityBuildingManagerDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.UploadImgResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.entity.CommunityBuildingManagerEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.CommunityBuildingManagerService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.CustomerGridService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.entity.IcBuildingEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.excel.handler.CommunityBuildingManagerImportListener; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.excel.yt.CommunityBuildingManagerImportExcelData; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.excel.yt.IcPropertyManagementImportExcelData; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.feign.EpmetCommonServiceOpenFeignClient; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.feign.OssFeignClient; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.utils.ImportTaskUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.github.pagehelper.PageHelper; | 
			
		
	
		
			
				
					|  |  |  | import com.github.pagehelper.PageInfo; | 
			
		
	
		
			
				
					|  |  |  | import lombok.extern.slf4j.Slf4j; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.collections4.MapUtils; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.fileupload.FileItem; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.fileupload.disk.DiskFileItemFactory; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.lang3.StringUtils; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.http.entity.ContentType; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.poi.util.IOUtils; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.scheduling.annotation.Async; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.util.CollectionUtils; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.web.multipart.commons.CommonsMultipartFile; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import java.io.IOException; | 
			
		
	
		
			
				
					|  |  |  | import java.io.OutputStream; | 
			
		
	
		
			
				
					|  |  |  | import java.nio.file.Files; | 
			
		
	
		
			
				
					|  |  |  | import java.nio.file.Path; | 
			
		
	
		
			
				
					|  |  |  | import java.util.Date; | 
			
		
	
		
			
				
					|  |  |  | import java.util.List; | 
			
		
	
		
			
				
					|  |  |  | import java.util.*; | 
			
		
	
		
			
				
					|  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  |  * 楼长单元长信息表(烟台) | 
			
		
	
	
		
			
				
					|  |  | @ -43,7 +72,17 @@ import java.util.List; | 
			
		
	
		
			
				
					|  |  |  | @Slf4j | 
			
		
	
		
			
				
					|  |  |  | @Service | 
			
		
	
		
			
				
					|  |  |  | public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<CommunityBuildingManagerDao, CommunityBuildingManagerEntity> implements CommunityBuildingManagerService { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private IcBuildingDao icBuildingDao; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private OssFeignClient ossFeignClient; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private CustomerGridService customerGridService; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private RedisUtils redisUtils; | 
			
		
	
		
			
				
					|  |  |  |      | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * 列表分页查询 | 
			
		
	
		
			
				
					|  |  |  |      * | 
			
		
	
	
		
			
				
					|  |  | @ -105,7 +144,7 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * 新增楼长/单元长 | 
			
		
	
		
			
				
					|  |  |  |      * todo: 同步到具体的楼栋表 | 
			
		
	
		
			
				
					|  |  |  |      * 同步到具体的楼栋表 | 
			
		
	
		
			
				
					|  |  |  |      * | 
			
		
	
		
			
				
					|  |  |  |      * @param addFormDto | 
			
		
	
		
			
				
					|  |  |  |      * @return | 
			
		
	
	
		
			
				
					|  |  | @ -119,6 +158,16 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi | 
			
		
	
		
			
				
					|  |  |  |         CustomerGridDTO gridDTO = SpringContextUtils.getBean(CustomerGridService.class).get(addFormDto.getGridId()); | 
			
		
	
		
			
				
					|  |  |  |         entity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(gridDTO.getId(), gridDTO.getPids())); | 
			
		
	
		
			
				
					|  |  |  |         insert(entity); | 
			
		
	
		
			
				
					|  |  |  |         // 同步更新至ic_building
 | 
			
		
	
		
			
				
					|  |  |  |         LambdaUpdateWrapper<IcBuildingEntity> buildingUpdate = new LambdaUpdateWrapper<>(); | 
			
		
	
		
			
				
					|  |  |  |         buildingUpdate.eq(IcBuildingEntity::getId, entity.getBuildingId()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderName, entity.getName()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderMobile, entity.getPhone()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderIdCard, entity.getIdCard()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderType, entity.getType()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getUpdatedTime, new Date()); | 
			
		
	
		
			
				
					|  |  |  |         icBuildingDao.update(null, buildingUpdate); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     private void checkUnqiue(String type, String buildingId, String unitId, String id) { | 
			
		
	
	
		
			
				
					|  |  | @ -136,7 +185,7 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * 编辑楼长/单元长 | 
			
		
	
		
			
				
					|  |  |  |      * todo: 同步到具体的楼栋 | 
			
		
	
		
			
				
					|  |  |  |      * 同步到具体的楼栋 | 
			
		
	
		
			
				
					|  |  |  |      * | 
			
		
	
		
			
				
					|  |  |  |      * @param updateFormDto | 
			
		
	
		
			
				
					|  |  |  |      * @return | 
			
		
	
	
		
			
				
					|  |  | @ -149,11 +198,21 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi | 
			
		
	
		
			
				
					|  |  |  |         CustomerGridDTO gridDTO = SpringContextUtils.getBean(CustomerGridService.class).get(updateFormDto.getGridId()); | 
			
		
	
		
			
				
					|  |  |  |         entity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(gridDTO.getId(), gridDTO.getPids())); | 
			
		
	
		
			
				
					|  |  |  |         updateById(entity); | 
			
		
	
		
			
				
					|  |  |  |         // 同步更新至ic_building
 | 
			
		
	
		
			
				
					|  |  |  |         LambdaUpdateWrapper<IcBuildingEntity> buildingUpdate = new LambdaUpdateWrapper<>(); | 
			
		
	
		
			
				
					|  |  |  |         buildingUpdate.eq(IcBuildingEntity::getId, updateFormDto.getBuildingId()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderName, updateFormDto.getName()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderMobile, updateFormDto.getPhone()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderIdCard, updateFormDto.getIdCard()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getBuildingLeaderType, updateFormDto.getType()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) | 
			
		
	
		
			
				
					|  |  |  |                 .set(IcBuildingEntity::getUpdatedTime, new Date()); | 
			
		
	
		
			
				
					|  |  |  |         icBuildingDao.update(null, buildingUpdate); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * 批量删除楼长/单元长 | 
			
		
	
		
			
				
					|  |  |  |      * todo: 同时清空楼栋表里的信息 | 
			
		
	
		
			
				
					|  |  |  |      * 同时清空楼栋表里的信息 | 
			
		
	
		
			
				
					|  |  |  |      * | 
			
		
	
		
			
				
					|  |  |  |      * @param ids | 
			
		
	
		
			
				
					|  |  |  |      * @return | 
			
		
	
	
		
			
				
					|  |  | @ -161,18 +220,40 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |     public void delete(List<String> ids) { | 
			
		
	
		
			
				
					|  |  |  |         Date now=new Date(); | 
			
		
	
		
			
				
					|  |  |  |         ids.forEach(id->{ | 
			
		
	
		
			
				
					|  |  |  |             LambdaUpdateWrapper<CommunityBuildingManagerEntity> updateWrapper = new LambdaUpdateWrapper<>(); | 
			
		
	
		
			
				
					|  |  |  |             updateWrapper.eq(CommunityBuildingManagerEntity::getId, id) | 
			
		
	
		
			
				
					|  |  |  |                     .set(CommunityBuildingManagerEntity::getDelFlag, NumConstant.ONE_STR) | 
			
		
	
		
			
				
					|  |  |  |                     .set(CommunityBuildingManagerEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) | 
			
		
	
		
			
				
					|  |  |  |                     .set(CommunityBuildingManagerEntity::getUpdatedTime, now); | 
			
		
	
		
			
				
					|  |  |  |             baseDao.update(null, updateWrapper); | 
			
		
	
		
			
				
					|  |  |  |             // todo
 | 
			
		
	
		
			
				
					|  |  |  |         Date now = new Date(); | 
			
		
	
		
			
				
					|  |  |  |         ids.forEach(id -> { | 
			
		
	
		
			
				
					|  |  |  |             CommunityBuildingManagerEntity origin = baseDao.selectById(id); | 
			
		
	
		
			
				
					|  |  |  |             if (null != origin) { | 
			
		
	
		
			
				
					|  |  |  |                 LambdaUpdateWrapper<CommunityBuildingManagerEntity> updateWrapper = new LambdaUpdateWrapper<>(); | 
			
		
	
		
			
				
					|  |  |  |                 updateWrapper.eq(CommunityBuildingManagerEntity::getId, id) | 
			
		
	
		
			
				
					|  |  |  |                         .set(CommunityBuildingManagerEntity::getDelFlag, NumConstant.ONE_STR) | 
			
		
	
		
			
				
					|  |  |  |                         .set(CommunityBuildingManagerEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) | 
			
		
	
		
			
				
					|  |  |  |                         .set(CommunityBuildingManagerEntity::getUpdatedTime, now); | 
			
		
	
		
			
				
					|  |  |  |                 baseDao.update(null, updateWrapper); | 
			
		
	
		
			
				
					|  |  |  |                 if (StringUtils.isNotBlank(origin.getBuildingId())) { | 
			
		
	
		
			
				
					|  |  |  |                     // 清空楼栋表的楼长4列信息
 | 
			
		
	
		
			
				
					|  |  |  |                     LambdaUpdateWrapper<IcBuildingEntity> buildingUpdate = new LambdaUpdateWrapper<>(); | 
			
		
	
		
			
				
					|  |  |  |                     buildingUpdate.eq(IcBuildingEntity::getId, origin.getBuildingId()) | 
			
		
	
		
			
				
					|  |  |  |                             .set(IcBuildingEntity::getBuildingLeaderName, StrConstant.EPMETY_STR) | 
			
		
	
		
			
				
					|  |  |  |                             .set(IcBuildingEntity::getBuildingLeaderMobile, StrConstant.EPMETY_STR) | 
			
		
	
		
			
				
					|  |  |  |                             .set(IcBuildingEntity::getBuildingLeaderIdCard, StrConstant.EPMETY_STR) | 
			
		
	
		
			
				
					|  |  |  |                             .set(IcBuildingEntity::getBuildingLeaderType, StrConstant.EPMETY_STR) | 
			
		
	
		
			
				
					|  |  |  |                             .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) | 
			
		
	
		
			
				
					|  |  |  |                             .set(IcBuildingEntity::getUpdatedTime, now); | 
			
		
	
		
			
				
					|  |  |  |                     icBuildingDao.update(null, buildingUpdate); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public void checkImportPermission(String customerId, String userId) { | 
			
		
	
		
			
				
					|  |  |  |         CustomerStaffInfoCacheResult result = CustomerStaffRedis.getStaffInfo(customerId, userId); | 
			
		
	
		
			
				
					|  |  |  |         CustomerAgencyDTO agencyDTO = SpringContextUtils.getBean(CustomerAgencyService.class).get(result.getAgencyId()); | 
			
		
	
		
			
				
					|  |  |  |         if (!OrgLevelEnum.COMMUNITY.getCode().equals(agencyDTO.getLevel())) { | 
			
		
	
		
			
				
					|  |  |  |             throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "楼长单元长导入功能只有社区账号才可以正常导入", "请使用社区级账号导入excel"); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * 执行Excel导入 | 
			
		
	
	
		
			
				
					|  |  | @ -183,8 +264,263 @@ public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl<Communi | 
			
		
	
		
			
				
					|  |  |  |     @Async | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public void execAsyncExcelImport(Path filePath, String importTaskId) { | 
			
		
	
		
			
				
					|  |  |  |         // todo
 | 
			
		
	
		
			
				
					|  |  |  |         return; | 
			
		
	
		
			
				
					|  |  |  |         String staffId = EpmetRequestHolder.getLoginUserId(); | 
			
		
	
		
			
				
					|  |  |  |         String customerId = EpmetRequestHolder.getLoginUserCustomerId(); | 
			
		
	
		
			
				
					|  |  |  |         // 当前登录用户缓存信息
 | 
			
		
	
		
			
				
					|  |  |  |         CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, staffId); | 
			
		
	
		
			
				
					|  |  |  |         // 当前登录用户所属组织信息
 | 
			
		
	
		
			
				
					|  |  |  |         CustomerAgencyDTO community = SpringContextUtils.getBean(CustomerAgencyService.class).get(staffInfoCacheResult.getAgencyId()); | 
			
		
	
		
			
				
					|  |  |  |         String streetId = community.getPid(); | 
			
		
	
		
			
				
					|  |  |  |         // 社区上级街道信息
 | 
			
		
	
		
			
				
					|  |  |  |         CustomerAgencyDTO street = SpringContextUtils.getBean(CustomerAgencyService.class).get(streetId); | 
			
		
	
		
			
				
					|  |  |  |         String districtId = street.getPid(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //查询当前社区下的网格列表
 | 
			
		
	
		
			
				
					|  |  |  |         List<OptionResultDTO> gridList=customerGridService.getGridOption(staffInfoCacheResult.getAgencyId(), "addorupdate"); | 
			
		
	
		
			
				
					|  |  |  |         Map<String, String> gridMap = gridList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); | 
			
		
	
		
			
				
					|  |  |  |         String uuid = IdWorker.getIdStr(); | 
			
		
	
		
			
				
					|  |  |  |         String redisKey = "community_building_manager_import".concat(StrConstant.COLON).concat(uuid); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         try { | 
			
		
	
		
			
				
					|  |  |  |             CommunityBuildingManagerImportListener listener = new CommunityBuildingManagerImportListener(gridMap,customerId,staffId,staffInfoCacheResult.getAgencyId(),districtId,streetId,redisKey, | 
			
		
	
		
			
				
					|  |  |  |                     SpringContextUtils.getBean(CommunityBuildingManagerServiceImpl.class)); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             EasyExcel.read(filePath.toFile(), CommunityBuildingManagerImportExcelData.class, listener).headRowNumber(1).sheet(0).doRead(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             String errorDesFileUrl = null; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             List<CommunityBuildingManagerImportExcelData.ErrorRow> errorRows = listener.getErrorRows(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             boolean failed = errorRows.size() > 0; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             // 合并到一起写入
 | 
			
		
	
		
			
				
					|  |  |  |             // errorRows.addAll(otherRows);
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             // 生成并上传描述文件
 | 
			
		
	
		
			
				
					|  |  |  |             OutputStream os = null; | 
			
		
	
		
			
				
					|  |  |  |             FileItem fileItem = null; | 
			
		
	
		
			
				
					|  |  |  |             if (errorRows.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     // 文件生成
 | 
			
		
	
		
			
				
					|  |  |  |                     Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir(ImportTaskConstants.COMMUNITY_BUILDING_MANAGER, "import", "error_des"); | 
			
		
	
		
			
				
					|  |  |  |                     String fileName = UUID.randomUUID().toString().concat(".xlsx"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                     fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) | 
			
		
	
		
			
				
					|  |  |  |                             .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); | 
			
		
	
		
			
				
					|  |  |  |                     os = fileItem.getOutputStream(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                     EasyExcel.write(os, IcPropertyManagementImportExcelData.ErrorRow.class).sheet("信息列表").doWrite(errorRows); | 
			
		
	
		
			
				
					|  |  |  |                     // 文件上传oss
 | 
			
		
	
		
			
				
					|  |  |  |                     Result<UploadImgResultDTO> errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); | 
			
		
	
		
			
				
					|  |  |  |                     if (errorDesFileUploadResult.success()) { | 
			
		
	
		
			
				
					|  |  |  |                         errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 } finally { | 
			
		
	
		
			
				
					|  |  |  |                     IOUtils.closeQuietly(os); | 
			
		
	
		
			
				
					|  |  |  |                     if (!fileItem.isInMemory()) { | 
			
		
	
		
			
				
					|  |  |  |                         try { | 
			
		
	
		
			
				
					|  |  |  |                             fileItem.delete(); | 
			
		
	
		
			
				
					|  |  |  |                         } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                             log.error("【楼长单元长表community_building_manager】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             Result result = ImportTaskUtils.finishImportTask( | 
			
		
	
		
			
				
					|  |  |  |                     importTaskId, | 
			
		
	
		
			
				
					|  |  |  |                     failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, | 
			
		
	
		
			
				
					|  |  |  |                     errorDesFileUrl, | 
			
		
	
		
			
				
					|  |  |  |                     ""); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             if (!result.success()) { | 
			
		
	
		
			
				
					|  |  |  |                 log.error("【楼长单元长表community_building_manager】finishImportTask失败"); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |             String errorMsg = ExceptionUtils.getErrorStackTrace(e); | 
			
		
	
		
			
				
					|  |  |  |             log.error("【楼长单元长表community_building_manager】出错:{}", errorMsg); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |             importFinishTaskForm.setTaskId(importTaskId); | 
			
		
	
		
			
				
					|  |  |  |             importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); | 
			
		
	
		
			
				
					|  |  |  |             importFinishTaskForm.setOperatorId(staffId); | 
			
		
	
		
			
				
					|  |  |  |             importFinishTaskForm.setResultDesc("物业管理表导入失败:系统异常,请查看系统日志"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); | 
			
		
	
		
			
				
					|  |  |  |             if (!result.success()) { | 
			
		
	
		
			
				
					|  |  |  |                 log.error("【楼长单元长表community_building_manager】导入记录状态修改为'完成'失败"); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } finally { | 
			
		
	
		
			
				
					|  |  |  |             // 删除临时文件
 | 
			
		
	
		
			
				
					|  |  |  |             if (Files.exists(filePath)) { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     Files.delete(filePath); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (IOException e) { | 
			
		
	
		
			
				
					|  |  |  |                     e.printStackTrace(); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             //删除小区缓存、楼栋缓存、单元缓存
 | 
			
		
	
		
			
				
					|  |  |  |             redisUtils.deleteByPrex(redisKey); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @param customerId | 
			
		
	
		
			
				
					|  |  |  |      * @param staffId | 
			
		
	
		
			
				
					|  |  |  |      * @param agencyId | 
			
		
	
		
			
				
					|  |  |  |      * @param rediPrex | 
			
		
	
		
			
				
					|  |  |  |      * @param excelDataList | 
			
		
	
		
			
				
					|  |  |  |      * @param listener | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     public void handleImportExcelData(Map<String, String> gridMap, | 
			
		
	
		
			
				
					|  |  |  |                                       String customerId, | 
			
		
	
		
			
				
					|  |  |  |                                       String staffId, | 
			
		
	
		
			
				
					|  |  |  |                                       String agencyId, | 
			
		
	
		
			
				
					|  |  |  |                                       String districtId, | 
			
		
	
		
			
				
					|  |  |  |                                       String streetId, | 
			
		
	
		
			
				
					|  |  |  |                                       String rediPrex, | 
			
		
	
		
			
				
					|  |  |  |                                       List<CommunityBuildingManagerDTO> excelDataList, | 
			
		
	
		
			
				
					|  |  |  |                                       CommunityBuildingManagerImportListener listener) { | 
			
		
	
		
			
				
					|  |  |  |         List<CommunityBuildingManagerEntity> insertList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         List<CommunityBuildingManagerEntity> updateList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         List<IcBuildingDTO> buildingUpdateList=new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         for (CommunityBuildingManagerDTO dto : excelDataList) { | 
			
		
	
		
			
				
					|  |  |  |             try { | 
			
		
	
		
			
				
					|  |  |  |                 CommunityBuildingManagerEntity entity = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerEntity.class); | 
			
		
	
		
			
				
					|  |  |  |                 entity.setDistrictId(districtId); | 
			
		
	
		
			
				
					|  |  |  |                 entity.setStreetId(streetId); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 // 所属网格
 | 
			
		
	
		
			
				
					|  |  |  |                 if (MapUtils.isEmpty(gridMap) || !gridMap.containsKey(dto.getGridName()) || StringUtils.isBlank(gridMap.get(dto.getGridName()))) { | 
			
		
	
		
			
				
					|  |  |  |                     CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); | 
			
		
	
		
			
				
					|  |  |  |                     errorRow.setErrorInfo("网格不存在"); | 
			
		
	
		
			
				
					|  |  |  |                     listener.getErrorRows().add(errorRow); | 
			
		
	
		
			
				
					|  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 String gridId = gridMap.get(dto.getGridName()); | 
			
		
	
		
			
				
					|  |  |  |                 entity.setOrgIdPath(CustomerOrgRedis.getOrgIdPath(gridId, OrgTypeEnum.GRID.getCode())); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 // 查询当前网格下的小区
 | 
			
		
	
		
			
				
					|  |  |  |                 // 所属小区
 | 
			
		
	
		
			
				
					|  |  |  |                 List<OptionResultDTO> viliageList =queryViliageList(customerId,staffId,agencyId,gridId,rediPrex); | 
			
		
	
		
			
				
					|  |  |  |                 Map<String, String> viliageMap = viliageList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); | 
			
		
	
		
			
				
					|  |  |  |                 if (MapUtils.isEmpty(viliageMap) || !viliageMap.containsKey(dto.getViliageName()) || StringUtils.isBlank(viliageMap.get(dto.getViliageName()))) { | 
			
		
	
		
			
				
					|  |  |  |                     CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); | 
			
		
	
		
			
				
					|  |  |  |                     errorRow.setErrorInfo("小区不存在"); | 
			
		
	
		
			
				
					|  |  |  |                     listener.getErrorRows().add(errorRow); | 
			
		
	
		
			
				
					|  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 String viliageId = viliageMap.get(dto.getViliageName()); | 
			
		
	
		
			
				
					|  |  |  |                 entity.setViliageId(viliageId); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 // 查询当前小区下的楼栋
 | 
			
		
	
		
			
				
					|  |  |  |                 // 所属楼栋
 | 
			
		
	
		
			
				
					|  |  |  |                 List<OptionResultDTO> buildingList=queryBuildingList(viliageId,rediPrex); | 
			
		
	
		
			
				
					|  |  |  |                 Map<String, String> buildingMap = buildingList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); | 
			
		
	
		
			
				
					|  |  |  |                 if (MapUtils.isEmpty(buildingMap) || !buildingMap.containsKey(dto.getBuildingName()) || StringUtils.isBlank(buildingMap.get(dto.getBuildingName()))) { | 
			
		
	
		
			
				
					|  |  |  |                     CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); | 
			
		
	
		
			
				
					|  |  |  |                     errorRow.setErrorInfo("楼栋不存在"); | 
			
		
	
		
			
				
					|  |  |  |                     listener.getErrorRows().add(errorRow); | 
			
		
	
		
			
				
					|  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 String buildingId = buildingMap.get(dto.getBuildingName()); | 
			
		
	
		
			
				
					|  |  |  |                 entity.setBuildingId(buildingId); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 // 所属单元
 | 
			
		
	
		
			
				
					|  |  |  |                 String unitId = ""; | 
			
		
	
		
			
				
					|  |  |  |                 if (StringUtils.isNotBlank(dto.getUnitName())) { | 
			
		
	
		
			
				
					|  |  |  |                     // 查询楼栋下的单元列表
 | 
			
		
	
		
			
				
					|  |  |  |                     List<OptionResultDTO> unitList=queryUnitList(buildingId,rediPrex); | 
			
		
	
		
			
				
					|  |  |  |                     Map<String, String> unitMap = unitList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); | 
			
		
	
		
			
				
					|  |  |  |                     if (MapUtils.isEmpty(unitMap) || !unitMap.containsKey(dto.getUnitName()) || StringUtils.isBlank(unitMap.get(dto.getUnitName()))) { | 
			
		
	
		
			
				
					|  |  |  |                         CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); | 
			
		
	
		
			
				
					|  |  |  |                         errorRow.setErrorInfo("单元不存在"); | 
			
		
	
		
			
				
					|  |  |  |                         listener.getErrorRows().add(errorRow); | 
			
		
	
		
			
				
					|  |  |  |                         continue; | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                     unitId = unitMap.get(dto.getUnitName()); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 entity.setUnitId(unitId); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 LambdaQueryWrapper<CommunityBuildingManagerEntity> countQuery = new LambdaQueryWrapper<>(); | 
			
		
	
		
			
				
					|  |  |  |                 countQuery.eq(CommunityBuildingManagerEntity::getType, entity.getType()) | 
			
		
	
		
			
				
					|  |  |  |                         .eq(CommunityBuildingManagerEntity::getBuildingId, buildingId) | 
			
		
	
		
			
				
					|  |  |  |                         .eq(StringUtils.isNotBlank(unitId), CommunityBuildingManagerEntity::getUnitId, unitId) | 
			
		
	
		
			
				
					|  |  |  |                         .ne(CommunityBuildingManagerEntity::getId, null); | 
			
		
	
		
			
				
					|  |  |  |                 CommunityBuildingManagerEntity origin = baseDao.selectOne(countQuery); | 
			
		
	
		
			
				
					|  |  |  |                 if (null == origin) { | 
			
		
	
		
			
				
					|  |  |  |                     insertList.add(entity); | 
			
		
	
		
			
				
					|  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |                     entity.setId(origin.getId()); | 
			
		
	
		
			
				
					|  |  |  |                     updateList.add(entity); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 // 同步更新至ic_building
 | 
			
		
	
		
			
				
					|  |  |  |                 IcBuildingDTO icBuildingDTO = new IcBuildingDTO(); | 
			
		
	
		
			
				
					|  |  |  |                 icBuildingDTO.setId(entity.getBuildingId()); | 
			
		
	
		
			
				
					|  |  |  |                 icBuildingDTO.setBuildingLeaderMobile(entity.getPhone()); | 
			
		
	
		
			
				
					|  |  |  |                 icBuildingDTO.setBuildingLeaderIdCard(entity.getIdCard()); | 
			
		
	
		
			
				
					|  |  |  |                 icBuildingDTO.setBuildingLeaderType(entity.getType()); | 
			
		
	
		
			
				
					|  |  |  |                 icBuildingDTO.setBuildingLeaderName(entity.getName()); | 
			
		
	
		
			
				
					|  |  |  |                 icBuildingDTO.setUpdatedBy(staffId); | 
			
		
	
		
			
				
					|  |  |  |                 icBuildingDTO.setUpdatedTime(new Date()); | 
			
		
	
		
			
				
					|  |  |  |                 buildingUpdateList.add(icBuildingDTO); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                 CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); | 
			
		
	
		
			
				
					|  |  |  |                 errorRow.setErrorInfo("数据处理异常"); | 
			
		
	
		
			
				
					|  |  |  |                 listener.getErrorRows().add(errorRow); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         // 同步到ic_building
 | 
			
		
	
		
			
				
					|  |  |  |         this.insertBatch(insertList); | 
			
		
	
		
			
				
					|  |  |  |         this.updateBatchById(updateList); | 
			
		
	
		
			
				
					|  |  |  |         SpringContextUtils.getBean(IcBuildingService.class).updateBuildingLeader(buildingUpdateList); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     private List<OptionResultDTO> queryViliageList(String customerId, String staffId, String agencyId, String gridId, String rediPrex) { | 
			
		
	
		
			
				
					|  |  |  |         String redisKey = rediPrex.concat(StrConstant.COLON).concat("viliage_list").concat(StrConstant.COLON).concat(gridId); | 
			
		
	
		
			
				
					|  |  |  |         List<OptionResultDTO> viliageList = redisUtils.lrange(redisKey, NumConstant.ZERO, NumConstant.ONE_NEG, OptionResultDTO.class); | 
			
		
	
		
			
				
					|  |  |  |         if (!CollectionUtils.isEmpty(viliageList)) { | 
			
		
	
		
			
				
					|  |  |  |             return viliageList; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         NeighborHoodOptionFormDTO neighborHoodOptionFormDTO = new NeighborHoodOptionFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |         neighborHoodOptionFormDTO.setCustomerId(customerId); | 
			
		
	
		
			
				
					|  |  |  |         neighborHoodOptionFormDTO.setStaffId(staffId); | 
			
		
	
		
			
				
					|  |  |  |         neighborHoodOptionFormDTO.setAgencyId(agencyId); | 
			
		
	
		
			
				
					|  |  |  |         neighborHoodOptionFormDTO.setGridId(gridId); | 
			
		
	
		
			
				
					|  |  |  |         List<OptionResultDTO> resultList = SpringContextUtils.getBean(IcNeighborHoodService.class).queryNeighborHoodOptions(neighborHoodOptionFormDTO); | 
			
		
	
		
			
				
					|  |  |  |         // 有效时间1小时
 | 
			
		
	
		
			
				
					|  |  |  |         redisUtils.leftPush(redisKey, resultList, RedisUtils.HOUR_ONE_EXPIRE); | 
			
		
	
		
			
				
					|  |  |  |         return resultList; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     private List<OptionResultDTO> queryBuildingList(String viliageId, String rediPrex) { | 
			
		
	
		
			
				
					|  |  |  |         String redisKey = rediPrex.concat(StrConstant.COLON).concat("building_List").concat(StrConstant.COLON).concat(viliageId); | 
			
		
	
		
			
				
					|  |  |  |         List<OptionResultDTO> buildingList = redisUtils.lrange(redisKey, NumConstant.ZERO, NumConstant.ONE_NEG, OptionResultDTO.class); | 
			
		
	
		
			
				
					|  |  |  |         if (!CollectionUtils.isEmpty(buildingList)) { | 
			
		
	
		
			
				
					|  |  |  |             return buildingList; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         List<OptionResultDTO> resultList = SpringContextUtils.getBean(IcBuildingService.class).getBuildingOptions(viliageId); | 
			
		
	
		
			
				
					|  |  |  |         // 有效时间1小时
 | 
			
		
	
		
			
				
					|  |  |  |         redisUtils.leftPush(redisKey, resultList, RedisUtils.HOUR_ONE_EXPIRE); | 
			
		
	
		
			
				
					|  |  |  |         return resultList; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     private List<OptionResultDTO> queryUnitList(String buildingId, String rediPrex) { | 
			
		
	
		
			
				
					|  |  |  |         String redisKey = rediPrex.concat(StrConstant.COLON).concat("unit_List").concat(StrConstant.COLON).concat(buildingId); | 
			
		
	
		
			
				
					|  |  |  |         List<OptionResultDTO> unitList = redisUtils.lrange(redisKey, NumConstant.ZERO, NumConstant.ONE_NEG, OptionResultDTO.class); | 
			
		
	
		
			
				
					|  |  |  |         if (!CollectionUtils.isEmpty(unitList)) { | 
			
		
	
		
			
				
					|  |  |  |             return unitList; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         List<OptionResultDTO> resultList = SpringContextUtils.getBean(IcBuildingUnitService.class).getUnitOptions(buildingId); | 
			
		
	
		
			
				
					|  |  |  |         // 有效时间1小时
 | 
			
		
	
		
			
				
					|  |  |  |         redisUtils.leftPush(redisKey, resultList, RedisUtils.HOUR_ONE_EXPIRE); | 
			
		
	
		
			
				
					|  |  |  |         return resultList; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 |