diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java index f0e63fb4..7a95b08e 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java @@ -89,6 +89,11 @@ public class ErpProjectInfoBo extends BaseEntity { */ private Long managerId; + /** + * 待办人类型(create本人创建 manager本人项目经理 all全部) + */ + private String todoOwnerType; + /** * 部门负责人 */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java index 74150bdd..2a5ace1b 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java @@ -132,6 +132,7 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService { public List queryTodoList(ErpProjectInfoBo bo) { // 先取基础列表,再按“真实项目经理 / 合同创建人”在内存中过滤 Long filterManagerId = bo.getManagerId(); + String todoOwnerType = bo.getTodoOwnerType(); bo.setManagerId(null); MPJLambdaWrapper lqw = buildQueryWrapper(bo); List baseList = projectInfoMapper.selectCustomErpProjectInfoVoList(lqw); @@ -139,9 +140,6 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService { return baseList; } Long currentUserId = LoginHelper.getUserId(); - if (StringUtils.isNull(filterManagerId)) { - return baseList; - } // 1) 批量取合同ID Set contractIds = baseList.stream() .map(ErpProjectInfoVo::getContractId) @@ -156,11 +154,21 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService { Long contractId = row.getContractId(); Long realManagerId = contractId != null ? contractId2ManagerId.get(contractId) : null; Long contractCreateBy = contractId != null ? contractId2CreateBy.get(contractId) : null; - // 过滤条件:页面选择的项目经理(按真实项目经理) - if (filterManagerId != null) { - return Objects.equals(filterManagerId, realManagerId); + + if (filterManagerId != null && !Objects.equals(filterManagerId, realManagerId)) { + return false; } - // 待办权限:真实项目经理 或 合同激活创建人 + + if ("all".equals(todoOwnerType)) { + return true; + } + if ("create".equals(todoOwnerType)) { + return Objects.equals(currentUserId, contractCreateBy); + } + if ("manager".equals(todoOwnerType)) { + return Objects.equals(currentUserId, realManagerId); + } + // 默认:本人是项目经理或合同激活创建人 return Objects.equals(currentUserId, realManagerId) || Objects.equals(currentUserId, contractCreateBy); }) .collect(Collectors.toList());