|
|
@ -1,22 +1,22 @@ |
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.epmet.commons.tools.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
|
|
|
import com.epmet.commons.tools.exception.EpmetException; |
|
|
|
import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis; |
|
|
|
import com.epmet.commons.tools.redis.common.CustomerOrgRedis; |
|
|
|
import com.epmet.commons.tools.redis.common.bean.GridInfoCache; |
|
|
|
import com.epmet.commons.tools.redis.common.bean.HouseInfoCache; |
|
|
|
import com.epmet.commons.tools.security.dto.TokenDto; |
|
|
|
import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.utils.Result; |
|
|
|
import com.epmet.constant.IcResiUserConstant; |
|
|
|
import com.epmet.dao.*; |
|
|
|
import com.epmet.dto.IcHouseDTO; |
|
|
|
import com.epmet.dto.UserResiInfoDTO; |
|
|
|
import com.epmet.dto.form.EnterGridFormDTO; |
|
|
|
import com.epmet.dto.form.GetRoleKeyListFormDTO; |
|
|
|
import com.epmet.dto.form.RegisterAndBindFormDTO; |
|
|
|
import com.epmet.dto.result.HomeInfoResultDTO; |
|
|
|
import com.epmet.dto.result.HomeUserBriefResultDTO; |
|
|
|
import com.epmet.dto.result.ResiUserBaseInfoResultDTO; |
|
|
|
import com.epmet.dto.form.*; |
|
|
|
import com.epmet.dto.result.*; |
|
|
|
import com.epmet.entity.IcResiUserEntity; |
|
|
|
import com.epmet.entity.UserBaseInfoEntity; |
|
|
|
import com.epmet.entity.UserResiInfoEntity; |
|
|
@ -26,13 +26,16 @@ import com.epmet.service.*; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.collections4.CollectionUtils; |
|
|
|
import org.apache.commons.compress.utils.Lists; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description |
|
|
@ -63,6 +66,8 @@ public class MyHomeServiceImpl implements MyHomeService { |
|
|
|
private RegisterRelationService registerRelationService; |
|
|
|
@Resource |
|
|
|
private UserResiRegisterVisitDao userResiRegisterVisitDao; |
|
|
|
@Resource |
|
|
|
IcUserTransferRecordService icUserTransferRecordService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<HomeUserBriefResultDTO> selectListHomeMember(String houseCode, String customerId) { |
|
|
@ -86,18 +91,42 @@ public class MyHomeServiceImpl implements MyHomeService { |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void registerAndBind(RegisterAndBindFormDTO formDTO) { |
|
|
|
|
|
|
|
public RegisterAndBindResultDTO registerAndBind(RegisterAndBindFormDTO formDTO) { |
|
|
|
RegisterAndBindResultDTO result = new RegisterAndBindResultDTO(); |
|
|
|
LambdaQueryWrapper<IcResiUserEntity> userWrapper = new LambdaQueryWrapper<>(); |
|
|
|
userWrapper.eq(IcResiUserEntity::getCustomerId, formDTO.getCustomerId()); |
|
|
|
userWrapper.eq(IcResiUserEntity::getIdCard, formDTO.getIdCard()); |
|
|
|
IcResiUserEntity icUser = icResiUserDao.selectOne(userWrapper); |
|
|
|
if (null == icUser || !icUser.getHomeId().equals(formDTO.getHomeId())) { |
|
|
|
//获取用户扫码的房屋
|
|
|
|
Result<IcHouseDTO> icHouseNewResult = govOrgOpenFeignClient.get(formDTO.getHomeId()); |
|
|
|
if (!icHouseNewResult.success() || null == icHouseNewResult.getData()) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取房屋信息失败", "获取房屋信息失败"); |
|
|
|
} |
|
|
|
if (formDTO.getIdCard().equals(icHouseNewResult.getData().getOwnerIdCard())) { |
|
|
|
//判断是否是房主
|
|
|
|
result.setIsOwner(NumConstant.ONE_STR); |
|
|
|
} |
|
|
|
if (null == icUser) { |
|
|
|
throw new EpmetException(EpmetErrorCode.MISMATCH.getCode(), |
|
|
|
"人员与房屋信息不匹配,请与工作人员联系。", |
|
|
|
"人员与房屋信息不匹配,请与工作人员联系。"); |
|
|
|
} else if (!icUser.getHomeId().equals(formDTO.getHomeId())) { |
|
|
|
//获取用户当前所在的房屋
|
|
|
|
Result<IcHouseDTO> icHouseResult = govOrgOpenFeignClient.get(icUser.getHomeId()); |
|
|
|
if (!icHouseResult.success() || null == icHouseResult.getData()) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取房屋信息失败", "获取房屋信息失败"); |
|
|
|
} |
|
|
|
//判断两个房屋是否是一个房主
|
|
|
|
if (!StringUtils.equals(icHouseResult.getData().getOwnerIdCard(), icHouseNewResult.getData().getOwnerIdCard())) { |
|
|
|
throw new EpmetException(EpmetErrorCode.MISMATCH.getCode(), |
|
|
|
"人员与房屋信息不匹配,请与工作人员联系。", |
|
|
|
"人员与房屋信息不匹配,请与工作人员联系。"); |
|
|
|
} else { |
|
|
|
result.setIsDiff(NumConstant.ONE_STR); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//进入网格(entergrid)流程
|
|
|
|
EnterGridFormDTO userInfoParams = new EnterGridFormDTO(); |
|
|
|
userInfoParams.setUserId(formDTO.getUserId()); |
|
|
@ -151,6 +180,7 @@ public class MyHomeServiceImpl implements MyHomeService { |
|
|
|
userResiInfoDTO.setApp("resi"); |
|
|
|
userResiInfoService.saveResiInfo(userResiInfoDTO); |
|
|
|
} |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -165,20 +195,21 @@ public class MyHomeServiceImpl implements MyHomeService { |
|
|
|
@Override |
|
|
|
public HomeInfoResultDTO getHomeInfo(TokenDto tokenDto) { |
|
|
|
HomeInfoResultDTO resultDto = new HomeInfoResultDTO(); |
|
|
|
//通过用户ID获取居民端用户信息
|
|
|
|
ResiUserBaseInfoResultDTO baseInfo = userBaseInfoDao.selecUserBaseInfoByUserId(tokenDto.getUserId()); |
|
|
|
if (null == baseInfo) { |
|
|
|
return resultDto; |
|
|
|
} |
|
|
|
|
|
|
|
//通过居民身份证号获取居民信息
|
|
|
|
LambdaQueryWrapper<IcResiUserEntity> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
wrapper.eq(IcResiUserEntity::getCustomerId, tokenDto.getCustomerId()); |
|
|
|
wrapper.eq(IcResiUserEntity::getIdCard, baseInfo.getIdNum()); |
|
|
|
IcResiUserEntity icUser = icResiUserDao.selectOne(wrapper); |
|
|
|
|
|
|
|
if (null == icUser) { |
|
|
|
return resultDto; |
|
|
|
} |
|
|
|
resultDto.setIcResiUserId(icUser.getId()); |
|
|
|
//通过房屋ID获取房屋信息
|
|
|
|
HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(tokenDto.getCustomerId(), icUser.getHomeId()); |
|
|
|
if (null == houseInfo) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取房屋信息失败", "获取房屋信息失败"); |
|
|
@ -187,6 +218,122 @@ public class MyHomeServiceImpl implements MyHomeService { |
|
|
|
resultDto.setHouseName(houseInfo.getAllName()); |
|
|
|
resultDto.setHouseCode(houseInfo.getHouseCode()); |
|
|
|
resultDto.setQrCodeUrl(houseInfo.getHouseQrcodeUrl()); |
|
|
|
//获取房屋房主信息,判断是否是房主
|
|
|
|
Result<IcHouseDTO> icHouseResult = govOrgOpenFeignClient.get(icUser.getHomeId()); |
|
|
|
if (!icHouseResult.success() || null == icHouseResult.getData()) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取房屋信息失败", "获取房屋信息失败"); |
|
|
|
} |
|
|
|
if (icUser.getIdCard().equals(icHouseResult.getData().getOwnerIdCard())) { |
|
|
|
resultDto.setIsOwner(NumConstant.ONE_STR); |
|
|
|
} else { |
|
|
|
resultDto.setIsOwner(NumConstant.ZERO_STR); |
|
|
|
} |
|
|
|
resultDto.setOwnerIdCard(icHouseResult.getData().getOwnerIdCard()); |
|
|
|
return resultDto; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取房主名下的房屋列表 |
|
|
|
* |
|
|
|
* @param tokenDto |
|
|
|
* @Param tokenDto |
|
|
|
* @Return {@link List< HomeInfoResultDTO>} |
|
|
|
* @Author zhaoqifeng |
|
|
|
* @Date 2022/7/19 16:48 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public List<HomeInfoResultDTO> getOwnerHouseList(TokenDto tokenDto) { |
|
|
|
//通过用户ID获取居民端用户信息
|
|
|
|
ResiUserBaseInfoResultDTO baseInfo = userBaseInfoDao.selecUserBaseInfoByUserId(tokenDto.getUserId()); |
|
|
|
if (null == baseInfo) { |
|
|
|
return Collections.emptyList(); |
|
|
|
} |
|
|
|
|
|
|
|
IcHouseDTO dto = new IcHouseDTO(); |
|
|
|
dto.setCustomerId(tokenDto.getCustomerId()); |
|
|
|
dto.setOwnerIdCard(baseInfo.getIdNum()); |
|
|
|
Result<List<HouseInfoDTO>> houseResult = govOrgOpenFeignClient.getOwnerHouseList(dto); |
|
|
|
if (!houseResult.success()) { |
|
|
|
throw new EpmetException(houseResult.getCode(), houseResult.getMsg()); |
|
|
|
} |
|
|
|
if (CollectionUtils.isEmpty(houseResult.getData())) { |
|
|
|
return Collections.emptyList(); |
|
|
|
} |
|
|
|
|
|
|
|
return houseResult.getData().stream().map(item -> { |
|
|
|
HomeInfoResultDTO result = new HomeInfoResultDTO(); |
|
|
|
result.setHouseId(item.getHomeId()); |
|
|
|
result.setHouseName(item.getAllName()); |
|
|
|
result.setHouseCode(item.getHouseCode()); |
|
|
|
result.setQrCodeUrl(item.getHouseQrcodeUrl()); |
|
|
|
return result; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 变更绑定的房屋 |
|
|
|
* |
|
|
|
* @param tokenDto |
|
|
|
* @param formDTO |
|
|
|
* @Param tokenDto |
|
|
|
* @Param formDTO |
|
|
|
* @Return {@link List< HomeInfoResultDTO>} |
|
|
|
* @Author zhaoqifeng |
|
|
|
* @Date 2022/7/20 17:25 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void changeHome(TokenDto tokenDto, IcResiUserConfirmSubmitDTO formDTO) { |
|
|
|
//通过用户ID获取居民端用户信息
|
|
|
|
ResiUserBaseInfoResultDTO baseInfo = userBaseInfoDao.selecUserBaseInfoByUserId(tokenDto.getUserId()); |
|
|
|
if (null == baseInfo) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败"); |
|
|
|
} |
|
|
|
//通过居民身份证号获取居民信息
|
|
|
|
LambdaQueryWrapper<IcResiUserEntity> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
wrapper.eq(IcResiUserEntity::getCustomerId, tokenDto.getCustomerId()); |
|
|
|
wrapper.eq(IcResiUserEntity::getIdCard, baseInfo.getIdNum()); |
|
|
|
IcResiUserEntity icUser = icResiUserDao.selectOne(wrapper); |
|
|
|
if (null == icUser) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取居民信息失败", "获取居民信息失败"); |
|
|
|
} |
|
|
|
|
|
|
|
//通过房屋ID获取房屋信息
|
|
|
|
HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(tokenDto.getCustomerId(), formDTO.getHomeId()); |
|
|
|
if (null == houseInfo) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取房屋信息失败", "获取房屋信息失败"); |
|
|
|
} |
|
|
|
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(houseInfo.getGridId()); |
|
|
|
if (null == gridInfo) { |
|
|
|
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取网格信息失败", "获取网格信息失败"); |
|
|
|
} |
|
|
|
//在添加调动记录的时候调整
|
|
|
|
icUser.setAgencyId(houseInfo.getAgencyId()); |
|
|
|
icUser.setPids(gridInfo.getPids()); |
|
|
|
icUser.setGridId(houseInfo.getGridId()); |
|
|
|
icUser.setVillageId(houseInfo.getNeighborHoodId()); |
|
|
|
icUser.setBuildId(houseInfo.getBuildingId()); |
|
|
|
icUser.setUnitId(houseInfo.getBuildingUnitId()); |
|
|
|
icUser.setHomeId(houseInfo.getHomeId()); |
|
|
|
icUser.setUpdatedTime(new java.util.Date()); |
|
|
|
|
|
|
|
//添加人员调动记录
|
|
|
|
IcResiUserTransferFormDTO transferDTO = new IcResiUserTransferFormDTO(); |
|
|
|
transferDTO.setCustomerId(tokenDto.getCustomerId()); |
|
|
|
transferDTO.setStaffId(tokenDto.getUserId()); |
|
|
|
transferDTO.setIcUserId(icUser.getId()); |
|
|
|
transferDTO.setType("in"); |
|
|
|
transferDTO.setNewAgencyId(houseInfo.getAgencyId()); |
|
|
|
transferDTO.setNewGridId(houseInfo.getGridId()); |
|
|
|
transferDTO.setNewNeighborHoodId(houseInfo.getNeighborHoodId()); |
|
|
|
transferDTO.setNewBuildingId(houseInfo.getBuildingId()); |
|
|
|
transferDTO.setNewBuildingUnitId(houseInfo.getBuildingUnitId()); |
|
|
|
transferDTO.setNewHouseId(houseInfo.getHomeId()); |
|
|
|
transferDTO.setTransferTime(new java.util.Date()); |
|
|
|
transferDTO.setRemark("更换房屋"); |
|
|
|
transferDTO.setReason("更换房屋"); |
|
|
|
transferDTO.setOrigin(IcResiUserConstant.CHANGE); |
|
|
|
icUserTransferRecordService.add(transferDTO); |
|
|
|
//更新家庭成员信息
|
|
|
|
icResiUserDao.updateById(icUser); |
|
|
|
} |
|
|
|
} |
|
|
|