From d9c2bc5ce65b38cb633c51fd25942c760517821a Mon Sep 17 00:00:00 2001 From: shl <1378304611@qq.com> Date: Fri, 9 Aug 2024 16:39:15 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E6=96=B0=E5=A2=9E=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E9=A2=84=E7=AE=97=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BudgetHistoryController.java | 28 +-- .../budgethistory/vo/BudgetHistoryRespVO.java | 49 ++++ .../vo/BudgetHistorySaveReqVO.java | 50 ++++ .../budgethistory/BudgetHistoryService.java | 29 +-- .../BudgetHistoryServiceImpl.java | 223 +++++++++++++++--- 5 files changed, 309 insertions(+), 70 deletions(-) diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/BudgetHistoryController.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/BudgetHistoryController.java index a00d4fb50..cd443b649 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/BudgetHistoryController.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/BudgetHistoryController.java @@ -24,6 +24,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import cn.iocoder.yudao.module.pms.controller.admin.budgethistory.vo.*; import cn.iocoder.yudao.module.pms.dal.dataobject.budgethistory.BudgetHistoryDO; @@ -38,27 +39,12 @@ public class BudgetHistoryController { @Resource private BudgetHistoryService budgetHistoryService; - @PostMapping("/create") - @Operation(summary = "创建历史预算管理") - @PreAuthorize("@ss.hasPermission('pms:budget-history:create')") - public CommonResult createBudgetHistory(@Valid @RequestBody BudgetHistorySaveReqVO createReqVO) { - return success(budgetHistoryService.createBudgetHistory(createReqVO)); - } @PutMapping("/update") @Operation(summary = "更新历史预算管理") @PreAuthorize("@ss.hasPermission('pms:budget-history:update')") public CommonResult updateBudgetHistory(@Valid @RequestBody BudgetHistorySaveReqVO updateReqVO) { - budgetHistoryService.updateBudgetHistory(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除历史预算管理") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('pms:budget-history:delete')") - public CommonResult deleteBudgetHistory(@RequestParam("id") Long id) { - budgetHistoryService.deleteBudgetHistory(id); + budgetHistoryService.updateBudgetHistory(getLoginUserId(), updateReqVO); return success(true); } @@ -67,16 +53,16 @@ public class BudgetHistoryController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('pms:budget-history:query')") public CommonResult getBudgetHistory(@RequestParam("id") Long id) { - BudgetHistoryDO budgetHistory = budgetHistoryService.getBudgetHistory(id); - return success(BeanUtils.toBean(budgetHistory, BudgetHistoryRespVO.class)); + BudgetHistoryRespVO budgetHistory = budgetHistoryService.getBudgetHistory(id); + return success(budgetHistory); } @GetMapping("/page") @Operation(summary = "获得历史预算管理分页") @PreAuthorize("@ss.hasPermission('pms:budget-history:query')") public CommonResult> getBudgetHistoryPage(@Valid BudgetHistoryPageReqVO pageReqVO) { - PageResult pageResult = budgetHistoryService.getBudgetHistoryPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, BudgetHistoryRespVO.class)); + PageResult pageResult = budgetHistoryService.getBudgetHistoryPage(pageReqVO); + return success(pageResult); } @GetMapping("/export-excel") @@ -86,7 +72,7 @@ public class BudgetHistoryController { public void exportBudgetHistoryExcel(@Valid BudgetHistoryPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = budgetHistoryService.getBudgetHistoryPage(pageReqVO).getList(); + List list = budgetHistoryService.getBudgetHistoryPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "历史预算管理.xls", "数据", BudgetHistoryRespVO.class, BeanUtils.toBean(list, BudgetHistoryRespVO.class)); diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistoryRespVO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistoryRespVO.java index 52e630da1..22f1c5e06 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistoryRespVO.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistoryRespVO.java @@ -13,6 +13,55 @@ import com.alibaba.excel.annotation.*; @ExcelIgnoreUnannotated public class BudgetHistoryRespVO { + @Schema(description = "跟踪项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS24001") + @ExcelProperty("跟踪项目编号") + private String trackingProjectCode; + + @Schema(description = "项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "SJ24001") + @ExcelProperty("项目编号") + private String projectCode; + + @Schema(description = "跟踪项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "规划一路道路工程") + @ExcelProperty("跟踪项目名称") + private String trackingProjectName; + + @Schema(description = "项目类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "设计") + @ExcelProperty("项目类型") + private String projectType; + + @Schema(description = "预计合同金额", requiredMode = Schema.RequiredMode.REQUIRED,example = "200.0000") + @ExcelProperty("预计合同金额") + private BigDecimal expectedContractAmount; + + @Schema(description = "暂定结算数") + @ExcelProperty("暂定结算数") + private BigDecimal provisionalSettlement; + + @Schema(description = "包干/审定金额", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("包干/审定金额") + private BigDecimal approvedAmount; + + @Schema(description = "外包合同金额") + @ExcelProperty("外包合同金额") + private BigDecimal outAmount; + + @Schema(description = "有效合同金额") + @ExcelProperty("有效合同金额") + private BigDecimal validContractAmount; + + @Schema(description = "预估利润率") + @ExcelProperty("预估利润率") + private BigDecimal estimatedProfitMargin; + + @Schema(description = "实际利润率") + @ExcelProperty("实际利润率") + private BigDecimal realProfitMargin; + + @Schema(description = "利润预警") + @ExcelProperty("利润预警") + private String profitWarning; + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2972") @ExcelProperty("主键") private Long id; diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistorySaveReqVO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistorySaveReqVO.java index c394aa1ea..afaf178f2 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistorySaveReqVO.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/budgethistory/vo/BudgetHistorySaveReqVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.pms.controller.admin.budgethistory.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -10,6 +11,55 @@ import java.math.BigDecimal; @Data public class BudgetHistorySaveReqVO { + @Schema(description = "跟踪项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS24001") + @ExcelProperty("跟踪项目编号") + private String trackingProjectCode; + + @Schema(description = "项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "SJ24001") + @ExcelProperty("项目编号") + private String projectCode; + + @Schema(description = "跟踪项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "规划一路道路工程") + @ExcelProperty("跟踪项目名称") + private String trackingProjectName; + + @Schema(description = "项目类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "设计") + @ExcelProperty("项目类型") + private String projectType; + + @Schema(description = "预计合同金额", requiredMode = Schema.RequiredMode.REQUIRED,example = "200.0000") + @ExcelProperty("预计合同金额") + private BigDecimal expectedContractAmount; + + @Schema(description = "暂定结算数") + @ExcelProperty("暂定结算数") + private BigDecimal provisionalSettlement; + + @Schema(description = "包干/审定金额", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("包干/审定金额") + private BigDecimal approvedAmount; + + @Schema(description = "外包合同金额") + @ExcelProperty("外包合同金额") + private BigDecimal outAmount; + + @Schema(description = "有效合同金额") + @ExcelProperty("有效合同金额") + private BigDecimal validContractAmount; + + @Schema(description = "预估利润率") + @ExcelProperty("预估利润率") + private BigDecimal estimatedProfitMargin; + + @Schema(description = "实际利润率") + @ExcelProperty("实际利润率") + private BigDecimal realProfitMargin; + + @Schema(description = "利润预警") + @ExcelProperty("利润预警") + private String profitWarning; + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2972") private Long id; diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryService.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryService.java index 8eeb5d476..b40e16f6f 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryService.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryService.java @@ -14,42 +14,27 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; */ public interface BudgetHistoryService { - /** - * 创建预算管理 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createBudgetHistory(@Valid BudgetHistorySaveReqVO createReqVO); - /** * 更新预算管理 * * @param updateReqVO 更新信息 */ - void updateBudgetHistory(@Valid BudgetHistorySaveReqVO updateReqVO); + void updateBudgetHistory(Long loginUserId, @Valid BudgetHistorySaveReqVO updateReqVO); /** - * 删除预算管理 + * 获得历史预算管理 * - * @param id 编号 + * @param id 现有预算管理编号 + * @return 历史预算管理 */ - void deleteBudgetHistory(Long id); + BudgetHistoryRespVO getBudgetHistory(Long id); /** - * 获得预算管理 - * - * @param id 编号 - * @return 预算管理 - */ - BudgetHistoryDO getBudgetHistory(Long id); - - /** - * 获得预算管理分页 + * 获得历史预算管理分页 * * @param pageReqVO 分页查询 * @return 预算管理分页 */ - PageResult getBudgetHistoryPage(BudgetHistoryPageReqVO pageReqVO); + PageResult getBudgetHistoryPage(BudgetHistoryPageReqVO pageReqVO); } \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryServiceImpl.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryServiceImpl.java index ea70436e1..049417bdf 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryServiceImpl.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/budgethistory/BudgetHistoryServiceImpl.java @@ -1,10 +1,19 @@ package cn.iocoder.yudao.module.pms.service.budgethistory; +import cn.iocoder.yudao.module.cms.api.contract.ContractApi; +import cn.iocoder.yudao.module.cms.api.contract.dto.ContractRespDTO; +import cn.iocoder.yudao.module.cms.api.outscontract.OutscontractApi; +import cn.iocoder.yudao.module.pms.api.project.ProjectApi; +import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO; +import cn.iocoder.yudao.module.pms.service.budget.BudgetService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import cn.iocoder.yudao.module.pms.controller.admin.budgethistory.vo.*; import cn.iocoder.yudao.module.pms.dal.dataobject.budgethistory.BudgetHistoryDO; @@ -15,7 +24,10 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.pms.dal.mysql.budgethistory.BudgetHistoryMapper; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.CONTRACT_HISTORY_NOT_EXISTS; +import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.CONTRACT_NOT_EXISTS; import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS; /** * 预算管理 Service 实现类 @@ -29,30 +41,197 @@ public class BudgetHistoryServiceImpl implements BudgetHistoryService { @Resource private BudgetHistoryMapper budgetHistoryMapper; - @Override - public Long createBudgetHistory(BudgetHistorySaveReqVO createReqVO) { - // 插入 - BudgetHistoryDO budgetHistory = BeanUtils.toBean(createReqVO, BudgetHistoryDO.class); - budgetHistoryMapper.insert(budgetHistory); - // 返回 - return budgetHistory.getId(); - } + @Resource + private AdminUserApi adminUserApi; + + @Resource + private ProjectApi projectApi; + + @Resource + private ContractApi contractApi; + + @Resource + private OutscontractApi outscontractApi; + + @Resource + private BudgetService budgetService; @Override - public void updateBudgetHistory(BudgetHistorySaveReqVO updateReqVO) { - // 校验存在 - validateBudgetHistoryExists(updateReqVO.getId()); + public void updateBudgetHistory(Long loginUserId, BudgetHistorySaveReqVO updateReqVO) { + // 校验 + Long id = updateReqVO.getId(); + validateBudgetHistoryExists(id); + if (loginUserId == null) { + throw exception(USER_NOT_EXISTS); + } + Long projectId = updateReqVO.getProjectId(); + Long contractId = updateReqVO.getContractId(); + ProjectRespDTO project = projectApi.getProject(projectId); + ContractRespDTO contract = contractApi.getContract(contractId); + if (project == null) { + throw exception(PROJECT_NOT_EXISTS); + } + if (contract == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + // 更新 BudgetHistoryDO updateObj = BeanUtils.toBean(updateReqVO, BudgetHistoryDO.class); + String userName = adminUserApi.getUser(loginUserId).getNickname(); + updateObj.setUpdater(userName); budgetHistoryMapper.updateById(updateObj); } @Override - public void deleteBudgetHistory(Long id) { - // 校验存在 - validateBudgetHistoryExists(id); - // 删除 - budgetHistoryMapper.deleteById(id); + public BudgetHistoryRespVO getBudgetHistory(Long id) { + + // 校验 + if (id == null) { + throw exception(BUDGET_NOT_EXISTS); + } + + BudgetHistoryDO budgetHistoryDO = budgetHistoryMapper.selectById(id); + if (budgetHistoryDO == null) { + throw exception(BUDGET_NOT_EXISTS); + } + + Long budgetId = budgetHistoryDO.getBudgetId(); + if (budgetId == null) { + throw exception(BUDGET_NOT_EXISTS); + } + + Long projectId = budgetHistoryDO.getProjectId(); + if (projectId == null) { + throw exception(PROJECT_NOT_EXISTS); + } + + Long contractId = budgetHistoryDO.getContractId(); + if (contractId == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + ContractRespDTO contract = contractApi.getContract(contractId); + ProjectRespDTO project = projectApi.getProject(projectId); + BudgetHistoryRespVO budgetHistoryRespVO = BeanUtils.toBean(budgetHistoryDO, BudgetHistoryRespVO.class); + + /** 联表查询 + * 1. 跟踪项目编号 √ + * 2. 项目编号 √ + * 3. 跟踪项目名称 √ + * 4. 项目类型 √ + * 5. 预计合同金额 √ + * 6. 暂定结算数 √ + * 7. 包干/审定金额 √ + * 8. 外包公司金额 √ + * + * 9. 有效合同金额 √ + * 10. 预估利润率 √ + * 11. 实际利润率 √ + * 12. 利润预警 √ + */ + + budgetHistoryRespVO.setTrackingProjectCode(project.getTrackingCode()); // 跟踪项目编号 + budgetHistoryRespVO.setProjectCode(project.getCode()); // 项目编号 + budgetHistoryRespVO.setTrackingProjectName(project.getName()); // 跟踪项目名称 + budgetHistoryRespVO.setProjectType(project.getType()); // 项目类型 + budgetHistoryRespVO.setExpectedContractAmount(project.getContractAmount()); // 预计合同金额 + + String countType = contract.getCountType(); + BigDecimal amount = contract.getAmount(); + BigDecimal bigDecimal = new BigDecimal(String.valueOf(amount)); + BigDecimal mul = new BigDecimal("0.85"); + BigDecimal res = null; + if ("费率合同".equals(countType)) { + res = bigDecimal.multiply(mul); + } else if ("总价合同".equals(countType)) { + res = amount; + } + budgetHistoryRespVO.setProvisionalSettlement(res); // 暂定结算数 + + budgetHistoryRespVO.setApprovedAmount(contract.getApprovedAmount()); // 包干/审定金额 + budgetHistoryRespVO.setOutAmount(outscontractApi.getOutsContractAmount(contractId)); // 外包公司金额 + + BigDecimal firstValue = new BigDecimal("0"); + BigDecimal secondValue = new BigDecimal("0"); + if (contract.getApprovedAmount() == null && res != null) { + firstValue = res; + } else if (contract.getApprovedAmount() != null) { + firstValue = contract.getApprovedAmount(); + } else { + firstValue = project.getContractAmount(); + } + if (outscontractApi.getOutsContractAmount(contractId) == null) { + if (budgetHistoryDO.getOutsourcingCosts() != null) { + secondValue = budgetHistoryDO.getOutsourcingCosts(); + } + } else { + secondValue = outscontractApi.getOutsContractAmount(contractId); + } + budgetHistoryRespVO.setValidContractAmount(firstValue.subtract(secondValue)); // 有效合同金额 + + BigDecimal estimatedBaseValue = (res == null) ? project.getContractAmount() : res; + if (estimatedBaseValue == null) { + throw exception(PROFIT_MARGIN_ERROR); + } + BigDecimal estimatedNumerator = estimatedBaseValue + .subtract(budgetHistoryDO.getOutsourcingCosts() != null ? budgetHistoryDO.getOutsourcingCosts() : BigDecimal.ZERO) + .subtract(budgetHistoryDO.getLaborCosts() != null ? budgetHistoryDO.getLaborCosts() : BigDecimal.ZERO) + .subtract(budgetHistoryDO.getProductCosts() != null ? budgetHistoryDO.getProductCosts() : BigDecimal.ZERO) + .subtract(budgetHistoryDO.getFinancialCosts() != null ? budgetHistoryDO.getFinancialCosts() : BigDecimal.ZERO); + budgetHistoryRespVO.setEstimatedProfitMargin(estimatedNumerator.divide(estimatedBaseValue, 4 , RoundingMode.HALF_UP)); // 预估利润率 + + BigDecimal realBaseValue = (contract.getApprovedAmount() == null) ? res : contract.getApprovedAmount(); + if (realBaseValue == null) { + throw exception(PROFIT_MARGIN_ERROR); + } + BigDecimal realNumerator = realBaseValue + .subtract(outscontractApi.getOutsContractAmount(contractId) != null ? outscontractApi.getOutsContractAmount(contractId) : BigDecimal.ZERO) + .subtract(budgetHistoryDO.getAccumulatedLaborCosts() != null ? budgetHistoryDO.getAccumulatedLaborCosts() : BigDecimal.ZERO) + .subtract(budgetHistoryDO.getAccumulatedProductCosts() != null ? budgetHistoryDO.getAccumulatedProductCosts() : BigDecimal.ZERO) + .subtract(budgetHistoryDO.getAccumulatedFinancialCosts() != null ? budgetHistoryDO.getAccumulatedFinancialCosts() : BigDecimal.ZERO); + BigDecimal realProfitMargin = realNumerator.divide(realBaseValue,4, RoundingMode.HALF_UP); + budgetHistoryRespVO.setRealProfitMargin(realProfitMargin); // 实际利润率 + + BigDecimal threshold = new BigDecimal("0.25"); + String profitWarning = (realProfitMargin.compareTo(threshold) < 0) ? "利润预警" : ""; + budgetHistoryRespVO.setProfitWarning(profitWarning); // 利润预警 + + return budgetHistoryRespVO; + } + + @Override + public PageResult getBudgetHistoryPage(BudgetHistoryPageReqVO pageReqVO) { + + // 校验 + if (pageReqVO == null) { + throw exception(PARAM_NOT_EXISTS); + } + + Long projectId = pageReqVO.getProjectId(); + ProjectRespDTO project = projectApi.getProject(projectId); + if (project == null) { + throw exception(PROJECT_NOT_EXISTS); + } + Long contractId = pageReqVO.getContractId(); + ContractRespDTO contract = contractApi.getContract(contractId); + if (contract == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + PageResult budgetHistoryDOPageResult = budgetHistoryMapper.selectPage(pageReqVO); + List pageResultList = budgetHistoryDOPageResult.getList(); + List budgetHistoryRespVOS = new ArrayList<>(); + + for (BudgetHistoryDO budgetHistoryDO : pageResultList) { + Long id = budgetHistoryDO.getId(); + BudgetHistoryRespVO budgetHistory = getBudgetHistory(id); + budgetHistoryRespVOS.add(budgetHistory); + } + + PageResult pageResult = new PageResult<>(); + pageResult.setList(budgetHistoryRespVOS); + + return pageResult; } private void validateBudgetHistoryExists(Long id) { @@ -60,15 +239,5 @@ public class BudgetHistoryServiceImpl implements BudgetHistoryService { throw exception(BUDGET_HISTORY_NOT_EXISTS); } } +} - @Override - public BudgetHistoryDO getBudgetHistory(Long id) { - return budgetHistoryMapper.selectById(id); - } - - @Override - public PageResult getBudgetHistoryPage(BudgetHistoryPageReqVO pageReqVO) { - return budgetHistoryMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file