|
|
|
|
@ -189,6 +189,18 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService {
|
|
|
|
|
// 权限校验:只有项目经理才能提交
|
|
|
|
|
validateProjectManager(bo.getProjectManagerId());
|
|
|
|
|
|
|
|
|
|
Long projectId = bo.getProjectId();
|
|
|
|
|
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);
|
|
|
|
|
validEntityBeforeSave(add);
|
|
|
|
|
|
|
|
|
|
@ -558,6 +570,61 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService {
|
|
|
|
|
//TODO 做一些数据校验,如唯一约束
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询指定项目计划的所有变更记录
|
|
|
|
|
* 注意:ErpProjectChange 绑定的是 project_id 而非 project_plan_id
|
|
|
|
|
* 需要先通过项目计划查询出项目ID,再查询该项目的所有变更记录
|
|
|
|
|
*
|
|
|
|
|
* @param projectPlanId 项目计划 ID
|
|
|
|
|
* @return 变更记录列表
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<ErpProjectChangeVo> queryByProjectPlanId(Long projectPlanId) {
|
|
|
|
|
if (projectPlanId == null) {
|
|
|
|
|
return new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 第一步:通过项目计划ID查询项目计划信息,获取项目ID
|
|
|
|
|
ErpProjectPlan projectPlan = projectPlanMapper.selectById(projectPlanId);
|
|
|
|
|
if (projectPlan == null || projectPlan.getProjectId() == null) {
|
|
|
|
|
return new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Long projectId = projectPlan.getProjectId();
|
|
|
|
|
|
|
|
|
|
// 第二步:通过项目ID查询该项目的所有变更记录
|
|
|
|
|
LambdaQueryWrapper<ErpProjectChange> lqw = Wrappers.lambdaQuery(ErpProjectChange.class)
|
|
|
|
|
.eq(ErpProjectChange::getProjectId, projectId)
|
|
|
|
|
.eq(ErpProjectChange::getDelFlag, "0")
|
|
|
|
|
.orderByDesc(ErpProjectChange::getCreateTime);
|
|
|
|
|
|
|
|
|
|
List<ErpProjectChange> list = baseMapper.selectList(lqw);
|
|
|
|
|
|
|
|
|
|
// 第三步:转换为VO并关联子表数据
|
|
|
|
|
List<ErpProjectChangeVo> voList = new ArrayList<>();
|
|
|
|
|
for (ErpProjectChange entity : list) {
|
|
|
|
|
ErpProjectChangeVo vo = MapstructUtils.convert(entity, ErpProjectChangeVo.class);
|
|
|
|
|
|
|
|
|
|
// 关联子表数据
|
|
|
|
|
vo.setBudgetList(changeBudgetMapper.selectList(
|
|
|
|
|
Wrappers.lambdaQuery(ErpProjectChangeBudget.class)
|
|
|
|
|
.eq(ErpProjectChangeBudget::getProjectChangeId, entity.getProjectChangeId())
|
|
|
|
|
.eq(ErpProjectChangeBudget::getDelFlag, "0")
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
vo.setProgressList(changeProgressMapper.selectList(
|
|
|
|
|
Wrappers.lambdaQuery(ErpProjectChangeProgress.class)
|
|
|
|
|
.eq(ErpProjectChangeProgress::getProjectChangeId, entity.getProjectChangeId())
|
|
|
|
|
.eq(ErpProjectChangeProgress::getDelFlag, "0")
|
|
|
|
|
.orderByAsc(ErpProjectChangeProgress::getSortOrder)
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
voList.add(vo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return voList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 项目变更流程监听器
|
|
|
|
|
*
|
|
|
|
|
|