From a3dd50443d28d587f49a041b3b1286fbaa5c2ef4 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Fri, 12 Apr 2024 09:55:57 +0800
Subject: [PATCH] 网格员查询调整

---
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml             |   14 +++
 src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java                         |   21 +++++
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java            |    7 +
 src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java         |    2 
 src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml                                 |    2 
 src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml                                     |   44 +++++++++++
 src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java |  109 +++++++++++++++++----------
 src/main/java/org/springblade/modules/grid/mapper/GridMapper.java                                    |   16 ++++
 src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java    |    5 
 src/main/java/org/springblade/modules/grid/service/IGridService.java                                 |   15 +++
 10 files changed, 188 insertions(+), 47 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 60b70aa..886f04d 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
@@ -41,6 +41,7 @@
 import org.springblade.modules.house.vo.HouseParam;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import sun.rmi.runtime.Log;
 
 import java.util.List;
 
@@ -177,9 +178,9 @@
 	 */
 	@GetMapping("/getHouseRentInfo")
 	@ApiLog("查询房屋及出租详情信息")
-	public R getHouseRentInfo(String code) {
+	public R getHouseRentInfo(String code, Long houseId) {
 		bladeLogger.info("获取楼盘相关集合数据", JsonUtil.toJson(code));
-		return R.data(doorplateAddressService.getHouseRentInfo(code));
+		return R.data(doorplateAddressService.getHouseRentInfo(code,houseId));
 	}
 
 	/**
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 bd7e2f0..db50ef8 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
@@ -256,4 +256,11 @@
 	 */
 	List<DoorplateAddressEntity> getNotBindGridRangeDoorList(@Param("townName") String townName,
 															 @Param("communityName") String communityName);
+
+	/**
+	 * 根据房屋id 查询对应的地址信息
+	 * @param houseId
+	 * @return
+	 */
+	DoorplateAddressVO getDoorplateAddressDetailByHouseId(@Param("houseId") Long houseId);
 }
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 af85965..8a4bb5a 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
@@ -5,7 +5,7 @@
     <!--过滤网格数据-->
     <sql id="filterHouseGrid">
         <if test="houseParam.roleName!=null and houseParam.roleName!=''">
-            <if test="houseParam.roleName=='网格员' and houseParam.userId!='1726859808689696770'">
+            <if test="houseParam.roleName=='wgy' and houseParam.userId!='1726859808689696770'">
                 <choose>
                     <when test="list != null and list.size()>0">
                         and address_code in
@@ -26,7 +26,7 @@
     <!--过滤社区数据-->
     <sql id="filterCommunity">
         <if test="houseParam.roleName!=null and houseParam.roleName!=''">
-            <if test="houseParam.roleName=='民警' and houseParam.userId!='1726859808689696770'">
+            <if test="houseParam.roleName=='mj' and houseParam.userId!='1726859808689696770'">
                 <choose>
                     <when test="communityList != null and communityList.size()>0">
                         and nei_code in
@@ -780,4 +780,14 @@
         </if>
         limit 0,1000
     </select>
+
+    <!--查询所有未匹配的网格范围地址数据-->
+    <select id="getDoorplateAddressDetailByHouseId" resultType="org.springblade.modules.doorplateAddress.vo.DoorplateAddressVO">
+        select
+        jda.*
+        from jczz_doorplate_address jda
+        left join jczz_household jh on jh.house_code = jda.address_code and jh.is_deleted = 0
+        where 1=1
+        and jh.id = #{houseId}
+    </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 ad28839..93c9e9d 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
@@ -62,7 +62,7 @@
 	 * @param code 门牌地址编号
 	 * @return
 	 */
-	Object getHouseRentInfo(String code);
+	Object getHouseRentInfo(String code,Long houseId);
 
 	List<DoorplateAddressVOTree> getDoorplateAddressList(String code, String 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 f6bc461..f4b356b 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
@@ -48,6 +48,7 @@
 import org.springblade.modules.grid.service.IGridRangeService;
 import org.springblade.modules.grid.service.IGridService;
 import org.springblade.modules.grid.service.IGridmanService;
+import org.springblade.modules.grid.vo.GridVO;
 import org.springblade.modules.house.entity.HouseEntity;
 import org.springblade.modules.house.entity.UserHouseLabelEntity;
 import org.springblade.modules.house.service.IHouseRentalService;
@@ -247,7 +248,7 @@
 		}
 		if (placeNodeList.size() > 0) {
 			TreeStringNode placeNode = new TreeStringNode();
-			placeNode.setName("场所");
+			placeNode.setName("经营场所");
 			placeNode.setId("2");
 			placeNode.setHasChildren(true);
 			placeNode.setChildren(placeNodeList);
@@ -267,23 +268,27 @@
 	public Object getHousesList(HouseParam houseParam) {
 		List<TreeStringNode> list = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>(2);
+		String roleName = SpringUtils.getRequestParam("roleName");
+		if (!Strings.isBlank(roleName)){
+			houseParam.setRoleName(roleName);
+		}
 		// 获取网格员对应的地址编号集合
-		List<String> stringList = getHouseCodeList(houseParam);
+		List<String> addressCodeList = getHouseCodeList(houseParam);
 		List<String> communityCodeList = getCommunityCodeList(houseParam);
 		// 获取网格员对应的网格信息
 		getGridInfoByGridman(houseParam);
 		// 查小区,场所
 		if (houseParam.getType() == 1) {
 			// 根据社区名称查询小区集合
-			list = baseMapper.getDistrictList(houseParam, stringList, communityCodeList);
+			list = baseMapper.getDistrictList(houseParam, addressCodeList, communityCodeList);
 		}
 		// 查楼栋,街路巷
 		if (houseParam.getType() == 2) {
-			return getBuildLevelData(houseParam, map);
+			return getBuildLevelData(houseParam,addressCodeList, map);
 		}
 		// 查户室
 		if (houseParam.getType() == 3) {
-			return getHouseLevelData(houseParam, map);
+			return getHouseLevelData(houseParam,addressCodeList, map);
 		}
 		return list;
 	}
@@ -294,22 +299,19 @@
 	 * @param houseParam
 	 */
 	private void getGridInfoByGridman(HouseParam houseParam) {
-		if (houseParam.getRoleName().equals("网格员")) {
-			QueryWrapper<GridmanEntity> wrapper = new QueryWrapper<>();
-			wrapper.eq("is_deleted", 0)
-				.eq("user_id", AuthUtil.getUserId());
-			List<GridmanEntity> list = gridmanService.list(wrapper);
-			if (list.size() > 0) {
-				GridmanEntity gridmanEntity = list.get(0);
-				GridEntity gridEntity = gridService.getById(gridmanEntity.getGridId());
-				// 查询居委会
-				Region region = regionService.getById(gridEntity.getCommunityCode());
-				if (null != region) {
-					houseParam.setCommunityName(region.getName());
-				}
-				if (!Strings.isBlank(gridEntity.getGridName())) {
-					houseParam.setGridName(gridEntity.getGridName());
-				}
+		if (houseParam.getRoleName().equals("wgy")) {
+			if (Strings.isBlank(houseParam.getRoleName())){
+				houseParam.setRoleName(SpringUtils.getRequestParam("roleName"));
+			}
+			// 查询网格员的网格编号集合
+			List<String> gridCodeList
+				= SysCache.getGridRegionChildCodesByDeptId(AuthUtil.getDeptId(), null, houseParam.getRoleName());
+			String communityCode = SpringUtils.getRequestParam("communityCode");
+			List<GridVO> list = gridService.getGridListByComAndList(communityCode,gridCodeList);
+			if (list.size()>0){
+				GridVO grid = list.get(0);
+				houseParam.setCommunityName(grid.getCommunityName());
+				houseParam.setGridName(grid.getGridName());
 			}
 		}
 	}
@@ -321,8 +323,7 @@
 	 * @param map
 	 * @return
 	 */
-	private Map<String, Object> getHouseLevelData(HouseParam houseParam, Map<String, Object> map) {
-		List<String> stringList = getHouseCodeList(houseParam);
+	private Map<String, Object> getHouseLevelData(HouseParam houseParam, List<String> stringList,Map<String, Object> map) {
 		// 判断地址类型
 		if (houseParam.getAddressType() == 1) {
 			List<FuncNode> aoiList = new ArrayList<>();
@@ -395,7 +396,7 @@
 	 * @param map
 	 * @return
 	 */
-	private Object getBuildLevelData(HouseParam houseParam, Map<String, Object> map) {
+	private Object getBuildLevelData(HouseParam houseParam,List<String> stringList, Map<String, Object> map) {
 		if (houseParam.getAddressType() == 4) {
 			// 获取网格员对应的网格信息
 			getGridInfoByGridman(houseParam);
@@ -406,7 +407,6 @@
 			// 返回
 			return map;
 		} else {
-			List<String> stringList = getHouseCodeList(houseParam);
 			// 判断 code 长度,如果 code 长度大于 12 则为小区查楼栋/商铺,否则则按社区查街路巷
 			if (houseParam.getCode().length() > 12) {
 				List<TreeStringNode> aoiList = new ArrayList<>();
@@ -625,9 +625,15 @@
 	 * @return
 	 */
 	@Override
-	public Object getHouseRentInfo(String code) {
-		// 先查询门牌信息
-		DoorplateAddressVO doorplateAddressDetailVO = baseMapper.getDoorplateAddressDetailByCode(code);
+	public Object getHouseRentInfo(String code,Long houseId) {
+		DoorplateAddressVO doorplateAddressDetailVO = new DoorplateAddressVO();
+		if (Strings.isBlank(code) && null!=houseId) {
+			// 先查询门牌信息
+			doorplateAddressDetailVO = baseMapper.getDoorplateAddressDetailByHouseId(houseId);
+		}else {
+			// 先查询门牌信息
+			doorplateAddressDetailVO = baseMapper.getDoorplateAddressDetailByCode(code);
+		}
 		if (null != doorplateAddressDetailVO) {
 			// 查询房屋出租情况
 			List<HouseRentalVO> houseRentalVOS = houseRentalService.getHouseRentalListByCode(code);
@@ -708,6 +714,10 @@
 	 */
 	@Override
 	public List<DoorplateAddressVOTree> getHouseTree(HouseParam houseParam) {
+		String roleName = SpringUtils.getRequestParam("roleName");
+		if (!Strings.isBlank(roleName)){
+			houseParam.setRoleName(roleName);
+		}
 		List<String> stringList = getHouseCodeList(houseParam);
 		// 根据社区居委会编号获取对应的小区/楼栋/单元/户室
 		return NodeTreeUtil.getAddressNodeTree(baseMapper.getHouseTree(houseParam, stringList));
@@ -720,16 +730,22 @@
 	 * @return
 	 */
 	private List<String> getHouseCodeList(HouseParam houseParam) {
-		List<String> stringList = new ArrayList<>();
+		List<String> addressCodeList = new ArrayList<>();
 		String userId = AuthUtil.getUserId().toString();
 		houseParam.setUserId(userId);
 		if (null != houseParam.getRoleName() && !houseParam.getRoleName().equals("")) {
-			if (houseParam.getRoleName().equals("网格员") && !userId.equals("1726859808689696770")) {
+			if ((houseParam.getRoleName().equals("wgy") || houseParam.getRoleName().equals("wzcj"))
+				&& !userId.equals("1726859808689696770")) {
+				// 先取对应网格员对应的网格编号集合
+				List<String> gridCodeList
+					= SysCache.getGridRegionChildCodesByDeptId(AuthUtil.getDeptId(), null, houseParam.getRoleName());
 				// 查询对应的房屋地址code
-				stringList = gridService.getAddressCodeListByUserId(AuthUtil.getUserId(),null);
+//				addressCodeList = gridService.getAddressCodeListByUserId(AuthUtil.getUserId(),null);
+				addressCodeList =
+					gridService.getAddressCodeListByGridCodeList(SpringUtils.getRequestParam("communityCode"),gridCodeList);
 			}
 		}
-		return stringList;
+		return addressCodeList;
 	}
 
 	/**
@@ -743,7 +759,7 @@
 		String userId = AuthUtil.getUserId().toString();
 		houseParam.setUserId(userId);
 		if (null != houseParam.getRoleName() && !houseParam.getRoleName().equals("")) {
-			if (houseParam.getRoleName().equals("民警") && !userId.equals("1726859808689696770")) {
+			if (houseParam.getRoleName().equals("mj") && !userId.equals("1726859808689696770")) {
 				// 查询对应社区编号集合
 				stringList = SysCache.getPoliceRegionChildCodesByDeptId(AuthUtil.getDeptId(),null);
 			}
@@ -980,15 +996,26 @@
 			String roleName = SpringUtils.getRequestParam("roleName");
 			if (!Strings.isBlank(roleName)) {
 				// 判断是否有权限
-				if (roleName.equals("wgy")) {
-					list = gridService.getAddressCodeListByUserId(AuthUtil.getUserId(),doorplateAddress.getAddressCode());
-					if (list.size() == 0) {
-						// 无权限
-						doorplateAddressVO.setIsJur(2);
-					} else {
-						doorplateAddressVO.setIsJur(1);
+				if (roleName.equals("wgy") || roleName.equals("wzcj")) {
+					// 无权限
+					doorplateAddressVO.setIsJur(2);
+//					list = gridService.getAddressCodeListByUserId(AuthUtil.getUserId(),doorplateAddress.getAddressCode());
+					list = SysCache.getGridRegionChildCodesByDeptId(AuthUtil.getDeptId(),null,roleName);
+					if (null != list && list.size() > 0) {
+						List<String> arrayList = new ArrayList<>();
+						for (String gridCode : list) {
+							if (gridCode.length()>12) {
+								arrayList.add(gridCode.substring(0, gridCode.length() - 2));
+							}else {
+								arrayList.add(gridCode);
+							}
+						}
+						boolean contains = arrayList.contains(doorplateAddressVO.getNeiCode());
+						if (contains) {
+							doorplateAddressVO.setIsJur(1);
+						}
 					}
-				} else if (roleName.equals("mj")) {
+				}else if (roleName.equals("mj")) {
 					// 无权限
 					doorplateAddressVO.setIsJur(2);
 					// 查询对应的社区code
diff --git a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
index fba8db9..73ddde6 100644
--- a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
@@ -136,4 +136,20 @@
 	 * @return
 	 */
     List<String> getGridListByUserId(@Param("userId") String userId);
+
+	/**
+	 * 查询对应的房屋地址code(更加网格编号集合)
+	 * @param gridCodeList
+	 * @return
+	 */
+	List<String> getAddressCodeListByGridCodeList(@Param("communityCode")String communityCode,@Param("gridCodeList")List<String> gridCodeList);
+
+	/**
+	 * 根据社区编号及网格编号集合查询对应的网格信息
+	 * @param communityCode
+	 * @param gridCodeList
+	 * @return
+	 */
+	List<GridVO> getGridListByComAndList(@Param("communityCode")String communityCode,
+										 @Param("gridCodeList") List<String> gridCodeList);
 }
diff --git a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
index 95a243c..5d3d24a 100644
--- a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
@@ -213,4 +213,48 @@
         and jgm.user_id = #{userId}
     </select>
 
+    <!--查询对应的房屋地址code(更加网格编号集合)-->
+    <select id="getAddressCodeListByGridCodeList" resultType="java.lang.String">
+        select jgr.house_code from jczz_grid_range jgr
+        left join jczz_grid jg on jg.grid_code = jgr.grid_code and jg.is_deleted = 0
+        where 1=1
+        <if test="communityCode!=null and communityCode!=''">
+            and jg.community_code = #{communityCode}
+        </if>
+        <choose>
+            <when test="gridCodeList!=null and gridCodeList.size()>0">
+                and jg.grid_code in
+                <foreach collection="gridCodeList" item="gridCode" separator="," open="(" close=")">
+                     #{gridCode}
+                </foreach>
+            </when>
+            <otherwise>
+                and jg.grid_code in ('')
+            </otherwise>
+        </choose>
+    </select>
+
+    <!--根据社区编号及网格编号集合查询对应的网格信息-->
+    <select id="getGridListByComAndList" resultType="org.springblade.modules.grid.vo.GridVO">
+        select
+        jg.*,br.name as communityName
+        from jczz_grid jg
+        left join blade_region br on jg.community_code = br.code
+        where jg.is_deleted = 0
+        <if test="communityCode!=null and communityCode!=''">
+            and jg.community_code = #{communityCode}
+        </if>
+        <choose>
+            <when test="gridCodeList!=null and gridCodeList.size()>0">
+                and jg.grid_code in
+                <foreach collection="gridCodeList" item="gridCode" separator="," open="(" close=")">
+                     #{gridCode}
+                </foreach>
+            </when>
+            <otherwise>
+                and jgr.house_code in ('')
+            </otherwise>
+        </choose>
+    </select>
+
 </mapper>
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 c116ad2..d6df2d9 100644
--- a/src/main/java/org/springblade/modules/grid/service/IGridService.java
+++ b/src/main/java/org/springblade/modules/grid/service/IGridService.java
@@ -145,4 +145,19 @@
 	 * @return
 	 */
 	List<String> getGridListByUserId(Long userId);
+
+	/**
+	 * 查询对应的房屋地址code(更加网格编号集合)
+	 * @param gridCodeList
+	 * @return
+	 */
+	List<String> getAddressCodeListByGridCodeList(String communityCode, List<String> gridCodeList);
+
+	/**
+	 * 根据社区编号及网格编号集合查询对应的网格信息
+	 * @param communityCode
+	 * @param gridCodeList
+	 * @return
+	 */
+	List<GridVO> getGridListByComAndList(String communityCode, List<String> gridCodeList);
 }
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 7c09a82..b411049 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
@@ -366,4 +366,25 @@
 	public List<String> getGridListByUserId(Long userId) {
 		return baseMapper.getGridListByUserId(userId.toString());
 	}
+
+	/**
+	 * 查询对应的房屋地址code(更加网格编号集合)
+	 * @param gridCodeList
+	 * @return
+	 */
+	@Override
+	public List<String> getAddressCodeListByGridCodeList(String communityCode, List<String> gridCodeList) {
+		return baseMapper.getAddressCodeListByGridCodeList(communityCode,gridCodeList);
+	}
+
+	/**
+	 * 根据社区编号及网格编号集合查询对应的网格信息
+	 * @param communityCode
+	 * @param gridCodeList
+	 * @return
+	 */
+	@Override
+	public List<GridVO> getGridListByComAndList(String communityCode, List<String> gridCodeList) {
+		return baseMapper.getGridListByComAndList(communityCode,gridCodeList);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
index cc2791a..7c32c71 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
@@ -244,7 +244,7 @@
         jg.sort
         FROM blade_region br
         right join jczz_grid jg on jg.community_code = br.village_code and jg.is_deleted = 0
-        where (br.ancestors like concat('%',#{regionCode},'%') or br.code = #{regionCode} or jg.grid_code = '36110200302701')
+        where (br.ancestors like concat('%',#{regionCode},'%') or br.code = #{regionCode} or jg.grid_code = #{regionCode})
         )
     </select>
 

--
Gitblit v1.9.3