feat(oa/erp): 新增项目计划变更记录查询接口

- 在ErpProjectChangeController中新增根据项目计划ID查询变更记录的接口
- 实现service层queryByProjectPlanId方法,支持通过项目计划ID关联查询项目变更记录
- 优化项目变更提交逻辑,增加项目存在性校验
- 调整projectChangeSubmitAndFlowStart方法返回值类型为Boolean
- 完善变更记录查询功能,支持关联预算和进度子表数据
dev
zangch@mesnac.com 1 month ago
parent 2e1ba52fed
commit 996528861b

@ -136,4 +136,16 @@ public class ErpProjectChangeController extends BaseController {
return toAjax(erpProjectChangeService.projectChangeSubmitAndFlowStart(bo));
}
/**
*
*
* @param projectPlanId ID
*/
@SaCheckPermission("oa/erp:erpProjectChange:query")
@GetMapping("/queryByProjectPlanId/{projectPlanId}")
public R<List<ErpProjectChangeVo>> queryByProjectPlanId(@NotNull(message = "项目计划ID不能为空")
@PathVariable("projectPlanId") Long projectPlanId) {
return R.ok(erpProjectChangeService.queryByProjectPlanId(projectPlanId));
}
}

@ -81,5 +81,13 @@ public interface IErpProjectChangeService {
* @param bo
* @return
*/
ErpProjectChangeVo projectChangeSubmitAndFlowStart(ErpProjectChangeBo bo);
Boolean projectChangeSubmitAndFlowStart(ErpProjectChangeBo bo);
/**
*
*
* @param projectPlanId ID
* @return
*/
List<ErpProjectChangeVo> queryByProjectPlanId(Long projectPlanId);
}

@ -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;
}
/**
*
*

Loading…
Cancel
Save