diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml
index 0daeb04b68..42e739af76 100644
--- a/epmet-gateway/pom.xml
+++ b/epmet-gateway/pom.xml
@@ -233,6 +233,8 @@
                 
                 lb://tduck-api
                 
+                
+                lb://pli-power-base-server
                 
                 https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4
                 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
@@ -371,6 +373,8 @@
                 
                 lb://epmet-openapi-adv-server
                 
+                
+                lb://pli-power-base-server
                 
                 lb://tduck-api
                 
@@ -481,6 +485,8 @@
 
                 
                 lb://epmet-openapi-adv-server
+                
+                lb://pli-power-base-server
                 
                 https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4
                 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
@@ -584,6 +590,8 @@
 
                 
                 lb://epmet-openapi-adv-server
+                
+                lb://pli-power-base-server
                 
                 lb://tduck-api
                 
diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml
index 83be8dc38a..691c441552 100644
--- a/epmet-gateway/src/main/resources/bootstrap.yml
+++ b/epmet-gateway/src/main/resources/bootstrap.yml
@@ -360,6 +360,15 @@ spring:
           filters:
             - StripPrefix=1
             - CpAuth=true
+        #数字底座动力主轴
+        - id: pli-power-base-server
+          uri: @gateway.routes.plugin.power-base-server.url@
+          order: 39
+          predicates:
+            - Path=${server.servlet.context-path}/pli/power/**
+          filters:
+            - StripPrefix=1
+            - CpAuth=true
 
     nacos:
       discovery:
diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/HomeUserBriefResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/HomeUserBriefResultDTO.java
new file mode 100644
index 0000000000..c8b4b5b67a
--- /dev/null
+++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/HomeUserBriefResultDTO.java
@@ -0,0 +1,24 @@
+package com.epmet.dto.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description
+ * @Author zhaoqifeng
+ * @Date 2021/11/1 10:47
+ */
+@Data
+public class HomeUserBriefResultDTO implements Serializable {
+    private static final long serialVersionUID = 7747977114455488862L;
+    private String id;
+    private String homeId;
+    private String name;
+    private String isParty;
+    private String gender;
+    private String yhzgx;
+    private String mobile;
+    private String idCard;
+    private String birthday;
+}
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
index 5a44547fc8..08679f35e3 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
@@ -60,7 +60,6 @@ import com.epmet.feign.OssFeignClient;
 import com.epmet.service.IcResiUserImportService;
 import com.epmet.service.IcResiUserService;
 import feign.RequestInterceptor;
-import jodd.io.FileUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FileUtils;
@@ -70,9 +69,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -232,7 +228,7 @@ public class IcResiUserController implements ResultDataResolver {
         //推送MQ事件
         IcResiUserAddMQMsg mqMsg = new IcResiUserAddMQMsg();
         mqMsg.setCustomerId(tokenDto.getCustomerId());
-        log.info("customer id is {}",tokenDto.getCustomerId());
+        log.info("customer id is {}", tokenDto.getCustomerId());
         mqMsg.setIcResiUser(resiUserId);
         SystemMsgFormDTO form = new SystemMsgFormDTO();
         form.setMessageType(SystemMessageType.IC_RESI_USER_EDIT);
@@ -255,12 +251,13 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 根据ic_resi_user找家属
+     *
      * @param icResiUserId
      * @return
      */
     @GetMapping("findfamilymem/{icResiUserId}")
-    public Result findFamilyMem(@PathVariable("icResiUserId") String icResiUserId){
-        if(StringUtils.isNotBlank(icResiUserId)){
+    public Result findFamilyMem(@PathVariable("icResiUserId") String icResiUserId) {
+        if (StringUtils.isNotBlank(icResiUserId)) {
             return new Result().ok(icResiUserService.findFamilyMem(icResiUserId));
         }
         return new Result<>();
@@ -272,7 +269,7 @@ public class IcResiUserController implements ResultDataResolver {
         pageFormDTO.setCustomerId(tokenDto.getCustomerId());
         pageFormDTO.setStaffId(tokenDto.getUserId());
         ValidatorUtils.validateEntity(pageFormDTO, IcResiUserPageFormDTO.AddUserInternalGroup.class);
-        if(null==pageFormDTO.getConditions()){
+        if (null == pageFormDTO.getConditions()) {
             pageFormDTO.setConditions(new ArrayList<>());
         }
         return new Result>>().ok(icResiUserService.pageResiMap(pageFormDTO));
@@ -304,12 +301,12 @@ public class IcResiUserController implements ResultDataResolver {
      * @return void
      * @author LiuJanJun
      * @date 2021/11/19 4:24 下午
-     * @remark:分页批量导出  oss目录在 各个环境对应的前缀文件夹/file-template/resi-template/客户ID.xlsx,
+     * @remark:分页批量导出 oss目录在 各个环境对应的前缀文件夹/file-template/resi-template/客户ID.xlsx,
      * 如果某个客户需要更新模版 则替换掉上面的模版文件;然后 更新缓存里的值或者删除也行 再导出就会下载新的模版了
      */
     @NoRepeatSubmit
     @RequestMapping(value = "/exportExcel")
-    public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
+    public void exportExcelByEasyExcel(@RequestHeader String customerId, @LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
         //tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02");
         long startM = System.currentTimeMillis();
         CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId());
@@ -335,23 +332,23 @@ public class IcResiUserController implements ResultDataResolver {
             List resiFormAllItems = icResiUserService.listFormItems(customerId, IcFormCodeEnum.RESI_BASE_INFO.getCode());
             Map allItemMap = resiFormAllItems.stream().collect(Collectors.toMap(FormItemResult::getItemId, o -> o));
             Map map = new HashMap<>();
-            allItemMap.values().forEach(item->{
+            allItemMap.values().forEach(item -> {
                 String tableName = item.getTableName();
                 ExportResiUserItemDTO exportItem = map.getOrDefault(tableName, new ExportResiUserItemDTO());
-                map.putIfAbsent(tableName,exportItem);
+                map.putIfAbsent(tableName, exportItem);
                 String columnName = item.getColumnName().concat(item.getColumnNum() == NumConstant.ZERO ? StrConstant.EPMETY_STR : item.getColumnNum().toString());
-                exportItem.getItemMap().put(columnName,item);
-                if (Constant.OPITON_SOURCE_REMOTE.equals(item.getOptionSourceType())&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
+                exportItem.getItemMap().put(columnName, item);
+                if (Constant.OPITON_SOURCE_REMOTE.equals(item.getOptionSourceType()) && item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)) {
                     //多个参数
                     String[] paramArr = item.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK);
-                    Arrays.stream(paramArr).forEach(o->{
+                    Arrays.stream(paramArr).forEach(o -> {
                         FormItemResult value = allItemMap.get(o);
-                        if (value == null){
+                        if (value == null) {
                             return;
                         }
-                        Set conditionSet = exportItem.getRemoteItemConditionMap().getOrDefault(item.getItemId(),new HashSet<>());
+                        Set conditionSet = exportItem.getRemoteItemConditionMap().getOrDefault(item.getItemId(), new HashSet<>());
                         conditionSet.add(value);
-                        exportItem.getRemoteItemConditionMap().putIfAbsent(item.getItemId(),conditionSet);
+                        exportItem.getRemoteItemConditionMap().putIfAbsent(item.getItemId(), conditionSet);
                     });
                 }
             });
@@ -378,7 +375,7 @@ public class IcResiUserController implements ResultDataResolver {
                         stopSearchSet.add(tableName);
                     }
                     //如果没有 构建新的writeSheet
-                    WriteSheet writeSheet = childTableWriteSheetMap.getOrDefault(tableName,EasyExcel.writerSheet(tableEnum.getSheetNo()).build());
+                    WriteSheet writeSheet = childTableWriteSheetMap.getOrDefault(tableName, EasyExcel.writerSheet(tableEnum.getSheetNo()).build());
                     childTableWriteSheetMap.putIfAbsent(tableName, writeSheet);
                     //写入数据
                     excelWriter.fill(new FillWrapper("t" + (tableEnum.getSheetNo() + NumConstant.ONE), resiResultList), writeSheet);
@@ -391,10 +388,10 @@ public class IcResiUserController implements ResultDataResolver {
             }
 
         } finally {
-            if (excelWriter != null){
+            if (excelWriter != null) {
                 excelWriter.finish();
             }
-            log.info("exportExcelByEasyExcel resi info cost time:{}s",(System.currentTimeMillis()-startM)/NumConstant.ONE_THOUSAND);
+            log.info("exportExcelByEasyExcel resi info cost time:{}s", (System.currentTimeMillis() - startM) / NumConstant.ONE_THOUSAND);
         }
     }
 
@@ -404,7 +401,7 @@ public class IcResiUserController implements ResultDataResolver {
      * @param customerId
      * @return
      */
-    private File getIcResiTemplateFile(String customerId, IcUserTemplateEnums template) throws Exception{
+    private File getIcResiTemplateFile(String customerId, IcUserTemplateEnums template) throws Exception {
         String fileType = ".xlsx";
         String fileName = customerId + fileType;
         File file = new File(IC_RESI_DOWNLOAD_DIR.resolve(fileName).toString());
@@ -422,11 +419,11 @@ public class IcResiUserController implements ResultDataResolver {
             if (result == null || !result.success()) {
                 log.warn("获取居民模版失败,path:{},走默认模版", ossFilePath);
                 InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(template.getPathInApp());
-                FileUtils.copyInputStreamToFile(resourceAsStream,file);
-                log.warn("getIcResiTemplateFile copy default file to template,customerId:{}",customerId);
+                FileUtils.copyInputStreamToFile(resourceAsStream, file);
+                log.warn("getIcResiTemplateFile copy default file to template,customerId:{}", customerId);
             } else {
-                log.warn("getIcResiTemplateFile reload file form oss default file to template,customerId:{}",customerId);
-                FileUtils.writeByteArrayToFile(file,result.getData());
+                log.warn("getIcResiTemplateFile reload file form oss default file to template,customerId:{}", customerId);
+                FileUtils.writeByteArrayToFile(file, result.getData());
             }
             redisUtils.hSet(RedisKeys.getResiTempChangedKey(customerId), serverIp, NumConstant.ZERO_STR);
             return file;
@@ -441,7 +438,7 @@ public class IcResiUserController implements ResultDataResolver {
      */
     @NoRepeatSubmit
     @PostMapping("importExcel")
-    public Result importExcelByEasyExcel(@RequestHeader("customerId") String customerId,@RequestPart("file") MultipartFile file, HttpServletRequest multipartRequest, HttpServletResponse response) {
+    public Result importExcelByEasyExcel(@RequestHeader("customerId") String customerId, @RequestPart("file") MultipartFile file, HttpServletRequest multipartRequest, HttpServletResponse response) {
         if (file.isEmpty()) {
             throw new RenException("请上传文件");
         }
@@ -472,7 +469,7 @@ public class IcResiUserController implements ResultDataResolver {
         executorService.execute(() -> {
             boolean isAllSuccess = false;
             try {
-                List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode());
+                List formItemList = icResiUserService.listFormItems(customerId, IcFormCodeEnum.RESI_BASE_INFO.getCode());
                 isAllSuccess = icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR);
             } catch (Throwable e) {
                 String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
@@ -490,7 +487,7 @@ public class IcResiUserController implements ResultDataResolver {
             } finally {
                 try {
                     // 都导入成功了没问题,才删除
-                    if (importTempFileSavePath != null){
+                    if (importTempFileSavePath != null) {
                         if (isAllSuccess) {
                             Files.delete(importTempFileSavePath);
                         } else {
@@ -522,9 +519,9 @@ public class IcResiUserController implements ResultDataResolver {
      * @date 2021/11/3 9:21 上午
      */
     @PostMapping("persondata")
-    public Result personData(@LoginUser TokenDto tokenDto,@RequestBody PersonDataFormDTO formDTO) {
+    public Result personData(@LoginUser TokenDto tokenDto, @RequestBody PersonDataFormDTO formDTO) {
         formDTO.setCustomerId(tokenDto.getCustomerId());
-        ValidatorUtils.validateEntity(formDTO,PersonDataFormDTO.PersonDataForm.class);
+        ValidatorUtils.validateEntity(formDTO, PersonDataFormDTO.PersonDataForm.class);
         return new Result().ok(icResiUserService.personData(formDTO));
     }
 
@@ -594,10 +591,10 @@ public class IcResiUserController implements ResultDataResolver {
     }
 
     /**
-     * @LoginUser TokenDto tokenDto,
-     * 新增需求,需求人列表:展示当前工作人员所属组织+页面已选择所属网格 下的居民列表
      * @param formDTO
      * @return
+     * @LoginUser TokenDto tokenDto,
+     * 新增需求,需求人列表:展示当前工作人员所属组织+页面已选择所属网格 下的居民列表
      */
     @PostMapping("demandusers")
     public Result> queryDemandUsers(@RequestBody DemandUserFormDTO formDTO) {
@@ -607,6 +604,7 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 下载ic居民信息导入excel模板
+     *
      * @return
      */
     @PostMapping("import/download-template")
@@ -637,6 +635,7 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 党员年龄范围统计
+     *
      * @Param formDTO
      * @Return {@link Result< List<  OptionDataResultDTO >>}
      * @Author zhaoqifeng
@@ -650,6 +649,7 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 党员年龄列表
+     *
      * @Param formDTO
      * @Return {@link Result< PageData< PartyMemberEducationResultDTO>>}
      * @Author zhaoqifeng
@@ -713,6 +713,7 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 党员学历统计
+     *
      * @Param formDTO
      * @Return {@link Result< List< OptionDataResultDTO>>}
      * @Author zhaoqifeng
@@ -726,6 +727,7 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 党员学历列表
+     *
      * @Param formDTO
      * @Return {@link Result< PageData< PartyMemberEducationResultDTO>>}
      * @Author zhaoqifeng
@@ -795,6 +797,7 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 根据居民id查询居民信息简介
+     *
      * @param resiUserId
      * @return
      */
@@ -807,12 +810,13 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 获取ic_resi_user
+     *
      * @param icResiUserId
      * @return
      */
     @PostMapping("geticresiuser/{icResiUserId}")
-    public Result getIcResiUserDTO(@PathVariable("icResiUserId") String icResiUserId){
-        if(StringUtils.isNotBlank(icResiUserId)){
+    public Result getIcResiUserDTO(@PathVariable("icResiUserId") String icResiUserId) {
+        if (StringUtils.isNotBlank(icResiUserId)) {
             return new Result().ok(icResiUserService.get(icResiUserId));
         }
         return new Result<>();
@@ -820,6 +824,7 @@ public class IcResiUserController implements ResultDataResolver {
 
     /**
      * 【社区查询】搜索居民们
+     *
      * @param input
      * @return
      */
@@ -848,33 +853,34 @@ public class IcResiUserController implements ResultDataResolver {
     }
 
     /**
-     * @Description 【社区查询】人员预警右侧列表
      * @param formDTO
      * @param tokenDto
+     * @Description 【社区查询】人员预警右侧列表
      * @author zxc
      * @date 2022/1/17 4:25 下午
      */
     @PostMapping("personwarn/rightlist")
-    public Result personWarnRightList(@RequestBody PersonWarnRightListFormDTO formDTO,@LoginUser TokenDto tokenDto){
+    public Result personWarnRightList(@RequestBody PersonWarnRightListFormDTO formDTO, @LoginUser TokenDto tokenDto) {
         ValidatorUtils.validateEntity(formDTO, PersonWarnRightListFormDTO.PersonWarnRightListForm.class);
-        return new Result().ok(icResiUserService.personWarnRightList(formDTO,tokenDto));
+        return new Result().ok(icResiUserService.personWarnRightList(formDTO, tokenDto));
     }
 
     /**
      * Desc: 根据房屋IDs查询房屋下是否有存在居民的
+     *
      * @param ids
      * @author zxc
      * @date 2022/3/2 10:32 上午
      */
     @PostMapping("getexistuserbyhouseids")
-    public Result> getExistUserByHouseIds(@RequestBody List ids){
+    public Result> getExistUserByHouseIds(@RequestBody List ids) {
         return new Result>().ok(icResiUserService.getExistUserByHouseIds(ids));
     }
 
 //    public static ThreadLocal tl = new ThreadLocal();
 
     @PostMapping("test-async")
-    public Result testAsync(HttpServletRequest request){
+    public Result testAsync(HttpServletRequest request) {
 //        tl.set("wxz");
         executorService.submit(() -> {
             try {
@@ -888,4 +894,20 @@ public class IcResiUserController implements ResultDataResolver {
         });
         return new Result();
     }
+
+    /**
+     * 根据房屋主键查询户内家庭成员简信息
+     *
+     * @param houseId   房屋主键
+     * @param loginUser 登录用户
+     * @return com.epmet.commons.tools.utils.Result>
+     * @author work@yujt.net.cn
+     * @date 2022/4/21/0021 15:00
+     */
+    @PostMapping("listhomeuserbrief/{houseId}")
+    public Result> listHomeUserBrief(@PathVariable("houseId") String houseId, @LoginUser TokenDto loginUser) {
+        String customerId = loginUser.getCustomerId();
+        List r = icResiUserService.listHomeUserBrief(houseId, customerId);
+        return new Result().ok(r);
+    }
 }
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
index 8bcebefd92..a9e7204301 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
@@ -67,36 +67,35 @@ public interface IcResiUserService extends BaseService {
      */
     List getPeopleByRoom(String homeId);
 
-    PageData