From da26a61eee160d63ad99b69bcef0b24565c1a8f7 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期四, 10 七月 2025 15:44:49 +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 | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 154 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..d28a83f 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,13 @@
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.oConvertUtils;
import org.jeecg.modules.system.entity.BaseFactory;
@@ -100,32 +103,148 @@
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;
+ }
+
+ // 浠庡簳灞傚紑濮嬫煡璇細鏈�鍚庝竴绾у彲鑳芥槸宸ュ尯鎴栧伐娈�
+ String lastName = levels[depth - 1];
+ BaseFactory lastLevel = searchForLastLevel(lastName);
+ if (lastLevel == 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;
+ }
+ } else {
+ // 涓績/宸ュ尯/宸ユ
+ if (!("3").equals(lastLevel.getFactoryCategory())) 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;
+ }
+ }
+ 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);
+
+ 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 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑璁惧杞﹂棿绠$悊瀵硅薄鏁版嵁
*/
@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 +264,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;
@@ -224,4 +349,17 @@
}
}
}
+
+ /**
+ * 閫氳繃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;
+ }
}
--
Gitblit v1.9.3