From 99d6db0aab044b740ce02f57872c1e38ae647b58 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 29 七月 2025 19:00:50 +0800
Subject: [PATCH] 三不原则分析 中心修改 台账导入导出字段修改

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 104 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..a7d6cfd 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
@@ -1,15 +1,18 @@
 package org.jeecg.modules.system.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.FillRuleConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.util.FillRuleUtil;
+import org.jeecg.common.util.OrgCodeSplitUtil;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.system.entity.BaseFactory;
 import org.jeecg.modules.system.entity.BaseFactoryUser;
@@ -28,6 +31,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 璁惧杞﹂棿绠$悊
@@ -102,6 +106,74 @@
         return Collections.emptyList();
     }
 
+    public BaseFactory searchCenterByKeyWord(String keyWord) {
+        if (StringUtils.isBlank(keyWord)) {
+            return null;
+        }
+
+        if (keyWord.contains("/")) {
+            return searchByHierarchy(keyWord);
+        } else {
+            return searchByCodeOrName(keyWord);
+        }
+    }
+
+    private BaseFactory searchByHierarchy(String path) {
+        String[] levels = path.split("/");
+        int depth = levels.length;
+
+        // 鏀寔鏍煎紡锛氫腑蹇�/宸ュ尯銆佷腑蹇�/宸ユ銆佷腑蹇�/宸ュ尯/宸ユ
+        if (depth < 2 || depth > 3) {
+            return null;
+        }
+
+        // 浠庨《灞傚紑濮嬫煡璇� - 绗�1绾э細涓績鑺傜偣
+        BaseFactory center = findFactory(levels[0], 1, null);
+        if (center == null) return null;
+
+        // 绗�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 {
+            // 绗�2绾у繀椤绘槸宸ュ尯
+            BaseFactory workArea = findFactory(levels[1], 2, center.getId());
+            if (workArea == null) return null;
+
+            // 绗�3绾э細宸ユ
+            return findFactory(levels[2], 3, workArea.getId());
+        }
+    }
+
+    // 淇濇寔涓嶅彉
+    private BaseFactory searchByCodeOrName(String keyword) {
+        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);
+
+        if (category != null) query.eq(BaseFactory::getFactoryCategory, category);
+        if (parentId != null) query.eq(BaseFactory::getParentId, parentId);
+
+        Page<BaseFactory> page = new Page<>(1, 1);
+        Page<BaseFactory> resultPage = baseMapper.selectPage(page, query);
+        return resultPage.getRecords().isEmpty() ? null : resultPage.getRecords().get(0);
+    }
 
 
     /**
@@ -153,6 +225,7 @@
         QueryWrapper<BaseFactory> baseFactoryQueryWrapper = new QueryWrapper<>();
         baseFactoryQueryWrapper.eq(StrUtil.isNotEmpty(baseFactory.getFactoryCode()), "factory_code", baseFactory.getFactoryCode());
         baseFactoryQueryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
+        baseFactoryQueryWrapper.ne(baseFactory.getId() != null, "id", baseFactory.getId());
         if (this.getOne(baseFactoryQueryWrapper) != null) {
             throw new JeecgBootException("鏈烘瀯缂栫爜宸插瓨鍦�");
         }
@@ -234,4 +307,35 @@
             }
         }
     }
+
+    /**
+     * 閫氳繃orgCode缃崲涓績鍚嶇О
+     * @param orgCode
+     */
+    @Override
+    public String factoryDataNameByOrgCode(String orgCode){
+        BaseFactory baseFactory = baseMapper.selectOne(new LambdaQueryWrapper<BaseFactory>().eq(BaseFactory::getOrgCode, orgCode));
+        if (baseFactory != null) {
+            return baseFactory.getFactoryName();
+        }
+        return null;
+    }
+
+    @Override
+    public List<String> queryFactoryIdsByOrgCode(String orgCode) {
+        //鍒嗗壊 orgCode
+        List<String> orgCodeArr = OrgCodeSplitUtil.splitOrgCode(orgCode);
+        if(CollectionUtil.isEmpty(orgCodeArr)){
+            return Collections.emptyList();
+        }
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
+        query.in(BaseFactory::getOrgCode, orgCodeArr);
+        query.eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0);
+        List<BaseFactory> list = this.getBaseMapper().selectList(query);
+        Set<String> collect = list.stream().map(BaseFactory::getId).collect(Collectors.toSet());
+        if(CollectionUtil.isEmpty(collect)){
+            return Collections.emptyList();
+        }
+        return new ArrayList<>(collect);
+    }
 }

--
Gitblit v1.9.3