From fd57c8510934444df5320029653d530a1abeff67 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 11 七月 2025 17:57:18 +0800
Subject: [PATCH] 修改查询

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java |   84 +++++++++--------------------------------
 1 files changed, 19 insertions(+), 65 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
index 3406dd7..0062273 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
@@ -122,87 +122,47 @@
         String[] levels = path.split("/");
         int depth = levels.length;
 
-        // 鏀寔澶氱鏍煎紡锛氫腑蹇�/宸ュ尯銆佷腑蹇�/宸ユ銆佷腑蹇�/宸ュ尯/宸ユ
+        // 鏀寔鏍煎紡锛氫腑蹇�/宸ュ尯銆佷腑蹇�/宸ユ銆佷腑蹇�/宸ュ尯/宸ユ
         if (depth < 2 || depth > 3) {
             return null;
         }
 
-        // 浠庡簳灞傚紑濮嬫煡璇細鏈�鍚庝竴绾у彲鑳芥槸宸ュ尯鎴栧伐娈�
-        String lastName = levels[depth - 1];
-        BaseFactory lastLevel = searchForLastLevel(lastName);
-        if (lastLevel == null) return null;
+        // 浠庨《灞傚紑濮嬫煡璇� - 绗�1绾э細涓績鑺傜偣
+        BaseFactory center = findFactory(levels[0], 1, null);
+        if (center == null) return null;
 
-        return validatePath(levels, lastLevel);
-    }
-
-    private BaseFactory validatePath(String[] levels, BaseFactory lastLevel) {
-        if (levels.length == 2) {
-            // 涓績/宸ュ尯 鎴� 涓績/宸ユ
-            BaseFactory center = findParentCenter(lastLevel);
-            if (center != null &&
-                    center.getFactoryName().equals(levels[0]) &&
-                    ("1").equals(center.getFactoryCategory())) {
-                return lastLevel;
+        // 绗�2绾ф煡璇細宸ュ尯鎴栧伐娈�
+        BaseFactory secondLevel;
+        if (depth == 2) {
+            // 鍏煎鏂规锛氫紭鍏堟煡宸ユ鍐嶆煡宸ュ尯
+            secondLevel = findFactory(levels[1], 3, center.getId());
+            if (secondLevel == null) {
+                secondLevel = findFactory(levels[1], 2, center.getId());
             }
+            return secondLevel; // 鍙兘涓簄ull
         } else {
-            // 涓績/宸ュ尯/宸ユ
-            if (!("3").equals(lastLevel.getFactoryCategory())) return null;
+            // 绗�2绾у繀椤绘槸宸ュ尯
+            BaseFactory workArea = findFactory(levels[1], 2, center.getId());
+            if (workArea == null) return null;
 
-            BaseFactory workArea = getById(lastLevel.getParentId());
-            if (workArea == null ||
-                    !("2").equals(workArea.getFactoryCategory())) return null;
-
-            BaseFactory center = getById(workArea.getParentId());
-            if (center == null ||
-                    !("1").equals(center.getFactoryCategory())) return null;
-
-            if (workArea.getFactoryName().equals(levels[1]) &&
-                    center.getFactoryName().equals(levels[0])) {
-                return lastLevel;
-            }
+            // 绗�3绾э細宸ユ
+            return findFactory(levels[2], 3, workArea.getId());
         }
-        return null;
     }
 
-    private BaseFactory searchForLastLevel(String name) {
-        // 鍏堝皾璇曟煡璇㈠伐娈碉紙绫诲埆3锛�
-        BaseFactory workshop = findFactory(name, 3, null);
-        if (workshop != null) return workshop;
-
-        // 濡傛灉娌℃湁鎵惧埌宸ユ锛屽皾璇曟煡璇㈠伐鍖猴紙绫诲埆2锛�
-        return findFactory(name, 2, null);
-    }
-
-    private BaseFactory findParentCenter(BaseFactory entity) {
-        if (("1").equals(entity.getFactoryCategory())) {
-            return entity; // 鏈韩灏辨槸涓績
-        }
-
-        BaseFactory parent = getById(entity.getParentId());
-        if (parent == null) return null;
-
-        if (("1").equals(parent.getFactoryCategory())) {
-            return parent; // 鐩存帴鐖剁骇鏄腑蹇�
-        }
-
-        // 濡傛灉鐖剁骇涓嶆槸涓績锛屽皾璇曟壘鐖剁骇鐨勭埗绾�
-        return getById(parent.getParentId());
-    }
-
+    // 淇濇寔涓嶅彉
     private BaseFactory searchByCodeOrName(String keyword) {
-        // 浣跨敤鍒嗛〉鏂瑰紡鍏煎SQL Server
         LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
         query.and(q -> q.eq(BaseFactory::getFactoryName, keyword)
                 .or()
                 .like(BaseFactory::getFactoryCode, keyword));
 
-        // 浣跨敤鍒嗛〉鏌ヨ鑾峰彇绗竴鏉¤褰�
         Page<BaseFactory> page = new Page<>(1, 1);
         Page<BaseFactory> resultPage = baseMapper.selectPage(page, query);
-
         return resultPage.getRecords().isEmpty() ? null : resultPage.getRecords().get(0);
     }
 
+    // 淇濇寔涓嶅彉
     private BaseFactory findFactory(String name, Integer category, String parentId) {
         LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
         query.eq(BaseFactory::getFactoryName, name);
@@ -210,17 +170,11 @@
         if (category != null) query.eq(BaseFactory::getFactoryCategory, category);
         if (parentId != null) query.eq(BaseFactory::getParentId, parentId);
 
-        // 浣跨敤鍒嗛〉鏂瑰紡鍏煎SQL Server
         Page<BaseFactory> page = new Page<>(1, 1);
         Page<BaseFactory> resultPage = baseMapper.selectPage(page, query);
-
         return resultPage.getRecords().isEmpty() ? null : resultPage.getRecords().get(0);
     }
 
-    private BaseFactory getById(String id) {
-        if (StringUtils.isBlank(id)) return null;
-        return baseMapper.selectById(id);
-    }
 
     /**
      * saveProductionData 瀵瑰簲 add 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑璁惧杞﹂棿绠$悊瀵硅薄鏁版嵁

--
Gitblit v1.9.3