diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/OutsContractHistoryController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/OutsContractHistoryController.java index d06b51077..35ed7662d 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/OutsContractHistoryController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/OutsContractHistoryController.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory; +import cn.iocoder.yudao.framework.common.util.file.FileUtils; +import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDetailDO; import cn.iocoder.yudao.module.cms.service.outscontracthistory.OutsContractHistoryService; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; @@ -27,7 +29,6 @@ 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.cms.controller.admin.outscontracthistory.vo.*; -import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDO; @Tag(name = "管理后台 - 外包合同历史") @RestController @@ -52,16 +53,20 @@ public class OutsContractHistoryController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('cms:outs-contract-history:query')") public CommonResult getOutsContractHistory(@RequestParam("id") Long id) { - OutsContractHistoryDO outsContractHistory = outsContractHistoryService.getOutsContractHistory(id); - return success(BeanUtils.toBean(outsContractHistory, OutsContractHistoryRespVO.class)); + OutsContractHistoryDetailDO outsContractDetail = outsContractHistoryService.getOutsContractHistoryDetail(id); + OutsContractHistoryRespVO outsContractRespVO = new OutsContractHistoryRespVO(); + org.springframework.beans.BeanUtils.copyProperties(outsContractDetail, outsContractRespVO, "contractFileUrl"); + outsContractRespVO.setContractFileUrl(FileUtils.covertJSONStringToFile(outsContractDetail.getContractFileUrl())); + + return success(outsContractRespVO); } @GetMapping("/page") @Operation(summary = "获得外包合同历史分页") @PreAuthorize("@ss.hasPermission('cms:outs-contract-history:query')") public CommonResult> getOutsContractHistoryPage(@Valid OutsContractHistoryPageReqVO pageReqVO) { - PageResult pageResult = outsContractHistoryService.getOutsContractHistoryPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, OutsContractHistoryRespVO.class)); + PageResult pageResult = outsContractHistoryService.getOutsContractHistoryPage(pageReqVO); + return success(pageResult); } @GetMapping("/export-excel") @@ -71,7 +76,7 @@ public class OutsContractHistoryController { public void exportOutsContractHistoryExcel(@Valid OutsContractHistoryPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = outsContractHistoryService.getOutsContractHistoryPage(pageReqVO).getList(); + List list = outsContractHistoryService.getOutsContractHistoryPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "外包合同历史.xls", "数据", OutsContractHistoryRespVO.class, BeanUtils.toBean(list, OutsContractHistoryRespVO.class)); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistoryRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistoryRespVO.java index 6e85bf8f1..602b1fae4 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistoryRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistoryRespVO.java @@ -1,10 +1,13 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory.vo; +import cn.iocoder.yudao.framework.common.pojo.FileDTO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; + import com.alibaba.excel.annotation.*; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; @@ -42,7 +45,7 @@ public class OutsContractHistoryRespVO { @Schema(description = "合同文件url", example = "https://www.iocoder.cn") @ExcelProperty("合同文件url") - private String contractFileUrl; + private List contractFileUrl; @Schema(description = "创建者") @ExcelProperty("创建者") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistorySaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistorySaveReqVO.java index 3850bd9b2..1fab97836 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistorySaveReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontracthistory/vo/OutsContractHistorySaveReqVO.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory.vo; +import cn.iocoder.yudao.framework.common.pojo.FileDTO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; @Schema(description = "管理后台 - 外包合同历史新增/修改 Request VO") @Data @@ -30,7 +32,7 @@ public class OutsContractHistorySaveReqVO { private LocalDateTime signingTime; @Schema(description = "合同文件url", example = "https://www.iocoder.cn") - private String contractFileUrl; + private List contractFileUrl; @Schema(description = "流程状态", example = "2") private Integer processStatus; diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryService.java index 78f904006..ee9876e20 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryService.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.service.outscontracthistory; +import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDetailDO; +import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDetailDO; import jakarta.validation.*; import cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory.vo.*; import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDO; @@ -18,12 +20,12 @@ public interface OutsContractHistoryService { */ void updateOutsContractHistory(Long loginUserId,@Valid OutsContractHistorySaveReqVO updateReqVO); /** - * 获得外包合同历史 + * 获得外包合同历史基本信息 * * @param id 编号 * @return 外包合同历史 */ - OutsContractHistoryDO getOutsContractHistory(Long id); + OutsContractHistoryDetailDO getOutsContractHistoryDetail(Long id); /** * 获得外包合同历史分页 @@ -31,6 +33,6 @@ public interface OutsContractHistoryService { * @param pageReqVO 分页查询 * @return 外包合同历史分页 */ - PageResult getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO); + PageResult getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO); } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java index 736cf4be5..3b91aef06 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java @@ -1,7 +1,13 @@ package cn.iocoder.yudao.module.cms.service.outscontracthistory; +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO; +import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDetailDO; import cn.iocoder.yudao.module.cms.service.contract.ContractService; +import cn.iocoder.yudao.module.pms.api.projectschedule.ProjectScheduleApi; +import cn.iocoder.yudao.module.pms.api.projectschedule.dto.ProjectScheduleDetailDTO; import cn.iocoder.yudao.module.pms.api.projecttracking.ProjectTrackingApi; +import cn.iocoder.yudao.module.pms.api.projecttracking.dto.ProjectTrackingDetailDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; @@ -14,6 +20,9 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.cms.dal.mysql.outscontracthistory.OutsContractHistoryMapper; +import java.util.ArrayList; +import java.util.List; + import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.*; @@ -38,27 +47,65 @@ public class OutsContractHistoryServiceImpl implements OutsContractHistoryServic @Resource private ContractService contractService; + @Resource + private ProjectScheduleApi projectScheduleApi; + @Override public void updateOutsContractHistory(Long loginUserId,OutsContractHistorySaveReqVO updateReqVO) { - //校验 + // 校验 validateOutsContractHistoryExists(updateReqVO.getId()); - contractService.validateContractExists(updateReqVO.getContractId()); - projectTrackingApi.validateProjectExists(updateReqVO.getProjectId()); - String userName = adminUserApi.getUser(loginUserId).getNickname(); + + Long contractId = updateReqVO.getContractId(); + contractService.validateContractExists(contractId); + + Long projectId = updateReqVO.getProjectId(); + projectTrackingApi.validateProjectExists(projectId); + // 更新 + String userName = adminUserApi.getUser(loginUserId).getNickname(); OutsContractHistoryDO updateObj = BeanUtils.toBean(updateReqVO, OutsContractHistoryDO.class); updateObj.setUpdater(userName); outsContractHistoryMapper.updateById(updateObj); } @Override - public OutsContractHistoryDO getOutsContractHistory(Long id) { - return outsContractHistoryMapper.selectById(id); + public OutsContractHistoryDetailDO getOutsContractHistoryDetail(Long id) { + OutsContractHistoryDetailDO outsContractHistoryDetailDO = new OutsContractHistoryDetailDO(); + OutsContractHistoryDO outsContractHistoryDO = outsContractHistoryMapper.selectById(id); + ContractDO contractDO = contractService.getContractDetail(outsContractHistoryDO.getContractId()); + outsContractHistoryDetailDO.setAmount(contractDO.getAmount()); + outsContractHistoryDetailDO.setName(contractDO.getName()); + //校验 + validateOutsContractHistoryExists(id); + + Long projectId = outsContractHistoryDO.getProjectId(); + projectTrackingApi.validateProjectExists(projectId); + ProjectScheduleDetailDTO projectScheduleDetail = projectScheduleApi.getProjectScheduleDetail(projectId); + ProjectTrackingDetailDTO projectTracking = projectTrackingApi.getProjectTracking(projectId); + BeanUtil.copyProperties(outsContractHistoryDO, outsContractHistoryDetailDO); + BeanUtil.copyProperties(projectTracking,outsContractHistoryDetailDO); + BeanUtil.copyProperties(projectScheduleDetail,outsContractHistoryDetailDO); + + return outsContractHistoryDetailDO; } @Override - public PageResult getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO) { - return outsContractHistoryMapper.selectPage(pageReqVO); + public PageResult getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO) { + PageResult outsContractDOPage = outsContractHistoryMapper.selectPage(pageReqVO); + List list = outsContractDOPage.getList(); + List outsContractDetailDOS = new ArrayList<>(); + + for (OutsContractHistoryDO outsContractHistoryDO : list) { + Long id = outsContractHistoryDO.getId(); + OutsContractHistoryDetailDO outsContractHistoryDetail = getOutsContractHistoryDetail(id); + outsContractDetailDOS.add(outsContractHistoryDetail); + } + + List respVOS = BeanUtils.toBean(outsContractDetailDOS, OutsContractHistoryRespVO.class); + PageResult pageResult = new PageResult<>(); + pageResult.setList(respVOS); + return pageResult; + } private void validateOutsContractHistoryExists(Long id) {