From dde162ffb34f2cc0ece4ca9cfcd09e2cb42ace6d Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Fri, 17 May 2024 18:13:11 +0800
Subject: [PATCH] 租户导入导出
---
src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.java | 8 +
src/main/java/org/springblade/modules/house/service/impl/HouseTenantServiceImpl.java | 74 +++++++++++-
src/main/java/org/springblade/modules/house/excel/HouseTenantExcel.java | 82 +++++++++++++
src/main/java/org/springblade/modules/house/vo/HouseTenantVO.java | 3
src/main/java/org/springblade/modules/house/controller/HouseTenantController.java | 51 +++++++-
src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.xml | 23 +++
src/main/java/org/springblade/modules/house/service/IHouseTenantService.java | 12 ++
src/main/java/org/springblade/modules/house/excel/ExportHouseTenantExcel.java | 93 +++++++++++++++
8 files changed, 331 insertions(+), 15 deletions(-)
diff --git a/src/main/java/org/springblade/modules/house/controller/HouseTenantController.java b/src/main/java/org/springblade/modules/house/controller/HouseTenantController.java
index 3608b30..3c3d46e 100644
--- a/src/main/java/org/springblade/modules/house/controller/HouseTenantController.java
+++ b/src/main/java/org/springblade/modules/house/controller/HouseTenantController.java
@@ -16,25 +16,33 @@
*/
package org.springblade.modules.house.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
-import org.springblade.core.secure.BladeUser;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.house.entity.HouseTenantEntity;
+import org.springblade.modules.house.excel.ExportHouseTenantExcel;
+import org.springblade.modules.house.excel.HouseTenantExcel;
+import org.springblade.modules.house.excel.ImportHouseholdExcel;
+import org.springblade.modules.house.service.IHouseTenantService;
import org.springblade.modules.house.vo.HouseTenantVO;
import org.springblade.modules.house.wrapper.HouseTenantWrapper;
-import org.springblade.modules.house.service.IHouseTenantService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
/**
* 租户管理 控制器
@@ -122,5 +130,32 @@
return R.status(houseTenantService.removeByIds(Func.toLongList(ids)));
}
+ @GetMapping("downLoadTenantTemplate")
+ @ApiOperationSupport(order = 14)
+ @ApiOperation(value = "导出模板")
+ public void downLoadTenantTemplate(HttpServletResponse response) {
+ List<HouseTenantExcel> list = new ArrayList<>();
+ ExcelUtil.export(response, "租客数据模板", "租客数据表", list, HouseTenantExcel.class);
+ }
+
+ @GetMapping("export-tenant")
+ @ApiOperationSupport(order = 15)
+ @ApiOperation(value = "导出租客")
+ public void exportTenant(HttpServletResponse response) {
+ List<ExportHouseTenantExcel> list = houseTenantService.export();
+ ExcelUtil.export(response, "租客数据" + DateUtil.time(), "租客数据表", list, ExportHouseTenantExcel.class);
+ }
+
+ /**
+ * 导入住户
+ */
+ @PostMapping("import-tenant")
+ @ApiOperationSupport(order = 12)
+ @ApiOperation(value = "导入住户", notes = "传入excel")
+ public R importUser(MultipartFile file, Integer isCovered) {
+ String data = houseTenantService.importUserTenant(ExcelUtil.read(file, HouseTenantExcel.class),isCovered==1);
+ return R.data(200,data,null);
+ }
+
}
diff --git a/src/main/java/org/springblade/modules/house/excel/ExportHouseTenantExcel.java b/src/main/java/org/springblade/modules/house/excel/ExportHouseTenantExcel.java
new file mode 100644
index 0000000..0fed67a
--- /dev/null
+++ b/src/main/java/org/springblade/modules/house/excel/ExportHouseTenantExcel.java
@@ -0,0 +1,93 @@
+package org.springblade.modules.house.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.common.excel.ExcelDictConverter;
+import org.springblade.common.excel.ExcelDictItem;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ExportHouseTenantExcel implements Serializable {
+
+ private static final long serialVersionUID = 2L;
+
+ /**
+ * 出租屋ID
+ */
+ @ExcelProperty(value = "房屋地址")
+ @ColumnWidth(25)
+ private String addressName;
+ /**
+ * 出租屋ID
+ */
+ @ExcelProperty(value = "地址编码")
+ @ColumnWidth(25)
+ private String houseCode;
+ /**
+ * 姓名
+ */
+ @ExcelProperty(value = "姓名")
+ @ColumnWidth(25)
+ private String name;
+ /**
+ * 联系电话
+ */
+ @ExcelProperty(value = "联系电话")
+ @ColumnWidth(25)
+ private String phone;
+ /**
+ * 身份证
+ */
+ @ExcelProperty(value = "身份证")
+ @ColumnWidth(25)
+ private String idCard;
+ /**
+ * 户籍
+ */
+ @ExcelProperty(value = "户籍")
+ @ColumnWidth(25)
+ private String domicile;
+ /**
+ * 工作单位
+ */
+ @ExcelProperty(value = "工作单位")
+ @ColumnWidth(25)
+ private String workUnit;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ @ColumnWidth(25)
+ private String remark;
+
+
+ /** 性别 */
+ @ExcelProperty(value = "性别",converter = ExcelDictConverter.class)
+ @ExcelDictItem(type = "sex")
+ @ColumnWidth(25)
+ private Integer gender;
+
+ /** 民族 */
+ @ExcelProperty(value = "民族",converter = ExcelDictConverter.class)
+ @ExcelDictItem(type = "nationType")
+ private Integer ethnicity;
+
+ /** 创建时间 */
+ @ExcelProperty(value = "创建时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+}
diff --git a/src/main/java/org/springblade/modules/house/excel/HouseTenantExcel.java b/src/main/java/org/springblade/modules/house/excel/HouseTenantExcel.java
new file mode 100644
index 0000000..011d0fe
--- /dev/null
+++ b/src/main/java/org/springblade/modules/house/excel/HouseTenantExcel.java
@@ -0,0 +1,82 @@
+package org.springblade.modules.house.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import org.springblade.common.excel.ExcelDictConverter;
+import org.springblade.common.excel.ExcelDictItem;
+import org.springblade.common.excel.ExcelDictItemLabel;
+
+import java.io.Serializable;
+
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class HouseTenantExcel implements Serializable {
+
+ private static final long serialVersionUID = 2L;
+
+ /**
+ * 出租屋ID
+ */
+ @ExcelProperty(value = "地址编码")
+ @ColumnWidth(25)
+ private String houseCode;
+ /**
+ * 姓名
+ */
+ @ExcelProperty(value = "姓名")
+ @ColumnWidth(25)
+ private String name;
+ /**
+ * 联系电话
+ */
+ @ExcelProperty(value = "联系电话")
+ @ColumnWidth(25)
+ private String phone;
+ /**
+ * 身份证
+ */
+ @ExcelProperty(value = "身份证")
+ @ColumnWidth(25)
+ private String idCard;
+ /**
+ * 户籍
+ */
+ @ExcelProperty(value = "户籍")
+ @ColumnWidth(25)
+ private String domicile;
+ /**
+ * 工作单位
+ */
+ @ExcelProperty(value = "工作单位")
+ @ColumnWidth(25)
+ private String workUnit;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ @ColumnWidth(25)
+ private String remark;
+
+
+ /** 性别 1: 男 0:女 2: 未知 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "性别",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "sex")
+ @ExcelDictItem(type = "sex")
+ private String gender;
+
+ /** 民族 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "民族",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "nationType")
+ @ExcelDictItem(type = "nationType")
+ private String ethnicity;
+
+}
diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.java b/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.java
index 5e384e8..b166abe 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.java
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.java
@@ -18,6 +18,8 @@
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.house.entity.HouseTenantEntity;
+import org.springblade.modules.house.excel.ExportHouseTenantExcel;
+import org.springblade.modules.house.excel.HouseTenantExcel;
import org.springblade.modules.house.vo.HouseTenantVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -46,4 +48,10 @@
* @return
*/
int removeByHousingRentalId(@Param("housingRentalId") Long housingRentalId);
+
+ /**
+ * 导出租客
+ * @return
+ */
+ List<ExportHouseTenantExcel> export();
}
diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.xml b/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.xml
index ff7e231..ebda7c2 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.xml
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.xml
@@ -55,6 +55,29 @@
</where>
</select>
+
+ <select id="export" resultType="org.springblade.modules.house.excel.ExportHouseTenantExcel">
+ SELECT
+ jhr.house_code,
+ jda.address_name,
+ jht.NAME,
+ jht.phone,
+ jht.id_card,
+ jht.domicile,
+ jht.work_unit,
+ jht.remark,
+ jht.gender,
+ jht.ethnicity,
+ jht.create_time
+ FROM
+ jczz_house_tenant jht
+ LEFT JOIN jczz_house_rental jhr ON jht.housing_rental_id = jhr.id
+ LEFT JOIN jczz_doorplate_address jda on jda.address_code=jhr.house_code
+ WHERE
+ jht.is_deleted = 0
+
+ </select>
+
<!--根据租房id删除租户信息-->
<update id="removeByHousingRentalId">
update jczz_house_tenant set is_deleted = 1 where housing_rental_id = #{housingRentalId}
diff --git a/src/main/java/org/springblade/modules/house/service/IHouseTenantService.java b/src/main/java/org/springblade/modules/house/service/IHouseTenantService.java
index af3311a..6afdbdb 100644
--- a/src/main/java/org/springblade/modules/house/service/IHouseTenantService.java
+++ b/src/main/java/org/springblade/modules/house/service/IHouseTenantService.java
@@ -18,9 +18,13 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.house.entity.HouseTenantEntity;
+import org.springblade.modules.house.excel.ExportHouseTenantExcel;
+import org.springblade.modules.house.excel.HouseTenantExcel;
import org.springblade.modules.house.vo.HouseTenantVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
/**
* 租户管理 服务类
@@ -45,4 +49,12 @@
* @return
*/
int removeByHousingRentalId(Long id);
+
+ /**
+ * 导出租客
+ * @return
+ */
+ List<ExportHouseTenantExcel> export();
+
+ String importUserTenant(List<HouseTenantExcel> read, boolean b);
}
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseTenantServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseTenantServiceImpl.java
index 7215c76..b370382 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseTenantServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseTenantServiceImpl.java
@@ -16,14 +16,25 @@
*/
package org.springblade.modules.house.service.impl;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.modules.house.entity.HouseTenantEntity;
-import org.springblade.modules.house.vo.HouseTenantVO;
-import org.springblade.modules.house.mapper.HouseTenantMapper;
-import org.springblade.modules.house.service.IHouseTenantService;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.logging.log4j.util.Strings;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.modules.house.entity.HouseRentalEntity;
+import org.springblade.modules.house.entity.HouseTenantEntity;
+import org.springblade.modules.house.excel.ExportHouseTenantExcel;
+import org.springblade.modules.house.excel.HouseTenantExcel;
+import org.springblade.modules.house.mapper.HouseTenantMapper;
+import org.springblade.modules.house.service.IHouseRentalService;
+import org.springblade.modules.house.service.IHouseTenantService;
+import org.springblade.modules.house.vo.HouseTenantVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
/**
* 租户管理 服务实现类
@@ -34,6 +45,9 @@
@Service
public class HouseTenantServiceImpl extends ServiceImpl<HouseTenantMapper, HouseTenantEntity> implements IHouseTenantService {
+ @Autowired
+ private IHouseRentalService iHouseRentalService;
+
@Override
public IPage<HouseTenantVO> selectHouseTenantPage(IPage<HouseTenantVO> page, HouseTenantVO houseTenant) {
return page.setRecords(baseMapper.selectHouseTenantPage(page, houseTenant));
@@ -41,6 +55,7 @@
/**
* 根据租房id删除租户信息
+ *
* @param id
* @return
*/
@@ -48,4 +63,49 @@
public int removeByHousingRentalId(Long id) {
return baseMapper.removeByHousingRentalId(id);
}
+
+ /**
+ * 导出租客
+ *
+ * @return
+ */
+ @Override
+ public List<ExportHouseTenantExcel> export() {
+ return baseMapper.export();
+ }
+
+ @Override
+ public String importUserTenant(List<HouseTenantExcel> data, boolean b) {
+ List<HouseTenantEntity> HouseTenantList = new ArrayList<>();
+ int totalNum = data.size();
+ int importNum = 0;
+ int updateNum = 0;
+ int errorNum = 0;
+ for (HouseTenantExcel houseHoldExcel : data) {
+ HouseTenantVO houseTenantVO = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseTenantVO.class));
+ HouseRentalEntity houseRentalEntity = iHouseRentalService.getOne(Wrappers.<HouseRentalEntity>lambdaQuery()
+ .eq(HouseRentalEntity::getHouseCode, houseTenantVO.getHouseCode()));
+ if (houseRentalEntity != null) {
+ // 性别
+ if (!Strings.isBlank(houseHoldExcel.getGender())) {
+ houseTenantVO.setGender(Integer.valueOf(houseHoldExcel.getGender()));
+ }
+ houseTenantVO.setHousingRentalId(houseRentalEntity.getId());
+ HouseTenantList.add(houseTenantVO);
+ } else {
+ errorNum++;
+ }
+ }
+ importNum = saveBatch(HouseTenantList) ? HouseTenantList.size() : 0;
+ StringBuilder builder = new StringBuilder("导入完成!");
+ builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,")
+ .append("成功导入 ").append(importNum).append(" 条数据。");
+ // if (updateNum > 0) {
+ // builder.append("其中有 ").append(updateNum).append(" 条数据已存在。");
+ // }
+ if (errorNum > 0) {
+ builder.append("共有 ").append(errorNum).append(" 条数据由于查询不到出租屋信息未导入!");
+ }
+ return builder.toString();
+ }
}
diff --git a/src/main/java/org/springblade/modules/house/vo/HouseTenantVO.java b/src/main/java/org/springblade/modules/house/vo/HouseTenantVO.java
index 87961f0..fa41c84 100644
--- a/src/main/java/org/springblade/modules/house/vo/HouseTenantVO.java
+++ b/src/main/java/org/springblade/modules/house/vo/HouseTenantVO.java
@@ -16,6 +16,7 @@
*/
package org.springblade.modules.house.vo;
+import io.swagger.annotations.ApiModelProperty;
import org.springblade.modules.house.entity.HouseTenantEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
@@ -32,4 +33,6 @@
public class HouseTenantVO extends HouseTenantEntity {
private static final long serialVersionUID = 1L;
+ @ApiModelProperty(value = "地址编码")
+ private String houseCode;
}
--
Gitblit v1.9.3