From 0c929802702bca00b24b8c74f52723b21ba5b4c2 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期五, 11 七月 2025 09:43:45 +0800 Subject: [PATCH] art: 查询岗位用户信息修改 --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java | 134 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 118 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 084bb65..3406dd7 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,27 +122,85 @@ String[] levels = path.split("/"); int depth = levels.length; - // 妫�鏌ュ眰绾ф繁搴� + // 鏀寔澶氱鏍煎紡锛氫腑蹇�/宸ュ尯銆佷腑蹇�/宸ユ銆佷腑蹇�/宸ュ尯/宸ユ if (depth < 2 || depth > 3) { - return null; // 鏃犳晥鐨勫眰绾ф繁搴� + return null; } - // 鏌ヨ绗竴绾т腑蹇� - BaseFactory center = findFactory(levels[0], 1, null); - if (center == null) return null; + // 浠庡簳灞傚紑濮嬫煡璇細鏈�鍚庝竴绾у彲鑳芥槸宸ュ尯鎴栧伐娈� + String lastName = levels[depth - 1]; + BaseFactory lastLevel = searchForLastLevel(lastName); + if (lastLevel == 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()); + return validatePath(levels, lastLevel); } - private BaseFactory searchByCode(String code) { + 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.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) { @@ -148,7 +210,16 @@ if (category != null) query.eq(BaseFactory::getFactoryCategory, category); if (parentId != null) query.eq(BaseFactory::getParentId, parentId); - return this.baseMapper.selectOne(query); + // 浣跨敤鍒嗛〉鏂瑰紡鍏煎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); } /** @@ -281,4 +352,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