From a4b997ec49f851a95f497068e4b58792b663ea45 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 21 Oct 2025 16:23:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4erp=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=81=E4=BF=AE=E6=94=B9=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 2 +- .../service/contract/ContractService.java | 2 +- .../service/contract/ContractServiceImpl.java | 58 ++++++++++++++++--- 3 files changed, 52 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 f862935..fef3ebe 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 @@ -145,7 +145,7 @@ public class ContractController implements BusinessControllerMarker { @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public CommonResult submitErp(@RequestBody List ids) { + public CommonResult> submitErp(@RequestBody List ids) { return success(contractService.submitErp(ids)); } 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 8adf1f8..e758493 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 @@ -105,7 +105,7 @@ public interface ContractService { * @param ids 合同ID集合 * @return */ - Boolean submitErp(List ids); + List submitErp(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 abb54c2..91f33c9 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 @@ -730,6 +730,29 @@ public class ContractServiceImpl implements ContractService { // 请求更新的合同信息 ContractMainDO newContractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); + // 校验ERP的公司 + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber()) + || StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) { + ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber()); + if (erpCompany == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE); + } else { + newContractMainDO.setErpPurchaseCompanyNumber(erpCompany.getNumber()); + newContractMainDO.setErpPurchaseCompanyName(erpCompany.getName()); + } + } + if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber()); + if (erpCompany == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES); + } else { + newContractMainDO.setErpSalesCompanyNumber(erpCompany.getNumber()); + newContractMainDO.setErpSalesCompanyName(erpCompany.getName()); + } + } + } + // 删除关联信息 // 查询合同明细 List detailDOS = contractDetailMapper @@ -1289,7 +1312,9 @@ public class ContractServiceImpl implements ContractService { } @Override - public Boolean submitErp(List ids) { + public List submitErp(List ids) { + + List results = new ArrayList<>(); // 遍历合同ID集合 ids.forEach(id -> { @@ -1312,23 +1337,40 @@ public class ContractServiceImpl implements ContractService { ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); // 调用ERP模块 - Map erpResult = sendToErp(erpContractVO); + JSONObject erpResult = sendToErp(erpContractVO); log.info("合同提交ERP结果:{}", erpResult); + String result = id + +"-"+erpResult.getBool("success") + +(erpResult.getBool("success") ? "" : "-" + erpResult.getStr("errMsg")); + results.add(result); + + // 更新合同状态 + if (erpResult.getBool("success")) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode()); + contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_FIND.getCode()); + contractMainMapper.updateById(contractMainDO); + } else { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode()); + contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_RLBK.getCode()); + // contractMainDO.setCause(erpResult.getStr("errMsg")); + contractMainMapper.updateById(contractMainDO); + } } else { - throw exception(CONTRACT_NOT_EXISTS); + results.add(id+"-"+"false"+"-"+CONTRACT_NOT_EXISTS); } }); - return true; + return results; } - private Map sendToErp(ErpContractSaveReqVO erpContractVO) { - Map erpResult = new HashMap<>(); + private JSONObject sendToErp(ErpContractSaveReqVO erpContractVO) { + JSONObject erpResult = new JSONObject(); try { String result = erpContractService.submitErp(erpContractVO); - erpResult.put(true, result); + erpResult.putOnce("success", true); } catch (Exception e) { - erpResult.put(false, e.getMessage()); + erpResult.putOnce("success", false); + erpResult.putOnce("errMsg", e.getMessage()); } return erpResult;