LIVE_YE 2 months ago
parent
commit
2045c2ab64

+ 10 - 7
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/houseInfo/HouseInfoController.java

@@ -6,10 +6,10 @@ import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.core.domain.model.AjaxResult;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.excel.core.ExcelResult;
-import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.common.excel.utils.ExcelUtils;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
@@ -21,7 +21,6 @@ import org.dromara.domain.houseInfo.HouseInfo;
 import org.dromara.domain.houseInfo.bo.HouseInfoBo;
 import org.dromara.domain.houseInfo.vo.HouseInfoVo;
 import org.dromara.domain.residentInfo.ResidentInfo;
-import org.dromara.listener.HouseInfoImportListener;
 import org.dromara.service.IHouseInfoService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -83,7 +82,9 @@ public class HouseInfoController extends BaseController {
     @PostMapping("/export")
     public void export(HouseInfoBo bo, HttpServletResponse response) {
         List<HouseInfoVo> list = houseInfoService.queryList(bo);
-        ExcelUtil.exportExcel(list, "房屋信息", HouseInfoVo.class, response);
+        list = houseInfoService.queryResidentInfo(list);
+        ExcelUtils<HouseInfoVo> util = new ExcelUtils<HouseInfoVo>(HouseInfoVo.class);
+        util.exportExcel(response, list, "房屋信息数据");
     }
 
     /**
@@ -93,10 +94,12 @@ public class HouseInfoController extends BaseController {
      * @return
      * @throws Exception
      */
+    @SaCheckPermission("wuYe:houseInfo:importData")
     @PostMapping("/importData")
-    public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
-        ExcelResult<HouseInfoVo> result = ExcelUtil.importExcel(file.getInputStream(), HouseInfoVo.class, new HouseInfoImportListener());
-        return R.ok(result.getAnalysis());
+    public AjaxResult importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
+        ExcelUtils<HouseInfoVo> util = new ExcelUtils<HouseInfoVo>(HouseInfoVo.class);
+        List<HouseInfoVo> houseInfoList = util.importExcel(file.getInputStream());
+        return houseInfoService.importHouseInfo(houseInfoList);
     }
 
     /**

+ 2 - 2
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/statistics/StatisticsController.java

@@ -28,7 +28,7 @@ public class StatisticsController {
     /**
      * APP首页统计
      */
-    @SaCheckPermission("wuYe:statistics:num:app")
+    @SaCheckPermission("wuYe:statistics:app")
     @GetMapping("/num/app")
     public R<Map<String, Object>> numApp()
     {
@@ -70,7 +70,7 @@ public class StatisticsController {
     /**
      * todo PC车辆进出统计
      */
-    @SaCheckPermission("wuYe:statistics:num:car")
+    @SaCheckPermission("wuYe:statistics:car")
     @GetMapping("/num/car")
     public AjaxResult numCar()
     {

+ 37 - 20
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/houseInfo/vo/HouseInfoVo.java

@@ -1,15 +1,17 @@
 package org.dromara.domain.houseInfo.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
+import org.dromara.common.excel.annotation.Excel;
+import org.dromara.common.excel.annotation.Excels;
 import org.dromara.domain.houseInfo.HouseInfo;
+import org.dromara.domain.residentInfo.vo.ResidentInfoVo;
 
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -29,111 +31,126 @@ public class HouseInfoVo implements Serializable {
     /**
      * 房屋信息主键,唯一标识每条房屋信息
      */
-    @ExcelProperty(value = "房屋信息主键,唯一标识每条房屋信息")
     private Long houseId;
 
     /**
      * 权利人姓名
      */
-    @ExcelProperty(value = "权利人姓名")
+    @Excel(name = "权利人姓名")
     private String ownerName;
 
     /**
      * 房屋坐落位置
      */
-    @ExcelProperty(value = "房屋坐落位置")
+    @Excel(name = "房屋坐落位置")
     private String location;
 
     /**
      * 权利类型,如所有权、使用权等
      */
-    @ExcelProperty(value = "权利类型,如所有权、使用权等")
+    @Excel(name = "权利类型,如所有权、使用权等")
     private String rightType;
 
     /**
      * 房屋面积,单位为平方米
      */
-    @ExcelProperty(value = "房屋面积,单位为平方米")
+    @Excel(name = "房屋面积,单位为平方米")
     private Long area;
 
     /**
      * 房屋相关的字第号
      */
-    @ExcelProperty(value = "房屋相关的字第号")
+    @Excel(name = "房屋相关的字第号")
     private String documentNumber;
 
     /**
      * 不动产单元号,唯一标识不动产单元
      */
-    @ExcelProperty(value = "不动产单元号,唯一标识不动产单元")
+    @Excel(name = "不动产单元号,唯一标识不动产单元")
     private String propertyUnitNumber;
 
     /**
      * 房屋的共有情况,如共有比例等
      */
-    @ExcelProperty(value = "房屋的共有情况,如共有比例等")
+    @Excel(name = "房屋的共有情况,如共有比例等")
     private String coOwnership;
 
     /**
      * 房屋用途,如住宅、商业等
      */
-    @ExcelProperty(value = "房屋用途,如住宅、商业等")
+    @Excel(name = "房屋用途,如住宅、商业等")
     private String usageType;
 
     /**
      * 房屋使用期限
      */
-    @ExcelProperty(value = "房屋使用期限")
+    @Excel(name = "房屋使用期限")
     private String usagePeriod;
 
     /**
      * 房屋登记日期
      */
-    @ExcelProperty(value = "房屋登记日期")
+    @Excel(name = "房屋登记日期")
     private Date registrationDate;
 
     /**
      * 共有人姓名,多个共有人可以用逗号分隔
      */
-    @ExcelProperty(value = "共有人姓名,多个共有人可以用逗号分隔")
+    @Excel(name = "共有人姓名,多个共有人可以用逗号分隔")
     private String coOwner;
 
     /**
      * 房屋的详细门牌号
      */
-    @ExcelProperty(value = "房屋的详细门牌号")
+    @Excel(name = "房屋的详细门牌号")
     private String detailedAddress;
 
     /**
      * 是否有车位,Y表示有,N表示无
      */
-    @ExcelProperty(value = "是否有车位,Y表示有,N表示无")
+    @Excel(name = "是否有车位",readConverterExp = "Y=有,N=无")
     private String hasParkingSpace;
 
     /**
      * 车位编号
      */
-    @ExcelProperty(value = "车位编号")
+    @Excel(name = "车位编号")
     private String parkingNumber;
 
     /**
      * 房屋所在小区名称
      */
-    @ExcelProperty(value = "房屋所在小区名称")
+    @Excel(name = "房屋所在小区名称")
     private String communityName;
 
     /**
      * 房屋状态:1-自住,2-空闲,3-待售空闲,4-出租
      */
-    @ExcelProperty(value = "房屋状态:1-自住,2-空闲,3-待售空闲,4-出租")
+    @Excel(name = "房屋状态",readConverterExp = "1=自住,2=空闲,3待售空闲,4=出租")
     private Long houseStatus;
 
     /**
      * 备注
      */
-    @ExcelProperty(value = "备注")
+    @Excel(name = "备注")
     private String remark;
 
+
+    /** 房屋住户信息 */
+    @Excels({
+        @Excel(name = "居住人员的详细门牌号", targetAttr = "detailedAddress", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员姓名", targetAttr = "residentName", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员身份证号码", targetAttr = "residentIdCard", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员出生日期", targetAttr = "residentBirthday", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员手机号", targetAttr = "residentPhone", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员性别", targetAttr = "residentGender", readConverterExp = "男=1,女=2", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员与户主的关系", targetAttr = "residentRelationship", type = Excel.Type.IMPORT),
+        @Excel(name = "是否是户主", targetAttr = "isHouseholder", readConverterExp = "是=Y,否=N", type = Excel.Type.IMPORT),
+        @Excel(name = "是否是租户", targetAttr = "isTenant", readConverterExp = "是=Y,否=N", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员工作单位", targetAttr = "residentEmployer", type = Excel.Type.IMPORT),
+        @Excel(name = "居住人员面貌", targetAttr = "residentAppearance", type = Excel.Type.IMPORT)
+    })
+    private List<ResidentInfoVo> residentInfoList;
     /**
      * 房本照片
      */

+ 16 - 2
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/residentInfo/ResidentInfo.java

@@ -1,9 +1,12 @@
 package org.dromara.domain.residentInfo;
 
-import org.dromara.common.tenant.core.TenantEntity;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.dromara.common.excel.annotation.Excel;
+import org.dromara.common.tenant.core.TenantEntity;
 
 import java.io.Serial;
 
@@ -47,51 +50,61 @@ public class ResidentInfo extends TenantEntity {
     /**
      * 居住人员的详细门牌号
      */
+    @Excel(name = "居住人员的详细门牌号")
     private String detailedAddress;
 
     /**
      * 居住人员姓名
      */
+    @Excel(name = "居住人员姓名")
     private String residentName;
 
     /**
      * 居住人员身份证号码,18位
      */
+    @Excel(name = "居住人员身份证号码,18位")
     private String residentIdCard;
 
     /**
      * 居住人员出生日期
      */
+    @Excel(name = "居住人员出生日期")
     private String residentBirthday;
 
     /**
      * 居住人员手机号
      */
+    @Excel(name = "居住人员手机号")
     private String residentPhone;
 
     /**
      * 居住人员性别:1-男,2-女
      */
+    @Excel(name = "居住人员性别:1-男,2-女")
     private Long residentGender;
 
     /**
      * 居住人员与户主的关系,如父子、夫妻等
      */
+    @Excel(name = "居住人员与户主的关系,如父子、夫妻等")
     private String residentRelationship;
 
     /**
      * 是否是户主:Y-是,N-否
      */
+    @Excel(name = "是否是户主:Y-是,N-否")
     private String isHouseholder;
 
     /**
      * 是否是租户:Y-是,N-否
      */
+    @Excel(name = "是否是租户:Y-是,N-否")
     private String isTenant;
 
     /**
      * 居住人员工作单位
      */
+    @Excel(name = "居住人员工作单位")
     private String residentEmployer;
 
     /**
@@ -107,6 +120,7 @@ public class ResidentInfo extends TenantEntity {
     /**
      * 居住人员面貌,如党员、群众等
      */
+    @Excel(name = "居住人员面貌")
     private String residentAppearance;
 
     /**

+ 22 - 22
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/residentInfo/vo/ResidentInfoVo.java

@@ -1,9 +1,9 @@
 package org.dromara.domain.residentInfo.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
+import org.dromara.common.excel.annotation.Excel;
 import org.dromara.domain.houseInfo.HouseInfoRedident;
 import org.dromara.domain.residentInfo.ResidentInfo;
 
@@ -29,7 +29,7 @@ public class ResidentInfoVo implements Serializable {
     /**
      * 居住人员主键,唯一标识每条居住人员信息
      */
-    @ExcelProperty(value = "居住人员主键,唯一标识每条居住人员信息")
+    @Excel(name = "居住人员主键,唯一标识每条居住人员信息")
     private Long residentId;
 
     /**
@@ -45,121 +45,121 @@ public class ResidentInfoVo implements Serializable {
     /**
      * 关联房屋信息表的house_id,标识居住人员所属房屋
      */
-    @ExcelProperty(value = "关联房屋信息表的house_id,标识居住人员所属房屋")
+    @Excel(name = "关联房屋信息表的house_id,标识居住人员所属房屋")
     private Long houseId;
 
     /**
      * 关联sys_user表中user_id
      */
-    @ExcelProperty(value = "关联sys_user表中user_id")
+    @Excel(name = "关联sys_user表中user_id")
     private Long userId;
 
     /**
      * 居住人员的详细门牌号
      */
-    @ExcelProperty(value = "居住人员的详细门牌号")
+    @Excel(name = "居住人员的详细门牌号")
     private String detailedAddress;
 
     /**
      * 居住人员姓名
      */
-    @ExcelProperty(value = "居住人员姓名")
+    @Excel(name = "居住人员姓名")
     private String residentName;
 
     /**
      * 居住人员身份证号码,18位
      */
-    @ExcelProperty(value = "居住人员身份证号码,18位")
+    @Excel(name = "居住人员身份证号码,18位")
     private String residentIdCard;
 
     /**
      * 居住人员出生日期
      */
-    @ExcelProperty(value = "居住人员出生日期")
+    @Excel(name = "居住人员出生日期")
     private String residentBirthday;
 
     /**
      * 居住人员手机号
      */
-    @ExcelProperty(value = "居住人员手机号")
+    @Excel(name = "居住人员手机号")
     private String residentPhone;
 
     /**
      * 居住人员性别:1-男,2-女
      */
-    @ExcelProperty(value = "居住人员性别:1-男,2-女")
+    @Excel(name = "居住人员性别:1-男,2-女")
     private Long residentGender;
 
     /**
      * 居住人员与户主的关系,如父子、夫妻等
      */
-    @ExcelProperty(value = "居住人员与户主的关系,如父子、夫妻等")
+    @Excel(name = "居住人员与户主的关系,如父子、夫妻等")
     private String residentRelationship;
 
     /**
      * 是否是户主:Y-是,N-否
      */
-    @ExcelProperty(value = "是否是户主:Y-是,N-否")
+    @Excel(name = "是否是户主:Y-是,N-否")
     private String isHouseholder;
 
     /**
      * 是否是租户:Y-是,N-否
      */
-    @ExcelProperty(value = "是否是租户:Y-是,N-否")
+    @Excel(name = "是否是租户:Y-是,N-否")
     private String isTenant;
 
     /**
      * 居住人员工作单位
      */
-    @ExcelProperty(value = "居住人员工作单位")
+    @Excel(name = "居住人员工作单位")
     private String residentEmployer;
 
     /**
      * 特殊类型
      */
-    @ExcelProperty(value = "特殊类型")
+    @Excel(name = "特殊类型")
     private String specialType;
 
     /**
      * 爱好字典值多选
      */
-    @ExcelProperty(value = "爱好字典值多选")
+    @Excel(name = "爱好字典值多选")
     private String residentHobby;
 
     /**
      * 居住人员面貌,如党员、群众等
      */
-    @ExcelProperty(value = "居住人员面貌,如党员、群众等")
+    @Excel(name = "居住人员面貌,如党员、群众等")
     private String residentAppearance;
 
     /**
      * 身份证正面
      */
-    @ExcelProperty(value = "身份证正面")
+    @Excel(name = "身份证正面")
     private String idCardFront;
 
     /**
      * 身份证反面
      */
-    @ExcelProperty(value = "身份证反面")
+    @Excel(name = "身份证反面")
     private String idCardBack;
 
     /**
      * 身份证住址
      */
-    @ExcelProperty(value = "身份证住址")
+    @Excel(name = "身份证住址")
     private String idCardAddress;
 
     /**
      * 人脸地址
      */
-    @ExcelProperty(value = "人脸地址")
+    @Excel(name = "人脸地址")
     private String facePhoto;
 
     /**
      * 备注
      */
-    @ExcelProperty(value = "备注")
+    @Excel(name = "备注")
     private String remark;
 
     /**

+ 5 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IHouseInfoService.java

@@ -1,6 +1,7 @@
 package org.dromara.service;
 
 
+import org.dromara.common.core.domain.model.AjaxResult;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.domain.houseInfo.HouseInfo;
@@ -68,4 +69,8 @@ public interface IHouseInfoService {
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    AjaxResult importHouseInfo(List<HouseInfoVo> houseInfoList);
+
+    List<HouseInfoVo> queryResidentInfo(List<HouseInfoVo> list);
 }

+ 53 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/HouseInfoServiceImpl.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.model.AjaxResult;
+import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -12,10 +14,17 @@ import org.dromara.domain.houseInfo.HouseInfo;
 import org.dromara.domain.houseInfo.bo.HouseInfoBo;
 import org.dromara.domain.houseInfo.vo.HouseInfoVo;
 import org.dromara.domain.residentInfo.ResidentInfo;
+import org.dromara.domain.residentInfo.bo.ResidentInfoBo;
+import org.dromara.domain.residentInfo.vo.ResidentInfoVo;
+import org.dromara.domain.residentInfo.ResidentInfo;
 import org.dromara.mapper.HouseInfoMapper;
+import org.dromara.mapper.ResidentInfoMapper;
 import org.dromara.service.IHouseInfoService;
+import org.dromara.service.IResidentInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -31,6 +40,10 @@ import java.util.Map;
 public class HouseInfoServiceImpl implements IHouseInfoService {
 
     private final HouseInfoMapper baseMapper;
+    @Autowired
+    private ResidentInfoMapper residentInfoMapper;
+    @Autowired
+    private IResidentInfoService residentInfoService;
 
     /**
      * 查询房屋信息
@@ -71,6 +84,9 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
         return baseMapper.selectVoList(lqw);
     }
 
+
+
+
     private LambdaQueryWrapper<HouseInfo> buildQueryWrapper(HouseInfoBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<HouseInfo> lqw = Wrappers.lambdaQuery();
@@ -146,4 +162,41 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    @Override
+    public AjaxResult importHouseInfo(List<HouseInfoVo> houseInfoList) {
+        if (houseInfoList == null || houseInfoList.size() < 1) {
+            return AjaxResult.error("当前表格数据为空");
+        }
+        try{
+            for (HouseInfoVo houseInfo : houseInfoList) {
+                HouseInfo add = MapstructUtils.convert(houseInfo, HouseInfo.class);
+                add.setCreateTime(DateUtils.getNowDate());
+                baseMapper.insert(add);
+                List<ResidentInfoVo> residentInfoList = houseInfo.getResidentInfoList();
+                List<ResidentInfo> residentInfos = new ArrayList<>();
+                for (ResidentInfoVo residentInfo : residentInfoList) {
+                    residentInfo.setHouseId(houseInfo.getHouseId());
+                    ResidentInfo residentadd = MapstructUtils.convert(residentInfo, ResidentInfo.class);
+                    residentInfos.add(residentadd);
+                }
+                residentInfoMapper.insertBatch(residentInfos);
+
+            }
+            return AjaxResult.success("导入成功");
+        }catch (Exception e){
+            return AjaxResult.error("导入失败");
+        }
+    }
+
+    @Override
+    public List<HouseInfoVo> queryResidentInfo(List<HouseInfoVo> list) {
+        for (HouseInfoVo houseInfoVo : list) {
+            ResidentInfoBo bo = new ResidentInfoBo();
+            bo.setHouseId(houseInfoVo.getHouseId());
+            List<ResidentInfoVo> residentVoList = residentInfoService.queryList(bo);
+            houseInfoVo.setResidentInfoList(residentVoList);
+        }
+        return list;
+    }
 }