From f7155565d4808b5a957792055b44947cfeeaf7ae Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 16 Oct 2025 17:06:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BD=9C=E5=BA=9F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E6=96=B0=E5=A2=9E=E5=AE=8C=E7=BB=93=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E4=BF=AE=E6=94=B9=E5=90=88=E5=90=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=80=BB=E8=BE=91=EF=BC=9A=E8=AE=BE=E7=BD=AEerp?= =?UTF-8?q?=E7=94=B2=E4=B9=99=E6=96=B9=E5=85=AC=E5=8F=B8=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E3=80=81=E5=90=8D=E7=A7=B0=20=E4=BF=9D=E5=AD=98erp=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=98=A0=E5=B0=84=E8=A1=A8=E6=98=AF=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 12 +-- .../service/contract/ContractService.java | 16 ++++ .../service/contract/ContractServiceImpl.java | 75 ++++++++++++++++++- .../service/erp/ErpContractServiceImpl.java | 1 + 4 files changed, 94 insertions(+), 10 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java index 3424b4d..d8420e0 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java @@ -107,18 +107,18 @@ public class ContractController implements BusinessControllerMarker { return contractService.download(ids); } - // TODO @PostMapping("/cancel") - @Operation(summary = "作废 TODO") + @Operation(summary = "作废") @PreAuthorize("@ss.hasPermission('base:contract:cancel')") - public void cancel() { + public CommonResult cancel(@RequestBody List ids) { + return success(contractService.cancel(ids)); } - // TODO @PostMapping("/complete") - @Operation(summary = "完结 TODO") + @Operation(summary = "完结") @PreAuthorize("@ss.hasPermission('base:contract:complete')") - public void complete() { + public CommonResult complete(@RequestBody List ids) { + return success(contractService.complete(ids)); } @PostMapping("/archive") diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java index 1a8e418..9f2db38 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java @@ -177,4 +177,20 @@ public interface ContractService { * @return 归档结果 */ Boolean archive(List ids); + + /** + * 作废 + * + * @param ids 合同ID集合 + * @return 作废结果 + */ + Boolean cancel(List ids); + + /** + * 完结 + * + * @param ids 合同ID集合 + * @return 完结结果 + */ + Boolean complete(List ids); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index 41adb86..a49f76d 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java @@ -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.erp.controller.admin.erp.vo.ErpContractPageReqVO; 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.service.erp.ErpCompanyService; 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的公司 if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber()) || StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { 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); + } else { + contractMainDO.setErpPurchaseCompanyNumber(erpCompany.getNumber()); + contractMainDO.setErpPurchaseCompanyName(erpCompany.getName()); } } 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); + } else { + contractMainDO.setErpSalesCompanyNumber(erpCompany.getNumber()); + contractMainDO.setErpSalesCompanyName(erpCompany.getName()); } } } - // 合同主信息 - ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); + // 合同状态保存为草稿 contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DRAFT.getCode()); // 生成系统合同编号 @@ -1499,6 +1510,62 @@ public class ContractServiceImpl implements ContractService { return true; } + @Override + public Boolean cancel(List 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 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; + } + /** * 校验合同内容 * diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java index ec54ad4..36c8f91 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java @@ -242,6 +242,7 @@ public class ErpContractServiceImpl implements ErpContractService { ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId()); if (erpContractDO == null) { // 不存在映射表则新增 + erpContract.setDeleted(false); erpContractMapper.insert(erpContract); } else { // 存在映射表则更新