src/main/java/org/springblade/common/node/TreeIntegerNode.java
New file @@ -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; } 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())) { 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") 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); } 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<>(); 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); } } 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); } 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> 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)); } }