From c800257cb6c8b45e7edc20e2e9018cd90b230806 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 09 七月 2025 19:50:00 +0800
Subject: [PATCH] art: 技术状态鉴定-基础代码生成

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java |   89 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 73 insertions(+), 16 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 047ae84..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
@@ -3,10 +3,12 @@
 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 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.oConvertUtils;
 import org.jeecg.modules.system.entity.BaseFactory;
@@ -100,32 +102,81 @@
         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 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑璁惧杞﹂棿绠$悊瀵硅薄鏁版嵁
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveBaseFactoryData(BaseFactory BaseFactory) {
-        if (BaseFactory != null) {
-            if (BaseFactory.getParentId() == null|| StrUtil.isEmpty(BaseFactory.getParentId())) {
-                BaseFactory.setParentId("");
-                BaseFactory.setFactoryCategory("0");
+    public void saveBaseFactoryData(BaseFactory baseFactory) {
+        if (baseFactory != null) {
+            if (baseFactory.getParentId() == null|| StrUtil.isEmpty(baseFactory.getParentId())) {
+                baseFactory.setParentId("");
+                baseFactory.setFactoryCategory("0");
             }
-            if (BaseFactory.getFactoryCategory() == null|| StrUtil.isEmpty(BaseFactory.getFactoryCategory())) {
-                BaseFactory.setFactoryCategory("1");
+            if (baseFactory.getFactoryCategory() == null|| StrUtil.isEmpty(baseFactory.getFactoryCategory())) {
+                baseFactory.setFactoryCategory("1");
             }
-            BaseFactory.setId(IdWorker.getIdStr(BaseFactory));
+            baseFactory.setId(IdWorker.getIdStr(baseFactory));
             // 鍏堝垽鏂瀵硅薄鏈夋棤鐖剁骇ID,鏈夊垯鎰忓懗鐫�涓嶆槸鏈�楂樼骇,鍚﹀垯鎰忓懗鐫�鏄渶楂樼骇
             // 鑾峰彇鐖剁骇ID
-            String parentId = BaseFactory.getParentId();
+            String parentId = baseFactory.getParentId();
             JSONObject formData = new JSONObject();
             formData.put("parentId",parentId);
             String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.WORKSHOP,formData);
-            BaseFactory.setOrgCode(codeArray[0]);
+            baseFactory.setOrgCode(codeArray[0]);
             String orgType = codeArray[1];
-            BaseFactory.setOrgType(String.valueOf(orgType));
-            BaseFactory.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
-            this.save(BaseFactory);
+            baseFactory.setOrgType(String.valueOf(orgType));
+            baseFactory.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
+            this.save(baseFactory);
         }
     }
 
@@ -145,9 +196,15 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean updateBaseFactoryDataById(BaseFactory BaseFactory) {
-        if (BaseFactory != null) {
-            this.updateById(BaseFactory);
+    public boolean updateBaseFactoryDataById(BaseFactory baseFactory) {
+        QueryWrapper<BaseFactory> baseFactoryQueryWrapper = new QueryWrapper<>();
+        baseFactoryQueryWrapper.eq(StrUtil.isNotEmpty(baseFactory.getFactoryCode()), "factory_code", baseFactory.getFactoryCode());
+        baseFactoryQueryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
+        if (this.getOne(baseFactoryQueryWrapper) != null) {
+            throw new JeecgBootException("鏈烘瀯缂栫爜宸插瓨鍦�");
+        }
+        if (baseFactory != null) {
+            this.updateById(baseFactory);
             return true;
         }
         return false;

--
Gitblit v1.9.3