[fix] 优化合同管理,外部合同管理,外包合同管理功能

This commit is contained in:
wyw 2024-07-29 12:58:16 +08:00
parent 698906fb08
commit a224d73203
11 changed files with 159 additions and 54 deletions

View File

@ -8,13 +8,27 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
* @date 2024/7/3
*/
public interface ErrorCodeConstants {
ErrorCode CUSTOMER_COMPANY_NOT_EXISTS = new ErrorCode(1_020_000_000, "客户公司管理不存在");
ErrorCode PROJECT_NOT_EXISTS = new ErrorCode(1_021_000_000, "项目信息不存在");
ErrorCode PARAM_NOT_EXISTS = new ErrorCode(1_022_000_000, "请求参数错误");
// ========== 外包合同 2_021_000_000 ==========
ErrorCode OUTS_CONTRACT_NOT_EXISTS = new ErrorCode(2_021_000_000, "外包合同不存在");
// ========== 外包合同历史 2_022_000_000 ==========
ErrorCode OUTS_CONTRACT_HISTORY_NOT_EXISTS = new ErrorCode(2_022_000_000, "外包合同历史不存在");
// ========== 外包合同关联 2_023_000_000 ==========
ErrorCode CONTRACT_OUTS_NOT_EXISTS = new ErrorCode(2_023_000_000, "外包合同关联不存在");
ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(2_024_000_000, "合同不存在");
ErrorCode CONTRACT_NAME_NOT_EXISTS = new ErrorCode(2_024_001_000, "合同名称不存在");
ErrorCode CONTRACT_HISTORY_NOT_EXISTS = new ErrorCode(2_025_000_000, "历史合同不存在");
@ -25,19 +39,8 @@ public interface ErrorCodeConstants {
ErrorCode CONTRACT_EXT_NOT_EXISTS = new ErrorCode(2_028_000_000, "外部合同关联不存在");
// ========== 外包合同 2_021_000_000 ==========
ErrorCode OUTS_CONTRACT_NOT_EXISTS = new ErrorCode(2_021_000_000, "外包合同不存在");
// ========== 外包合同历史 2_022_000_000 ==========
ErrorCode OUTS_CONTRACT_HISTORY_NOT_EXISTS = new ErrorCode(2_022_000_000, "外包合同历史不存在");
// ========== 外包合同关联 2_023_000_000 ==========
ErrorCode CONTRACT_OUTS_NOT_EXISTS = new ErrorCode(2_023_000_000, "外包合同关联不存在");
ErrorCode CUSTOMER_COMPANY_NOT_EXISTS = new ErrorCode(1_020_000_000, "客户公司管理不存在");
ErrorCode PROJECT_NOT_EXISTS = new ErrorCode(1_021_000_000, "项目信息不存在");

View File

@ -23,5 +23,25 @@ public class ContractOutsPageReqVO extends PageParam {
@Schema(description = "外包合同id", example = "9277")
private Long outsContractId;
@Schema(description = "创建人")
private String creator;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "更新人")
private String updater;
@Schema(description = "更新时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] updateTime;
@Schema(description = "是否删除")
private Boolean delete;
@Schema(description = "租户id", example = "15943")
private Long tenantId;
}

View File

@ -24,4 +24,28 @@ public class ContractOutsRespVO {
@ExcelProperty("外包合同id")
private Long outsContractId;
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建人")
private String creator;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("更新人")
private String updater;
@Schema(description = "更新时间")
@ExcelProperty("更新时间")
private LocalDateTime updateTime;
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否删除")
private Boolean delete;
@Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15943")
@ExcelProperty("租户id")
private Long tenantId;
}

View File

@ -22,6 +22,27 @@ public class ContractOutsSaveReqVO {
@NotNull(message = "外包合同id不能为空")
private Long outsContractId;
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "创建人不能为空")
private String creator;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "更新人不能为空")
private String updater;
@Schema(description = "更新时间")
private LocalDateTime updateTime;
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否删除不能为空")
private Boolean delete;
@Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15943")
@NotNull(message = "租户id不能为空")
private Long tenantId;

View File

@ -58,4 +58,12 @@ public interface ContractService {
* @return
*/
BigDecimal getProvisionalSettlement(Long id);
/**
* 判断合同是否存在
* @param id 合同id
*/
void validateContractExists(Long id);
}

View File

@ -47,13 +47,13 @@ public class ContractServiceImpl implements ContractService {
@Override
public Long createContract(ContractSaveReqVO createReqVO) {
if (createReqVO == null){
throw exception(PARAM_NOT_EXISTS);
}
ContractDO contract = BeanUtils.toBean(createReqVO, ContractDO.class);
//校验
Long projectId = contract.getProjectId();
ProjectRespDTO project = projectApi.getProject(projectId);
if (project == null) {
throw exception(PROJECT_NOT_EXISTS);
}
projectApi.validProjectExist(contract.getProjectId());
contractMapper.insert(contract);
//返回
return contract.getId();
@ -63,11 +63,7 @@ public class ContractServiceImpl implements ContractService {
public void updateContract(ContractSaveReqVO updateReqVO) {
//校验
validateContractExists(updateReqVO.getId());
Long projectId = updateReqVO.getProjectId();
ProjectRespDTO project = projectApi.getProject(projectId);
if (project == null) {
throw exception(PROJECT_NOT_EXISTS);
}
projectApi.validProjectExist(updateReqVO.getProjectId());
// 更新
ContractDO updateObj = BeanUtils.toBean(updateReqVO, ContractDO.class);
contractMapper.updateById(updateObj);
@ -88,10 +84,12 @@ public class ContractServiceImpl implements ContractService {
if (id == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
ContractDO contractDO = contractMapper.selectById(id);
if (contractDO == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
Long projectId = contractDO.getProjectId();
if (projectId == null) {
@ -133,9 +131,13 @@ public class ContractServiceImpl implements ContractService {
@Override
public PageResult<ContractRespVO> getContractPage(ContractPageReqVO pageReqVO) {
//校验
if (pageReqVO == null){
throw exception(PARAM_NOT_EXISTS);
}
Long projectId = pageReqVO.getProjectId();
ProjectRespDTO project = projectApi.getProject(projectId);
if (project == null){
if (project == null) {
throw exception(PROJECT_NOT_EXISTS);
}
@ -171,11 +173,13 @@ public class ContractServiceImpl implements ContractService {
}
private void validateContractExists(Long projectId) {
if (contractMapper.selectById(projectId) == null) {
@Override
public void validateContractExists(Long id) {
if (contractMapper.selectById(id) == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
}
}

View File

@ -4,9 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.cms.controller.admin.contractouts.vo.ContractOutsPageReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.contractouts.vo.ContractOutsSaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contractouts.ContractOutsDO;
import cn.iocoder.yudao.module.cms.dal.mysql.contract.ContractMapper;
import cn.iocoder.yudao.module.cms.dal.mysql.contractouts.ContractOutsMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@ -28,22 +26,18 @@ public class ContractOutsServiceImpl implements ContractOutsService {
@Resource
private ContractOutsMapper contractOutsMapper;
@Resource
private ContractMapper contractMapper;
@Override
public Long createContractOuts(ContractOutsSaveReqVO createReqVO) {
ContractOutsDO outsDO = BeanUtils.toBean(createReqVO, ContractOutsDO.class);
Long contractId = createReqVO.getContractId();
Long outsContractId = createReqVO.getOutsContractId();
if (contractId == null){
if (contractId == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
if (outsContractId == null){
if (outsContractId == null) {
throw exception(CONTRACT_OUTS_NOT_EXISTS);
}
contractOutsMapper.insert(outsDO);
// 返回
return createReqVO.getId();

View File

@ -22,8 +22,7 @@ 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.EXT_CONTRACT_NOT_EXISTS;
import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.PROJECT_NOT_EXISTS;
import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.*;
/**
* 外部合同 Service 实现类
@ -46,13 +45,12 @@ public class ExtContractServiceImpl implements ExtContractService {
@Override
public Long createExtContract(ExtContractSaveReqVO createReqVO) {
if (createReqVO == null){
throw exception(PARAM_NOT_EXISTS);
}
ExtContractDO contract = BeanUtils.toBean(createReqVO, ExtContractDO.class);
//校验
Long projectId = contract.getProjectId();
ProjectRespDTO project = projectApi.getProject(projectId);
if (project == null) {
throw exception(PROJECT_NOT_EXISTS);
}
projectApi.validProjectExist(contract.getProjectId());
extContractMapper.insert(contract);
//返回
return contract.getId();
@ -61,12 +59,12 @@ public class ExtContractServiceImpl implements ExtContractService {
@Override
public void updateExtContract(ExtContractSaveReqVO updateReqVO) {
//校验
validateExtContractExists(updateReqVO.getId());
Long projectId = updateReqVO.getProjectId();
ProjectRespDTO project = projectApi.getProject(projectId);
if (project == null) {
throw exception(PROJECT_NOT_EXISTS);
if (updateReqVO == null){
throw exception(PARAM_NOT_EXISTS);
}
validateExtContractExists(updateReqVO.getId());
projectApi.validProjectExist(updateReqVO.getProjectId());
// 更新
ExtContractDO updateObj = BeanUtils.toBean(updateReqVO, ExtContractDO.class);
extContractMapper.updateById(updateObj);
@ -80,11 +78,6 @@ public class ExtContractServiceImpl implements ExtContractService {
extContractMapper.deleteById(id);
}
private void validateExtContractExists(Long id) {
if (extContractMapper.selectById(id) == null) {
throw exception(EXT_CONTRACT_NOT_EXISTS);
}
}
// 需要联表查询
// 1.项目编号 pms_project 直接
@ -140,6 +133,9 @@ public class ExtContractServiceImpl implements ExtContractService {
@Override
public PageResult<ExtContractRespVO> getExtContractPage(ExtContractPageReqVO pageReqVO) {
if (pageReqVO == null){
throw exception(PARAM_NOT_EXISTS);
}
PageResult<ExtContractDO> extContractDOPageResult = extContractMapper.selectPage(pageReqVO);
List<ExtContractDO> excontractDOList = extContractDOPageResult.getList();
@ -168,4 +164,11 @@ public class ExtContractServiceImpl implements ExtContractService {
return preAmount.add(designFee).add(surveyFees).add(testingFee).add(other);
}
private void validateExtContractExists(Long id) {
if (extContractMapper.selectById(id) == null) {
throw exception(EXT_CONTRACT_NOT_EXISTS);
}
}
}

View File

@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractSaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDO;
import cn.iocoder.yudao.module.cms.dal.mysql.outscontract.OutsContractMapper;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
@ -43,8 +42,13 @@ public class OutsContractServiceImpl implements OutsContractService {
@Override
public Long createOutsContract(OutsContractSaveReqVO createReqVO) {
if (createReqVO == null) {
throw exception(PARAM_NOT_EXISTS);
}
OutsContractDO outsContract = BeanUtils.toBean(createReqVO, OutsContractDO.class);
//TODO 待优化 把校验逻辑提取
Long contractId = outsContract.getContractId();
ContractRespVO contract = contractService.getContract(contractId);
@ -72,7 +76,7 @@ public class OutsContractServiceImpl implements OutsContractService {
public void updateOutsContract(OutsContractSaveReqVO updateReqVO) {
// 校验
validateOutsContractExists(updateReqVO.getId());
//TODO 待优化 把校验逻辑提取
Long contractId = updateReqVO.getContractId();
ContractRespVO contract = contractService.getContract(contractId);
if (contract == null) {
@ -122,11 +126,16 @@ public class OutsContractServiceImpl implements OutsContractService {
@Override
public PageResult<OutsContractRespVO> getOutsContractPage(OutsContractPageReqVO 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);
}
PageResult<OutsContractDO> outsContractDOPageResult = outsContractMapper.selectPage(pageReqVO);
List<OutsContractDO> outsContractDOList = outsContractDOPageResult.getList();
List<OutsContractRespVO> outsContractRespVOList = new ArrayList<>();
@ -137,6 +146,7 @@ public class OutsContractServiceImpl implements OutsContractService {
OutsContractRespVO outsContract = getOutsContract(id);
outsContractRespVOList.add(outsContract);
}
PageResult<OutsContractRespVO> pageResult = new PageResult<>();
pageResult.setList(outsContractRespVOList);
return pageResult;

View File

@ -14,4 +14,10 @@ public interface ProjectApi {
*/
ProjectDetailRespDTO getProjectDetailById(Long projectId);
/**
* 判断项目是否存在
* @param projectId
*/
void validProjectExist(Long projectId);
}

View File

@ -11,10 +11,14 @@ import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstants.PROJECT_NOT_EXISTS;
@Service
@Validated
public class ProjectImpl implements ProjectApi {
@Resource
private ProjectMapper projectMapper;
@ -32,4 +36,12 @@ public class ProjectImpl implements ProjectApi {
ProjectDetailRespDTO detailRespDTO = BeanUtils.toBean(projectMapperDetail, ProjectDetailRespDTO.class);
return detailRespDTO;
}
@Override
public void validProjectExist(Long projectId) {
if (projectMapper.selectById(projectId) == null) {
throw exception(PROJECT_NOT_EXISTS);
}
}
}