diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/NameUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/NameUtils.java
new file mode 100644
index 0000000000..8dec710c4a
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/NameUtils.java
@@ -0,0 +1,89 @@
+package com.epmet.commons.tools.utils;
+
+import com.epmet.commons.tools.constant.NumConstant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description
+ * @Author zhaoqifeng
+ * @Date 2022/9/14 14:40
+ */
+public class NameUtils {
+ /**
+ * 复姓(两字),国内现存81个。末尾添加三字以上的部分满姓
+ */
+ private static final String[] SURNAME_NOW = {"百里", "北堂", "北野", "北宫", "辟闾", "孛尔", "淳于", "成公", "陈生", "褚师",
+ "端木", "东方", "东郭", "东野", "东门", "第五", "大狐", "段干", "段阳", "带曰", "第二", "东宫", "公孙", "公冶", "公羊",
+ "公良", "公西", "公孟", "高堂", "高阳", "公析", "公肩", "公坚", "郭公", "谷梁", "毌将", "公乘", "毌丘", "公户", "公广",
+ "公仪", "公祖", "皇甫", "黄龙", "胡母", "何阳", "夹谷", "九方", "即墨", "梁丘", "闾丘", "洛阳", "陵尹", "冷富", "龙丘",
+ "令狐", "林彭", "南宫", "南郭", "女娲", "南伯", "南容", "南门", "南野", "欧阳", "欧侯", "濮阳", "青阳", "漆雕", "亓官",
+ "渠丘", "壤驷", "上官", "少室", "少叔", "司徒", "司马", "司空", "司寇", "士孙", "申屠", "申徒", "申鲜", "申叔", "夙沙",
+ "叔先", "叔仲", "侍其", "叔孙", "澹台", "太史", "太叔", "太公", "屠岸", "唐古", "闻人", "巫马", "微生", "王孙", "无庸",
+ "夏侯", "西门", "信平", "鲜于", "轩辕", "相里", "新垣", "徐离", "羊舌", "羊角", "延陵", "於陵", "伊祁", "吾丘", "乐正",
+ "只斤", "诸葛", "颛孙", "仲孙", "仲长", "钟离", "宗政", "主父", "中叔", "左人", "左丘", "宰父", "长儿", "仉督", "单于",
+ "叱干", "叱利", "车非", "车公", "车侯", "车长", "车绵", "独孤", "大野", "独吉", "达奚", "达官", "达仲", "达品", "哥舒",
+ "哥夜", "哥翰", "哥汗", "赫连", "呼延", "贺兰", "黑齿", "斛律", "斛粟", "贺若", "贺奴", "贺远", "贺元", "夹谷", "吉胡",
+ "吉利", "吉家", "可频", "慕容", "万俟", "万红", "万中", "抹捻", "纳兰", "纳西", "纳吉", "纳罕", "纳塞", "纳博", "纳称",
+ "纳勉", "普周", "仆固", "仆散", "蒲察", "屈突", "屈卢", "钳耳", "是云", "索卢", "厍狄", "拓跋", "同蹄", "秃发", "完颜",
+ "完明", "完忠", "宇文", "尉迟", "耶律", "耶红", "也先", "耶鲜", "耶闻", "长孙", "长南", "长北", "长西", "长红", "长元",
+ "长秋", "长寸", "长李", "长云", "萨嘛喇","赫舍里","萨克达","钮祜禄","他塔喇","喜塔腊","库雅喇","瓜尔佳","舒穆禄","索绰络",
+ "叶赫那拉","依尔觉罗","额尔德特","讷殷富察","叶赫那兰","爱新觉罗","依尔根觉罗"};
+
+ /**
+ * 获取复姓,非单字姓氏。未匹配上则依旧返回单字姓氏
+ * @param name
+ * @return
+ */
+ public static String getSurNameComplex(String name){
+ for (String s : SURNAME_NOW) {
+ if (name.startsWith(s)) {
+ return name.substring(0, s.length());
+ }
+ }
+ return name.substring(0,1);
+ }
+
+ /**
+ * 获取复姓名,去除姓氏后名
+ * @param name
+ * @return
+ */
+ public static String getNameComplex(String name){
+ for (String s : SURNAME_NOW) {
+ if (name.startsWith(s)) {
+ return name.substring(s.length());
+ }
+ }
+ return name.substring(1);
+ }
+
+ /**
+ * 获取姓氏与姓名
+ * 姓名在两字时,首字为姓。
+ * 姓名大于两字时,优先匹配复姓。
+ * 姓氏未匹配且姓名多于5字时,姓与名均在姓氏中,名为空;少于5字时则采用第一个字为姓。
+ * @param name 姓名
+ * @return map类型数据,姓氏为key值“X”,名字为value值“M”
+ */
+ public static Map getSurName(String name) {
+ Map mapData = new HashMap<>(NumConstant.TWO);
+ if (name.length() > NumConstant.ZERO && name.length() <= NumConstant.TWO){
+ mapData.put("X", name.substring(NumConstant.ZERO, NumConstant.ONE));
+ mapData.put("M", name.substring(NumConstant.ONE));
+ } else if (name.length() > NumConstant.TWO) {
+ for (String s : SURNAME_NOW) {//遍历复姓数组
+ if (name.startsWith(s)) {
+ mapData.put("X", s);
+ mapData.put("M", name.substring(s.length()));
+ return mapData;
+ }
+ }
+ //姓氏没有匹配时采用第一个字为姓
+ mapData.put("X", name.substring(NumConstant.ZERO, NumConstant.ONE));
+ mapData.put("M", name.substring(NumConstant.ONE));
+ }
+ return mapData;
+ }
+}
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserResiInfoController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserResiInfoController.java
index 5f8a5ca171..84ab9375cb 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserResiInfoController.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserResiInfoController.java
@@ -243,4 +243,22 @@ public class UserResiInfoController {
return new Result>().ok(userResiInfoService.getStaffAndResi(userIds));
}
+ /**
+ * 进入网格,自动注册居民
+ *
+ * @Param tokenDto
+ * @Param userResiInfoDTO
+ * @Return {@link Result}
+ * @Author zhaoqifeng
+ * @Date 2022/9/14 15:34
+ */
+ @PostMapping("autoreguser-ding")
+ public Result autoRegister(@LoginUser TokenDto tokenDto, @RequestBody UserResiInfoDTO userResiInfoDTO) {
+ userResiInfoDTO.setCustomerId(tokenDto.getCustomerId());
+ userResiInfoDTO.setUserId(tokenDto.getUserId());
+ userResiInfoDTO.setApp(tokenDto.getApp());
+ userResiInfoService.autoRegister(userResiInfoDTO);
+ return new Result();
+ }
+
}
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java
index 9e3a9f86fe..f3b10414f7 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java
@@ -213,4 +213,14 @@ public interface UserResiInfoService extends BaseService {
*/
List getStaffAndResi(List userIds);
+ /**
+ * 进入网格,自动注册居民
+ *
+ * @Param userResiInfoDTO
+ * @Return
+ * @Author zhaoqifeng
+ * @Date 2022/9/14 14:19
+ */
+ void autoRegister(UserResiInfoDTO userResiInfoDTO);
+
}
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java
index 5e7d901f6c..96b602f187 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java
@@ -18,6 +18,7 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.common.token.util.UserUtil;
@@ -26,30 +27,28 @@ import com.epmet.commons.tools.constant.EpmetRoleKeyConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
-import com.epmet.commons.tools.enums.IdCardTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
+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.ResiUserInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.IdCardRegexUtils;
+import com.epmet.commons.tools.utils.NameUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserConstant;
import com.epmet.constant.UserResiRegisterConstant;
import com.epmet.constant.UserRoleConstant;
-import com.epmet.dao.UserCustomerDao;
-import com.epmet.dao.UserResiInfoDao;
-import com.epmet.dao.UserWechatDao;
+import com.epmet.dao.*;
import com.epmet.dto.UserResiInfoDTO;
import com.epmet.dto.UserResiRegisterVisitDTO;
import com.epmet.dto.UserRoleDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
-import com.epmet.entity.UserBaseInfoEntity;
-import com.epmet.entity.UserResiInfoEntity;
-import com.epmet.entity.UserResiRegisterVisitEntity;
-import com.epmet.entity.UserWechatEntity;
+import com.epmet.entity.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.redis.UserBaseInfoRedis;
@@ -67,6 +66,7 @@ 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.*;
/**
@@ -103,9 +103,12 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl page(Map params) {
@@ -551,6 +554,90 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl latestWrapper = new LambdaQueryWrapper<>();
+ latestWrapper.eq(GridLatestEntity::getCustomerId, userResiInfoDTO.getCustomerId());
+ latestWrapper.eq(GridLatestEntity::getGridId, userResiInfoDTO.getGridId());
+ latestWrapper.eq(GridLatestEntity::getCustomerUserId, userResiInfoDTO.getUserId());
+ GridLatestEntity latest = gridLatestDao.selectOne(latestWrapper);
+ if (null == latest) {
+ latest = new GridLatestEntity();
+ latest.setCustomerId(userResiInfoDTO.getCustomerId());
+ latest.setGridId(userResiInfoDTO.getGridId());
+ latest.setCustomerUserId(userResiInfoDTO.getUserId());
+ latest.setAreaCode(gridInfo.getAreaCode());
+ latest.setPid(gridInfo.getPid());
+ latest.setLatestTime(new Date());
+ gridLatestDao.insert(latest);
+ } else {
+ GridLatestEntity latestEntity = new GridLatestEntity();
+ latestEntity.setId(latest.getId());
+ latestEntity.setLatestTime(new Date());
+ gridLatestDao.updateById(latestEntity);
+ }
+ }
/**
* 自动认证居民:志愿者注册,自动认证居民