From 1523a4db4fd33931ab128e02e4f8bcfe54818797 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Sun, 8 Sep 2024 20:34:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/tool/ToolController.java | 5 +- .../tool/ToolRelationController.java | 107 +++++++ .../main/java/com/rzdata/web/domain/Tool.java | 2 + .../com/rzdata/web/domain/ToolRelation.java | 38 +++ .../rzdata/web/mapper/ToolRelationMapper.java | 80 +++++ .../web/service/IToolRelationService.java | 78 +++++ .../com/rzdata/web/service/IToolService.java | 12 + .../service/impl/ToolRelationServiceImpl.java | 302 ++++++++++++++++++ .../web/service/impl/ToolServiceImpl.java | 49 ++- .../src/main/resources/mapper/ToolMapper.xml | 6 + .../resources/mapper/ToolRelationMapper.xml | 101 ++++++ .../common/core/domain/ToolTreeSelect.java | 39 +++ 12 files changed, 816 insertions(+), 3 deletions(-) create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolRelationController.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolRelation.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolRelationMapper.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/IToolRelationService.java create mode 100644 tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolRelationServiceImpl.java create mode 100644 tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml create mode 100644 tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java index db06763..87cb7b4 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolController.java @@ -171,12 +171,16 @@ public class ToolController extends BaseController if (add) { tTool.setProcInstId(processInstanceModel.getProcInstId()); toolService.insertTool(tTool); + /** 保存工具关联关系 **/ + toolService.saveToolRelation(tTool, false); //保存附件 toolService.addFileList(tTool); //记录申请数据 toolService.recordToolApply(tTool); } else if (BooleanUtil.isTrue(tTool.getEditStatus())){ toolService.updateTool(tTool); + /** 保存工具关联关系 **/ + toolService.saveToolRelation(tTool, true); //删除附件 toolService.delFile(tTool); //保存附件 @@ -193,7 +197,6 @@ public class ToolController extends BaseController } toolService.updateTool(tool); } - //办结 if(RecordStatusEnum.DONE.getCode().equals(tTool.getRecordStatus())){ //给消息中心发送消息 diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolRelationController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolRelationController.java new file mode 100644 index 0000000..64510ab --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/ToolRelationController.java @@ -0,0 +1,107 @@ +package com.rzdata.web.controller.tool; + +import com.rzdata.common.annotation.Log; +import com.rzdata.common.core.controller.BaseController; +import com.rzdata.common.core.domain.AjaxResult; +import com.rzdata.common.core.page.TableDataInfo; +import com.rzdata.common.enums.BusinessType; +import com.rzdata.common.utils.poi.ExcelUtil; +import com.rzdata.web.domain.ToolRelation; +import com.rzdata.web.service.IToolRelationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * tool_relationController + * + * @author ja + * @date 2024-09-08 + */ +@RestController +@RequestMapping("/system/relation") +public class ToolRelationController extends BaseController +{ + @Autowired + private IToolRelationService toolRelationService; + + /** + * 查询tool_relation列表 + */ + @PreAuthorize("@ss.hasPermi('system:relation:list')") + @GetMapping("/list") + public TableDataInfo list(ToolRelation toolRelation) + { + startPage(); + List list = toolRelationService.selectToolRelationList(toolRelation); + return getDataTable(list); + } + + /** + * 导出tool_relation列表 + */ + @PreAuthorize("@ss.hasPermi('system:relation:export')") + @Log(title = "tool_relation", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ToolRelation toolRelation) + { + List list = toolRelationService.selectToolRelationList(toolRelation); + ExcelUtil util = new ExcelUtil(ToolRelation.class); + util.exportExcel(response, list, "tool_relation数据"); + } + + /** + * 获取tool_relation详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:relation:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(toolRelationService.selectToolRelationById(id)); + } + + /** + * 新增tool_relation + */ + @PreAuthorize("@ss.hasPermi('system:relation:add')") + @Log(title = "tool_relation", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ToolRelation toolRelation) + { + return toAjax(toolRelationService.insertToolRelation(toolRelation)); + } + + /** + * 修改tool_relation + */ + @PreAuthorize("@ss.hasPermi('system:relation:edit')") + @Log(title = "tool_relation", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ToolRelation toolRelation) + { + return toAjax(toolRelationService.updateToolRelation(toolRelation)); + } + + /** + * 删除tool_relation + */ + @PreAuthorize("@ss.hasPermi('system:relation:remove')") + @Log(title = "tool_relation", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(toolRelationService.deleteToolRelationByIds(ids)); + } + + /** + * three,show展示 + */ + @PostMapping("/get/three") + public AjaxResult getDataThree(@RequestBody ToolRelation toolRelation) + { + return success(toolRelationService.getDataThree(toolRelation)); + } +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java index 3b73df0..bc36538 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/Tool.java @@ -113,4 +113,6 @@ public class Tool extends BaseEntity private String statusName; /** 主键 **/ private List toolIdList; + /** 需要过滤的主键 **/ + private List filterToolIds; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolRelation.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolRelation.java new file mode 100644 index 0000000..7dca3f2 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/ToolRelation.java @@ -0,0 +1,38 @@ +package com.rzdata.web.domain; + +import com.rzdata.common.annotation.Excel; +import com.rzdata.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.List; + +/** + * tool_relation对象 t_tool_relation + * + * @author ja + * @date 2024-09-08 + */ +@Data +public class ToolRelation extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private String id; + + /** 源id */ + @Excel(name = "源id") + private String resourceId; + + /** 目标id */ + @Excel(name = "目标id") + private String targetId; + + /** 文件编号 */ + private String toolCode; + /** 文件名称 */ + private String toolName; + + /** 资源名称 */ + private List resourceIds; +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolRelationMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolRelationMapper.java new file mode 100644 index 0000000..8aeaf1b --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/ToolRelationMapper.java @@ -0,0 +1,80 @@ +package com.rzdata.web.mapper; + +import com.rzdata.web.domain.ToolRelation; +import com.rzdata.web.domain.TzMessage; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * tool_relationMapper接口 + * + * @author ja + * @date 2024-09-08 + */ +public interface ToolRelationMapper +{ + /** + * 查询tool_relation + * + * @param id tool_relation主键 + * @return tool_relation + */ + public ToolRelation selectToolRelationById(String id); + + /** + * 查询tool_relation列表 + * + * @param toolRelation tool_relation + * @return tool_relation集合 + */ + public List selectToolRelationList(ToolRelation toolRelation); + + public List selectRelationToolList(ToolRelation toolRelation); + + /** + * 新增tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int insertToolRelation(ToolRelation toolRelation); + + /** + * 修改tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int updateToolRelation(ToolRelation toolRelation); + + /** + * 删除tool_relation + * + * @param id tool_relation主键 + * @return 结果 + */ + public int deleteToolRelationById(String id); + + /** 根据资源id和目标id去删除 **/ + public int deleteResourceAndTarget(ToolRelation toolRelation); + + /** 根据目标id和源id去删除 **/ + public int deleteTargetAndResource(ToolRelation toolRelation); + + /** + * 批量删除tool_relation + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteToolRelationByIds(String[] ids); + + + /** + * 批量插入 + * @param toolRelationList + * @return + */ + public int batchInsert(@Param("toolRelationList") List toolRelationList); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolRelationService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolRelationService.java new file mode 100644 index 0000000..66bc29e --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolRelationService.java @@ -0,0 +1,78 @@ +package com.rzdata.web.service; + +import com.rzdata.common.core.domain.ToolTreeSelect; +import com.rzdata.web.domain.ToolRelation; + +import java.util.List; + +/** + * tool_relationService接口 + * + * @author ja + * @date 2024-09-08 + */ +public interface IToolRelationService +{ + /** + * 查询tool_relation + * + * @param id tool_relation主键 + * @return tool_relation + */ + public ToolRelation selectToolRelationById(String id); + + /** + * 查询tool_relation列表 + * + * @param toolRelation tool_relation + * @return tool_relation集合 + */ + public List selectToolRelationList(ToolRelation toolRelation); + public List selectRelationToolList(ToolRelation toolRelation); + + /** + * 新增tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int insertToolRelation(ToolRelation toolRelation); + + /** + * 修改tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + public int updateToolRelation(ToolRelation toolRelation); + + /** + * 批量删除tool_relation + * + * @param ids 需要删除的tool_relation主键集合 + * @return 结果 + */ + public int deleteToolRelationByIds(String[] ids); + + /** + * 删除tool_relation信息 + * + * @param id tool_relation主键 + * @return 结果 + */ + public int deleteToolRelationById(String id); + + /** + * 获取数据树 + * @param toolRelation + * @return + */ + List getDataThree(ToolRelation toolRelation); + + public int batchInsert(List toolRelationList); + + /**根据资源id和目标id去删除 **/ + public int deleteResourceAndTarget(ToolRelation toolRelation); + /** 根据目标id和源id去删除 **/ + public int deleteTargetAndResource(ToolRelation toolRelation); +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java index 6823579..a00ee4b 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/IToolService.java @@ -31,6 +31,10 @@ public interface IToolService */ public List selectToolList(Tool tool); + + /** 查询所有数据 **/ + public List selectAllNotAuthList(Tool tool); + /** * 新增工具信息 * @@ -39,6 +43,14 @@ public interface IToolService */ public int insertTool(Tool tool); + /** + * 新增工具关联关系信息 + * + * @param tool 工具信息 + * @return 结果 + */ + public void saveToolRelation(Tool tool, Boolean isDel); + public boolean checkToolExist(Tool tTool); /** diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolRelationServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolRelationServiceImpl.java new file mode 100644 index 0000000..85b1c07 --- /dev/null +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolRelationServiceImpl.java @@ -0,0 +1,302 @@ +package com.rzdata.web.service.impl; + +import java.sql.Struct; +import java.util.*; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.rzdata.common.core.domain.ToolTreeSelect; +import com.rzdata.common.core.domain.TreeSelect; +import com.rzdata.common.core.domain.entity.SysDept; +import com.rzdata.common.utils.StringUtils; +import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.ToolRelation; +import com.rzdata.web.mapper.ToolRelationMapper; +import com.rzdata.web.service.IToolRelationService; +import com.rzdata.web.service.IToolService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * tool_relationService业务层处理 + * + * @author ja + * @date 2024-09-08 + */ +@Service +public class ToolRelationServiceImpl implements IToolRelationService +{ + @Autowired + private ToolRelationMapper toolRelationMapper; + + @Autowired + private IToolService toolService; + + /** + * 查询tool_relation + * + * @param id tool_relation主键 + * @return tool_relation + */ + @Override + public ToolRelation selectToolRelationById(String id) + { + return toolRelationMapper.selectToolRelationById(id); + } + + /** + * 查询tool_relation列表 + * + * @param toolRelation tool_relation + * @return tool_relation + */ + @Override + public List selectToolRelationList(ToolRelation toolRelation) + { + return toolRelationMapper.selectToolRelationList(toolRelation); + } + + @Override + public List selectRelationToolList(ToolRelation toolRelation) + { + return toolRelationMapper.selectRelationToolList(toolRelation); + } + + + + /** + * 新增tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + @Override + public int insertToolRelation(ToolRelation toolRelation) + { + return toolRelationMapper.insertToolRelation(toolRelation); + } + + /** + * 修改tool_relation + * + * @param toolRelation tool_relation + * @return 结果 + */ + @Override + public int updateToolRelation(ToolRelation toolRelation) + { + return toolRelationMapper.updateToolRelation(toolRelation); + } + + /** + * 批量删除tool_relation + * + * @param ids 需要删除的tool_relation主键 + * @return 结果 + */ + @Override + public int deleteToolRelationByIds(String[] ids) + { + return toolRelationMapper.deleteToolRelationByIds(ids); + } + + /** + * 批量删除 + */ + @Override + public int batchInsert(List toolRelationList) + { + return toolRelationMapper.batchInsert(toolRelationList); + } + + /** + * 删除tool_relation信息 + * + * @param id tool_relation主键 + * @return 结果 + */ + @Override + public int deleteToolRelationById(String id) + { + return toolRelationMapper.deleteToolRelationById(id); + } + + /** + * 获取数据树权限 + * @param toolRelation + * @return + */ + @Override + public List getDataThree(ToolRelation toolRelation) { + if(CollUtil.isEmpty(toolRelation.getResourceIds())){ + return null; + } + + List toolRelations = this.selectRelationToolList(toolRelation); + //拿到C的数据 + ToolRelation toolRelation1 = toolRelations.get(0); + // 查询数据库中的所有工具关系 + List allToolRelations = this.selectRelationToolList(null); + return getDataThree(toolRelation1.getResourceId()); + + /*//查询所有关联的数据,最后在组装起来 + List toolRelations = this.selectRelationToolList(toolRelation); + //查询所有数据 + List allToolRelation = this.selectRelationToolList(null);*/ + + // 查询所有与 C 相关的工具关系 + //List relatedToolRelations = this.selectRelationToolList(toolRelation); + +/* + + // 从 C 开始构建树形结构 + List treeSelects = relatedToolRelations.stream() + .map(tr -> buildChildren(tr, allToolRelations, new HashSet<>())) + .filter(Objects::nonNull) + .collect(Collectors.toList()); +*/ + + // 构建树形结构(从 C 向上递归查找父节点) + /* ToolTreeSelect treeSelect = buildParentTree(toolRelation, allToolRelations, new HashSet<>()); + + return treeSelect != null ? Collections.singletonList(treeSelect) : new ArrayList<>();*/ + } + + public List getDataThree(String toolResourceId) { + // 创建链条列表用于存储递归结果 + List toolChain = new ArrayList<>(); + + // 从工具 resourceId 开始递归查找 + buildToolChain(toolResourceId, toolChain); + + return toolChain; + } + + // 递归构建工具链 + private void buildToolChain(String resourceId, List toolChain) { + // 根据 resourceId 查找当前工具关联关系 + ToolRelation currentToolRelation = this.findToolRelationByResourceId(resourceId); + + if (currentToolRelation != null) { + // 将当前工具加入链条 + ToolTreeSelect currentTool = new ToolTreeSelect(); + currentTool.setId(currentToolRelation.getId()); + currentTool.setLabel(currentToolRelation.getToolName()); // 假设有工具名称字段 + toolChain.add(currentTool); + + // 如果当前工具的 target_id 不为空,则继续向上递归 + if (currentToolRelation.getTargetId() != null) { + buildToolChain(currentToolRelation.getTargetId(), toolChain); + } + } + } + + // 根据 resourceId 查找 ToolRelation + private ToolRelation findToolRelationByResourceId(String resourceId) { + // 在数据库中查询 toolRelation 记录 + ToolRelation queryToolRelation = new ToolRelation(); + queryToolRelation.setResourceId(resourceId); + List toolRelations = this.selectRelationToolList(queryToolRelation); + return toolRelations.isEmpty() ? null : toolRelations.get(0); + } + + + // 递归向上构建父节点 + private ToolTreeSelect buildParentTree(ToolRelation currentToolRelation, List allToolRelation, Set visited) { + // 检查是否已经访问过该节点,避免死循环 + if (visited.contains(currentToolRelation.getId())) { + return null; // 如果已访问,直接返回 null + } + visited.add(currentToolRelation.getId()); // 记录已访问的节点 + + // 构建当前节点的 TreeSelect + ToolTreeSelect node = new ToolTreeSelect(); + node.setId(currentToolRelation.getResourceId()); // 设置节点 ID 为 resourceId + node.setLabel(currentToolRelation.getToolName()); // 假设 ToolRelation 中有工具名称 + + // 查找父节点(向上递归查找与当前节点的 resource_id 对应的 target_id) + List parents = allToolRelation.stream() + .filter(t -> currentToolRelation.getResourceId().equals(t.getTargetId())) // 找到父节点 + .map(t -> buildParentTree(t, allToolRelation, visited)) // 递归处理父节点 + .filter(Objects::nonNull) // 过滤掉 null 的父节点 + .collect(Collectors.toList()); + + // 如果有父节点,则将父节点设置为 children + node.setChildren(parents); + + return node; + } + + private List buildTwoTreeSelect(List tools) { + List treeSelectList = new ArrayList<>(); + for (Tool tool : tools) { + // 构建当前节点的 TreeSelect + ToolTreeSelect node = new ToolTreeSelect(); + node.setId(tool.getToolId()); + node.setLabel(tool.getToolName()); // 你可能有其他字段,例如 types,可在此处设置 + node.setChildren(new ArrayList<>()); // 你可能有其他字段,例如 types,可在此处设置 + treeSelectList.add(node); + } + return treeSelectList; + } + + + // 递归构建树形结构 + private List buildToolTreeSelect(List tools, List allToolRelation) { + // 找到根节点:没有父节点的工具关系 + List treeSelectList = tools.stream() + .filter(t -> allToolRelation.stream().noneMatch(r -> r.getTargetId().equals(t.getResourceId()))) // 根节点判定:targetId 没有匹配 resourceId + .map(t -> buildChildren(t, allToolRelation, new HashSet<>())) + .filter(Objects::nonNull) // 过滤掉空的节点 + .collect(Collectors.toList()); + return treeSelectList; + } + + // 构建子节点 + private ToolTreeSelect buildChildren(ToolRelation toolRelation, List allToolRelation, Set visited) { + // 检查是否已经访问过该节点,避免死循环 + if (visited.contains(toolRelation.getId())) { + return null; // 如果已访问,直接返回 null + } + visited.add(toolRelation.getId()); // 记录已访问的节点 + + // 构建当前节点的 TreeSelect + ToolTreeSelect node = new ToolTreeSelect(); + node.setId(toolRelation.getResourceId()); // 设置节点 ID 为 resourceId + node.setLabel(toolRelation.getToolName()); // 假设 toolName 是工具名称 + + // 查找子节点,递归构建 + List children = allToolRelation.stream() + .filter(t -> toolRelation.getTargetId().equals(t.getResourceId())) // 找到当前节点的子节点 + .map(t -> buildChildren(t, allToolRelation, visited)) // 递归处理子节点 + .filter(Objects::nonNull) // 过滤掉 null 的子节点 + .collect(Collectors.toList()); + + node.setChildren(children); // 设置子节点 + return node; + } + + /** + * 根据资源id和目标id去删除 + * @param toolRelation + * @return + */ + @Override + public int deleteResourceAndTarget(ToolRelation toolRelation) + { + return toolRelationMapper.deleteResourceAndTarget(toolRelation); + } + + /** + * 根据目标id和源id去删除 + * @param toolRelation + * @return + */ + @Override + public int deleteTargetAndResource(ToolRelation toolRelation) + { + return toolRelationMapper.deleteTargetAndResource(toolRelation); + } + +} diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 6087bf5..61d49ae 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.blueland.bpmclient.model.BpmClientInputModel; import com.rzdata.common.annotation.DataScope; import com.rzdata.common.constant.Constants; @@ -54,11 +55,9 @@ public class ToolServiceImpl implements IToolService @Autowired private Snowflake snowflake; - @Autowired private ITzMessageService tzMessageService; - @Autowired private ISysDictTypeService sysDictTypeService; @@ -69,6 +68,10 @@ public class ToolServiceImpl implements IToolService @Autowired private ISysDeptService sysDeptService; + /** 工具管理表 **/ + @Autowired + private IToolRelationService iToolRelationService; + /** * 查询工具信息 * @@ -104,6 +107,15 @@ public class ToolServiceImpl implements IToolService return toolMapper.selectToolList(tool); } + /** + * 查询所有数据不走任何 + * @return + */ + @Override + public List selectAllNotAuthList(Tool tool){ + return toolMapper.selectToolList(tool); + } + /** * 新增工具信息 * @@ -118,6 +130,39 @@ public class ToolServiceImpl implements IToolService return toolMapper.insertTool(tool); } + /** + * 保存关联关系 + * @param tool + */ + @Override + public void saveToolRelation(Tool tool, Boolean isDel) { + if(StrUtil.isNotBlank(tool.getAssociation())){ + List tools = JSONUtil.toList(tool.getAssociation(), Tool.class); + //关联 + List associationToolList = new ArrayList<>(); + //被关联的数据 + for (Tool toolItem : tools) { + ToolRelation toolRelation = new ToolRelation(); + toolRelation.setId(String.valueOf(snowflake.nextId())); + toolRelation.setResourceId(tool.getToolId()); + toolRelation.setTargetId(toolItem.getToolId()); + associationToolList.add(toolRelation); + if(isDel){ + iToolRelationService.deleteResourceAndTarget(toolRelation); + } + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = associationToolList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> iToolRelationService.batchInsert(batch)); + } + } + @Override public boolean checkToolExist(Tool tTool) { diff --git a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml index 360d0d1..dbf451f 100644 --- a/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/ToolMapper.xml @@ -184,6 +184,12 @@ #{id} + + and u.tool_id not in + + #{id} + + ${params.dataScope} order by create_time desc diff --git a/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml b/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml new file mode 100644 index 0000000..681c0e4 --- /dev/null +++ b/tool-tech-admin/src/main/resources/mapper/ToolRelationMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + select id, resource_id, target_id from t_tool_relation + + + + + + + + + + + insert into t_tool_relation + + id, + resource_id, + target_id, + + + #{id}, + #{resourceId}, + #{targetId}, + + + + + update t_tool_relation + + resource_id = #{resourceId}, + target_id = #{targetId}, + + where id = #{id} + + + + delete from t_tool_relation where id = #{id} + + + + delete from t_tool_relation where resource_id = #{resourceId} and target_id = #{targetId} + + + + delete from t_tool_relation where target_id = #{targetId} and resource_id = #{resourceId} + + + + delete from t_tool_relation where id in + + #{id} + + + + + + + insert into t_tool_relation (id, resource_id, target_id) + values + + #{item.id}, #{item.resourceId}, #{item.targetId} + + + \ No newline at end of file diff --git a/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java new file mode 100644 index 0000000..46fa4a0 --- /dev/null +++ b/tool-tech-common/src/main/java/com/rzdata/common/core/domain/ToolTreeSelect.java @@ -0,0 +1,39 @@ +package com.rzdata.common.core.domain; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.rzdata.common.core.domain.entity.SysDept; +import com.rzdata.common.core.domain.entity.SysMenu; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Treeselect树结构实体类 + * + * @author ruoyi + */ +@Data +public class ToolTreeSelect implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 节点ID */ + private String id; + + /** 节点名称 */ + private String label; + + /** 类型 */ + private String types; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public ToolTreeSelect() + { + + } +}