From 00cdca2f95151f37acb25c7d6f330464da354c49 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 31 Oct 2023 23:23:42 +0800
Subject: [PATCH] 房屋,人员标签查询修改,人员标签数据更新接口新增

---
 src/main/java/org/springblade/common/utils/NodeTreeUtil.java                            |    7 +-
 src/main/java/org/springblade/modules/house/service/IHouseholdLabelService.java         |    6 ++
 src/main/java/org/springblade/modules/house/controller/HouseholdLabelController.java    |   12 ++++
 src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java          |    3 
 src/main/java/org/springblade/common/node/TreeIntegerNode.java                          |   49 ++++++++++++++++
 src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml                      |   20 +++++-
 src/main/java/org/springblade/modules/label/mapper/LabelMapper.java                     |    7 ++
 src/main/java/org/springblade/modules/house/service/impl/HouseholdLabelServiceImpl.java |   32 ++++++++++
 src/main/java/org/springblade/modules/house/service/impl/HouseLabelServiceImpl.java     |    8 ++
 9 files changed, 135 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/springblade/common/node/TreeIntegerNode.java b/src/main/java/org/springblade/common/node/TreeIntegerNode.java
new file mode 100644
index 0000000..21b489f
--- /dev/null
+++ b/src/main/java/org/springblade/common/node/TreeIntegerNode.java
@@ -0,0 +1,49 @@
+package org.springblade.common.node;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 视图实体类
+ *
+ * @author zhongrj
+ */
+@Data
+public class TreeIntegerNode implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键ID
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	private Integer id;
+
+	/**
+	 * 名称
+	 */
+	private String name;
+
+	/**
+	 * 父节点ID
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	private Integer parentId;
+
+	/**
+	 * 子孙节点
+	 */
+	private List<TreeIntegerNode> children = new ArrayList<>();
+
+	/**
+	 * 是否有子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private Boolean hasChildren;
+}
diff --git a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java b/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
index 3f6d777..a17981b 100644
--- a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
+++ b/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
@@ -1,5 +1,6 @@
 package org.springblade.common.utils;
 
+import org.springblade.common.node.TreeIntegerNode;
 import org.springblade.common.node.TreeNode;
 import java.util.ArrayList;
 import java.util.List;
@@ -13,12 +14,12 @@
 public class NodeTreeUtil {
 
 	/**
-	 * 警员map 转 tree 组织机构
+	 * 树转换
 	 * @param treeMap
 	 * @return
 	 */
-	public static List<TreeNode> getNodeTree(Map<String, TreeNode> treeMap){
-		List<TreeNode> tree = new ArrayList<>();
+	public static List<TreeIntegerNode> getNodeTree(Map<Integer, TreeIntegerNode> treeMap){
+		List<TreeIntegerNode> tree = new ArrayList<>();
 		if (treeMap.size() > 1) {
 			treeMap.forEach((id, treeNode) -> {
 				if (treeMap.containsKey(treeNode.getParentId())) {
diff --git a/src/main/java/org/springblade/modules/house/controller/HouseholdLabelController.java b/src/main/java/org/springblade/modules/house/controller/HouseholdLabelController.java
index 3a9e7b7..25db840 100644
--- a/src/main/java/org/springblade/modules/house/controller/HouseholdLabelController.java
+++ b/src/main/java/org/springblade/modules/house/controller/HouseholdLabelController.java
@@ -28,6 +28,7 @@
 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.house.entity.HouseLabelEntity;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.modules.house.entity.HouseholdLabelEntity;
@@ -113,6 +114,17 @@
 	}
 
 	/**
+	 * 住户-标签 自定义新增或修改
+	 * @param householdLabel
+	 * @return
+	 */
+	@PostMapping("/saveOrUpdateHouseholdLabel")
+	@ApiOperation(value = "自定义新增或修改", notes = "传入householdLabel")
+	public R saveOrUpdateHouseholdLabel(@Valid @RequestBody HouseholdLabelEntity householdLabel) {
+		return R.status(householdLabelService.saveOrUpdateHouseholdLabel(householdLabel));
+	}
+
+	/**
 	 * 住户-标签 删除
 	 */
 	@PostMapping("/remove")
diff --git a/src/main/java/org/springblade/modules/house/service/IHouseholdLabelService.java b/src/main/java/org/springblade/modules/house/service/IHouseholdLabelService.java
index 1453bf4..44adef0 100644
--- a/src/main/java/org/springblade/modules/house/service/IHouseholdLabelService.java
+++ b/src/main/java/org/springblade/modules/house/service/IHouseholdLabelService.java
@@ -42,4 +42,10 @@
 	 */
 	IPage<HouseholdLabelVO> selectHouseholdLabelPage(IPage<HouseholdLabelVO> page, HouseholdLabelVO householdLabel);
 
+	/**
+	 * 住户-标签 自定义新增或修改
+	 * @param householdLabel
+	 * @return
+	 */
+    boolean saveOrUpdateHouseholdLabel(HouseholdLabelEntity householdLabel);
 }
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseLabelServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseLabelServiceImpl.java
index 13f6e01..65ae716 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseLabelServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseLabelServiceImpl.java
@@ -23,6 +23,9 @@
 import org.springblade.modules.house.mapper.HouseLabelMapper;
 import org.springblade.modules.house.service.IHouseLabelService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.label.entity.LabelEntity;
+import org.springblade.modules.label.service.ILabelService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -34,6 +37,9 @@
  */
 @Service
 public class HouseLabelServiceImpl extends ServiceImpl<HouseLabelMapper, HouseLabelEntity> implements IHouseLabelService {
+
+	@Autowired
+	private ILabelService labelService;
 
 	@Override
 	public IPage<HouseLabelVO> selectHouseLabelPage(IPage<HouseLabelVO> page, HouseLabelVO houseLabel) {
@@ -48,7 +54,7 @@
 	@Override
 	public boolean saveOrUpdateHouseLabel(HouseLabelEntity houseLabel) {
 		// 查询标签名称
-		HouseLabelEntity labelEntity = getById(houseLabel.getLabelId());
+		LabelEntity labelEntity = labelService.getById(houseLabel.getLabelId());
 		houseLabel.setLabelName(labelEntity.getLabelName());
 		// 判断同一个房屋同一个标签是否已存在,已存在则更新,不存在则新增
 		QueryWrapper<HouseLabelEntity> queryWrapper = new QueryWrapper<>();
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseholdLabelServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseholdLabelServiceImpl.java
index 89c8418..60c9d47 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseholdLabelServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseholdLabelServiceImpl.java
@@ -16,13 +16,18 @@
  */
 package org.springblade.modules.house.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.common.node.TreeNode;
+import org.springblade.modules.house.entity.HouseLabelEntity;
 import org.springblade.modules.house.entity.HouseholdLabelEntity;
 import org.springblade.modules.house.vo.HouseholdLabelVO;
 import org.springblade.modules.house.mapper.HouseholdLabelMapper;
 import org.springblade.modules.house.service.IHouseholdLabelService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.label.entity.LabelEntity;
+import org.springblade.modules.label.service.ILabelService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -37,8 +42,35 @@
 @Service
 public class HouseholdLabelServiceImpl extends ServiceImpl<HouseholdLabelMapper, HouseholdLabelEntity> implements IHouseholdLabelService {
 
+
+	@Autowired
+	private ILabelService labelService;
+
 	@Override
 	public IPage<HouseholdLabelVO> selectHouseholdLabelPage(IPage<HouseholdLabelVO> page, HouseholdLabelVO householdLabel) {
 		return page.setRecords(baseMapper.selectHouseholdLabelPage(page, householdLabel));
 	}
+
+	/**
+	 * 住户-标签 自定义新增或修改
+	 * @param householdLabel
+	 * @return
+	 */
+	@Override
+	public boolean saveOrUpdateHouseholdLabel(HouseholdLabelEntity householdLabel) {
+		// 查询标签名称
+		LabelEntity labelEntity = labelService.getById(householdLabel.getLabelId());
+		householdLabel.setLabelName(labelEntity.getLabelName());
+		// 判断同一个住户同一个标签是否已存在,已存在则更新,不存在则新增
+		QueryWrapper<HouseholdLabelEntity> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("household_id",householdLabel.getHouseholdId())
+			.eq("label_id",householdLabel.getLabelId());
+		HouseholdLabelEntity one = getOne(queryWrapper);
+		if (null != one){
+			// 更新
+			return updateById(householdLabel);
+		}
+		// 插入
+		return save(householdLabel);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
index 99619d6..cd24e5e 100644
--- a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
+++ b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
@@ -16,12 +16,16 @@
  */
 package org.springblade.modules.label.mapper;
 
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.common.node.TreeIntegerNode;
+import org.springblade.common.node.TreeNode;
 import org.springblade.modules.label.entity.LabelEntity;
 import org.springblade.modules.label.vo.LabelVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 标签管理 Mapper 接口
@@ -46,5 +50,6 @@
 	 * @param label
 	 * @return
 	 */
-    List<LabelVO> getLabelList(@Param("label") LabelVO label);
+	@MapKey(value = "id")
+	Map<Integer, TreeIntegerNode> getLabelList(@Param("label") LabelVO label);
 }
diff --git a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
index 71d276c..5a4273f 100644
--- a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
+++ b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
@@ -8,9 +8,23 @@
     </select>
 
     <!--标签查询,按父id查询下级-->
-    <select id="getLabelList" resultType="org.springblade.modules.label.vo.LabelVO">
-        select * from jczz_label where is_deleted = 0
-        and parent_id = #{label.parentId}
+    <select id="getLabelList" resultType="org.springblade.common.node.TreeIntegerNode">
+        SELECT
+            jl.id as id,jl.parent_id as parentId,jl.label_name as name
+        FROM
+            (
+            SELECT
+                @ids AS ids,
+                ( SELECT @ids := GROUP_CONCAT( id ) FROM jczz_label WHERE FIND_IN_SET( parent_id, @ids ) ) AS cids
+            FROM
+                jczz_label
+            WHERE
+                @ids IS NOT NULL
+                AND @ids := #{label.parentId}
+            ) id,
+            jczz_label jl
+        WHERE
+            FIND_IN_SET(jl.parent_id,ids)
     </select>
 
 
diff --git a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
index 2877354..e548c07 100644
--- a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
+++ b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
@@ -17,6 +17,7 @@
 package org.springblade.modules.label.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.common.utils.NodeTreeUtil;
 import org.springblade.modules.label.entity.LabelEntity;
 import org.springblade.modules.label.vo.LabelVO;
 import org.springblade.modules.label.mapper.LabelMapper;
@@ -46,6 +47,6 @@
 	 */
 	@Override
 	public Object getLabelList(LabelVO label) {
-		return baseMapper.getLabelList(label);
+		return NodeTreeUtil.getNodeTree(baseMapper.getLabelList(label));
 	}
 }

--
Gitblit v1.9.3