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

This commit is contained in:
wyw 2024-08-21 11:05:57 +08:00
parent 30fccdb444
commit 33240916f9
9 changed files with 66 additions and 87 deletions

View File

@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractPageReqV
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractSaveReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractProcessInstanceRespVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDetailDO;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import org.springframework.web.bind.annotation.*;
@ -113,7 +112,7 @@ public class ContractController {
@PostMapping("/get_process")
@Operation(summary = "查询流程")
@PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:create')")
public CommonResult<ContractProcessInstanceRespVO> getExtContractProcessInstance(@RequestParam("id") Long id) {
public CommonResult<ContractProcessInstanceRespVO> getContractProcessInstance(@RequestParam("id") Long id) {
ContractProcessInstanceRespVO process = contractService.getProcess(id);
return success(process);
}

View File

@ -1,5 +1,10 @@
package cn.iocoder.yudao.module.cms.controller.admin.contractHistory;
import cn.iocoder.yudao.framework.common.util.file.FileUtils;
import cn.iocoder.yudao.module.cms.controller.admin.extcontracthistory.vo.ExtContractHistoryRespVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDetailDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extcontracthistory.ExtContractHistoryDetailDO;
import cn.iocoder.yudao.module.cms.service.contractHistory.ContractHistoryService;
import org.checkerframework.checker.units.qual.C;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -51,8 +56,13 @@ public class ContractHistoryController {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('cms:contract-history:query')")
public CommonResult<ContractHistoryRespVO> getContractHistory(@RequestParam("id") Long id) {
ContractHistoryRespVO contractHistory = contractHistoryService.getContractHistory(id);
return success(contractHistory);
ContractHistoryDetailDO contractHistoryDetailDO = contractHistoryService.getContractDetail(id);
ContractHistoryRespVO contractHistoryRespVO = new ContractHistoryRespVO();
org.springframework.beans.BeanUtils.copyProperties(contractHistoryDetailDO, contractHistoryRespVO, "contractFileUrl", "reviewFileUrl");
contractHistoryRespVO.setReviewFileUrl(FileUtils.covertJSONStringToFile(contractHistoryDetailDO.getReviewFileUrl()));
contractHistoryRespVO.setContractFileUrl(FileUtils.covertJSONStringToFile(contractHistoryDetailDO.getContractFileUrl()));
return success(contractHistoryRespVO);
}
@GetMapping("/page")

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo;
import cn.iocoder.yudao.framework.common.pojo.FileDTO;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -64,7 +65,7 @@ public class ContractHistoryRespVO {
@Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "合同类型", converter = DictConvert.class)
@DictFormat("contract_type") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED)
@ -89,12 +90,12 @@ public class ContractHistoryRespVO {
@Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "合同状态", converter = DictConvert.class)
@DictFormat("contract_status") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "计费方式", example = "2")
@ExcelProperty(value = "计费方式", converter = DictConvert.class)
@DictFormat("contract_billing_type") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String countType;
@Schema(description = "合同url", example = "https://www.iocoder.cn")
@ -107,7 +108,7 @@ public class ContractHistoryRespVO {
@Schema(description = "资金来源")
@ExcelProperty(value = "资金来源", converter = DictConvert.class)
@DictFormat("funds_source") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "是否联合体")
@ -126,25 +127,6 @@ public class ContractHistoryRespVO {
@ExcelProperty("审核文件url")
private List<FileDTO> reviewFileUrl;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "更新者")
@ExcelProperty("更新者")
private String updater;
@Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("更新时间")
private LocalDateTime updateTime;
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否删除")
private Boolean deleted;
@Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24897")
@ExcelProperty("租户编号")
private Long tenantId;
@Schema(description = "签订合同总额")
@ExcelProperty("签订合同总额")
@ -152,7 +134,7 @@ public class ContractHistoryRespVO {
@Schema(description = "流程状态", example = "2")
@ExcelProperty(value = "流程状态", converter = DictConvert.class)
@DictFormat("bpm_process_instance_status") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.PROCESS_STATUS)
private Integer processStatus;
@Schema(description = "版本")

View File

@ -101,7 +101,7 @@ public class ContractHistorySaveReqVO {
@Schema(description = "最后编辑人")
private String finalEditor;
@Schema(description = "合同", requiredMode = Schema.RequiredMode.REQUIRED, example = "24519")
@Schema(description = "合同id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24519")
@NotNull(message = "合同不能为空")
private Long contractId;

View File

@ -53,12 +53,12 @@ public class ExtContractHistoryController {
@PreAuthorize("@ss.hasPermission('cms:ext-contract-history:query')")
public CommonResult<ExtContractHistoryRespVO> getExtContractHistory(@RequestParam("id") Long id) {
ExtContractHistoryDetailDO extContractHistoryDetail = extContractHistoryService.getContractDetail(id);
ExtContractHistoryRespVO contractHistoryRespVO = new ExtContractHistoryRespVO();
org.springframework.beans.BeanUtils.copyProperties(extContractHistoryDetail, contractHistoryRespVO, "contractFileUrl", "reviewFileUrl");
contractHistoryRespVO.setReviewFileUrl(FileUtils.covertJSONStringToFile(extContractHistoryDetail.getReviewFileUrl()));
contractHistoryRespVO.setContractFileUrl(FileUtils.covertJSONStringToFile(extContractHistoryDetail.getContractFileUrl()));
ExtContractHistoryRespVO extContractHistoryRespVO = new ExtContractHistoryRespVO();
org.springframework.beans.BeanUtils.copyProperties(extContractHistoryDetail, extContractHistoryRespVO, "contractFileUrl", "reviewFileUrl");
extContractHistoryRespVO.setReviewFileUrl(FileUtils.covertJSONStringToFile(extContractHistoryDetail.getReviewFileUrl()));
extContractHistoryRespVO.setContractFileUrl(FileUtils.covertJSONStringToFile(extContractHistoryDetail.getContractFileUrl()));
return success(contractHistoryRespVO);
return success(extContractHistoryRespVO);
}
@GetMapping("/page")

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.cms.service.contractHistory;
import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDetailDO;
import jakarta.validation.*;
import cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo.*;
import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDO;
@ -19,14 +20,13 @@ public interface ContractHistoryService {
*/
void updateContractHistory(Long loginUserId,@Valid ContractHistorySaveReqVO updateReqVO);
/**
* 获得历史合同
*
* @param contractId 现有合同编号
* @return 历史合同
*/
ContractHistoryRespVO getContractHistory(Long contractId);
/**
* 获得历史合同基本信息
* @param id 合同id
* @return 历史合同基本信息
*/
ContractHistoryDetailDO getContractDetail(Long id);
/**
* 获得历史合同分页
*

View File

@ -1,6 +1,11 @@
package cn.iocoder.yudao.module.cms.service.contractHistory;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDetailDO;
import cn.iocoder.yudao.module.cms.service.extContract.ExtContractService;
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;
@ -38,6 +43,9 @@ public class ContractHistoryServiceImpl implements ContractHistoryService {
@Resource
private ProjectTrackingApi projectTrackingApi;
@Resource
private ProjectScheduleApi projectScheduleApi;
@Override
public void updateContractHistory(Long loginUserId,ContractHistorySaveReqVO updateReqVO) {
@ -52,35 +60,42 @@ public class ContractHistoryServiceImpl implements ContractHistoryService {
contractHistoryMapper.updateById(updateObj);
}
@Override
public ContractHistoryRespVO getContractHistory(Long id) {
return null;
public ContractHistoryDetailDO getContractDetail(Long id) {
ContractHistoryDetailDO contractHistoryDetailDO = new ContractHistoryDetailDO();
ContractHistoryDO contractHistoryDO = contractHistoryMapper.selectById(id);
//校验
if (contractHistoryDO == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
Long extContractId = contractHistoryDO.getExtContractId();
Long projectId = contractHistoryDO.getProjectId();
projectTrackingApi.validateProjectExists(projectId);
ProjectScheduleDetailDTO projectScheduleDetail = projectScheduleApi.getProjectScheduleDetail(projectId);
ProjectTrackingDetailDTO projectTracking = projectTrackingApi.getProjectTracking(projectId);
contractHistoryDetailDO.setReminderTime(extContractService.getContractDetail(extContractId).getReminderTime());
BeanUtil.copyProperties(contractHistoryDO, contractHistoryDetailDO);
BeanUtil.copyProperties(projectTracking, contractHistoryDetailDO);
BeanUtil.copyProperties(projectScheduleDetail, contractHistoryDetailDO);
return contractHistoryDetailDO;
}
@Override
public PageResult<ContractHistoryRespVO> getContractHistoryPage(ContractHistoryPageReqVO pageReqVO) {
//校验
if (pageReqVO == null) {
throw exception(PARAM_NOT_EXISTS);
}
PageResult<ContractHistoryDO> contractHistoryList = contractHistoryMapper.selectPage(pageReqVO);
List<ContractHistoryDO> list = contractHistoryList.getList();
List<ContractHistoryDetailDO> contractRespVOList = new ArrayList<>();
Long projectId = pageReqVO.getProjectId();
PageResult<ContractHistoryDO> contractHistoryDOPageResult = contractHistoryMapper.selectPage(pageReqVO);
List<ContractHistoryDO> pageResultList = contractHistoryDOPageResult.getList();
List<ContractHistoryRespVO> contractHistoryRespVOS = new ArrayList<>();
for (ContractHistoryDO contractHistoryDO : pageResultList) {
for (ContractHistoryDO contractHistoryDO : list) {
Long id = contractHistoryDO.getId();
ContractHistoryRespVO contractHistory = getContractHistory(id);
contractHistoryRespVOS.add(contractHistory);
ContractHistoryDetailDO contractDetail = getContractDetail(id);
contractRespVOList.add(contractDetail);
}
List<ContractHistoryRespVO> respVOList = BeanUtils.toBean(contractRespVOList, ContractHistoryRespVO.class);
PageResult<ContractHistoryRespVO> pageResult = new PageResult<>();
pageResult.setList(contractHistoryRespVOS);
pageResult.setList(respVOList);
return pageResult;
}

View File

@ -17,14 +17,6 @@ public interface ExtContractHistoryService {
* @param updateReqVO 更新信息
*/
void updateExtContractHistory(Long loginUserId,@Valid ExtContractHistorySaveReqVO updateReqVO);
/**
* 获得外部合同历史历史
*
* @param id 编号
* @return 外部合同历史历史
*/
ExtContractHistoryRespVO getExtContractHistory(Long id);
/**
* 获得外部合同历史历史分页
*

View File

@ -66,25 +66,6 @@ public class ExtContractHistoryServiceImpl implements ExtContractHistoryService
extContractHistoryMapper.updateById(updateObj);
}
@Override
public ExtContractHistoryRespVO getExtContractHistory(Long id) {
//校验
if (id == null) {
throw exception(EXT_CONTRACT_NOT_EXISTS);
}
ExtContractHistoryDO extContractHistoryDO = extContractHistoryMapper.selectById(id);
if (extContractHistoryDO == null) {
throw exception(EXT_CONTRACT_NOT_EXISTS);
}
Long projectId = extContractHistoryDO.getProjectId();
return null;
}
@Override
public PageResult<ExtContractHistoryRespVO> getExtContractHistoryPage(ExtContractHistoryPageReqVO pageReqVO) {
PageResult<ExtContractHistoryDO> extContractHistoryPage = extContractHistoryMapper.selectPage(pageReqVO);