From fd418c726d11b80a2e684aca27b3524c51d8f0db Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Fri, 22 Mar 2024 18:47:59 +0800
Subject: [PATCH] 门牌详情查询修改,网格范围绑定处理接口新增

---
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml             |   36 ++++++++++++
 src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java                         |    4 
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java            |   17 +++++
 src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java         |    6 ++
 src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java                       |    2 
 src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml                                     |    3 +
 src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java |   75 +++++++++++++++++++++++-
 src/main/java/org/springblade/modules/grid/mapper/GridMapper.java                                    |    2 
 src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java    |   10 +++
 src/main/java/org/springblade/modules/grid/service/IGridService.java                                 |    3 
 10 files changed, 149 insertions(+), 9 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 c45a1d9..c742ae1 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
@@ -245,6 +245,16 @@
 
 
 	/**
+	 * 网格范围数据处理
+	 * @return
+	 */
+	@GetMapping("/gridRangeDataHandle")
+	public R gridRangeDataHandle(String townName,String communityName){
+		return R.data(doorplateAddressService.gridRangeDataHandle(townName,communityName));
+	}
+
+
+	/**
 	 * 查询场所标准地址数据
 	 * @param doorplateAddressVO
 	 * 查询场所标准地址数据
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 8c08035..bd7e2f0 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
@@ -239,4 +239,21 @@
 	 * @return
 	 */
 	Integer getNotHouseListCount(@Param("townName") String townName);
+
+	/**
+	 * 查询网格范围表未绑定的地址表信息数量
+	 * @param townName
+	 * @return
+	 */
+	Integer getNotBindGridRangeDoorListCount(@Param("townName") String townName,
+											 @Param("communityName") String communityName);
+
+	/**
+	 * 查询所有未匹配的网格范围地址数据
+	 * @param townName
+	 * @param communityName
+	 * @return
+	 */
+	List<DoorplateAddressEntity> getNotBindGridRangeDoorList(@Param("townName") String townName,
+															 @Param("communityName") String communityName);
 }
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 84d4e34..06d6ebc 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
@@ -700,4 +700,40 @@
         </if>
         limit 0,1000
     </select>
+
+    <!--查询网格范围表未绑定的地址表信息数量-->
+    <select id="getNotBindGridRangeDoorListCount" resultType="java.lang.Integer">
+        select count(*) from jczz_doorplate_address jda
+        left join jczz_grid_range jgr on jgr.house_code = jda.address_code
+        where 1=1
+        and jgr.house_code is null
+        <if test="townName!=null and townName!=''">
+            and jda.town_street_name like concat('%',#{townName},'%')
+        </if>
+        <if test="communityName!=null and communityName!=''">
+            and jda.nei_name like concat('%',#{communityName},'%')
+        </if>
+        limit 0,1000
+    </select>
+
+    <!--查询所有未匹配的网格范围地址数据-->
+    <select id="getNotBindGridRangeDoorList" resultType="org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity">
+        select
+        jda.address_code,
+        jda.aoi_code,
+        jda.building_code,
+        jda.x,
+        jda.y
+        from jczz_doorplate_address jda
+        left join jczz_grid_range jgr on jgr.house_code = jda.address_code
+        where 1=1
+        and jgr.house_code is null
+        <if test="townName!=null and townName!=''">
+            and jda.town_street_name like concat('%',#{townName},'%')
+        </if>
+        <if test="communityName!=null and communityName!=''">
+            and jda.nei_name like concat('%',#{communityName},'%')
+        </if>
+        limit 0,1000
+    </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 cbd3556..ad28839 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
@@ -137,4 +137,10 @@
 	 * @return
 	 */
 	List<DoorplateAddressVO> getHouseBuildingCode(String districtId);
+
+	/**
+	 * 网格范围数据处理
+	 * @return
+	 */
+	boolean gridRangeDataHandle(String townName,String communityName);
 }
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 3c5fc89..d22f6a2 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
@@ -29,6 +29,7 @@
 import org.springblade.common.utils.NodeTreeUtil;
 import org.springblade.common.utils.SpringUtils;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.modules.backblast.entity.BackblastPubRecordEntity;
 import org.springblade.modules.category.dto.CategoryDTO;
 import org.springblade.modules.category.service.ICategoryService;
 import org.springblade.modules.community.entity.CommunityEntity;
@@ -42,7 +43,9 @@
 import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVOTree;
 import org.springblade.modules.doorplateAddress.vo.FuncNode;
 import org.springblade.modules.grid.entity.GridEntity;
+import org.springblade.modules.grid.entity.GridRangeEntity;
 import org.springblade.modules.grid.entity.GridmanEntity;
+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.house.entity.HouseEntity;
@@ -59,6 +62,7 @@
 import org.springblade.modules.place.service.IPlaceExtService;
 import org.springblade.modules.place.service.IPlaceService;
 import org.springblade.modules.place.vo.PlaceVO;
+import org.springblade.modules.police.entity.PoliceAffairsGridEntity;
 import org.springblade.modules.police.service.IPoliceAffairsGridService;
 import org.springblade.modules.system.entity.Region;
 import org.springblade.modules.system.service.IRegionService;
@@ -718,7 +722,7 @@
 		if (null != houseParam.getRoleName() && !houseParam.getRoleName().equals("")) {
 			if (houseParam.getRoleName().equals("网格员") && !userId.equals("1726859808689696770")) {
 				// 查询对应的房屋地址code
-				stringList = gridService.getAddressCodeListByUserId(AuthUtil.getUserId());
+				stringList = gridService.getAddressCodeListByUserId(AuthUtil.getUserId(),null);
 			}
 		}
 		return stringList;
@@ -942,9 +946,8 @@
 			if (!Strings.isBlank(doorplateAddress.getRoleName())) {
 				// 判断是否有权限
 				if (doorplateAddress.getRoleName().equals("网格员")) {
-					list = gridService.getAddressCodeListByUserId(AuthUtil.getUserId());
-					boolean contains = list.contains(doorplateAddress.getAddressCode());
-					if (list.size() == 0 || !contains) {
+					list = gridService.getAddressCodeListByUserId(AuthUtil.getUserId(),doorplateAddress.getAddressCode());
+					if (list.size() == 0) {
 						// 无权限
 						doorplateAddressVO.setIsJur(2);
 					} else {
@@ -1037,4 +1040,68 @@
 	public List<DoorplateAddressVO> getHouseBuildingCode(String districtId) {
 		return baseMapper.getHouseBuildingCode(districtId);
 	}
+
+	/**
+	 * 网格范围数据处理
+	 * @return
+	 */
+	@Override
+	public boolean gridRangeDataHandle(String townName,String communityName) {
+		// 查询未匹配的网格范围地址信息
+		// 查询总数
+		Integer count = baseMapper.getNotBindGridRangeDoorListCount(townName,communityName);
+		if (count > 0) {
+			IGridRangeService gridRangeService = SpringUtils.getBean(IGridRangeService.class);
+			int num = count / 1000;
+			for (int i = 0; i <= num + 1; i++) {
+				// 查询所有未匹配的网格范围地址数据
+				List<DoorplateAddressEntity> list = baseMapper.getNotBindGridRangeDoorList(townName,communityName);
+				// 需要新增的网格范围 list
+				List<GridRangeEntity> gridRangeEntityList = new ArrayList<>();
+				// 处理户室数据
+				for (DoorplateAddressEntity doorplateAddressEntity : list) {
+					// 查询是否已存在,存在就插入,不存在则插入
+					QueryWrapper<GridRangeEntity> wrapper = new QueryWrapper<>();
+					wrapper.eq("house_code", doorplateAddressEntity.getAddressCode());
+					GridRangeEntity one = gridRangeService.getOne(wrapper);
+					if (null == one) {
+						GridRangeEntity gridRangeEntity = new GridRangeEntity();
+						gridRangeEntity.setHouseCode(doorplateAddressEntity.getAddressCode());
+						gridRangeEntity.setDistrictCode(doorplateAddressEntity.getAoiCode());
+						gridRangeEntity.setBuilding(doorplateAddressEntity.getBuildingCode());
+						// 设置网格
+						setGridInfo(doorplateAddressEntity,gridRangeEntity);
+						// 加入集合
+						gridRangeEntityList.add(gridRangeEntity);
+					}
+				}
+				// 批量插入
+				gridRangeService.saveBatch(gridRangeEntityList);
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * 设置警格网格信息
+	 * @param doorplateAddressEntity
+	 */
+	public void setGridInfo(DoorplateAddressEntity doorplateAddressEntity,GridRangeEntity gridRangeEntity) {
+		// 根据位置设置网格,警格编号
+//		IPoliceAffairsGridService policeAffairsGridService = SpringUtils.getBean(IPoliceAffairsGridService.class);
+		String point = "'POINT(" + doorplateAddressEntity.getX() + " " + doorplateAddressEntity.getY() + ")'";
+		//点坐标解析网格
+		List<GridEntity> gridEntityList = gridService.spatialAnalysis(point);
+		if (gridEntityList.size()>0){
+			GridEntity gridEntity = gridEntityList.get(0);
+			gridRangeEntity.setGridId(gridEntity.getId());
+			gridRangeEntity.setGridCode(gridEntity.getGridCode());
+		}
+//		//点坐标解析警格
+//		List<PoliceAffairsGridEntity> policeAffairsGridEntityList = policeAffairsGridService.spatialAnalysis(point);
+//		if (policeAffairsGridEntityList.size()>0){
+//			PoliceAffairsGridEntity policeAffairsGridEntity = policeAffairsGridEntityList.get(0);
+//			backblastPubRecord.setJwGridCode(policeAffairsGridEntity.getJwGridCode());
+//		}
+	}
 }
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 b3222f5..fba8db9 100644
--- a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
@@ -62,7 +62,7 @@
 	 * @param userId
 	 * @return
 	 */
-    List<String> getAddressCodeListByUserId(@Param("userId") Long userId);
+    List<String> getAddressCodeListByUserId(@Param("userId") Long userId,@Param("addressCode") String addressCode);
 
 	/**
 	 * 空间分析 mysql 5.7  点落面
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 203853c..ce07dc3 100644
--- a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
@@ -74,6 +74,9 @@
         left join jczz_gridman jgm on jgm.grid_id = jg.id and jgm.is_deleted = 0
         where 1=1
         and jgm.user_id = #{userId}
+        <if test="addressCode!=null and addressCode!=''">
+            and jgr.house_code = #{addressCode}
+        </if>
     </select>
 
     <!--判断该小区点在哪个派出所-->
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 633f345..c116ad2 100644
--- a/src/main/java/org/springblade/modules/grid/service/IGridService.java
+++ b/src/main/java/org/springblade/modules/grid/service/IGridService.java
@@ -62,9 +62,10 @@
 	/**
 	 * 根据用户id(网格员)查询对应的房屋地址code
 	 * @param userId
+	 * @param addressCode 地址编码
 	 * @return
 	 */
-    List<String> getAddressCodeListByUserId(Long userId);
+    List<String> getAddressCodeListByUserId(Long userId,String addressCode);
 
 	/**
 	 * 空间分析
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 abaaffe..7c09a82 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
@@ -142,8 +142,8 @@
 	 * @return
 	 */
 	@Override
-	public List<String> getAddressCodeListByUserId(Long userId) {
-		return baseMapper.getAddressCodeListByUserId(userId);
+	public List<String> getAddressCodeListByUserId(Long userId,String addressCode) {
+		return baseMapper.getAddressCodeListByUserId(userId,addressCode);
 	}
 
 	/**
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 5de078b..1f0442a 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
@@ -214,7 +214,7 @@
 		if (null != houseParam.getRoleName() && !houseParam.getRoleName().equals("")) {
 			if (houseParam.getRoleName().equals("网格员")) {
 				// 查询对应的房屋地址code
-				stringList = gridService.getAddressCodeListByUserId(AuthUtil.getUserId());
+				stringList = gridService.getAddressCodeListByUserId(AuthUtil.getUserId(),null);
 			}
 		}
 		return stringList;

--
Gitblit v1.9.3