From 54cfc5505931c5e7d8892222d2095a45b8eac8ed Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 06 Dec 2023 18:07:04 +0800
Subject: [PATCH] 房屋数据处理修改,场所新增,修改调整,详情查询修改

---
 src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml                                |    1 
 src/main/java/org/springblade/common/utils/IdUtils.java                                              |   21 +++++
 src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml             |   12 +-
 src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java         |    4 
 src/main/java/org/springblade/modules/place/service/IPlaceService.java                               |   11 ++
 src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java                       |  107 +++++++++++++++++++++-----
 src/main/java/org/springblade/modules/house/entity/HouseEntity.java                                  |    6 +
 src/main/java/org/springblade/modules/place/controller/PlaceController.java                          |   18 ++++
 src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java |   10 +-
 src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java    |    6 
 src/main/java/org/springblade/modules/category/controller/CategoryLabelController.java               |    8 ++
 src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml                                   |    6 +
 12 files changed, 169 insertions(+), 41 deletions(-)

diff --git a/src/main/java/org/springblade/common/utils/IdUtils.java b/src/main/java/org/springblade/common/utils/IdUtils.java
new file mode 100644
index 0000000..4494c96
--- /dev/null
+++ b/src/main/java/org/springblade/common/utils/IdUtils.java
@@ -0,0 +1,21 @@
+package org.springblade.common.utils;
+
+import java.util.UUID;
+
+public class IdUtils {
+
+	/**
+	 * 随机生成36位id
+	 * @return
+	 */
+	public static String getIdBy36(){
+		//生成uuid
+		String randomId = UUID.randomUUID().toString();
+		String trim = randomId.replaceAll("-", "");
+		//再拼接4位
+		long l = System.currentTimeMillis();
+		String time = String.valueOf(l);
+		String subTime = time.substring(time.length() - 4);
+		return trim + subTime;
+	}
+}
diff --git a/src/main/java/org/springblade/modules/category/controller/CategoryLabelController.java b/src/main/java/org/springblade/modules/category/controller/CategoryLabelController.java
index 828df66..974c0b3 100644
--- a/src/main/java/org/springblade/modules/category/controller/CategoryLabelController.java
+++ b/src/main/java/org/springblade/modules/category/controller/CategoryLabelController.java
@@ -122,5 +122,13 @@
 		return R.status(categoryLabelService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 场所标签临时表 分页
+	 */
+	@GetMapping("/getAllList")
+	public R getAllList(CategoryLabelVO categoryLabel) {
+		return R.data(categoryLabelService.list());
+	}
+
 
 }
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 78092f9..737af5f 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/controller/DoorplateAddressController.java
@@ -200,12 +200,12 @@
 	}
 
 	/**
-	 * 数据处理
+	 * 房屋数据处理
 	 * @return
 	 */
-	@GetMapping("/dataHandle")
+	@GetMapping("/houseDataHandle")
 	public R dataHandle(){
-		return R.data(doorplateAddressService.dataHandle());
+		return R.data(doorplateAddressService.houseDataHandle());
 	}
 
 	/**
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 9328afa..e3e4eb5 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
+++ b/src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
@@ -346,11 +346,11 @@
 
     <!--查询所有户室数据-->
     <select id="getHouseList" resultType="org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity">
-        select * from jczz_doorplate_address
-        where 1=1 and doorplate_type = '户室牌'
-        and address_code not in (
-            select house_code from jczz_house
-        )
+        select jda.* from jczz_doorplate_address jda
+        left join jczz_house jh on jh.house_code = jda.address_code
+        where 1=1
+        and jh.house_code is null
+        and doorplate_type = '户室牌'
     </select>
 
     <!--查询商超-->
@@ -427,7 +427,7 @@
         where 1=1
         and jp.house_code is null
         and (doorplate_type = '小门牌' or (doorplate_type = '中门牌' and address_level = 1))
-        union all
+        union
         (
         select jda.* from jczz_doorplate_address jda
         left join jczz_place jp on jp.house_code = jda.address_code and jp.is_deleted =0
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 8a7ad97..07577f6 100644
--- a/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
+++ b/src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
@@ -94,10 +94,10 @@
 	List<DoorplateAddressVOTree> getHouseTree(HouseParam houseParam);
 
 	/**
-	 * 数据处理
+	 * 房屋数据处理
 	 * @return
 	 */
-    Object dataHandle();
+    Object houseDataHandle();
 
 	/**
 	 * 小区数据处理
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 fe626fd..798ed95 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
@@ -586,12 +586,12 @@
 	}
 
 	/**
-	 * 数据处理
+	 * 房屋数据处理
 	 * @return
 	 */
 	@Override
-	public Object dataHandle() {
-		// 处理户室数据
+	public Object houseDataHandle() {
+		// 处理房屋数据
 		handleHouseData();
 
 		return null;
@@ -601,7 +601,7 @@
 	 * 处理房屋数据
 	 */
 	private void handleHouseData() {
-		// 查询所有户室数据
+		// 查询所有户室数据(未入库的)
 		List<DoorplateAddressEntity> list = baseMapper.getHouseList();
 		// 需要新增的房屋 list
 		List<HouseEntity> houseList = new ArrayList<>();
@@ -627,6 +627,8 @@
 				houseEntity.setCreateTime(new Date());
 				houseEntity.setUpdateUser(AuthUtil.getUserId().toString());
 				houseEntity.setUpdateTime(new Date());
+				// 设置来源 1:地址总表  2:国控采集
+				houseEntity.setSource(1);
 				// 加入集合
 				houseList.add(houseEntity);
 			}
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 25986b1..00dd5ab 100644
--- a/src/main/java/org/springblade/modules/house/entity/HouseEntity.java
+++ b/src/main/java/org/springblade/modules/house/entity/HouseEntity.java
@@ -132,6 +132,12 @@
 	private Integer gridId;
 
 	/**
+	 * 来源 1:地址总表  2:国控采集
+	 */
+	@ApiModelProperty(value = "来源 1:地址总表  2:国控采集")
+	private Integer source;
+
+	/**
 	 * 创建人
 	 */
 	@JsonSerialize(using = ToStringSerializer.class)
diff --git a/src/main/java/org/springblade/modules/place/controller/PlaceController.java b/src/main/java/org/springblade/modules/place/controller/PlaceController.java
index 62e8767..65b69d1 100644
--- a/src/main/java/org/springblade/modules/place/controller/PlaceController.java
+++ b/src/main/java/org/springblade/modules/place/controller/PlaceController.java
@@ -100,9 +100,14 @@
 		return R.status(placeService.save(place));
 	}
 
+	/**
+	 * 自定义新增/修改
+	 * @param placeVO
+	 * @return
+	 */
 	@PostMapping("/add")
 	public R add(@RequestBody PlaceVO placeVO){
-		return R.status(placeService.addVO(placeVO));
+		return R.status(placeService.addOrUpdate(placeVO));
 	}
 
 	/**
@@ -115,6 +120,17 @@
 		return R.status(placeService.updateById(place));
 	}
 
+
+	/**
+	 * 自定义修改
+	 * @param placeVO
+	 * @return
+	 */
+	@PostMapping("/updatePlace")
+	public R updatePlace(@RequestBody PlaceVO placeVO){
+		return R.status(placeService.updatePlace(placeVO));
+	}
+
 	/**
 	 * 场所表 新增或修改
 	 */
diff --git a/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml b/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml
index 930585f..9b1b450 100644
--- a/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml
+++ b/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml
@@ -43,6 +43,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by jpe.create_time desc,jpe.id desc
     </select>
 
     <!--自定义详情查询-->
diff --git a/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml b/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
index cd9886b..0e4fdea 100644
--- a/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
+++ b/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
@@ -49,6 +49,12 @@
         <if test="place.placeName!=null and place.placeName!=''">
             and jp.place_name like concat('%',#{place.placeName},'%')
         </if>
+        <if test="place.principal!=null and place.principal!=''">
+            and jp.principal like concat('%',#{place.principal},'%')
+        </if>
+        <if test="place.principalPhone!=null and place.principalPhone!=''">
+            and jp.principal_phone like concat('%',#{place.principalPhone},'%')
+        </if>
         <if test="place.isPerfect==1">
             and
             (
diff --git a/src/main/java/org/springblade/modules/place/service/IPlaceService.java b/src/main/java/org/springblade/modules/place/service/IPlaceService.java
index 290b66c..faac1e2 100644
--- a/src/main/java/org/springblade/modules/place/service/IPlaceService.java
+++ b/src/main/java/org/springblade/modules/place/service/IPlaceService.java
@@ -51,11 +51,11 @@
     List<TreeStringNode> selectPlaceNodeList(Long userId);
 
 	/**
-	 * 场所信息自定义新增
+	 * 场所信息自定义新增/修改
 	 * @param placeVO
 	 * @return
 	 */
-	Boolean addVO(PlaceVO placeVO);
+	Boolean addOrUpdate(PlaceVO placeVO);
 
 	/**
 	 * 历史场所挂接处理-临时
@@ -96,4 +96,11 @@
 	 * 场所数据处理-用户信息(场所负责人信息写入到场所表)
 	 */
 	Object placeUserHandle();
+
+	/**
+	 * 自定义修改
+	 * @param placeVO
+	 * @return
+	 */
+	boolean updatePlace(PlaceVO placeVO);
 }
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 50f0d49..004b686 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
@@ -17,18 +17,17 @@
 package org.springblade.modules.place.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.logging.log4j.util.Strings;
 import org.springblade.common.node.TreeStringNode;
+import org.springblade.common.utils.IdUtils;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity;
 import org.springblade.modules.doorplateAddress.service.IDoorplateAddressService;
 import org.springblade.modules.grid.service.IGridService;
-import org.springblade.modules.place.entity.PlaceEntity;
-import org.springblade.modules.place.entity.PlaceExtEntity;
-import org.springblade.modules.place.entity.PlacePoiLabel;
-import org.springblade.modules.place.entity.PlaceRelEntity;
+import org.springblade.modules.place.entity.*;
 import org.springblade.modules.place.excel.PlaceAndRelExcel;
 import org.springblade.modules.place.excel.PlaceExcel;
 import org.springblade.modules.place.service.IPlaceExtService;
@@ -44,10 +43,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * 场所表 服务实现类
@@ -105,28 +101,51 @@
 	}
 
 	/**
-	 * 场所信息自定义新增
+	 * 场所信息自定义新增/修改
 	 * @param placeVO
 	 * @return
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public Boolean addVO(PlaceVO placeVO) {
-		// 设置基础数据
-		placeVO.setCreateUser(AuthUtil.getUserId());
-		placeVO.setCreateTime(new Date());
+	public Boolean addOrUpdate(PlaceVO placeVO) {
+		boolean flag = false;
 		placeVO.setUpdateUser(AuthUtil.getUserId());
 		placeVO.setUpdateTime(new Date());
-		// 绑定用户信息
-		bindUserHandle(placeVO);
-		// 新增场所信息
-		boolean save = save(placeVO);
-		// 保存场所详情及任务信息
-		savePlaceExtAndTaskInfo(placeVO);
-		// 场所标签信息绑定
-		placeLabelBind(placeVO);
+		// 查看是否包含houseCode,如果有,则更新
+		if (!Strings.isBlank(placeVO.getHouseCode())){
+			// 更新,先查询场所信息
+			QueryWrapper<PlaceEntity> wrapper = new QueryWrapper<>();
+			wrapper.eq("is_deleted",0).eq("house_code",placeVO.getHouseCode());
+			PlaceEntity one = getOne(wrapper);
+			placeVO.setId(one.getId());
+			// 绑定用户信息
+			bindUserHandle(placeVO);
+			// 更新场所信息
+			flag = updateById(placeVO);
+			// 保存场所详情及任务信息
+			savePlaceExtAndTaskInfo(placeVO);
+			// 场所标签信息绑定(更新,调整)
+			placeLabelBind(placeVO);
+		}else {
+			// 设置基础数据
+			placeVO.setCreateUser(AuthUtil.getUserId());
+			placeVO.setCreateTime(new Date());
+			// 设置来源( 1:地址总表  2:国控采集)
+			placeVO.setSource(2);
+			// 并生成36位的houseCode
+			placeVO.setHouseCode(IdUtils.getIdBy36());
+			// 绑定用户信息
+			bindUserHandle(placeVO);
+			// 新增场所信息
+			flag = save(placeVO);
+			// 保存场所详情及任务信息
+			savePlaceExtAndTaskInfo(placeVO);
+			// 场所标签信息绑定
+			placeLabelBind(placeVO);
+		}
+		// 位置绑定,通过定位去匹配所在网格
 		// 返回结果
-		return save;
+		return flag;
 	}
 
 	/**
@@ -135,9 +154,34 @@
 	 */
 	@Transactional(rollbackFor = Exception.class)
 	public void placeLabelBind(PlaceVO placeVO) {
+		// 先查询对于的场所是否已有标签信息
+		// 查询对应已存在的从业人员
+		QueryWrapper<PlacePoiLabel> wrapper = new QueryWrapper<>();
+		wrapper.eq("place_id",placeVO.getId());
+		List<PlacePoiLabel> oldList = placePoiLabelService.list(wrapper);
+		if (oldList.size()>0){
+			// 先将老的全部删除,然后批量插入
+			QueryWrapper<PlacePoiLabel> queryWrapper = new QueryWrapper<>();
+			queryWrapper.eq("place_id",placeVO.getId());
+			boolean remove = placePoiLabelService.remove(queryWrapper);
+			if (remove){
+				// 批量新增
+				savePlaceLabel(placeVO);
+			}
+		}else {
+			savePlaceLabel(placeVO);
+		}
+	}
+
+	/**
+	 * 插入场所标签信息
+	 * @param placeVO
+	 */
+	public void savePlaceLabel(PlaceVO placeVO) {
+		// 批量新增
 		List<String> labelList = Arrays.asList(placeVO.getLabel().split(","));
 		// 遍历
-		labelList.forEach(labelId->{
+		labelList.forEach(labelId -> {
 			PlacePoiLabel placePoiLabel = new PlacePoiLabel();
 			placePoiLabel.setPlaceId(placeVO.getId());
 			placePoiLabel.setPoiCode(Integer.parseInt(labelId));
@@ -473,4 +517,21 @@
 		}
 		return null;
 	}
+
+	/**
+	 * 自定义修改
+	 * @param placeVO
+	 * @return
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean updatePlace(PlaceVO placeVO) {
+		boolean flag = false;
+		// 修改场所信息
+		flag = updateById(placeVO);
+		// 修改标签绑定信息
+
+		// 返回
+		return flag;
+	}
 }

--
Gitblit v1.9.3