diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java index 156b36a9..4d17f6fa 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java @@ -194,16 +194,13 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { validateProjectManager(bo.getProjectManagerId()); Long projectId = bo.getProjectId(); + // 校验项目计划是否已审批通过 + validateProjectPlanApproved(projectId); + ErpProjectInfo projectInfo = projectInfoMapper.selectById(projectId); if (projectInfo == null) { throw new ServiceException("项目不存在"); } - // 验证项目状态 -/* - if (!OAStatusEnum.COMPLETED.getStatus().equals(projectInfo.getProjectStatus())) { - throw new ServiceException("项目未审批通过"); - } -*/ ErpProjectChange add = MapstructUtils.convert(bo, ErpProjectChange.class); fillProjectChangeCode(add); @@ -484,6 +481,8 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { public Boolean projectChangeSubmitAndFlowStart(ErpProjectChangeBo bo) { // 权限校验:只有项目经理才能提交 validateProjectManager(bo.getProjectManagerId()); + // 校验项目计划是否已审批通过 + validateProjectPlanApproved(bo.getProjectId()); // 检查是否有未完成的变更 List existingChanges = baseMapper.selectList( @@ -543,6 +542,24 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { } } + /** + * 校验项目计划是否已审批通过,只有审批通过后才能发起项目变更 + */ + private void validateProjectPlanApproved(Long projectId) { + ErpProjectPlan projectPlan = projectPlanMapper.selectOne( + Wrappers.lambdaQuery() + .eq(ErpProjectPlan::getProjectId, projectId) + .eq(ErpProjectPlan::getDelFlag, "0") + ); + if (projectPlan == null) { + throw new ServiceException("该项目尚未创建项目计划,无法发起项目变更"); + } + // 项目计划状态:1-草稿 2-审批中 3-审批通过 + if (!"3".equals(projectPlan.getProjectPlanStatus())) { + throw new ServiceException("项目计划尚未审批通过,无法发起项目变更"); + } + } + /** * 校验并批量删除项目变更申请信息 */