feat(erp): 添加项目计划审批状态校验功能

- 在项目变更提交前校验项目计划是否已审批通过
- 新增 validateProjectPlanApproved 方法验证项目计划状态
- 项目计划未创建或未审批通过时阻止项目变更申请
- 项目计划状态包括草稿、审批中、审批通过三种状态判断
dev
zangch@mesnac.com 3 days ago
parent 43bf015094
commit 4d6056b2ff

@ -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<ErpProjectChange> existingChanges = baseMapper.selectList(
@ -543,6 +542,24 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService {
}
}
/**
*
*/
private void validateProjectPlanApproved(Long projectId) {
ErpProjectPlan projectPlan = projectPlanMapper.selectOne(
Wrappers.<ErpProjectPlan>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("项目计划尚未审批通过,无法发起项目变更");
}
}
/**
*
*/

Loading…
Cancel
Save