From f8a9f5d71390f1c5451556506685d255883483da Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 26 Feb 2024 14:02:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=9B=B6=E9=83=A8=E4=BB=B6firstNode?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LawsPartNameController.java | 8 ++++ .../standard/service/PartNameService.java | 5 +++ .../service/impl/PartNameServiceImpl.java | 44 +++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsPartNameController.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsPartNameController.java index fd78a752..57436e65 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsPartNameController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsPartNameController.java @@ -50,5 +50,13 @@ public class LawsPartNameController { return Result.OK(list); } + @AutoLog(value = "企业标准-零部件树历史数据处理") + @ApiOperation(value = "企业标准-零部件树历史数据处理", notes = "企业标准-零部件树历史数据处理") + @PostMapping("/hisDataFix") + public Result> hisDataFix() { + partNameService.hisDataFix(); + return Result.OK(); + } + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/PartNameService.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/PartNameService.java index 2dff1b1d..b6f2a90c 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/PartNameService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/PartNameService.java @@ -30,4 +30,9 @@ public interface PartNameService extends IService { * @return 零部件树 */ List queryEcho(String selectNodeCodes); + + /** + * 零部件树历史数据处理 + */ + void hisDataFix(); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/PartNameServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/PartNameServiceImpl.java index e8c68970..52783265 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/PartNameServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/PartNameServiceImpl.java @@ -85,6 +85,50 @@ public class PartNameServiceImpl extends ServiceImpl return partNameMapper.selectList(queryWrapper); } + @Override + public void hisDataFix() { + List allDataList = list(); + // 遍历所有数据,填充firstNode字段 + // 找到树结构中每个节点的一级节点 + Map nodeMap = allDataList.stream() + .collect(Collectors.toMap(PartName::getCode, Function.identity())); + + // 构建树形结构 + allDataList.forEach(node -> { + PartName parentNode = nodeMap.get(node.getParentCode()); + if (parentNode != null) { + if (parentNode.getChildPartNameList() == null) { + parentNode.setChildPartNameList(new ArrayList<>()); + } + parentNode.getChildPartNameList().add(node); + } + }); + + // 数据整理 + allDataList.forEach(node -> { + if (!node.getParentCode().equals("Part") && node.getFirstNode() == null) { + PartName firstNode = this.getFirstLevelNode(node, nodeMap); + if (firstNode != null) { + node.setFirstNode(firstNode.getCode()); + } + } + }); + + // 更新数据库 + updateBatchById(allDataList); + } + + private PartName getFirstLevelNode(PartName node, Map nodeMap) { + if (node.getParentCode().equals("Part")) { + return node; + } + PartName parentNode = nodeMap.get(node.getParentCode()); + if (parentNode != null) { + return getFirstLevelNode(parentNode, nodeMap); + } + return null; + } + }