From e97b55310155a2dd691bd698a10295a4d867f60c Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期五, 17 四月 2026 15:55:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeDetailsServiceImpl.java |   45 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeDetailsServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeDetailsServiceImpl.java
index ccfb91d..c76b09c 100644
--- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeDetailsServiceImpl.java
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeDetailsServiceImpl.java
@@ -70,6 +70,51 @@
         return baseMapper.selectVoList(lqw);
     }
 
+    /**
+     * 鏌ヨ鏍戝舰缁撴瀯鏁版嵁
+     *
+     * @param judgeId 鍒ゅ畾涓绘爣璇�
+     * @return 鏍戝舰缁撴瀯鍒楄〃
+     */
+    @Override
+    public List<QmJudgeDetailsVo> queryTreeListByJudgeId(String judgeId) {
+        if (StringUtils.isBlank(judgeId)) {
+            return new java.util.ArrayList<>();
+        }
+        // 1. 鏌ヨ鏍硅妭鐐� (rid is null)
+        List<QmJudgeDetailsVo> roots = selectTreeNodes(judgeId, null);
+        for (QmJudgeDetailsVo root : roots) {
+            // 2. 鏌ヨ绗竴绾у瓙鑺傜偣 (rid = root.itemCod)
+            List<QmJudgeDetailsVo> children = selectTreeNodes(judgeId, root.getItemCod());
+            for (QmJudgeDetailsVo child : children) {
+                // 3. 鏌ヨ绗簩绾у瓙鑺傜偣 (rid = child.itemCod)
+                List<QmJudgeDetailsVo> grandchildren = selectTreeNodes(judgeId, child.getItemCod());
+                child.setChildren(grandchildren);
+            }
+            root.setChildren(children);
+        }
+        return roots;
+    }
+
+    /**
+     * 鏌ヨ鏍戣妭鐐�
+     *
+     * @param judgeId 鍒ゅ畾涓绘爣璇�
+     * @param rid     鍏宠仈椤笽D
+     * @return 鑺傜偣鍒楄〃
+     */
+    private List<QmJudgeDetailsVo> selectTreeNodes(String judgeId, String rid) {
+        LambdaQueryWrapper<QmJudgeDetails> lqw = Wrappers.lambdaQuery();
+        lqw.eq(QmJudgeDetails::getJudgeId, judgeId);
+        if (rid == null) {
+            lqw.isNull(QmJudgeDetails::getRid);
+        } else {
+            lqw.eq(QmJudgeDetails::getRid, rid);
+        }
+        lqw.orderByAsc(QmJudgeDetails::getId);
+        return baseMapper.selectVoList(lqw);
+    }
+
     private LambdaQueryWrapper<QmJudgeDetails> buildQueryWrapper(QmJudgeDetailsBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<QmJudgeDetails> lqw = Wrappers.lambdaQuery();

--
Gitblit v1.9.3