|
|
@ -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,283 @@ 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.setGridId(gridId); |
|
|
|
entity.setOrgIdPath(CustomerOrgRedis.getOrgIdPath(gridId, OrgTypeEnum.GRID.getCode())); |
|
|
|
|
|
|
|
// 查询当前网格下的小区
|
|
|
|
// 所属小区
|
|
|
|
Map<String, String> viliageMap =queryViliageList(customerId,staffId,agencyId,gridId,rediPrex); |
|
|
|
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));
|
|
|
|
Map<String, String> buildingMap =queryBuildingList(viliageId,rediPrex);; |
|
|
|
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));
|
|
|
|
Map<String, String> unitMap = queryUnitList(buildingId, rediPrex); |
|
|
|
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(StringUtils.isNotBlank(entity.getId()),CommunityBuildingManagerEntity::getId, entity.getId()); |
|
|
|
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
|
|
|
|
if(!CollectionUtils.isEmpty(insertList)){ |
|
|
|
this.insertBatch(insertList); |
|
|
|
} |
|
|
|
if(!CollectionUtils.isEmpty(updateList)){ |
|
|
|
this.updateBatchById(updateList); |
|
|
|
} |
|
|
|
if(!CollectionUtils.isEmpty(buildingUpdateList)){ |
|
|
|
SpringContextUtils.getBean(IcBuildingService.class).updateBuildingLeader(buildingUpdateList); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Map<String, String> 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); |
|
|
|
Map<String, Object> viliageMap = redisUtils.hGetAll(redisKey); |
|
|
|
if (MapUtils.isEmpty(viliageMap)) { |
|
|
|
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); |
|
|
|
viliageMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); |
|
|
|
// 有效时间1小时
|
|
|
|
redisUtils.hMSet(redisKey, viliageMap, RedisUtils.HOUR_ONE_EXPIRE); |
|
|
|
} |
|
|
|
Map<String, String> resultMap = new HashMap<>(); |
|
|
|
viliageMap.forEach((k, v) -> |
|
|
|
resultMap.put(k, (String) v) |
|
|
|
); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
private Map<String, String> queryBuildingList(String viliageId, String rediPrex) { |
|
|
|
String redisKey = rediPrex.concat(StrConstant.COLON).concat("building_List").concat(StrConstant.COLON).concat(viliageId); |
|
|
|
Map<String, Object> buildingMap = redisUtils.hGetAll(redisKey); |
|
|
|
if (MapUtils.isEmpty(buildingMap)) { |
|
|
|
List<OptionResultDTO> resultList = SpringContextUtils.getBean(IcBuildingService.class).getBuildingOptions(viliageId); |
|
|
|
buildingMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); |
|
|
|
// 有效时间1小时
|
|
|
|
redisUtils.hMSet(redisKey, buildingMap, RedisUtils.HOUR_ONE_EXPIRE); |
|
|
|
} |
|
|
|
Map<String, String> resultMap = new HashMap<>(); |
|
|
|
buildingMap.forEach((k, v) -> |
|
|
|
resultMap.put(k, (String) v) |
|
|
|
); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
private Map<String, String> queryUnitList(String buildingId, String rediPrex) { |
|
|
|
String redisKey = rediPrex.concat(StrConstant.COLON).concat("unit_List").concat(StrConstant.COLON).concat(buildingId); |
|
|
|
Map<String, Object> unitMap = redisUtils.hGetAll(redisKey); |
|
|
|
if (MapUtils.isEmpty(unitMap)) { |
|
|
|
List<OptionResultDTO> resultList = SpringContextUtils.getBean(IcBuildingUnitService.class).getUnitOptions(buildingId); |
|
|
|
unitMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); |
|
|
|
// 有效时间1小时
|
|
|
|
redisUtils.hMSet(redisKey, unitMap, RedisUtils.HOUR_ONE_EXPIRE); |
|
|
|
} |
|
|
|
Map<String, String> resultMap = new HashMap<>(); |
|
|
|
unitMap.forEach((k, v) -> |
|
|
|
resultMap.put(k, (String) v) |
|
|
|
); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|