feat(erp): 添加项目历史详细变更记录查询功能

dev
Yangk 1 month ago
parent 4977712d0b
commit 1e7199dc5e

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

@ -90,4 +90,13 @@ public interface IErpProjectChangeService {
* @return
*/
List<ErpProjectChangeVo> queryByProjectPlanId(Long projectPlanId);
/**
*
* /
*
* @param projectId ID
* @return
*/
List<ErpProjectChangeVo> queryHistoryByProjectId(Long projectId);
}

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

Loading…
Cancel
Save