From bb23575b30f92471f5e92fc65cf1250fdb9d2560 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 28 Feb 2024 11:12:32 +0800
Subject: [PATCH] 地址绑定修改

---
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml             |   62 +++++++++++++++
 src/main/java/org/springblade/modules/place/entity/PlaceEntity.java                                  |    5 +
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java            |    5 +
 src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java         |    1 
 src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java                       |  100 +++++++++++++++++++------
 src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java |   14 ++
 src/main/java/org/springblade/modules/doorplateAddress/vo/DoorplateAddressVO.java                    |    5 +
 src/main/java/org/springblade/modules/place/entity/PlaceDoorEntity.java                              |   27 +++++-
 8 files changed, 185 insertions(+), 34 deletions(-)

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 172f7f8..a3715fc 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
@@ -207,7 +207,10 @@
 	 * @return
 	 */
 	List<DoorplateAddressEntity> getPlaceList(@Param("doorplateAddress") DoorplateAddressVO doorplateAddressVO,
-											  @Param("size")  Integer size);
+											  @Param("size")  Integer size,
+											  @Param("gridCodeList") List<String> gridCodeList,
+											  @Param("regionChildCodesList") List<String> regionChildCodesList,
+											  @Param("isAdministrator") Integer isAdministrator);
 
 	/**
 	 * 查询详情
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 4208aa7..8674027 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
@@ -566,14 +566,72 @@
     <select id="getPlaceList" resultType="org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity">
         select jda.*
         from jczz_doorplate_address jda
+        left join jczz_grid_range jgr on jda.address_code = jgr.house_code
         where 1=1
         and (doorplate_type = '小门牌' or (doorplate_type = '中门牌' and address_level = 1))
         <if test="doorplateAddress.addressName!=null and doorplateAddress.addressName!=''">
-            and address_name like concat('%',#{doorplateAddress.addressName},'%')
+            and jda.address_name like concat('%',#{doorplateAddress.addressName},'%')
         </if>
         <if test="doorplateAddress.poi!=null and doorplateAddress.poi!=''">
-            and poi like concat('%',#{doorplateAddress.poi},'%')
+            and jda.poi like concat('%',#{doorplateAddress.poi},'%')
         </if>
+        <if test="isAdministrator==2">
+            <choose>
+                <when test="doorplateAddress.roleName != null and doorplateAddress.roleName != ''">
+                    <if test="doorplateAddress.roleName=='wgy'">
+                        <choose>
+                            <when test="gridCodeList !=null and gridCodeList.size()>0">
+                                and jgr.grid_code in
+                                <foreach collection="gridCodeList" item="code" open="(" close=")" separator=",">
+                                    #{code}
+                                </foreach>
+                            </when>
+                            <otherwise>
+                                and jgr.grid_code in ('')
+                            </otherwise>
+                        </choose>
+                    </if>
+                    <if test="doorplateAddress.roleName=='mj'">
+                        <choose>
+                            <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                                and jda.nei_code in
+                                <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                    #{code}
+                                </foreach>
+                            </when>
+                            <otherwise>
+                                and jda.nei_code in ('')
+                            </otherwise>
+                        </choose>
+                    </if>
+                </when>
+                <otherwise>
+                    <choose>
+                        <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                            and
+                            (
+                            jgr.grid_code in
+                            <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                #{code}
+                            </foreach>
+                            or
+                            jda.nei_code in
+                            <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                #{code}
+                            </foreach>
+                            )
+                        </when>
+                        <otherwise>
+                            and
+                            (
+                            jgr.grid_code in ('') or jda.nei_code in ('')
+                            )
+                        </otherwise>
+                    </choose>
+                </otherwise>
+            </choose>
+        </if>
+        limit 0,#{size}
     </select>
 
     <!--查询地址表详情-->
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 2edec81..96b2c30 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
@@ -125,6 +125,7 @@
 	/**
 	 * 查询场所标准地址数据
 	 * @param doorplateAddressVO
+	 * @param size
 	 * 查询场所标准地址数据
 	 * @return
 	 */
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 ab71455..f8ef660 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
@@ -23,6 +23,7 @@
 import org.apache.logging.log4j.util.Strings;
 import org.springblade.common.constant.DictConstant;
 import org.springblade.common.node.TreeStringNode;
+import org.springblade.common.param.CommonParamSet;
 import org.springblade.common.utils.ComplexNumberStringComparator;
 import org.springblade.common.utils.NodeTreeUtil;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -940,12 +941,19 @@
 
 	/**
 	 * 查询场所标准地址数据
-	 * @param doorplateAddressVO
+	 * @param doorplateAddress
 	 * @param size
 	 * @return
 	 */
 	@Override
-	public Object getPlaceList(DoorplateAddressVO doorplateAddressVO, Integer size) {
-		return baseMapper.getPlaceList(doorplateAddressVO,size);
+	public Object getPlaceList(DoorplateAddressVO doorplateAddress, Integer size) {
+		// 公共参数设置
+		CommonParamSet commonParamSet = new CommonParamSet().invoke(DoorplateAddressVO.class,doorplateAddress);
+		return baseMapper.getPlaceList(doorplateAddress,
+			null==size?10:size,
+			commonParamSet.getGridCodeList(),
+			commonParamSet.getRegionChildCodesList(),
+			commonParamSet.getIsAdministrator()
+			);
 	}
 }
diff --git a/src/main/java/org/springblade/modules/doorplateAddress/vo/DoorplateAddressVO.java b/src/main/java/org/springblade/modules/doorplateAddress/vo/DoorplateAddressVO.java
index 1430d3e..50574a1 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/vo/DoorplateAddressVO.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/vo/DoorplateAddressVO.java
@@ -41,5 +41,10 @@
 	 */
 	private Integer isJur;
 
+	/**
+	 * 社区编号
+	 */
+	private String communityCode;
+
 
 }
diff --git a/src/main/java/org/springblade/modules/place/entity/PlaceDoorEntity.java b/src/main/java/org/springblade/modules/place/entity/PlaceDoorEntity.java
index 078115b..71bdc18 100644
--- a/src/main/java/org/springblade/modules/place/entity/PlaceDoorEntity.java
+++ b/src/main/java/org/springblade/modules/place/entity/PlaceDoorEntity.java
@@ -16,9 +16,8 @@
  */
 package org.springblade.modules.place.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Data;
@@ -26,8 +25,10 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.EqualsAndHashCode;
 import org.springblade.core.tenant.mp.TenantEntity;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 场所门牌关联表 实体类
@@ -58,6 +59,24 @@
 	 * 门牌地址编号
 	 */
 	@ApiModelProperty(value = "门牌地址编号")
-	private Long houseCode;
+	private String houseCode;
+
+	/**
+	 * 创建时间
+	 */
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty("创建时间")
+	@TableField(fill = FieldFill.INSERT)
+	private Date createTime;
+
+	/**
+	 * 更新时间
+	 */
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty("更新时间")
+	@TableField(fill = FieldFill.INSERT_UPDATE)
+	private Date updateTime;
 
 }
diff --git a/src/main/java/org/springblade/modules/place/entity/PlaceEntity.java b/src/main/java/org/springblade/modules/place/entity/PlaceEntity.java
index a8970c8..f24e4ec 100644
--- a/src/main/java/org/springblade/modules/place/entity/PlaceEntity.java
+++ b/src/main/java/org/springblade/modules/place/entity/PlaceEntity.java
@@ -56,6 +56,11 @@
 	 */
 	@ApiModelProperty(value = "门牌地址编码")
 	private String houseCode;
+	/**
+	 * 门牌地址编码绑定
+	 */
+	@ApiModelProperty(value = "门牌地址编码绑定")
+	private String houseCodeBinds;
 
 	/**
 	 * 楼栋编码
diff --git a/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java b/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
index 910effd..af67476 100644
--- a/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
+++ b/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -20,6 +20,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import liquibase.pro.packaged.W;
 import liquibase.repackaged.org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.util.Strings;
 import org.springblade.common.cache.SysCache;
@@ -27,6 +28,7 @@
 import org.springblade.common.param.CommonParamSet;
 import org.springblade.common.utils.IdUtils;
 import org.springblade.common.utils.SpringUtils;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.SpringUtil;
@@ -46,14 +48,11 @@
 import org.springblade.modules.place.excel.NinePlaceExcel;
 import org.springblade.modules.place.excel.PlaceAndRelExcel;
 import org.springblade.modules.place.excel.PlaceExcel;
-import org.springblade.modules.place.service.IPlaceExtService;
-import org.springblade.modules.place.service.IPlacePoiLabelService;
-import org.springblade.modules.place.service.IPlaceRelService;
+import org.springblade.modules.place.service.*;
 import org.springblade.modules.place.vo.PlaceCheckVO;
 import org.springblade.modules.place.vo.PlacePoiLabelVO;
 import org.springblade.modules.place.vo.PlaceVO;
 import org.springblade.modules.place.mapper.PlaceMapper;
-import org.springblade.modules.place.service.IPlaceService;
 import org.springblade.modules.police.entity.PoliceAffairsGridEntity;
 import org.springblade.modules.police.service.IPoliceAffairsGridService;
 import org.springblade.modules.system.entity.Dept;
@@ -90,6 +89,9 @@
 
 	@Autowired
 	private IPlaceRelService placeRelService;
+
+	@Autowired
+	private IPlaceDoorService placeDoorService;
 
 	@Autowired
 	private IDoorplateAddressService doorplateAddressService;
@@ -174,6 +176,8 @@
 			bindUserHandle(placeVO);
 			// 设置完善状态
 			setPlaceStatus(placeVO);
+			// 房屋编号绑定处理
+//			houseCodeBindHandle(placeVO);
 			// 更新场所信息
 			flag = updateById(placeVO);
 		} else {
@@ -203,8 +207,6 @@
 		gridCodeBind(placeVO);
 		// 警务网格绑定
 		jwGridCodeBind(placeVO);
-		// 房屋编号绑定
-//		houseCodeBind(placeVO);
 		// 返回结果
 		return flag;
 	}
@@ -282,18 +284,54 @@
 	}
 
 	/**
-	 * 房屋绑定
+	 * 房屋绑定处理
 	 *
 	 * @param placeVO
 	 */
-	public void houseCodeBind(PlaceVO placeVO) {
-		String houseCode = placeVO.getHouseCode();
-		List<String> list = Arrays.asList(houseCode.split(","));
-		if (list.size() > 1) {
-			// 处理对应的绑定房屋数据
-			List<Long> longs = new ArrayList<>();
-			// 把其他单个的场所数据删除
-			for (String code : list) {
+	public void houseCodeBindHandle(PlaceVO placeVO) {
+		List<String> list = Arrays.asList(placeVO.getHouseCodeBinds().split(","));
+		// 先删除原有的绑定
+		QueryWrapper<PlaceDoorEntity> removeQw = new QueryWrapper<>();
+		removeQw.eq("place_id",placeVO.getId());
+		// 删除
+		placeDoorService.remove(removeQw);
+		// 遍历更新
+		for (String houseCode : list) {
+			// 查询是否已存在关联关系
+			QueryWrapper<PlaceDoorEntity> wrapper = new QueryWrapper<>();
+			wrapper.eq("house_code",houseCode);
+			// 查询
+			List<PlaceDoorEntity> placeDoorEntityList = placeDoorService.list(wrapper);
+			if (placeDoorEntityList.size()>0){
+				// 该houseCode 已被绑定
+//				errorList.add(houseCode);
+				for (PlaceDoorEntity placeDoorEntity : placeDoorEntityList) {
+					placeDoorEntity.setPlaceId(placeVO.getId());
+					// 更新
+					placeDoorService.updateById(placeDoorEntity);
+				}
+			}else {
+				PlaceDoorEntity placeDoorEntity = new PlaceDoorEntity();
+				placeDoorEntity.setHouseCode(houseCode);
+				placeDoorEntity.setPlaceId(placeVO.getId());
+				// 对应插入到关联关系表中
+				placeDoorService.save(placeDoorEntity);
+			}
+		}
+		// 处理原场所表houseCode 绑定数据
+		handlePlaceOne(list,placeVO);
+	}
+
+	/**
+	 * 处理对应的绑定房屋数据
+	 * @param list
+	 */
+	public void handlePlaceOne(List<String> list,PlaceVO place) {
+		// 处理对应的绑定房屋数据
+		List<Long> longs = new ArrayList<>();
+		// 把其他单个的场所数据删除
+		for (String code : list) {
+			if (!code.equals(place.getHouseCode())) {
 				// 先查询对应的场所id
 				QueryWrapper<PlaceEntity> wrapper = new QueryWrapper<>();
 				wrapper.eq("house_code", code).eq("is_deleted", 0);
@@ -304,15 +342,14 @@
 					removeById(one.getId());
 				}
 			}
-			if (longs.size() > 0) {
-				// 删除对应的详情
-				removePlaceExt(longs);
-				// 删除对应的标签绑定信息
-				removePlaceLabel(longs);
-			}
-		} else {
-			// 一对一,暂时不处理,后续考虑需加绑定关系表
-
+		}
+		if (longs.size() > 0) {
+			// 删除对应的详情
+			removePlaceExt(longs);
+			// 删除对应的标签绑定信息
+			removePlaceLabel(longs);
+			// 删除对应的场所门牌绑定关系信息
+			removePlaceDoor(longs);
 		}
 	}
 
@@ -1131,6 +1168,8 @@
 		removePlaceExt(longs);
 		// 删除对应的标签绑定信息
 		removePlaceLabel(longs);
+		// 删除对应的门牌绑定信息
+		removePlaceDoor(longs);
 		// 返回
 		return removeByIds;
 	}
@@ -1211,6 +1250,19 @@
 	}
 
 	/**
+	 * 删除对应的门牌绑定信息
+	 *
+	 * @param longs
+	 */
+	public void removePlaceDoor(List<Long> longs) {
+		for (Long id : longs) {
+			QueryWrapper<PlaceDoorEntity> wrapper = new QueryWrapper<>();
+			wrapper.eq("place_id", id);
+			placeDoorService.remove(wrapper);
+		}
+	}
+
+	/**
 	 * 九小场所档案
 	 *
 	 * @param page

--
Gitblit v1.9.3