From ed12e6cfcfd07956653138869050064bb9dbd5ce Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Sun, 29 Oct 2023 21:30:18 +0800
Subject: [PATCH] 新增楼盘列表查询接口

---
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml             |   33 ++++
 src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java                         |   30 ++++
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java            |   25 +++
 src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java         |   12 +
 src/main/java/org/springblade/modules/grid/excel/GridExcel.java                                      |   97 +++++++++++++
 src/main/java/org/springblade/modules/doorplateAddress/vo/FuncNode.java                              |   49 ++++++
 src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java |   71 +++++++++
 src/main/java/org/springblade/modules/grid/excel/GridImporter.java                                   |   41 +++++
 src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java    |   17 ++
 src/main/java/org/springblade/modules/grid/service/IGridService.java                                 |   10 +
 src/main/java/org/springblade/modules/grid/controller/GridController.java                            |   16 ++
 11 files changed, 390 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java b/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
index 9bf3a2c..3124b46 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
@@ -121,12 +121,25 @@
 
 	/**
 	 * 根据角色获取功能集合数据
+	 * @param type
 	 * @param roleName
 	 * @return
 	 */
 	@GetMapping("/getFuncList")
-	public R getFuncList(String roleName) {
-		return R.data(doorplateAddressService.getFuncList(roleName));
+	public R getFuncList(Integer type,String roleName) {
+		return R.data(doorplateAddressService.getFuncList(type,roleName));
+	}
+
+	/**
+	 * 获取楼盘相关集合数据
+	 * @param name 名称
+	 * @param code 编号
+	 * @param type 类型 1:社区  2:小区  3:楼栋  4:户室
+	 * @return
+	 */
+	@GetMapping("/getHousesList")
+	public R getHousesList(String name,String code,Integer type) {
+		return R.data(doorplateAddressService.getHousesList(name,code,type));
 	}
 
 
diff --git a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
index 5c0afcf..a1e0956 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
@@ -23,6 +23,7 @@
 import org.springblade.common.node.TreeNode;
 import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity;
 import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVO;
+import org.springblade.modules.doorplateAddress.vo.FuncNode;
 
 import java.util.List;
 import java.util.Map;
@@ -57,4 +58,28 @@
 	 * @return
 	 */
     List<TreeNode> getRegionListByGrouyNei();
+
+	/**
+	 * 根据社区名称查询小区集合
+	 * @param name
+	 * @param code
+	 * @return
+	 */
+    List<TreeNode> getDistrictList(@Param("name") String name,@Param("code") String code);
+
+	/**
+	 * 根据社区名称查询楼栋集合
+	 * @param name
+	 * @param code
+	 * @return
+	 */
+	List<TreeNode> getBuildingList(@Param("name") String name,@Param("code") String code);
+
+	/**
+	 *  查询户室及住户相关信息,单元中包含住户
+	 * @param name
+	 * @param code
+	 * @return
+	 */
+	List<FuncNode> getUnitHouseholdList(@Param("name") String name, @Param("code") String code);
 }
diff --git a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
index 176a8f4..0c6e037 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
@@ -18,5 +18,38 @@
         select nei_name as name from jczz_doorplate_address group by nei_name
     </select>
 
+    <!--根据社区名称查询小区集合-->
+    <select id="getDistrictList" resultType="org.springblade.common.node.TreeNode" >
+        select district_code as id,district_name as name from jczz_doorplate_address
+        where 1=1
+        and nei_name = #{name}
+        and district_name !=''
+        and district_code !=''
+        group by district_code,district_name
+    </select>
+
+    <!--根据社区名称查询楼栋集合-->
+    <select id="getBuildingList" resultType="org.springblade.common.node.TreeNode" >
+        select building_code as id,building_name as name from jczz_doorplate_address
+        where 1=1
+        and district_code = #{code}
+        and building_code !=''
+        and building_name !=''
+        group by building_code,building_name
+        order by building_name
+    </select>
+
+    <!--查询户室及住户相关信息,单元中包含住户-->
+    <select id="getUnitHouseholdList" resultType="org.springblade.modules.doorplateAddress.vo.FuncNode" >
+        select
+        jda.unit_code unitCode,jda.floor,jda.house_name as houseNo,jda.address_code addressCode,
+        jh.name as realName,jh.role_type as roleType
+        from jczz_doorplate_address jda
+        left join
+			(select house_code,name,role_type from jczz_household where role_type = '业主') jh
+		on jda.address_code = jh.house_code
+        where 1=1 and floor != '' and house_name != ''
+        and building_code = #{code}
+    </select>
 
 </mapper>
diff --git a/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java b/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
index aa4de9f..03bca76 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
@@ -40,8 +40,18 @@
 
 	/**
 	 * 根据角色获取功能集合数据
+	 * @param type
 	 * @param roleName
 	 * @return
 	 */
-    Object getFuncList(String roleName);
+    Object getFuncList(Integer type,String roleName);
+
+	/**
+	 * 获取楼盘相关集合数据
+	 * @param name 名称
+	 * @param code 编号
+	 * @param type 类型 1:社区  2:小区  3:楼栋  4:户室
+	 * @return
+	 */
+    Object getHousesList(String name, String code, Integer type);
 }
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 256500d..0e12b3a 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
@@ -25,6 +25,7 @@
 import org.springblade.modules.doorplateAddress.mapper.DoorplateAddressMapper;
 import org.springblade.modules.doorplateAddress.service.IDoorplateAddressService;
 import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVO;
+import org.springblade.modules.doorplateAddress.vo.FuncNode;
 import org.springblade.modules.house.service.IHouseholdLabelService;
 import org.springblade.modules.house.service.IHouseholdService;
 import org.springblade.modules.place.service.IPlaceService;
@@ -34,6 +35,8 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 门牌地址表(总台账数据) 服务实现类
@@ -58,15 +61,16 @@
 
 	/**
 	 * 根据角色获取功能集合数据
+	 * @param type 1:查区域  2:查场所  3:查房屋
 	 * @param roleName
 	 * @return
 	 */
 	@Override
-	public Object getFuncList(String roleName) {
+	public Object getFuncList(Integer type,String roleName) {
 		List<TreeNode> list = new ArrayList<>();
-		if (null!=roleName && !roleName.equals("")) {
+		if (null!=type) {
 			// 如果是网格管理员,系统管理员
-			if (roleName.equals("网格管理员") || roleName.equals("系统管理员")){
+			if (type==1){
 				// 查询街道
 				List<TreeNode> townList = baseMapper.getRegionListByGrouyTwon();
 				// 查询社区
@@ -82,14 +86,14 @@
 				return townList;
 			}
 			// 如果是场所负责人
-			if (roleName.equals("场所负责人")){
+			if (type==2){
 				// 查询场所集合信息
 				list = placeService.selectPlaceNodeList(AuthUtil.getUserId());
 				// 返回
 				return list;
 			}
 			// 如果是居民
-			if (roleName.equals("居民")){
+			if (type==3){
 				// 查询房屋集合信息
 				list = householdService.selectHouseNodeList(AuthUtil.getUserId());
 				// 返回
@@ -98,4 +102,61 @@
 		}
 		return list;
 	}
+
+	/**
+	 * 获取楼盘相关集合数据
+	 * @param name 名称
+	 * @param code 编号
+	 * @param type 类型 1:社区  2:小区  3:楼栋  4:户室
+	 * @return
+	 */
+	@Override
+	public Object getHousesList(String name, String code, Integer type) {
+		List<TreeNode> list = new ArrayList<>();
+		// 查小区,场所
+		if (type==1){
+			// 根据社区名称查询小区集合
+			list  = baseMapper.getDistrictList(name,code);
+		}
+		// 查楼栋,场所
+		if (type==2){
+			// 根据社区名称查询楼栋集合
+			list  = baseMapper.getBuildingList(name,code);
+		}
+		// 查户室
+		if (type==3){
+			// 查询户室及住户相关信息,单元中包含住户
+			return getUnitHouseholdList(name,code);
+		}
+		return list;
+	}
+
+	/**
+	 * 查询户室及住户相关信息,单元中包含住户
+	 * @param name
+	 * @param code
+	 * @return
+	 */
+	private List<FuncNode> getUnitHouseholdList(String name, String code) {
+		List<FuncNode> list = new ArrayList<>();
+		// 查询户室及住户相关信息,单元中包含住户
+		List<FuncNode> funcNodes  = baseMapper.getUnitHouseholdList(name,code);
+		// 处理,先按单元分组,再按楼层分组
+		if (funcNodes.size()>0){
+			Map<String, List<FuncNode>> listMap = funcNodes.stream().collect(Collectors.groupingBy(FuncNode::getFloor));
+			List<FuncNode> funcNodeList  = new ArrayList<>();
+			listMap.forEach((s, temps) -> {
+				FuncNode funcNode = new FuncNode();
+				funcNode.setFloor(s);
+				funcNode.setChildren(temps);
+				funcNodeList.add(funcNode);
+			});
+			FuncNode funcNode = new FuncNode();
+			funcNode.setUnitName("一单元");
+			funcNode.setChildren(funcNodeList);
+			list.add(funcNode);
+		}
+		// 返回
+		return list;
+	}
 }
diff --git a/src/main/java/org/springblade/modules/doorplateAddress/vo/FuncNode.java b/src/main/java/org/springblade/modules/doorplateAddress/vo/FuncNode.java
index ec10c14..ab03acb 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/vo/FuncNode.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/vo/FuncNode.java
@@ -1,4 +1,51 @@
 package org.springblade.modules.doorplateAddress.vo;
 
-public class FuncNode {
+import lombok.Data;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class FuncNode implements Serializable {
+
+	/**
+	 * 单元编号
+	 */
+	private String unitCode;
+
+	/**
+	 * 单元名称
+	 */
+	private String unitName;
+
+	/**
+	 * 楼层
+	 */
+	private String floor;
+
+	/**
+	 * 房间号
+	 */
+	private String houseNo;
+
+	/**
+	 * 门牌地址编码
+	 */
+	private String addressCode;
+
+	/**
+	 * 姓名
+	 */
+	private String realName;
+
+	/**
+	 * 角色
+	 */
+	private String roleType;
+
+	/**
+	 * 子孙节点
+	 */
+	private List<FuncNode> children = new ArrayList<>();
+
 }
diff --git a/src/main/java/org/springblade/modules/grid/controller/GridController.java b/src/main/java/org/springblade/modules/grid/controller/GridController.java
index c847023..9d88641 100644
--- a/src/main/java/org/springblade/modules/grid/controller/GridController.java
+++ b/src/main/java/org/springblade/modules/grid/controller/GridController.java
@@ -23,16 +23,22 @@
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+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.Func;
+import org.springblade.modules.grid.excel.GridExcel;
+import org.springblade.modules.grid.excel.GridImporter;
+import org.springblade.modules.system.excel.UserExcel;
+import org.springblade.modules.system.excel.UserImporter;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.modules.grid.entity.GridEntity;
 import org.springblade.modules.grid.vo.GridVO;
 import org.springblade.modules.grid.wrapper.GridWrapper;
 import org.springblade.modules.grid.service.IGridService;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 网格表 控制器
@@ -120,5 +126,15 @@
 		return R.status(gridService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 导入网格数据
+	 */
+	@PostMapping("/import-grid")
+	public R importGrid(MultipartFile file, Integer isCovered) {
+		GridImporter gridImporter = new GridImporter(gridService, isCovered == 1);
+		ExcelUtil.save(file, gridImporter, GridExcel.class);
+		return R.success("操作成功");
+	}
+
 
 }
diff --git a/src/main/java/org/springblade/modules/grid/excel/GridExcel.java b/src/main/java/org/springblade/modules/grid/excel/GridExcel.java
new file mode 100644
index 0000000..4fc9a16
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/excel/GridExcel.java
@@ -0,0 +1,97 @@
+/*
+ *      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.grid.excel;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+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 lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * UserExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class GridExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	@ColumnWidth(15)
+	@ExcelProperty("租户编号")
+	private String tenantId;
+
+	@ExcelIgnore
+	@ExcelProperty("用户平台")
+	private String userType;
+
+	@ColumnWidth(20)
+	@ExcelProperty("用户平台名称")
+	private String userTypeName;
+
+	@ColumnWidth(15)
+	@ExcelProperty("账户")
+	private String account;
+
+	@ColumnWidth(10)
+	@ExcelProperty("昵称")
+	private String name;
+
+	@ColumnWidth(10)
+	@ExcelProperty("姓名")
+	private String realName;
+
+	@ExcelProperty("邮箱")
+	private String email;
+
+	@ColumnWidth(15)
+	@ExcelProperty("手机")
+	private String phone;
+
+	@ExcelIgnore
+	@ExcelProperty("角色ID")
+	private String roleId;
+
+	@ExcelIgnore
+	@ExcelProperty("部门ID")
+	private String deptId;
+
+	@ExcelIgnore
+	@ExcelProperty("岗位ID")
+	private String postId;
+
+	@ExcelProperty("角色名称")
+	private String roleName;
+
+	@ExcelProperty("部门名称")
+	private String deptName;
+
+	@ExcelProperty("岗位名称")
+	private String postName;
+
+	@ColumnWidth(20)
+	@ExcelProperty("生日")
+	private Date birthday;
+
+}
diff --git a/src/main/java/org/springblade/modules/grid/excel/GridImporter.java b/src/main/java/org/springblade/modules/grid/excel/GridImporter.java
new file mode 100644
index 0000000..d35a839
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/excel/GridImporter.java
@@ -0,0 +1,41 @@
+/*
+ *      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.grid.excel;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springblade.modules.grid.service.IGridService;
+import org.springblade.modules.system.service.IUserService;
+
+import java.util.List;
+
+/**
+ * 网格数据导入类
+ *
+ * @author zhongrj
+ */
+@RequiredArgsConstructor
+public class GridImporter implements ExcelImporter<GridExcel> {
+
+	private final IGridService gridService;
+	private final Boolean isCovered;
+
+	@Override
+	public void save(List<GridExcel> data) {
+		gridService.importGrid(data, isCovered);
+	}
+}
diff --git a/src/main/java/org/springblade/modules/grid/service/IGridService.java b/src/main/java/org/springblade/modules/grid/service/IGridService.java
index 7bfdf1a..9458c6b 100644
--- a/src/main/java/org/springblade/modules/grid/service/IGridService.java
+++ b/src/main/java/org/springblade/modules/grid/service/IGridService.java
@@ -18,9 +18,12 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.modules.grid.entity.GridEntity;
+import org.springblade.modules.grid.excel.GridExcel;
 import org.springblade.modules.grid.vo.GridVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
 
 /**
  * 网格表 服务类
@@ -39,5 +42,10 @@
 	 */
 	IPage<GridVO> selectGridPage(IPage<GridVO> page, GridVO grid);
 
-
+	/**
+	 * 网格数导入
+	 * @param data
+	 * @param isCovered
+	 */
+    void importGrid(List<GridExcel> data, Boolean isCovered);
 }
diff --git a/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java b/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
index e679cfe..184bb9a 100644
--- a/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
+++ b/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
@@ -17,13 +17,22 @@
 package org.springblade.modules.grid.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.modules.grid.entity.GridEntity;
+import org.springblade.modules.grid.excel.GridExcel;
 import org.springblade.modules.grid.vo.GridVO;
 import org.springblade.modules.grid.mapper.GridMapper;
 import org.springblade.modules.grid.service.IGridService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.system.entity.User;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * 网格表 服务实现类
@@ -39,5 +48,24 @@
 		return page.setRecords(baseMapper.selectGridPage(page, grid));
 	}
 
-
+	/**
+	 * 网格数导入
+	 * @param data
+	 * @param isCovered
+	 */
+	@Override
+	public void importGrid(List<GridExcel> data, Boolean isCovered) {
+		List<GridEntity> list = new ArrayList<>();
+		// 遍历
+		for (GridExcel gridExcel : data) {
+			GridEntity gridEntity = Objects.requireNonNull(BeanUtil.copy(gridExcel, GridEntity.class));
+			gridEntity.setCreateUser(AuthUtil.getUserId());
+			gridEntity.setCreateTime(new Date());
+			gridEntity.setUpdateUser(AuthUtil.getUserId());
+			gridEntity.setUpdateTime(new Date());
+			list.add(gridEntity);
+		}
+		// 批量导入
+		saveBatch(list);
+	}
 }

--
Gitblit v1.9.3