From 39946531af30a694274b8eff838b619a7efa198e Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Fri, 6 Jun 2025 10:14:44 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=E6=8F=90=E4=BA=A4=EF=BC=9A=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=E5=9B=BE=E5=B1=82=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=B8=94=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BusinessLayerController.java | 22 ++++++-- .../business/domain/BusinessLayer.java | 43 ++++++++------- .../business/domain/bo/BusinessLayerBo.java | 2 +- .../business/domain/vo/BusinessLayerVo.java | 22 +++++--- .../business/mapper/BusinessLayerMapper.java | 4 ++ .../service/IBusinessLayerService.java | 5 ++ .../impl/BusinessLayerServiceImpl.java | 54 +++++++++++++++++++ .../mapper/business/BusinessLayerMapper.xml | 21 +++++++- 8 files changed, 141 insertions(+), 32 deletions(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java index 8eee47a..1595700 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java @@ -2,6 +2,7 @@ package org.dromara.business.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; @@ -22,6 +23,8 @@ import org.dromara.common.web.core.BaseController; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Slf4j @Validated @RequiredArgsConstructor @@ -34,15 +37,23 @@ public class BusinessLayerController extends BaseController { /** * 图层模块列表 */ + @Operation(summary ="图层模块列表",description = "图层模块列表") @SaCheckPermission("business:layer:list") @GetMapping("/list") - public TableDataInfo list(BusinessLayerBo bo, PageQuery pageQuery) { - return businessLayerService.queryPageList(bo, pageQuery); + public R> list(BusinessLayerBo bo, PageQuery pageQuery) { + return R.ok(businessLayerService.queryPageList(bo, pageQuery)); + } + + @Operation(summary ="图层下拉列表",description = "图层下拉列表") + @GetMapping("/optionSelect") + public R> optionSelect() { + return R.ok(businessLayerService.optionSelect()); } /** * 图层新增 */ + @Operation(summary ="图层新增",description = "图层新增") @SaCheckPermission("business:layer:add") @Log(title = "图层新增", businessType = BusinessType.INSERT) @RepeatSubmit() @@ -55,6 +66,7 @@ public class BusinessLayerController extends BaseController { * 图层修改 */ @SaCheckPermission("business:layer:edit") + @Operation(summary ="图层修改",description = "图层修改") @Log(title = "图层修改", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -68,10 +80,10 @@ public class BusinessLayerController extends BaseController { * @param id 主键 */ @SaCheckPermission("business:task:remove") + @Operation(summary ="图层删除",description = "图层删除") @Log(title = "图层删除", businessType = BusinessType.DELETE) - @DeleteMapping("/{id}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long id) { + @GetMapping("/delete") + public R remove(@RequestParam("id") Long id) { return toAjax(businessLayerService.delete(id)); } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java index c0bd716..b990b9b 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java @@ -4,6 +4,7 @@ package org.dromara.business.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; @@ -11,11 +12,8 @@ import java.io.Serial; import java.util.Date; @Data -@EqualsAndHashCode -@TableName("business_layer") -public class BusinessLayer { - @Serial - private static final long serialVersionUID = 1L; +@TableName(value = "business_layer", autoResultMap = true) +public class BusinessLayer extends BaseEntity { /** * id @@ -24,7 +22,6 @@ public class BusinessLayer { private Long id; - private String layerName; @@ -32,11 +29,8 @@ public class BusinessLayer { private Boolean enable; /** - * 时间 - * */ - private Date createTime; - - + * 0菜单 1三维 2矢量 3影像 + */ private Integer layerType; @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "layerType", other = "layer_type") @@ -47,18 +41,29 @@ public class BusinessLayer { */ private String layerUrl; - //租户id - private String tenantId; - //部门id + /** + * 部门id + */ private Long deptId; - //部门名称 + + /** + * 部门名称 + */ private String deptName; - //备注 + /** + * 备注 + */ private String remark; - //排序 + + /** + * 排序 + */ private Integer sort; - //父部门id - private Integer parentId; + + /** + * 父类id + */ + private Long parentId; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java index 757367d..ca9c350 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java @@ -60,7 +60,7 @@ public class BusinessLayerBo { //排序 private Integer sort; //父部门id - private Integer parentId; + private Long parentId; private String startTime; private String endTime; diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java index a0fa479..7f9e46e 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java @@ -17,6 +17,7 @@ import org.dromara.common.translation.constant.TransConstant; import java.io.Serial; import java.util.Date; +import java.util.List; @Data @ExcelIgnoreUnannotated @@ -30,20 +31,26 @@ public class BusinessLayerVo { */ private Long id; - + /** + * 用于前端渲染 + */ + private Long key; private String layerName; /*0:禁用 1:启用*/ private Boolean enable; + /** - * 时间 - * */ - private Date createTime; + * 0菜单 1三维 2矢量 3影像 + */ private Integer layerType; + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "layerType", other = "layer_type") private String layerTypeName; + private String tenantId; + private Long deptId; /** @@ -57,7 +64,10 @@ public class BusinessLayerVo { //排序 private Integer sort; - //父部门id - private Integer parentId; + + //父id + private Long parentId; + + private List children; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java index 1d0488d..622861f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java @@ -9,8 +9,12 @@ import org.dromara.business.domain.bo.BusinessLayerBo; import org.dromara.business.domain.bo.BusinessTaskBo; import org.dromara.business.domain.vo.BusinessLayerVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +import java.util.List; + public interface BusinessLayerMapper extends BaseMapperPlus { Page queryPageList(@Param("page") Page page, @Param("bo") BusinessLayerBo bo); + List selectInfoByParent(@Param("parentId") Long parentId); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java index 2527a1f..7d47bd7 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java @@ -5,6 +5,8 @@ import org.dromara.business.domain.vo.BusinessLayerVo; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import java.util.List; + public interface IBusinessLayerService { /** @@ -19,4 +21,7 @@ public interface IBusinessLayerService { Boolean insert(BusinessLayerBo bo); Boolean update(BusinessLayerBo bo); Boolean delete(Long id); + + List optionSelect(); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java index 1a0ad34..89b2f40 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java @@ -14,20 +14,34 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Slf4j @RequiredArgsConstructor @Service public class BusinessLayerServiceImpl implements IBusinessLayerService { + private final BusinessLayerMapper baseMapper; @Override public TableDataInfo queryPageList(BusinessLayerBo bo, PageQuery pageQuery) { Page result = baseMapper.queryPageList(pageQuery.build(), bo); + + result.getRecords().forEach(businessLayerVo -> { + List layerVoList = baseMapper.selectInfoByParent(businessLayerVo.getId()); + + businessLayerVo.setChildren(buildTree(layerVoList,businessLayerVo.getId())); + + }); + return TableDataInfo.build(result); } + @Override public Boolean insert(BusinessLayerBo bo) { BusinessLayer layerVo = Convert.convert( BusinessLayer.class,bo); @@ -44,4 +58,44 @@ public class BusinessLayerServiceImpl implements IBusinessLayerService { public Boolean delete(Long id) { return baseMapper.deleteById(id)>0; } + + @Override + public List optionSelect() { + return baseMapper.selectInfoByParent(0L); + } + + + /** + * 构建树 + * @param allNodes + * @return + */ + public static List buildTree(List allNodes, Long parentId) { + // 创建一个Map来存储所有节点,键为ID,值为节点 + Map nodeMap = new HashMap<>(); + for (BusinessLayerVo node : allNodes) { + nodeMap.put(node.getId(), node); + } + + // 用来存储根节点(即 parentId 为传入值的节点) + List rootNodes = new ArrayList<>(); + + // 遍历所有节点,将子节点添加到父节点的 children 列表中 + for (BusinessLayerVo node : allNodes) { + if (node.getParentId().equals(parentId)) { + rootNodes.add(node); // 当前节点的 parentId 与传入的 parentId 匹配,作为根节点 + } else { + BusinessLayerVo parentNode = nodeMap.get(node.getParentId()); + if (parentNode != null) { + // 确保父节点的 children 列表已初始化 + if (parentNode.getChildren() == null) { + parentNode.setChildren(new ArrayList<>()); + } + parentNode.getChildren().add(node); // 将当前节点添加到父节点的 children 列表中 + } + } + } + + return rootNodes; + } } diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml index 7faca95..24ebede 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + +