|
|
|
|
@ -318,6 +318,21 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService {
|
|
|
|
|
throw new ServiceException("项目信息不存在");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 查询项目的有效预算
|
|
|
|
|
ErpBudgetInfo budgetInfo = budgetInfoMapper.selectOne(
|
|
|
|
|
Wrappers.<ErpBudgetInfo>lambdaQuery()
|
|
|
|
|
.eq(ErpBudgetInfo::getProjectId, projectId)
|
|
|
|
|
.eq(ErpBudgetInfo::getBudgetStatus, "3") // 可用状态
|
|
|
|
|
.orderByDesc(ErpBudgetInfo::getBudgetVersion)
|
|
|
|
|
.last("limit 1")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// 使用预算表中的合同额和合同净额作为当前合同额和当前合同净额
|
|
|
|
|
if (budgetInfo != null) {
|
|
|
|
|
vo.setContractAmount(budgetInfo.getContractAmount());
|
|
|
|
|
vo.setContractNetAmount(budgetInfo.getNetContractAmount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 检查是否有未完成的变更(状态1或2)
|
|
|
|
|
List<ErpProjectChange> existingChanges = baseMapper.selectList(
|
|
|
|
|
Wrappers.<ErpProjectChange>lambdaQuery()
|
|
|
|
|
@ -434,15 +449,6 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService {
|
|
|
|
|
vo.setProgressList(progressList);
|
|
|
|
|
|
|
|
|
|
// 查询项目预算明细,转换为预算变更明细
|
|
|
|
|
// 首先查询项目的有效预算
|
|
|
|
|
ErpBudgetInfo budgetInfo = budgetInfoMapper.selectOne(
|
|
|
|
|
Wrappers.<ErpBudgetInfo>lambdaQuery()
|
|
|
|
|
.eq(ErpBudgetInfo::getProjectId, projectId)
|
|
|
|
|
.eq(ErpBudgetInfo::getBudgetStatus, "3") // 可用状态
|
|
|
|
|
.orderByDesc(ErpBudgetInfo::getBudgetVersion)
|
|
|
|
|
.last("limit 1")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
List<ErpProjectChangeBudget> budgetList = new ArrayList<>();
|
|
|
|
|
if (budgetInfo != null) {
|
|
|
|
|
// 查询预算明细
|
|
|
|
|
@ -661,6 +667,60 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService {
|
|
|
|
|
return voList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询指定项目的所有历史变更记录(包含预算、进度子表数据)
|
|
|
|
|
* 取消了暂存状态的数据,只显示历史及当前的审批流转/可用状态记录
|
|
|
|
|
*
|
|
|
|
|
* @param projectId 项目 ID
|
|
|
|
|
* @return 历史变更记录列表
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<ErpProjectChangeVo> queryHistoryByProjectId(Long projectId) {
|
|
|
|
|
if (projectId == null) {
|
|
|
|
|
return new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 查询该项目的所有非草稿的变更记录(按照变更次数/创建时间正序,便于组装历史变更轴)
|
|
|
|
|
LambdaQueryWrapper<ErpProjectChange> lqw = Wrappers.lambdaQuery(ErpProjectChange.class)
|
|
|
|
|
.eq(ErpProjectChange::getProjectId, projectId)
|
|
|
|
|
.eq(ErpProjectChange::getDelFlag, "0")
|
|
|
|
|
.ne(ErpProjectChange::getProjectChangeStatus, "1") // 排除暂存状态
|
|
|
|
|
.orderByAsc(ErpProjectChange::getChangeNumber) // 升序排列,第1次在前面
|
|
|
|
|
.orderByAsc(ErpProjectChange::getCreateTime);
|
|
|
|
|
|
|
|
|
|
List<ErpProjectChange> list = baseMapper.selectList(lqw);
|
|
|
|
|
|
|
|
|
|
// 转换为VO并关联子表数据
|
|
|
|
|
List<ErpProjectChangeVo> voList = new ArrayList<>();
|
|
|
|
|
for (ErpProjectChange entity : list) {
|
|
|
|
|
// 这里我们需要查询到发起人名字之类的信息所以使用 selectCustomErpProjectChangeVoById 更加完整
|
|
|
|
|
ErpProjectChangeVo vo = baseMapper.selectCustomErpProjectChangeVoById(entity.getProjectChangeId());
|
|
|
|
|
if(vo == null) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 关联子表数据
|
|
|
|
|
vo.setBudgetList(changeBudgetMapper.selectList(
|
|
|
|
|
Wrappers.lambdaQuery(ErpProjectChangeBudget.class)
|
|
|
|
|
.eq(ErpProjectChangeBudget::getProjectChangeId, vo.getProjectChangeId())
|
|
|
|
|
.eq(ErpProjectChangeBudget::getDelFlag, "0")
|
|
|
|
|
.orderByAsc(ErpProjectChangeBudget::getSortOrder)
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
vo.setProgressList(changeProgressMapper.selectList(
|
|
|
|
|
Wrappers.lambdaQuery(ErpProjectChangeProgress.class)
|
|
|
|
|
.eq(ErpProjectChangeProgress::getProjectChangeId, vo.getProjectChangeId())
|
|
|
|
|
.eq(ErpProjectChangeProgress::getDelFlag, "0")
|
|
|
|
|
.orderByAsc(ErpProjectChangeProgress::getSortOrder)
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
voList.add(vo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return voList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 项目变更流程监听器
|
|
|
|
|
*
|
|
|
|
|
|