From ef098de06475f5ad52b567181ab829ddbe3821b7 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Mon, 9 Nov 2026 12:44:43 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E5=90=8C=E5=90=8D?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E9=83=A8=E9=97=A8=E5=B1=95=E7=A4=BA=E4=B8=8E?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7=E5=89=8D=E7=BC=80=E6=8C=89?= =?UTF-8?q?=E6=97=A7=E5=B9=B3=E5=8F=B0=E5=85=AC=E5=8F=B8ID=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../springblade/system/pojo/vo/DeptVO.java | 6 +++ .../system/controller/DeptController.java | 4 +- .../system/service/IDeptService.java | 4 +- .../impl/BusinessDeptConfigServiceImpl.java | 34 ++++++++++++++ .../system/service/impl/DeptServiceImpl.java | 44 ++++++++++++++++++- .../impl/ContractManageServiceImpl.java | 15 ++++--- 6 files changed, 96 insertions(+), 11 deletions(-) diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java index 1d36c2da..5f54f9e3 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java @@ -87,6 +87,12 @@ public class DeptVO extends Dept implements INode { */ private String parentName; + /** + * 所属公司名称(按 belongCompanyCode 解析) + */ + @Schema(description = "所属公司名称") + private String belongCompanyName; + /** * 机构类型名称 */ diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java index 0c4a3256..11ea8d1c 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java @@ -274,8 +274,8 @@ public class DeptController extends BladeController { @PreAuth(AuthConstant.PERMIT_ALL) @GetMapping("/business-dept-select") @ApiOperationSupport(order = 12) - @Operation(summary = "业务部门下拉", description = "返回是否业务部门=是的部门列表") - public R> businessDeptSelect() { + @Operation(summary = "业务部门下拉", description = "返回是否业务部门=是的部门列表(含上级组织名称)") + public R> businessDeptSelect() { return R.data(deptService.listBusinessDept()); } diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java index 39ccb769..c849721f 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java @@ -109,9 +109,9 @@ public interface IDeptService extends IService { /** * 业务部门下拉(是否业务部门=是) * - * @return 业务部门列表 + * @return 业务部门列表(含上级组织名称,便于同名部门区分) */ - List listBusinessDept(); + List listBusinessDept(); /** * 根据部门名称精确匹配获取部门ID集合 diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/BusinessDeptConfigServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/BusinessDeptConfigServiceImpl.java index 38f91fe6..6aa2c025 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/BusinessDeptConfigServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/BusinessDeptConfigServiceImpl.java @@ -42,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional; import lombok.RequiredArgsConstructor; +import java.util.List; import java.util.Objects; import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE; @@ -88,6 +89,39 @@ public class BusinessDeptConfigServiceImpl extends BaseServiceImpl activePlatformList = deptService.list(Wrappers.lambdaQuery() + .eq(Dept::getIsPlatformCompany, 1) + .eq(Dept::getDeptName, platformCompanyName) + .orderByAsc(Dept::getId)); + for (Dept activePlatform : activePlatformList) { + if (activePlatform == null || Func.isEmpty(activePlatform.getId()) + || Objects.equals(activePlatform.getId(), platformCompanyId)) { + continue; + } + config = findByPlatformAndDept(activePlatform.getId(), businessDeptId); + if (config != null) { + return config; + } + } + return getOne(Wrappers.lambdaQuery() + .eq(BusinessDeptConfig::getPlatformCompanyName, platformCompanyName) + .eq(BusinessDeptConfig::getBusinessDeptId, businessDeptId) + .eq(BusinessDeptConfig::getIsDeleted, 0) + .orderByDesc(BusinessDeptConfig::getUpdateTime) + .last("LIMIT 1"), false); + } + + private BusinessDeptConfig findByPlatformAndDept(Long platformCompanyId, Long businessDeptId) { return getOne(Wrappers.lambdaQuery() .eq(BusinessDeptConfig::getPlatformCompanyId, platformCompanyId) .eq(BusinessDeptConfig::getBusinessDeptId, businessDeptId) diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java index 2b2f485e..ad2bd919 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java @@ -321,7 +321,7 @@ public class DeptServiceImpl extends ServiceImpl implements ID } @Override - public List listBusinessDept() { + public List listBusinessDept() { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() .eq(Dept::getIsBusinessDept, 1) .orderByAsc(Dept::getSort) @@ -329,7 +329,47 @@ public class DeptServiceImpl extends ServiceImpl implements ID if (!AuthUtil.isAdministrator()) { queryWrapper.eq(Dept::getTenantId, AuthUtil.getTenantId()); } - return list(queryWrapper); + List deptList = list(queryWrapper); + if (CollectionUtil.isEmpty(deptList)) { + return Collections.emptyList(); + } + // 批量补齐上级名称、所属公司名称:扁平下拉靠公司/上级区分同名业务部门 + Set parentIdSet = deptList.stream() + .map(Dept::getParentId) + .filter(Func::isNotEmpty) + .collect(Collectors.toSet()); + Map parentNameMap = Collections.emptyMap(); + if (CollectionUtil.isNotEmpty(parentIdSet)) { + parentNameMap = listByIds(parentIdSet).stream() + .filter(parent -> Func.isNotEmpty(parent.getId())) + .collect(Collectors.toMap(Dept::getId, Dept::getDeptName, (left, right) -> left)); + } + Set companyCodeSet = deptList.stream() + .map(Dept::getBelongCompanyCode) + .filter(Func::isNotEmpty) + .collect(Collectors.toSet()); + Map companyNameMap = Collections.emptyMap(); + if (CollectionUtil.isNotEmpty(companyCodeSet)) { + companyNameMap = list(Wrappers.lambdaQuery().in(Dept::getDeptCode, companyCodeSet)).stream() + .filter(company -> Func.isNotEmpty(company.getDeptCode())) + .collect(Collectors.toMap(Dept::getDeptCode, Dept::getDeptName, (left, right) -> left)); + } + Map finalParentNameMap = parentNameMap; + Map finalCompanyNameMap = companyNameMap; + return deptList.stream().map(dept -> { + DeptVO deptVO = BeanUtil.copyProperties(dept, DeptVO.class); + if (deptVO == null) { + return null; + } + if (Func.isNotEmpty(dept.getParentId())) { + deptVO.setParentName(finalParentNameMap.getOrDefault(dept.getParentId(), StringPool.EMPTY)); + } + if (Func.isNotEmpty(dept.getBelongCompanyCode())) { + deptVO.setBelongCompanyName( + finalCompanyNameMap.getOrDefault(dept.getBelongCompanyCode(), StringPool.EMPTY)); + } + return deptVO; + }).filter(Objects::nonNull).toList(); } @Override diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java index 6875a766..91ccf6db 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java @@ -907,14 +907,19 @@ public class ContractManageServiceImpl extends BaseServiceImpl