Newspaper пре 1 месец
родитељ
комит
27dacfef4a
20 измењених фајлова са 406 додато и 263 уклоњено
  1. 1 1
      app-admin/src/main/java/com/ruoyi/web/controller/system/HouseInfoController.java
  2. 5 52
      app-admin/src/main/java/com/ruoyi/web/controller/system/PersonInfoController.java
  3. 4 44
      app-admin/src/main/java/com/ruoyi/web/domain/dto/person/PersonInfoQueryRequest.java
  4. 3 25
      app-admin/src/main/java/com/ruoyi/web/domain/entity/HouseInfo.java
  5. 75 0
      app-admin/src/main/java/com/ruoyi/web/domain/entity/HouseholdInfo.java
  6. 4 19
      app-admin/src/main/java/com/ruoyi/web/domain/entity/PersonInfo.java
  7. 3 33
      app-admin/src/main/java/com/ruoyi/web/domain/vo/HouseInfoVO.java
  8. 15 15
      app-admin/src/main/java/com/ruoyi/web/domain/vo/PersonInfoVO.java
  9. 16 0
      app-admin/src/main/java/com/ruoyi/web/mapper/HouseholdInfoMapper.java
  10. 1 12
      app-admin/src/main/java/com/ruoyi/web/mapper/PersonInfoMapper.java
  11. 1 1
      app-admin/src/main/java/com/ruoyi/web/service/HouseInfoService.java
  12. 12 0
      app-admin/src/main/java/com/ruoyi/web/service/HouseholdInfoService.java
  13. 1 1
      app-admin/src/main/java/com/ruoyi/web/service/PersonInfoService.java
  14. 23 2
      app-admin/src/main/java/com/ruoyi/web/service/impl/HouseInfoServiceImpl.java
  15. 21 0
      app-admin/src/main/java/com/ruoyi/web/service/impl/HouseholdInfoServiceImpl.java
  16. 74 20
      app-admin/src/main/java/com/ruoyi/web/service/impl/PersonInfoServiceImpl.java
  17. 20 27
      app-admin/src/main/resources/mapper/web/HouseInfoMapper.xml
  18. 27 0
      app-admin/src/main/resources/mapper/web/HouseholdInfoMapper.xml
  19. 6 11
      app-admin/src/main/resources/mapper/web/PersonInfoMapper.xml
  20. 94 0
      sql/sql.sql

+ 1 - 1
app-admin/src/main/java/com/ruoyi/web/controller/system/HouseInfoController.java

@@ -69,7 +69,7 @@ public class HouseInfoController {
         if (houseInfoQueryRequest == null) {
             return error("请求参数为空");
         }
-        Page<HouseInfo> listHouseInfoByPage = houseInfoService.getListHouseInfoByPage(houseInfoQueryRequest);
+        Page<HouseInfoVO> listHouseInfoByPage = houseInfoService.getListHouseInfoByPage(houseInfoQueryRequest);
         return success(listHouseInfoByPage);
     }
 

+ 5 - 52
app-admin/src/main/java/com/ruoyi/web/controller/system/PersonInfoController.java

@@ -2,8 +2,10 @@ package com.ruoyi.web.controller.system;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.web.domain.dto.person.PersonInfoQueryRequest;
 import com.ruoyi.web.domain.entity.PersonInfo;
+import com.ruoyi.web.domain.vo.HouseInfoVO;
 import com.ruoyi.web.service.PersonInfoService;
 import com.ruoyi.web.domain.vo.PersonInfoVO;
 import io.swagger.annotations.Api;
@@ -11,6 +13,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import java.util.List;
+import java.util.stream.Collectors;
+
 import static com.ruoyi.common.core.domain.AjaxResult.error;
 import static com.ruoyi.common.core.domain.AjaxResult.success;
 
@@ -66,60 +70,9 @@ public class PersonInfoController{
         if (personInfoQueryRequest == null) {
             return error("请求参数为空");
         }
-        Page<PersonInfo> listPersonInfoByPage = personInfoService.getListPersonInfoByPage(personInfoQueryRequest);
+        Page<PersonInfoVO> listPersonInfoByPage = personInfoService.getListPersonInfoByPage(personInfoQueryRequest);
         return success(listPersonInfoByPage);
     }
 
-    /**
-     * 查询人员信息列表
-     */
-    //@PreAuthorize("@ss.hasPermi('system:info:list')")
-//    @GetMapping("/list")
-//    public TableDataInfo list(PersonInfo personInfo)
-//    {
-//        startPage();
-//        List<PersonInfo> list = personInfoService.selectPersonInfoList(personInfo);
-//        return getDataTable(list);
-//    }
-
-//    /**
-//     * 分页获取人员列表(封装类)
-//     */
-//    public AjaxResult listPersonInfoVOByPage(PersonInfoQueryRequest personInfoQueryRequest,
-//                                                             HttpServletRequest request) {
-//        long current = pictureQueryRequest.getCurrent();
-//        long size = pictureQueryRequest.getPageSize();
-//        // 限制爬虫
-//        ThrowUtils.throwIf(size > 20, ErrorCode.PARAMS_ERROR);
-//
-//        // 空间权限校验
-//        Long spaceId = pictureQueryRequest.getSpaceId();
-//        if(spaceId == null){
-//            // 公共图库
-//            // 普通用户默认只能看到审核通过的数据
-//            pictureQueryRequest.setReviewStatus(PictureReviewStatusEnum.PASS.getValue());
-//            pictureQueryRequest.setNullSpaceId(true);
-//        }else{
-//            boolean hasPermission = StpKit.SPACE.hasPermission(SpaceUserPermissionConstant.PICTURE_VIEW);
-//            ThrowUtils.throwIf(!hasPermission, ErrorCode.NO_AUTH_ERROR);
-//            // 已经改为注解鉴权
-//            // 私有图库
-//            // 普通用户默认只能看到审核通过的数据
-////            User loginUser = userClient.getLoginUser(request);
-////            Space space = spaceService.getById(spaceId);
-////            ThrowUtils.throwIf(space == null , ErrorCode.NOT_FOUND_ERROR,"空间不存在");
-////            if(!loginUser.getId().equals(space.getUserId())){
-////                throw new BusinessException(ErrorCode.NO_AUTH_ERROR,"没有空间权限");
-////            }
-//            pictureQueryRequest.setReviewStatus(PictureReviewStatusEnum.PASS.getValue());
-//            pictureQueryRequest.setNullSpaceId(false);
-//        }
-//        // 查询数据库
-//        Page<Picture> picturePage = pictureService.page(new Page<>(current, size),
-//                pictureService.getQueryWrapper(pictureQueryRequest));
-//        // 获取封装类
-//        return ResultUtils.success(pictureService.getPictureVOPage(picturePage, request));
-//    }
-
 
 }

+ 4 - 44
app-admin/src/main/java/com/ruoyi/web/domain/dto/person/PersonInfoQueryRequest.java

@@ -14,7 +14,6 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class PersonInfoQueryRequest extends PageRequest implements Serializable {
-    //姓名、民族、房屋门牌号、特殊身份、人口标签
     /**
      * ID
      */
@@ -26,64 +25,25 @@ public class PersonInfoQueryRequest extends PageRequest implements Serializable
     private String realname;
 
     /**
-     * 身份证号
-     */
-    private String idCard;
-
-    /**
      * 民族
      */
     private String ethnic;
 
     /**
-     * 年龄
-     */
-    private Integer age;
-
-    /**
-     * 性别: 1-男, 2-女, 0-未知
-     */
-    private Integer gender;
-
-    /**
-     * 出生日期
+     * 门牌号
      */
-    private Date birthDate;
+    private String doorplateNumber;
 
     /**
-     * 人口类别:0-本村户籍 ,1-非本村户籍
-     */
-    private Integer populationCategory;
-
-    /**
-     * 电话
+     * 特殊身份
      */
-    private String phone;
+    private String specialIdentity;
 
     /**
      * 人口标签(标签 json 列表)
      */
     private List<String> populationTags;
 
-    /**
-     * 职业ID
-     */
-    private String occupationId;
-
-    /**
-     * 所属村庄ID
-     */
-    private Integer villageId;
-
-    /**
-     * 特殊身份编号
-     */
-    private String specialIdentityCode;
-
-    /**
-     * 特殊身份
-     */
-    private String specialIdentity;
 
     private static final long serialVersionUID = 1L;
 }

+ 3 - 25
app-admin/src/main/java/com/ruoyi/web/domain/entity/HouseInfo.java

@@ -5,15 +5,13 @@ import com.baomidou.mybatisplus.annotation.*;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-
 import lombok.Data;
 
 /**
  * 房屋信息表
- *
  * @TableName house_info
  */
-@TableName(value = "house_info")
+@TableName(value ="house_info")
 @Data
 public class HouseInfo implements Serializable {
     /**
@@ -28,16 +26,6 @@ public class HouseInfo implements Serializable {
     private String houseCode;
 
     /**
-     * 所属行政村ID
-     */
-    private Integer villageId;
-
-    /**
-     * 所属行政村名称
-     */
-    private String villageName;
-
-    /**
      * 门牌号
      */
     private String doorplateNumber;
@@ -63,11 +51,6 @@ public class HouseInfo implements Serializable {
     private Integer remainingPoints;
 
     /**
-     * 房屋性质:1-自建房,2-商铺,3-公租房
-     */
-    private Integer houseType;
-
-    /**
      * 房屋类别:1-修缮,2-原址重建,3-集中安置
      */
     private Integer houseCategory;
@@ -78,9 +61,9 @@ public class HouseInfo implements Serializable {
     private BigDecimal buildingArea;
 
     /**
-     * 所属网格ID
+     * 所属网格
      */
-    private Integer gridId;
+    private String grid;
 
     /**
      * 照片URL
@@ -93,11 +76,6 @@ public class HouseInfo implements Serializable {
     private String houseTags;
 
     /**
-     * 门牌二维码图片URL
-     */
-    private String qrCodeUrl;
-
-    /**
      * 创建时间
      */
     private Date createTime;

+ 75 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/HouseholdInfo.java

@@ -0,0 +1,75 @@
+package com.ruoyi.web.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 户籍信息表
+ * @TableName household_info
+ */
+@TableName(value ="household_info")
+@Data
+public class HouseholdInfo implements Serializable {
+    /**
+     * 户籍ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 户籍编号
+     */
+    private String householdCode;
+
+    /**
+     * 户主姓名
+     */
+    private String householdHead;
+
+    /**
+     * 户主身份证号
+     */
+    private String householdHeadIdCard;
+
+    /**
+     * 户籍类型: 1-农业户口, 2-非农业户口
+     */
+    private Integer householdType;
+
+    /**
+     * 户籍地址
+     */
+    private String householdAddress;
+
+    /**
+     * 归属地区
+     */
+    private String belongingArea;
+
+    /**
+     * 房屋编号
+     */
+    private String houseCode;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 4 - 19
app-admin/src/main/java/com/ruoyi/web/domain/entity/PersonInfo.java

@@ -69,19 +69,14 @@ public class PersonInfo implements Serializable {
     private String populationTags;
 
     /**
-     * 职业ID
+     * 职业
      */
-    private String occupationId;
+    private String occupation;
 
     /**
-     * 所属村庄ID
+     * 所属网格
      */
-    private Integer villageId;
-
-    /**
-     * 所属网格ID
-     */
-    private Integer gridId;
+    private String grid;
 
     /**
      * 文化程度
@@ -119,16 +114,6 @@ public class PersonInfo implements Serializable {
     private String householdRelation;
 
     /**
-     * 现居地
-     */
-    private String currentAddress;
-
-    /**
-     * 特殊身份编号
-     */
-    private String specialIdentityCode;
-
-    /**
      * 特殊身份
      */
     private String specialIdentity;

+ 3 - 33
app-admin/src/main/java/com/ruoyi/web/domain/vo/HouseInfoVO.java

@@ -26,22 +26,12 @@ public class HouseInfoVO implements Serializable {
     private String houseCode;
 
     /**
-     * 所属行政村ID
-     */
-    private Integer villageId;
-
-    /**
-     * 所属行政村名称
-     */
-    private String villageName;
-
-    /**
      * 门牌号
      */
     private String doorplateNumber;
 
     /**
-     * 房屋详细地址
+     * 房屋地址
      */
     private String houseAddress;
 
@@ -50,26 +40,6 @@ public class HouseInfoVO implements Serializable {
      */
     private PersonInfoVO houseOwnerInfo;
 
-//    /**
-//     * 房主人员ID
-//     */
-//    private Integer houseOwnerId;
-//
-//    /**
-//     * 房主姓名
-//     */
-//    private String houseOwnerName;
-//
-//    /**
-//     * 房主身份证号
-//     */
-//    private String idCard;
-//
-//    /**
-//     * 房主电话
-//     */
-//    private String phone;
-
     /**
      * 总积分
      */
@@ -96,9 +66,9 @@ public class HouseInfoVO implements Serializable {
     private BigDecimal buildingArea;
 
     /**
-     * 所属网格ID
+     * 所属网格
      */
-    private Integer gridId;
+    private String grid;
 
     /**
      * 照片URL

+ 15 - 15
app-admin/src/main/java/com/ruoyi/web/domain/vo/PersonInfoVO.java

@@ -65,19 +65,14 @@ public class PersonInfoVO implements Serializable {
     private String populationTags;
 
     /**
-     * 职业ID
+     * 职业
      */
-    private String occupationId;
+    private String occupation;
 
     /**
-     * 所属村庄ID
+     * 所属网格
      */
-    private Integer villageId;
-
-    /**
-     * 所属网格ID
-     */
-    private Integer gridId;
+    private String grid;
 
     /**
      * 文化程度
@@ -105,9 +100,9 @@ public class PersonInfoVO implements Serializable {
     private String photoUrl;
 
     /**
-     * 所属户籍ID
+     * 户主姓名
      */
-    private Integer householdId;
+    private String houseHoldHead;
 
     /**
      * 户籍关系
@@ -115,14 +110,19 @@ public class PersonInfoVO implements Serializable {
     private String householdRelation;
 
     /**
-     * 现居地
+     * 房屋编号
+     */
+    private String houseCode;
+
+    /**
+     * 门牌号
      */
-    private String currentAddress;
+    private String doorplateNumber;
 
     /**
-     * 特殊身份编号
+     * 房主姓名
      */
-    private String specialIdentityCode;
+    private String houseOwnerName;
 
     /**
      * 特殊身份

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/mapper/HouseholdInfoMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.entity.HouseholdInfo;
+
+/**
+ * @Entity generator.domain.HouseholdInfo
+ */
+public interface HouseholdInfoMapper extends BaseMapper<HouseholdInfo> {
+
+}
+
+
+
+

+ 1 - 12
app-admin/src/main/java/com/ruoyi/web/mapper/PersonInfoMapper.java

@@ -2,25 +2,14 @@ package com.ruoyi.web.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.web.domain.dto.person.PersonInfoQueryRequest;
 import com.ruoyi.web.domain.entity.PersonInfo;
-import com.ruoyi.web.domain.vo.PersonInfoVO;
 
-import java.util.List;
 
 /**
- * @Entity generator.domain.PersonInfo
+ * @Entity
  */
 public interface PersonInfoMapper extends BaseMapper<PersonInfo> {
 
-    /**
-     * 查询人员信息列表
-     *
-     * @param personInfo 人员信息
-     * @return 人员信息集合
-     */
-    public List<PersonInfo> selectPersonInfoList(PersonInfo personInfo);
-    //List<PersonInfoVO> selectPersonInfoList(PersonInfoQueryRequest personInfoQueryRequest);
 }
 
 

+ 1 - 1
app-admin/src/main/java/com/ruoyi/web/service/HouseInfoService.java

@@ -28,7 +28,7 @@ public interface HouseInfoService extends IService<HouseInfo> {
      * @param houseInfoQueryRequest
      * @return
      */
-    Page<HouseInfo> getListHouseInfoByPage(HouseInfoQueryRequest houseInfoQueryRequest);
+    Page<HouseInfoVO> getListHouseInfoByPage(HouseInfoQueryRequest houseInfoQueryRequest);
 
 
     /**

+ 12 - 0
app-admin/src/main/java/com/ruoyi/web/service/HouseholdInfoService.java

@@ -0,0 +1,12 @@
+package com.ruoyi.web.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.entity.HouseholdInfo;
+
+/**
+ *
+ */
+public interface HouseholdInfoService extends IService<HouseholdInfo> {
+
+}

+ 1 - 1
app-admin/src/main/java/com/ruoyi/web/service/PersonInfoService.java

@@ -26,7 +26,7 @@ public interface PersonInfoService extends IService<PersonInfo> {
      * @param personInfoQueryRequest
      * @return
      */
-    Page<PersonInfo> getListPersonInfoByPage(PersonInfoQueryRequest personInfoQueryRequest);
+    Page<PersonInfoVO> getListPersonInfoByPage(PersonInfoQueryRequest personInfoQueryRequest);
 
 
     /**

+ 23 - 2
app-admin/src/main/java/com/ruoyi/web/service/impl/HouseInfoServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.web.domain.dto.house.HouseInfoQueryRequest;
 import com.ruoyi.web.domain.entity.HouseInfo;
+import com.ruoyi.web.domain.entity.HouseholdInfo;
 import com.ruoyi.web.domain.entity.PersonInfo;
 import com.ruoyi.web.domain.vo.HouseInfoVO;
 import com.ruoyi.web.domain.vo.PersonInfoVO;
@@ -69,12 +70,32 @@ public class HouseInfoServiceImpl extends ServiceImpl<HouseInfoMapper, HouseInfo
      * @return
      */
     @Override
-    public Page<HouseInfo> getListHouseInfoByPage(HouseInfoQueryRequest houseInfoQueryRequest) {
+    public Page<HouseInfoVO> getListHouseInfoByPage(HouseInfoQueryRequest houseInfoQueryRequest) {
         long current = houseInfoQueryRequest.getCurrent();
         long size = houseInfoQueryRequest.getPageSize();
         Page<HouseInfo> houseInfoPage = this.page(new Page<>(current, size),
                 getQueryWrapper(houseInfoQueryRequest));
-        return houseInfoPage;
+
+        // 2. 补充关联数据
+        Page<HouseInfoVO> resultPage = new Page<>();
+        BeanUtils.copyProperties(houseInfoPage, resultPage, "records");
+
+        // 3. 处理每条记录
+        List<HouseInfoVO> viewList = houseInfoPage.getRecords().stream().map(houseInfo -> {
+            // 通过房主id 查询房主信息 填充返回
+            HouseInfoVO houseInfoVO = new HouseInfoVO();
+            BeanUtils.copyProperties(houseInfo, houseInfoVO);
+
+            Integer houseOwnerId = houseInfo.getHouseOwnerId();
+            PersonInfo houseOwnerInfo = personInfoService.getById(houseOwnerId);
+            PersonInfoVO houseOwnerInfoVO = new PersonInfoVO();
+            BeanUtils.copyProperties(houseOwnerInfo, houseOwnerInfoVO);
+
+            houseInfoVO.setHouseOwnerInfo(houseOwnerInfoVO);
+            return houseInfoVO;
+        }).collect(Collectors.toList());
+        resultPage.setRecords(viewList);
+        return resultPage;
     }
 
 

+ 21 - 0
app-admin/src/main/java/com/ruoyi/web/service/impl/HouseholdInfoServiceImpl.java

@@ -0,0 +1,21 @@
+package com.ruoyi.web.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.ruoyi.web.domain.entity.HouseholdInfo;
+import com.ruoyi.web.mapper.HouseholdInfoMapper;
+import com.ruoyi.web.service.HouseholdInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class HouseholdInfoServiceImpl extends ServiceImpl<HouseholdInfoMapper, HouseholdInfo>
+    implements HouseholdInfoService {
+
+}
+
+
+
+

+ 74 - 20
app-admin/src/main/java/com/ruoyi/web/service/impl/PersonInfoServiceImpl.java

@@ -9,13 +9,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.web.domain.dto.person.PersonInfoQueryRequest;
+import com.ruoyi.web.domain.entity.HouseInfo;
+import com.ruoyi.web.domain.entity.HouseholdInfo;
 import com.ruoyi.web.domain.entity.PersonInfo;
+import com.ruoyi.web.mapper.HouseInfoMapper;
 import com.ruoyi.web.mapper.PersonInfoMapper;
+import com.ruoyi.web.service.HouseInfoService;
+import com.ruoyi.web.service.HouseholdInfoService;
 import com.ruoyi.web.service.PersonInfoService;
 import com.ruoyi.web.domain.vo.PersonInfoVO;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -27,8 +34,19 @@ import java.util.stream.Collectors;
 public class PersonInfoServiceImpl extends ServiceImpl<PersonInfoMapper, PersonInfo>
         implements PersonInfoService {
 
+    @Autowired
+    private HouseInfoService houseInfoService;
+
+    @Autowired
+    private  HouseInfoMapper houseInfoMapper;
+
+    @Autowired
+    private HouseholdInfoService householdInfoService;
+
+
     /**
      * 查询人员信息列表
+     *
      * @param personInfoQueryRequest
      * @return
      */
@@ -49,15 +67,55 @@ public class PersonInfoServiceImpl extends ServiceImpl<PersonInfoMapper, PersonI
 
     /**
      * 分页获取人员列表
+     *
      * @param personInfoQueryRequest
      * @return
      */
     @Override
-    public Page<PersonInfo> getListPersonInfoByPage(PersonInfoQueryRequest personInfoQueryRequest) {
+    public Page<PersonInfoVO> getListPersonInfoByPage(PersonInfoQueryRequest personInfoQueryRequest) {
         long current = personInfoQueryRequest.getCurrent();
         long size = personInfoQueryRequest.getPageSize();
-        return this.page(new Page<>(current, size),
+        Page<PersonInfo> personInfoPage = this.page(new Page<>(current, size),
                 getQueryWrapper(personInfoQueryRequest));
+
+        // 2. 补充关联数据
+        Page<PersonInfoVO> resultPage = new Page<>();
+        BeanUtils.copyProperties(personInfoPage, resultPage, "records");
+
+        // 3. 处理每条记录
+        List<PersonInfoVO> viewList = personInfoPage.getRecords().stream().map(personInfo -> {
+            PersonInfoVO personInfoVO = new PersonInfoVO();
+            BeanUtils.copyProperties(personInfo, personInfoVO);
+
+            // 联表查询补充数据
+            if (personInfo.getHouseholdId() != null) {
+                // 查询户籍信息
+                HouseholdInfo household = householdInfoService.getById(personInfo.getHouseholdId());
+                if (household != null) {
+                    //户主姓名
+                    String householdHead = household.getHouseholdHead();
+                    personInfoVO.setHouseHoldHead(householdHead);
+
+                    // 查询房屋信息
+                    if (StrUtil.isNotBlank(household.getHouseCode())) {
+                        HouseInfo house = houseInfoMapper.selectOne(
+                                new QueryWrapper<HouseInfo>()
+                                        .eq("house_code", household.getHouseCode())
+                                        .last("LIMIT 1"));
+                        if (house != null) {
+                            // 房屋编号
+                            personInfoVO.setHouseCode(house.getHouseCode());
+                            // 门牌号
+                            personInfoVO.setDoorplateNumber(house.getDoorplateNumber());
+                        }
+                    }
+                }
+            }
+            return personInfoVO;
+        }).collect(Collectors.toList());
+        resultPage.setRecords(viewList);
+        return resultPage;
+
     }
 
 
@@ -77,35 +135,31 @@ public class PersonInfoServiceImpl extends ServiceImpl<PersonInfoMapper, PersonI
         // 从对象中取值
         Integer id = personInfoQueryRequest.getId();
         String realname = personInfoQueryRequest.getRealname();
-        String idCard = personInfoQueryRequest.getIdCard();
         String ethnic = personInfoQueryRequest.getEthnic();
-        Integer age = personInfoQueryRequest.getAge();
-        Integer gender = personInfoQueryRequest.getGender();
-        Date birthDate = personInfoQueryRequest.getBirthDate();
-        Integer populationCategory = personInfoQueryRequest.getPopulationCategory();
-        String phone = personInfoQueryRequest.getPhone();
-        List<String> populationTags = personInfoQueryRequest.getPopulationTags();
-        String occupationId = personInfoQueryRequest.getOccupationId();
-        Integer villageId = personInfoQueryRequest.getVillageId();
-        String specialIdentityCode = personInfoQueryRequest.getSpecialIdentityCode();
+        String doorplateNumber = personInfoQueryRequest.getDoorplateNumber();
         String specialIdentity = personInfoQueryRequest.getSpecialIdentity();
+        List<String> populationTags = personInfoQueryRequest.getPopulationTags();
         String sortField = personInfoQueryRequest.getSortField();
         String sortOrder = personInfoQueryRequest.getSortOrder();
 
+
         // 姓名、民族、房屋门牌号、特殊身份、人口标签
         queryWrapper.eq(ObjectUtil.isNotEmpty(id), "id", id);
-        queryWrapper.eq(StrUtil.isNotBlank(realname), "realname", realname);
-        queryWrapper.eq(StrUtil.isNotBlank(idCard), "id_card", idCard);
+        queryWrapper.like(StrUtil.isNotBlank(realname), "realname", realname);
         queryWrapper.eq(StrUtil.isNotBlank(ethnic), "ethnic", ethnic);
-        queryWrapper.eq(ObjectUtil.isNotEmpty(age), "age", age);
-        queryWrapper.eq(ObjectUtil.isNotEmpty(gender), "gender", gender);
-        queryWrapper.eq(ObjectUtil.isNotEmpty(populationCategory), "population_category", populationCategory);
-        queryWrapper.eq(StrUtil.isNotBlank(phone), "phone", phone);
-        queryWrapper.eq(StrUtil.isNotBlank(occupationId), "occupation_id", occupationId);
         queryWrapper.eq(StrUtil.isNotBlank(specialIdentity), "special_identity", specialIdentity);
 
+
+        // 门牌号查询人员列表
+        if (StrUtil.isNotBlank(doorplateNumber)) {
+            String subQuery = "SELECT hd.id FROM household_info hd " +
+                    "JOIN house_info hi ON hd.house_code = hi.house_code " +
+                    "WHERE hi.doorplate_number = '" + doorplateNumber + "'";
+            queryWrapper.inSql("household_id", subQuery);
+        }
+
         // 人口标签 JSON 数组查询
-        if(CollUtil.isNotEmpty(populationTags)){
+        if (CollUtil.isNotEmpty(populationTags)) {
             for (String tag : populationTags) {
                 queryWrapper.like("population_tags", "\"" + tag + "\"");
             }

+ 20 - 27
app-admin/src/main/resources/mapper/web/HouseInfoMapper.xml

@@ -5,35 +5,28 @@
 <mapper namespace="com.ruoyi.web.mapper.HouseInfoMapper">
 
     <resultMap id="BaseResultMap" type="com.ruoyi.web.domain.entity.HouseInfo">
-        <id property="id" column="id" jdbcType="INTEGER"/>
-        <result property="houseCode" column="house_code" jdbcType="VARCHAR"/>
-        <result property="villageId" column="village_id" jdbcType="INTEGER"/>
-        <result property="villageName" column="village_name" jdbcType="VARCHAR"/>
-        <result property="doorplateNumber" column="doorplate_number" jdbcType="VARCHAR"/>
-        <result property="houseAddress" column="house_address" jdbcType="VARCHAR"/>
-        <result property="houseOwnerId" column="house_owner_id" jdbcType="INTEGER"/>
-        <result property="totalPoints" column="total_points" jdbcType="INTEGER"/>
-        <result property="remainingPoints" column="remaining_points" jdbcType="INTEGER"/>
-        <result property="houseType" column="house_type" jdbcType="TINYINT"/>
-        <result property="houseCategory" column="house_category" jdbcType="TINYINT"/>
-        <result property="buildingArea" column="building_area" jdbcType="DECIMAL"/>
-        <result property="gridId" column="grid_id" jdbcType="INTEGER"/>
-        <result property="photoUrl" column="photo_url" jdbcType="VARCHAR"/>
-        <result property="houseTags" column="house_tags" jdbcType="VARCHAR"/>
-        <result property="qrCodeUrl" column="qr_code_url" jdbcType="VARCHAR"/>
-        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
-        <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="houseCode" column="house_code" jdbcType="VARCHAR"/>
+            <result property="doorplateNumber" column="doorplate_number" jdbcType="VARCHAR"/>
+            <result property="houseAddress" column="house_address" jdbcType="VARCHAR"/>
+            <result property="houseOwnerId" column="house_owner_id" jdbcType="INTEGER"/>
+            <result property="totalPoints" column="total_points" jdbcType="INTEGER"/>
+            <result property="remainingPoints" column="remaining_points" jdbcType="INTEGER"/>
+            <result property="houseCategory" column="house_category" jdbcType="TINYINT"/>
+            <result property="buildingArea" column="building_area" jdbcType="DECIMAL"/>
+            <result property="grid" column="grid" jdbcType="INTEGER"/>
+            <result property="photoUrl" column="photo_url" jdbcType="VARCHAR"/>
+            <result property="houseTags" column="house_tags" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
-        id
-        ,house_code,village_id,
-        village_name,doorplate_number,house_address,
-        house_owner_id,total_points,remaining_points,
-        house_type,house_category,building_area,
-        grid_id,photo_url,house_tags,
-        qr_code_url,create_time,update_time,
-        del_flag
+        id,house_code,doorplate_number,
+        house_address,house_owner_id,total_points,
+        remaining_points,house_category,building_area,
+        grid,photo_url,house_tags,
+        create_time,update_time,del_flag
     </sql>
 </mapper>

+ 27 - 0
app-admin/src/main/resources/mapper/web/HouseholdInfoMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.mapper.HouseholdInfoMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.web.domain.entity.HouseholdInfo">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="householdCode" column="household_code" jdbcType="VARCHAR"/>
+            <result property="householdHead" column="household_head" jdbcType="VARCHAR"/>
+            <result property="householdHeadIdCard" column="household_head_id_card" jdbcType="VARCHAR"/>
+            <result property="householdType" column="household_type" jdbcType="TINYINT"/>
+            <result property="householdAddress" column="household_address" jdbcType="VARCHAR"/>
+            <result property="belongingArea" column="belonging_area" jdbcType="VARCHAR"/>
+            <result property="houseCode" column="house_code" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,household_code,household_head,
+        household_head_id_card,household_type,household_address,
+        belonging_area,house_code,create_time,
+        update_time,del_flag
+    </sql>
+</mapper>

+ 6 - 11
app-admin/src/main/resources/mapper/web/PersonInfoMapper.xml

@@ -15,9 +15,8 @@
         <result property="populationCategory" column="population_category" jdbcType="TINYINT"/>
         <result property="phone" column="phone" jdbcType="VARCHAR"/>
         <result property="populationTags" column="population_tags" jdbcType="VARCHAR"/>
-        <result property="occupationId" column="occupation_id" jdbcType="VARCHAR"/>
-        <result property="villageId" column="village_id" jdbcType="INTEGER"/>
-        <result property="gridId" column="grid_id" jdbcType="INTEGER"/>
+        <result property="occupation" column="occupation" jdbcType="VARCHAR"/>
+        <result property="grid" column="grid" jdbcType="INTEGER"/>
         <result property="educationLevel" column="education_level" jdbcType="VARCHAR"/>
         <result property="maritalStatus" column="marital_status" jdbcType="TINYINT"/>
         <result property="politicalStatus" column="political_status" jdbcType="VARCHAR"/>
@@ -25,8 +24,6 @@
         <result property="photoUrl" column="photo_url" jdbcType="VARCHAR"/>
         <result property="householdId" column="household_id" jdbcType="INTEGER"/>
         <result property="householdRelation" column="household_relation" jdbcType="VARCHAR"/>
-        <result property="currentAddress" column="current_address" jdbcType="VARCHAR"/>
-        <result property="specialIdentityCode" column="special_identity_code" jdbcType="VARCHAR"/>
         <result property="specialIdentity" column="special_identity" jdbcType="VARCHAR"/>
         <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
         <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
@@ -40,13 +37,11 @@
         ,realname,id_card,
         ethnic,age,gender,
         birth_date,population_category,phone,
-        population_tags,occupation_id,village_id,
-        grid_id,education_level,marital_status,
-        political_status,religion,photo_url,
-        household_id,household_relation,current_address,
-        special_identity_code,special_identity,create_time,
+        population_tags,occupation,grid,
+        education_level,marital_status,political_status,
+        religion,photo_url,household_id,
+        household_relation,special_identity,create_time,
         create_by,update_time,update_by,
         del_flag
     </sql>
-
 </mapper>

+ 94 - 0
sql/sql.sql

@@ -0,0 +1,94 @@
+-- 人员信息表
+CREATE TABLE person_info (
+    id                  INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
+    realname            VARCHAR(50) NOT NULL        COMMENT '姓名',
+    id_card             VARCHAR(18) UNIQUE          COMMENT '身份证号',
+    ethnic              VARCHAR(30)                 COMMENT '民族',
+    age                 TINYINT                     COMMENT '年龄',
+    gender              TINYINT NOT NULL            COMMENT '性别: 1-男, 2-女, 0-未知',
+    birth_date          DATE                        COMMENT '出生日期',
+    population_category TINYINT                     COMMENT '人口类别:0-本村户籍 ,1-非本村户籍',
+    phone               VARCHAR(20)                 COMMENT '电话',
+    population_tags     VARCHAR(1024)               COMMENT '人口标签(标签 json 列表)',
+    occupation          VARCHAR(50)                 COMMENT '职业',
+    grid                INT                         COMMENT '所属网格',
+    education_level     VARCHAR(20)                 COMMENT '文化程度',
+    marital_status      TINYINT                     COMMENT '婚姻状况: 1-未婚, 2-已婚, 3-丧偶, 4-离婚',
+    political_status    VARCHAR(20)                 COMMENT '政治面貌',
+    religion            VARCHAR(30)                 COMMENT '宗教信仰',
+    photo_url           VARCHAR(255)                COMMENT '照片URL',
+    household_id        INT                         COMMENT '所属户籍ID',
+    household_relation  VARCHAR(30)                 COMMENT '户籍关系',
+    special_identity    VARCHAR(100)                COMMENT '特殊身份',
+    create_time         datetime         null comment '创建时间',
+    create_by           varchar(64)      null comment '创建人',
+    update_time         datetime         null comment '修改时间',
+    update_by           varchar(64)      null comment '修改人',
+    del_flag            char default '0' null comment '删除标志',
+    INDEX idx_realname (realname),
+    INDEX idx_ethnic (ethnic),
+    INDEX idx_id_card (id_card),
+    INDEX idx_household (household_id),
+    INDEX idx_special_identity (special_identity)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员信息表';
+
+-- 户籍信息表
+CREATE TABLE household_info (
+    id                    INT PRIMARY KEY AUTO_INCREMENT    COMMENT '户籍ID',
+    household_code        VARCHAR(50) UNIQUE  NOT NULL      COMMENT '户籍编号',
+    household_head          VARCHAR(50) NOT NULL            COMMENT '户主姓名',
+    household_head_id_card  VARCHAR(18)                     COMMENT '户主身份证号',
+    household_type          TINYINT     NOT NULL            COMMENT '户籍类型: 1-农业户口, 2-非农业户口',
+    household_address       VARCHAR(200)                    COMMENT '户籍地址',
+    belonging_area          VARCHAR(200)                    COMMENT '归属地区',
+    house_code            VARCHAR(50)                       COMMENT '房屋编号',
+    create_time     datetime         null comment '创建时间',
+    update_time     datetime         null comment '修改时间',
+    del_flag        char default '0' null comment '删除标志',
+    INDEX idx_household_number (household_code),
+    INDEX idx_household_head (household_head),
+    INDEX idx_house_code (house_code)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='户籍信息表';
+
+-- 房屋信息表
+CREATE TABLE house_info (
+    id          INT    PRIMARY KEY  AUTO_INCREMENT COMMENT '房屋ID',
+    house_code     VARCHAR(20) UNIQUE NOT NULL COMMENT '房屋编号(如FW0000580689)',
+    doorplate_number  VARCHAR(50)           COMMENT '门牌号',
+    house_address     VARCHAR(200)          COMMENT '房屋详细地址',
+    house_owner_id    INT                   COMMENT '房主人员ID',
+    total_points      INT DEFAULT 0         COMMENT '总积分',
+    remaining_points  INT DEFAULT 0         COMMENT '剩余积分',
+    house_category    TINYINT               COMMENT '房屋类别:1-修缮,2-原址重建,3-集中安置',
+    building_area     DECIMAL(10,2)         COMMENT '宅基地面积(㎡)',
+    grid             INT                    COMMENT '所属网格',
+    photo_url         VARCHAR(256)          COMMENT '照片URL',
+    house_tags        VARCHAR(1024)         COMMENT '家庭标签(JSON数组)',
+    create_time       datetime         null comment '创建时间',
+    update_time       datetime         null comment '修改时间',
+    del_flag          char default '0' null comment '删除标志',
+    -- 索引
+    INDEX idx_house_code (house_code),
+    INDEX idx_doorplate (doorplate_number),
+    INDEX idx_owner (house_owner_id),
+    INDEX idx_house_category (house_category),
+    INDEX idx_address (house_address)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房屋信息表';
+
+-- 项目表
+CREATE TABLE projects (
+    id                  INT PRIMARY KEY AUTO_INCREMENT COMMENT '项目ID',
+    project_name        VARCHAR(100) NOT NULL   COMMENT '项目名称',
+    project_description VARCHAR(256)            COMMENT '项目内容',
+    investment_amount   DECIMAL(15,2)           COMMENT '投资金额(元)',
+    start_date          DATE                    COMMENT '项目开始日期',
+    estimated_completion_date   DATE            COMMENT '预计建成日期',
+    actual_completion_date      DATE            COMMENT '实际建成日期',
+    progress                    TINYINT DEFAULT 0 COMMENT '项目进度(0-建设中 1-已建成)',
+    create_time     datetime         null       comment '创建时间',
+    update_time     datetime         null       comment '修改时间',
+    del_flag          char default '0' null comment '删除标志',
+    INDEX idx_progress (progress),
+    INDEX idx_name (project_name),
+    INDEX idx_dates (start_date, estimated_completion_date)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目表';