[feat] 新增外部合同管理的流程管理 新增外部合同历史管理

This commit is contained in:
wyw 2024-08-23 10:55:01 +08:00
parent e20a7fca05
commit b40fda808a
5 changed files with 78 additions and 19 deletions

View File

@ -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<OutsContractHistoryRespVO> 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<PageResult<OutsContractHistoryRespVO>> getOutsContractHistoryPage(@Valid OutsContractHistoryPageReqVO pageReqVO) {
PageResult<OutsContractHistoryDO> pageResult = outsContractHistoryService.getOutsContractHistoryPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, OutsContractHistoryRespVO.class));
PageResult<OutsContractHistoryRespVO> 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<OutsContractHistoryDO> list = outsContractHistoryService.getOutsContractHistoryPage(pageReqVO).getList();
List<OutsContractHistoryRespVO> list = outsContractHistoryService.getOutsContractHistoryPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "外包合同历史.xls", "数据", OutsContractHistoryRespVO.class,
BeanUtils.toBean(list, OutsContractHistoryRespVO.class));

View File

@ -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<FileDTO> contractFileUrl;
@Schema(description = "创建者")
@ExcelProperty("创建者")

View File

@ -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<FileDTO> contractFileUrl;
@Schema(description = "流程状态", example = "2")
private Integer processStatus;

View File

@ -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<OutsContractHistoryDO> getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO);
PageResult<OutsContractHistoryRespVO> getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO);
}

View File

@ -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<OutsContractHistoryDO> getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO) {
return outsContractHistoryMapper.selectPage(pageReqVO);
public PageResult<OutsContractHistoryRespVO> getOutsContractHistoryPage(OutsContractHistoryPageReqVO pageReqVO) {
PageResult<OutsContractHistoryDO> outsContractDOPage = outsContractHistoryMapper.selectPage(pageReqVO);
List<OutsContractHistoryDO> list = outsContractDOPage.getList();
List<OutsContractHistoryDetailDO> outsContractDetailDOS = new ArrayList<>();
for (OutsContractHistoryDO outsContractHistoryDO : list) {
Long id = outsContractHistoryDO.getId();
OutsContractHistoryDetailDO outsContractHistoryDetail = getOutsContractHistoryDetail(id);
outsContractDetailDOS.add(outsContractHistoryDetail);
}
List<OutsContractHistoryRespVO> respVOS = BeanUtils.toBean(outsContractDetailDOS, OutsContractHistoryRespVO.class);
PageResult<OutsContractHistoryRespVO> pageResult = new PageResult<>();
pageResult.setList(respVOS);
return pageResult;
}
private void validateOutsContractHistoryExists(Long id) {