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; + } + }