From 2661a8170daa9ecc447f8799a862b13ce57255b7 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 20 Nov 2023 14:01:52 +0800
Subject: [PATCH] 房屋人员导入调整
---
src/main/java/org/springblade/modules/house/excel/HouseAndHoldExcel.java | 192 +++++++++++++++++++++++++++
src/main/java/org/springblade/modules/house/excel/HouseAndHoldImporter.java | 40 +++++
src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java | 115 ++++++++++++++++
src/main/java/org/springblade/modules/house/entity/HouseEntity.java | 2
src/main/java/org/springblade/modules/house/service/IHouseService.java | 8 +
src/main/java/org/springblade/modules/house/controller/HouseController.java | 15 ++
src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java | 2
src/main/java/org/springblade/common/excel/ExcelDictConverter.java | 36 ++++
8 files changed, 404 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/springblade/common/excel/ExcelDictConverter.java b/src/main/java/org/springblade/common/excel/ExcelDictConverter.java
index 6fe4f99..8a9dfaf 100644
--- a/src/main/java/org/springblade/common/excel/ExcelDictConverter.java
+++ b/src/main/java/org/springblade/common/excel/ExcelDictConverter.java
@@ -5,6 +5,8 @@
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.github.xiaoymin.knife4j.core.util.StrUtil;
+import org.springblade.common.cache.DictBizCache;
import org.springblade.common.utils.SpringUtils;
import org.springblade.modules.system.entity.DictBiz;
import org.springblade.modules.system.service.IDictBizService;
@@ -32,9 +34,37 @@
return CellDataTypeEnum.STRING;
}
+ /**
+ * 导入excel 解析到java 对象
+ * @param cellData
+ * @param excelContentProperty
+ * @param globalConfiguration
+ * @return
+ * @throws Exception
+ */
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
- return null;
+ // 获取字典类型
+ Field field = excelContentProperty.getField();
+ ExcelDictItemLabel excel = field.getAnnotation(ExcelDictItemLabel.class);
+ String dictType = excel.type();
+ // 为空返回
+ String dictLabel = cellData.getStringValue();
+ if (StrUtil.isBlank(dictLabel)) {
+ return dictLabel;
+ }
+ // 查询字典
+ List<DictBiz> list = DictBizCache.getList(dictType);
+ //解析返回
+ String key = "";
+ for (DictBiz dictBiz : list) {
+ if (dictBiz.getDictValue().equals(dictLabel)){
+ key = dictBiz.getDictKey();
+ break;
+ }
+ }
+ // 返回key
+ return key;
}
/**
@@ -51,13 +81,13 @@
Field field = excelContentProperty.getField();
ExcelDictItem excel = field.getAnnotation(ExcelDictItem.class);
String dictType = excel.type();
- IDictBizService dictBizService = SpringUtils.getBean(IDictBizService.class);
- List<DictBiz> list = dictBizService.getList(dictType);
+ List<DictBiz> list = DictBizCache.getList(dictType);
String value = "";
//解析返回
for (DictBiz dictBiz : list) {
if (dictBiz.getDictKey().equals(dictValue)){
value = dictBiz.getDictValue();
+ break;
}
}
return new CellData(value);
diff --git a/src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java b/src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java
index 32e3943..2f0a741 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java
@@ -530,7 +530,7 @@
houseEntity.setDistrictCode(doorplateAddressEntity.getAoiCode());
houseEntity.setDistrictName(doorplateAddressEntity.getAoiName());
houseEntity.setHouseName(doorplateAddressEntity.getAddressName());
- houseEntity.setFloor(Integer.parseInt(doorplateAddressEntity.getFloor()));
+ houseEntity.setFloor(doorplateAddressEntity.getFloor());
houseEntity.setBuilding(doorplateAddressEntity.getBuildingName());
houseEntity.setUnit(doorplateAddressEntity.getUnitName());
houseEntity.setRoom(doorplateAddressEntity.getHouseName());
diff --git a/src/main/java/org/springblade/modules/house/controller/HouseController.java b/src/main/java/org/springblade/modules/house/controller/HouseController.java
index be0e434..d9c7260 100644
--- a/src/main/java/org/springblade/modules/house/controller/HouseController.java
+++ b/src/main/java/org/springblade/modules/house/controller/HouseController.java
@@ -31,6 +31,8 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.house.excel.HouseAndHoldExcel;
+import org.springblade.modules.house.excel.HouseAndHoldImporter;
import org.springblade.modules.house.excel.HouseImporter;
import org.springblade.modules.house.vo.HouseParam;
import org.springblade.modules.house.excel.HouseExcel;
@@ -172,7 +174,7 @@
/**
* 导入房屋
*/
- @GetMapping("import-house")
+ @PostMapping("import-house")
public R importHouse(MultipartFile file, Integer isCovered) {
HouseImporter houseImporter = new HouseImporter(houseService, isCovered == 1);
ExcelUtil.save(file, houseImporter, HouseExcel.class);
@@ -190,4 +192,15 @@
}
+ /**
+ * 导入房屋及住户/租户人员数据
+ */
+ @PostMapping("import-houseAndHold")
+ public R importHouseAndHold(MultipartFile file, Integer isCovered) {
+ HouseAndHoldImporter houseImporter = new HouseAndHoldImporter(houseService, isCovered == 1);
+ ExcelUtil.save(file, houseImporter, HouseAndHoldExcel.class);
+ return R.success("操作成功");
+ }
+
+
}
diff --git a/src/main/java/org/springblade/modules/house/entity/HouseEntity.java b/src/main/java/org/springblade/modules/house/entity/HouseEntity.java
index 6799987..bb8daf8 100644
--- a/src/main/java/org/springblade/modules/house/entity/HouseEntity.java
+++ b/src/main/java/org/springblade/modules/house/entity/HouseEntity.java
@@ -99,7 +99,7 @@
* 楼层
*/
@ApiModelProperty(value = "楼层")
- private Integer floor;
+ private String floor;
/**
* 幢
*/
diff --git a/src/main/java/org/springblade/modules/house/excel/HouseAndHoldExcel.java b/src/main/java/org/springblade/modules/house/excel/HouseAndHoldExcel.java
new file mode 100644
index 0000000..5e06756
--- /dev/null
+++ b/src/main/java/org/springblade/modules/house/excel/HouseAndHoldExcel.java
@@ -0,0 +1,192 @@
+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.fasterxml.jackson.annotation.JsonFormat;
+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;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * HouseExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class HouseAndHoldExcel implements Serializable {
+
+ private static final long serialVersionUID = 2L;
+
+ /** 门牌地址编码 */
+ @ExcelProperty( "地址编码")
+ private String houseCode;
+
+ /** 房屋名称 */
+ @ExcelProperty( "详细地址")
+ private String houseName;
+
+ /** 小区 */
+ @ExcelProperty( "小区")
+ private String districtName;
+
+ /** 幢 */
+ @ExcelProperty( "幢")
+ private String building;
+
+ /** 单元 */
+ @ExcelProperty( "单元")
+ private String unit;
+
+ /** 楼层 */
+ @ExcelProperty( "楼层")
+ private String floor;
+
+ /** 室 */
+ @ExcelProperty( "室")
+ private String room;
+
+
+ /** 面积 */
+ @ExcelProperty( "面积")
+ private BigDecimal area;
+
+ /** 物业单价 */
+ @ExcelProperty( "物业单价")
+ private BigDecimal propertyPrice;
+
+ /** 服务到期 */
+ @ExcelProperty( "服务到期")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date serviceDue;
+
+ /** 备注 */
+ @ExcelProperty( "备注")
+ private String remark;
+
+ /** 姓名 */
+ @ColumnWidth(15)
+ @ExcelProperty( "姓名")
+ private String name;
+
+ /** 手机号 */
+ @ColumnWidth(15)
+ @ExcelProperty( "手机号")
+ private String phoneNumber;
+
+ /** 角色 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "角色",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "roleType")
+ private String roleType;
+
+ /** 与角色关系(业主,父子,其他) */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "与角色关系",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "roleRelation")
+ private String relationship;
+
+ /** 主要联系人 1:是 0:否 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "主要联系人",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "primaryContactType")
+ private String isPrimaryContact;
+
+ /** 居住状态 1: 是 0:否 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "居住状态",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "residentialStatusType")
+ private String residentialStatus;
+
+ /** 身份证 */
+ @ColumnWidth(15)
+ @ExcelProperty( "身份证")
+ private String idCard;
+
+ /** 港澳台通行证 */
+ @ColumnWidth(15)
+ @ExcelProperty( "港澳台通行证")
+ private String hkmtPass;
+
+ /** 护照 */
+ @ColumnWidth(15)
+ @ExcelProperty( "护照")
+ private String passport;
+
+ /** 民族 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "民族",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "nationType")
+ private String ethnicity;
+
+ /** 学历 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "学历",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "educationType")
+ private String education;
+
+ /** 户籍登记地 */
+ @ColumnWidth(15)
+ @ExcelProperty( "户籍登记地")
+ private String hukouRegistration;
+
+ /** 工作状态 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "工作状态",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "workStatusType")
+ private String workStatus;
+
+ /** 工作单位 */
+ @ColumnWidth(15)
+ @ExcelProperty( "工作单位")
+ private String employer;
+
+ /** 婚姻状态 */
+ @ColumnWidth(15)
+ @ExcelProperty( value = "婚姻状态",converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "marriageStatusType")
+ private String maritalStatus;
+
+ /** 车牌号 */
+ @ColumnWidth(15)
+ @ExcelProperty( "车牌号")
+ private String cardNumber;
+
+// /** 其他联系方式 */
+// @ColumnWidth(15)
+// @ExcelProperty( "其他联系方式")
+// private String otherContact;
+//
+// /** 现居住地址 */
+// @ColumnWidth(15)
+// @ExcelProperty( "现居住地址")
+// private String currentAddress;
+//
+// /** 残疾证 */
+// @ColumnWidth(15)
+// @ExcelProperty( "残疾证")
+// private String disabilityCert;
+//
+// /** 是否党员 1:党员 2:群众 */
+// @ColumnWidth(15)
+// @ExcelProperty( value = "是否党员",converter = ExcelDictConverter.class)
+// @ExcelDictItemLabel(type = "partyEmberType")
+// private Integer partyEmber;
+
+ /** 备注 */
+ @ColumnWidth(15)
+ @ExcelProperty( "备注")
+ private String remarks;
+
+
+}
+
diff --git a/src/main/java/org/springblade/modules/house/excel/HouseAndHoldImporter.java b/src/main/java/org/springblade/modules/house/excel/HouseAndHoldImporter.java
new file mode 100644
index 0000000..10846a3
--- /dev/null
+++ b/src/main/java/org/springblade/modules/house/excel/HouseAndHoldImporter.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.house.excel;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springblade.modules.house.service.IHouseService;
+
+import java.util.List;
+
+/**
+ * 人房数据导入类
+ *
+ * @author Chill
+ */
+@RequiredArgsConstructor
+public class HouseAndHoldImporter implements ExcelImporter<HouseAndHoldExcel> {
+
+ private final IHouseService iHouseService;
+ private final Boolean isCovered;
+
+ @Override
+ public void save(List<HouseAndHoldExcel> data) {
+ iHouseService.importHouseAndHold(data, isCovered);
+ }
+}
diff --git a/src/main/java/org/springblade/modules/house/service/IHouseService.java b/src/main/java/org/springblade/modules/house/service/IHouseService.java
index 8eecfaa..6e21730 100644
--- a/src/main/java/org/springblade/modules/house/service/IHouseService.java
+++ b/src/main/java/org/springblade/modules/house/service/IHouseService.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.house.entity.HouseEntity;
+import org.springblade.modules.house.excel.HouseAndHoldExcel;
import org.springblade.modules.house.vo.HouseParam;
import org.springblade.modules.house.vo.HouseTree;
import org.springblade.modules.house.vo.HouseVO;
@@ -67,4 +68,11 @@
* @return
*/
List<HouseTree> getHouseTree(HouseParam houseParam);
+
+ /**
+ * 人房数据导入
+ * @param data
+ * @param isCovered
+ */
+ void importHouseAndHold(List<HouseAndHoldExcel> data, Boolean isCovered);
}
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
index 35e5bd4..dc5174f 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
@@ -18,11 +18,15 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.logging.log4j.util.Strings;
import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.grid.service.IGridService;
import org.springblade.modules.house.entity.HouseEntity;
+import org.springblade.modules.house.entity.HouseholdEntity;
+import org.springblade.modules.house.excel.HouseAndHoldExcel;
+import org.springblade.modules.house.service.IHouseholdService;
import org.springblade.modules.house.vo.HouseParam;
import org.springblade.modules.house.vo.HouseTree;
import org.springblade.modules.house.vo.HouseVO;
@@ -34,6 +38,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -49,6 +54,9 @@
@Autowired
private IGridService gridService;
+
+ @Autowired
+ private IHouseholdService householdService;
@Override
public IPage<HouseVO> selectHousePage(IPage<HouseVO> page, HouseVO house) {
@@ -132,4 +140,111 @@
}
return stringList;
}
+
+ /**
+ * 人房数据导入
+ * @param data
+ * @param isCovered
+ */
+ @Override
+ public void importHouseAndHold(List<HouseAndHoldExcel> data, Boolean isCovered) {
+ for (HouseAndHoldExcel houseAndHoldExcel : data) {
+ System.out.println("houseAndHoldExcel = " + houseAndHoldExcel);
+ // 保存房屋数据--一个一个插入,防止一个表格中存在多个地址编号相同的数据
+ saveHouseData(houseAndHoldExcel);
+ // 保存住户数据(包含标签)--一个一个插入,防止一个表格中存在多个地址编号相同的数据
+ saveHouseholdData(houseAndHoldExcel);
+ // 保存租户数据
+ }
+ }
+
+ /**
+ * 保存房屋数据
+ * @param houseAndHoldExcel
+ */
+ private void saveHouseholdData(HouseAndHoldExcel houseAndHoldExcel) {
+ // 查询库中是否已存在
+ QueryWrapper<HouseEntity> wrapper = new QueryWrapper<>();
+ wrapper.eq("house_code",houseAndHoldExcel.getHouseCode())
+ .eq("is_deleted",0);
+ HouseEntity one = getOne(wrapper);
+ // 不存在则插入,存在则不操作
+ if (null == one){
+ HouseEntity houseEntity = new HouseEntity();
+ houseEntity.setHouseCode(houseAndHoldExcel.getHouseCode());
+ houseEntity.setHouseName(houseAndHoldExcel.getHouseName());
+ houseEntity.setDistrictName(houseAndHoldExcel.getDistrictName());
+ houseEntity.setUnit(houseAndHoldExcel.getUnit());
+ houseEntity.setFloor(houseAndHoldExcel.getFloor());
+ houseEntity.setRoom(houseAndHoldExcel.getRoom());
+ houseEntity.setBuilding(houseAndHoldExcel.getBuilding());
+ houseEntity.setArea(houseAndHoldExcel.getArea());
+ houseEntity.setPropertyPrice(houseAndHoldExcel.getPropertyPrice());
+ houseEntity.setServiceDue(houseAndHoldExcel.getServiceDue());
+ houseEntity.setRemark(houseAndHoldExcel.getRemark());
+ houseEntity.setCreateTime(new Date());
+ houseEntity.setCreateUser(AuthUtil.getUserId().toString());
+ houseEntity.setUpdateTime(new Date());
+ houseEntity.setUpdateUser(AuthUtil.getUserId().toString());
+ // 新增
+ save(houseEntity);
+ }
+ }
+
+ /**
+ * 保存住户数据
+ * @param houseAndHoldExcel
+ */
+ private void saveHouseData(HouseAndHoldExcel houseAndHoldExcel) {
+ // 查询库中是否已存在
+ QueryWrapper<HouseholdEntity> wrapper = new QueryWrapper<>();
+ wrapper.eq("house_code",houseAndHoldExcel.getHouseCode())
+ .eq("is_deleted",0)
+ .eq("phone_number",houseAndHoldExcel.getPhoneNumber());
+ HouseholdEntity one = householdService.getOne(wrapper);
+ // 不存在则插入,存在则不操作
+ if (null == one){
+ HouseholdEntity householdEntity = new HouseholdEntity();
+ householdEntity.setHouseCode(houseAndHoldExcel.getHouseCode());
+ householdEntity.setName(houseAndHoldExcel.getName());
+ householdEntity.setPhoneNumber(houseAndHoldExcel.getPhoneNumber());
+ if (!Strings.isBlank(houseAndHoldExcel.getRoleType())){
+ householdEntity.setRoleType(Integer.parseInt(houseAndHoldExcel.getRoleType()));
+ }
+ if (!Strings.isBlank(houseAndHoldExcel.getRelationship())){
+ householdEntity.setRelationship(Integer.parseInt(houseAndHoldExcel.getRelationship()));
+ }
+ if (!Strings.isBlank(houseAndHoldExcel.getIsPrimaryContact())){
+ householdEntity.setIsPrimaryContact(Integer.parseInt(houseAndHoldExcel.getIsPrimaryContact()));
+ }
+ if (!Strings.isBlank(houseAndHoldExcel.getResidentialStatus())){
+ householdEntity.setResidentialStatus(Integer.parseInt(houseAndHoldExcel.getResidentialStatus()));
+ }
+ householdEntity.setIdCard(houseAndHoldExcel.getIdCard());
+ householdEntity.setHkmtPass(houseAndHoldExcel.getHkmtPass());
+ householdEntity.setPassport(houseAndHoldExcel.getPassport());
+ if (!Strings.isBlank(houseAndHoldExcel.getEthnicity())){
+ householdEntity.setEthnicity(Integer.parseInt(houseAndHoldExcel.getEthnicity()));
+ }
+ if (!Strings.isBlank(houseAndHoldExcel.getEducation())){
+ householdEntity.setEducation(Integer.parseInt(houseAndHoldExcel.getEducation()));
+ }
+ householdEntity.setHukouRegistration(houseAndHoldExcel.getHukouRegistration());
+ if (!Strings.isBlank(houseAndHoldExcel.getWorkStatus())){
+ householdEntity.setWorkStatus(Integer.parseInt(houseAndHoldExcel.getWorkStatus()));
+ }
+ householdEntity.setEmployer(houseAndHoldExcel.getEmployer());
+ if (!Strings.isBlank(houseAndHoldExcel.getMaritalStatus())){
+ householdEntity.setMaritalStatus(Integer.parseInt(houseAndHoldExcel.getMaritalStatus()));
+ }
+ householdEntity.setCardNumber(houseAndHoldExcel.getCardNumber());
+ householdEntity.setRemark(houseAndHoldExcel.getRemarks());
+ householdEntity.setCreateTime(new Date());
+ householdEntity.setCreateUser(AuthUtil.getUserId());
+ householdEntity.setUpdateTime(new Date());
+ householdEntity.setUpdateUser(AuthUtil.getUserId());
+ // 新增
+ householdService.save(householdEntity);
+ }
+ }
}
--
Gitblit v1.9.3