新增作废接口

新增完结接口
修改合同新增逻辑:设置erp甲乙方公司编号、名称
保存erp合同映射表是设置删除状态
This commit is contained in:
guojunyun
2025-10-16 17:06:32 +08:00
parent a2d9178c8e
commit f7155565d4
4 changed files with 94 additions and 10 deletions

View File

@@ -107,18 +107,18 @@ public class ContractController implements BusinessControllerMarker {
return contractService.download(ids); return contractService.download(ids);
} }
// TODO
@PostMapping("/cancel") @PostMapping("/cancel")
@Operation(summary = "作废 TODO") @Operation(summary = "作废")
@PreAuthorize("@ss.hasPermission('base:contract:cancel')") @PreAuthorize("@ss.hasPermission('base:contract:cancel')")
public void cancel() { public CommonResult<Boolean> cancel(@RequestBody List<Long> ids) {
return success(contractService.cancel(ids));
} }
// TODO
@PostMapping("/complete") @PostMapping("/complete")
@Operation(summary = "完结 TODO") @Operation(summary = "完结")
@PreAuthorize("@ss.hasPermission('base:contract:complete')") @PreAuthorize("@ss.hasPermission('base:contract:complete')")
public void complete() { public CommonResult<Boolean> complete(@RequestBody List<Long> ids) {
return success(contractService.complete(ids));
} }
@PostMapping("/archive") @PostMapping("/archive")

View File

@@ -177,4 +177,20 @@ public interface ContractService {
* @return 归档结果 * @return 归档结果
*/ */
Boolean archive(List<Long> ids); Boolean archive(List<Long> ids);
/**
* 作废
*
* @param ids 合同ID集合
* @return 作废结果
*/
Boolean cancel(List<Long> ids);
/**
* 完结
*
* @param ids 合同ID集合
* @return 完结结果
*/
Boolean complete(List<Long> ids);
} }

View File

@@ -30,6 +30,7 @@ import com.zt.plat.module.contractorder.enums.*;
import com.zt.plat.module.contractorder.enums.contract.DictEnum; import com.zt.plat.module.contractorder.enums.contract.DictEnum;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO;
import com.zt.plat.module.erp.service.erp.ErpCompanyService; import com.zt.plat.module.erp.service.erp.ErpCompanyService;
import com.zt.plat.module.erp.service.erp.ErpContractService; import com.zt.plat.module.erp.service.erp.ErpContractService;
@@ -140,23 +141,33 @@ public class ContractServiceImpl implements ContractService {
} }
} }
// 合同主信息
ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class);
// 校验ERP的公司 // 校验ERP的公司
if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber()) if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())
|| StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { || StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) {
if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) { if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) {
if (erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber()) == null) { ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber());
if (erpCompany == null) {
throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE); throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE);
} else {
contractMainDO.setErpPurchaseCompanyNumber(erpCompany.getNumber());
contractMainDO.setErpPurchaseCompanyName(erpCompany.getName());
} }
} }
if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) {
if (erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber()) == null) { ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber());
if (erpCompany == null) {
throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES); throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES);
} else {
contractMainDO.setErpSalesCompanyNumber(erpCompany.getNumber());
contractMainDO.setErpSalesCompanyName(erpCompany.getName());
} }
} }
} }
// 合同主信息
ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class);
// 合同状态保存为草稿 // 合同状态保存为草稿
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DRAFT.getCode()); contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DRAFT.getCode());
// 生成系统合同编号 // 生成系统合同编号
@@ -1499,6 +1510,62 @@ public class ContractServiceImpl implements ContractService {
return true; return true;
} }
@Override
public Boolean cancel(List<Long> ids) {
// 遍历合同ID
ids.forEach(id -> {
// 查询合同是否存在
ContractMainDO contractMainDO = contractMainMapper.selectById(id);
if (contractMainDO == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
// 合同状态校验
if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) {
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
}
// 设置作废状态
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_VOID.getCode());
// 更新合同
contractMainMapper.updateById(contractMainDO);
});
return true;
}
@Override
public Boolean complete(List<Long> ids) {
// 遍历合同ID
ids.forEach(id -> {
// 查询合同是否存在
ContractMainDO contractMainDO = contractMainMapper.selectById(id);
if (contractMainDO == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
// 合同状态校验
if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) {
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
}
// 设置完结状态
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_TERMINATED.getCode());
// 更新合同
contractMainMapper.updateById(contractMainDO);
});
return true;
}
/** /**
* 校验合同内容 * 校验合同内容
* *

View File

@@ -242,6 +242,7 @@ public class ErpContractServiceImpl implements ErpContractService {
ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId()); ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId());
if (erpContractDO == null) { if (erpContractDO == null) {
// 不存在映射表则新增 // 不存在映射表则新增
erpContract.setDeleted(false);
erpContractMapper.insert(erpContract); erpContractMapper.insert(erpContract);
} else { } else {
// 存在映射表则更新 // 存在映射表则更新