From 8904f9e6005e7e1f3cc06f415fdcde0033c32332 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期一, 21 七月 2025 20:33:53 +0800
Subject: [PATCH] art: 技术状态鉴定工单-生成逻辑优化
---
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java | 82 ++++++++++++++++++++++++++++++++++------
1 files changed, 69 insertions(+), 13 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 084bb65..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
@@ -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: 璁惧杞﹂棿绠$悊
@@ -110,7 +114,7 @@
if (keyWord.contains("/")) {
return searchByHierarchy(keyWord);
} else {
- return searchByCode(keyWord);
+ return searchByCodeOrName(keyWord);
}
}
@@ -118,29 +122,47 @@
String[] levels = path.split("/");
int depth = levels.length;
- // 妫�鏌ュ眰绾ф繁搴�
+ // 鏀寔鏍煎紡锛氫腑蹇�/宸ュ尯銆佷腑蹇�/宸ユ銆佷腑蹇�/宸ュ尯/宸ユ
if (depth < 2 || depth > 3) {
- return null; // 鏃犳晥鐨勫眰绾ф繁搴�
+ return null;
}
- // 鏌ヨ绗竴绾т腑蹇�
+ // 浠庨《灞傚紑濮嬫煡璇� - 绗�1绾э細涓績鑺傜偣
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;
+ // 绗�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;
- // 鏌ヨ绗笁绾у伐娈�
- return findFactory(levels[2], null, workArea.getId());
+ // 绗�3绾э細宸ユ
+ return findFactory(levels[2], 3, workArea.getId());
+ }
}
- private BaseFactory searchByCode(String code) {
+ // 淇濇寔涓嶅彉
+ private BaseFactory searchByCodeOrName(String keyword) {
LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
- query.like(BaseFactory::getFactoryCode, code);
- return this.baseMapper.selectOne(query); // 浣跨敤selectOne閬垮厤澶氫釜缁撴灉
+ 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);
@@ -148,8 +170,11 @@
if (category != null) query.eq(BaseFactory::getFactoryCategory, category);
if (parentId != null) query.eq(BaseFactory::getParentId, parentId);
- return this.baseMapper.selectOne(query);
+ Page<BaseFactory> page = new Page<>(1, 1);
+ Page<BaseFactory> resultPage = baseMapper.selectPage(page, query);
+ return resultPage.getRecords().isEmpty() ? null : resultPage.getRecords().get(0);
}
+
/**
* saveProductionData 瀵瑰簲 add 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑璁惧杞﹂棿绠$悊瀵硅薄鏁版嵁
@@ -281,4 +306,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