From 7cd4326bda3ce46633e8590ba4e36c5d92d0e001 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 09 七月 2025 18:51:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 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 c50d112..084bb65 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
@@ -102,7 +102,54 @@
         return Collections.emptyList();
     }
 
+    public BaseFactory searchCenterByKeyWord(String keyWord) {
+        if (StringUtils.isBlank(keyWord)) {
+            return null;
+        }
 
+        if (keyWord.contains("/")) {
+            return searchByHierarchy(keyWord);
+        } else {
+            return searchByCode(keyWord);
+        }
+    }
+
+    private BaseFactory searchByHierarchy(String path) {
+        String[] levels = path.split("/");
+        int depth = levels.length;
+
+        // 妫�鏌ュ眰绾ф繁搴�
+        if (depth < 2 || depth > 3) {
+            return null; // 鏃犳晥鐨勫眰绾ф繁搴�
+        }
+
+        // 鏌ヨ绗竴绾т腑蹇�
+        BaseFactory center = findFactory(levels[0], 1, null);
+        if (center == null) return null;
+
+        // 鏌ヨ绗簩绾у伐鍖�
+        BaseFactory workArea = findFactory(levels[1], null, center.getId());
+        if (workArea == null || depth == 2) return workArea;
+
+        // 鏌ヨ绗笁绾у伐娈�
+        return findFactory(levels[2], null, workArea.getId());
+    }
+
+    private BaseFactory searchByCode(String code) {
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
+        query.like(BaseFactory::getFactoryCode, code);
+        return this.baseMapper.selectOne(query); // 浣跨敤selectOne閬垮厤澶氫釜缁撴灉
+    }
+
+    private BaseFactory findFactory(String name, Integer category, String parentId) {
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
+        query.eq(BaseFactory::getFactoryName, name);
+
+        if (category != null) query.eq(BaseFactory::getFactoryCategory, category);
+        if (parentId != null) query.eq(BaseFactory::getParentId, parentId);
+
+        return this.baseMapper.selectOne(query);
+    }
 
     /**
      * saveProductionData 瀵瑰簲 add 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑璁惧杞﹂棿绠$悊瀵硅薄鏁版嵁

--
Gitblit v1.9.3