From 520673fd0e116a76b7c033c5f1fd99312aab4b02 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 28 Oct 2025 17:14:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BD=E8=B4=B82.0=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=90=88=E5=90=8C=E8=B0=83=E7=94=A8=E6=8E=A5=E5=8F=A3=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=86=85=E9=83=A8=E4=BE=9B=E5=BA=94=E9=93=BE=E7=9A=84?= =?UTF-8?q?=E5=90=88=E5=90=8C=EF=BC=9A=E6=A0=B9=E6=8D=AE=E5=AE=A2=E5=95=86?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=88=97=E8=A1=A8=E6=8F=90=E4=BA=A4=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E5=90=88=E5=90=8C=E6=98=A0=E5=B0=84=E5=88=B0erp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/contract/international/Partner.java | 3 + .../enums/ErrorCodeConstants.java | 3 +- .../contractorder/api/ContractApiImpl.java | 66 ++++++++++++------- .../service/contract/ContractService.java | 2 + .../service/contract/ContractServiceImpl.java | 5 +- .../erp/service/erp/ErpContractService.java | 6 +- .../service/erp/ErpContractServiceImpl.java | 8 +-- 7 files changed, 58 insertions(+), 35 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java index 707a890..89c1993 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java @@ -30,4 +30,7 @@ public class Partner { private String partnerType; // 客商类型 @Schema(description = "境内/外") private String domesticOrOverseas; // 境内/外 + + @Schema(description = "erp合同编号") + private String erpContractPaperNumber; // erp合同编号 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java index 6a2ebcc..b3edc42 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java @@ -28,5 +28,6 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_STATUS_NOT_SUBMIT_ERP = new ErrorCode(1_027_000_013, "{}状态合同不允许提交ERP"); ErrorCode CONTRACT_ORDER_EXISTS = new ErrorCode(1_027_000_014, "关联订单已存在"); ErrorCode CONTRACT_SUBMIT_ERP_FAIL = new ErrorCode(1_027_000_015, "合同提交erp失败:{}"); - ErrorCode CONTRACT_UNKNOWN_OPERATE = new ErrorCode(1_027_000_015, "未知的操作"); + ErrorCode CONTRACT_UNKNOWN_OPERATE = new ErrorCode(1_027_000_016, "未知的操作"); + ErrorCode CONTRACT_PARTNER_NOT_EXISTS = new ErrorCode(1_027_000_017, "客商信息不存在"); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java index c22010f..5f4a479 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java @@ -186,17 +186,47 @@ public class ContractApiImpl implements ContractApi { throw exception(CONTRACT_UNKNOWN_OPERATE); } - // 提交合同到erp - // 生成ERP合同映射表 - ErpContractSaveReqVO erpContractVO = contractService.getErpContract(contractMainDO); + // 根据客商信息列表提交多个合同映射到erp + if (reqVO.getPartnerList() == null || reqVO.getPartnerList().isEmpty()) { + throw exception(CONTRACT_PARTNER_NOT_EXISTS); + } - // 调用ERP模块 - JSONObject erpResult = contractService.sendToErp(erpContractVO); - log.info("合同提交ERP结果:{}", erpResult); + // 合同主信息-合同编号 + String contractPaperNumber = contractMainDO.getContractPaperNumber(); + // 合同主信息-合同名称 + String contractName = contractMainDO.getContractName(); + for (int i = 0; i < reqVO.getPartnerList().size(); i++) { + Partner partner = reqVO.getPartnerList().get(i); - // 调用ERP失败 - if (!erpResult.getBool("success")) { - throw exception(CONTRACT_SUBMIT_ERP_FAIL, erpResult.getStr("errMsg")); + // 根据客商信息设置合同信息 + // 合同编号 + contractMainDO.setContractPaperNumber(contractPaperNumber + "_" + String.format("%03d", (i+1))); + reqVO.getPartnerList().get(i) + .setErpContractPaperNumber(contractPaperNumber + "_" + String.format("%03d", (i+1))); + // 合同名称 + contractMainDO.setContractName(contractName + "_" + String.format("%03d", (i+1))); + // 境内/境外 -> 客商信息:境内/外 + contractMainDO.setIsDomestic(partner.getDomesticOrOverseas()); + // 乙方公司编号(销售方) -> 客商信息:供应商代码 + contractMainDO.setSalesCompanyNumber(partner.getPartnerCode()); + // ERP乙方公司编码 + contractMainDO.setErpSalesCompanyNumber(partner.getPartnerCode()); + // 乙方公司名称 -> 客商信息:供应商名称 + contractMainDO.setSalesCompanyName(partner.getPartnerName()); + // ERP乙方公司名称 + contractMainDO.setErpSalesCompanyName(partner.getPartnerName()); + + // 生成ERP合同映射表 + ErpContractSaveReqVO erpContractVO = contractService.getErpContract(contractMainDO); + + // 调用ERP模块 + JSONObject erpResult = contractService.sendToErp(erpContractVO); + log.info("合同提交ERP结果:{}", erpResult); + + // 调用ERP失败 + if (!erpResult.getBool("success")) { + throw exception(CONTRACT_SUBMIT_ERP_FAIL, erpResult.getStr("errMsg")); + } } // 删除动态条款信息 @@ -339,6 +369,8 @@ public class ContractApiImpl implements ContractApi { // 合同主信息表映射 ContractMainDO contractMainDO = new ContractMainDO(); + // 系统合同编号 + contractMainDO.setSystemContractNumber(contractService.generateSystemContractNumber("SAP02NCOZC")); // 合同编号 contractMainDO.setContractPaperNumber(reqVO.getContractCode()); // 合同名称 @@ -385,10 +417,6 @@ public class ContractApiImpl implements ContractApi { contractMainDO.setDirection(DictEnum.ERP_RCV_DLVY_EXPENSES.getCode()); // 是否框架合同 contractMainDO.setIsFramework(reqVO.getIsFramework()); - // 境内/境外 -> 客商信息:境内/外 - if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { - contractMainDO.setIsDomestic(reqVO.getPartnerList().get(0).getDomesticOrOverseas()); - } // 建筑服务发生地 默认值:NULL // 达到收款条件金额 默认值:NULL // 是否有履约保证金 默认值:否 @@ -410,18 +438,6 @@ public class ContractApiImpl implements ContractApi { contractMainDO.setErpPurchaseCompanyName(""); // 甲方地址 默认值:NULL // 甲方法定代表人 默认值:NULL - // 乙方公司编号(销售方) -> 客商信息:供应商代码 - if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { - contractMainDO.setSalesCompanyNumber(reqVO.getPartnerList().get(0).getPartnerCode()); - // ERP乙方公司编码 - contractMainDO.setErpSalesCompanyNumber(reqVO.getPartnerList().get(0).getPartnerCode()); - } - // 乙方公司名称 -> 客商信息:供应商名称 - if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { - contractMainDO.setSalesCompanyName(reqVO.getPartnerList().get(0).getPartnerName()); - // ERP乙方公司名称 - contractMainDO.setErpSalesCompanyName(reqVO.getPartnerList().get(0).getPartnerName()); - } // 乙方地址 默认值:NULL // 乙方企业负责人 默认值:NULL 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 818c2a9..6228688 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 @@ -207,4 +207,6 @@ public interface ContractService { JSONObject sendToErp(ErpContractSaveReqVO erpContractVO); ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO); + + String generateSystemContractNumber(String category); } 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 26f48aa..8d3b1eb 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 @@ -1635,7 +1635,7 @@ public class ContractServiceImpl implements ContractService { operationId = "1"; } else { // 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” - ErpContractDO erpContract = erpContractService.getErpContractByMainId(contractMainDO.getId()); + ErpContractDO erpContract = erpContractService.getErpContractByPaperNumber(contractMainDO.getContractPaperNumber()); if (erpContract != null) { operationId = "1"; } else { @@ -1971,7 +1971,8 @@ public class ContractServiceImpl implements ContractService { * * @return 系统合同编号 */ - private String generateSystemContractNumber(String category) { + @Override + public String generateSystemContractNumber(String category) { // 单据名称(拼音) String documentName = "XTHT"; diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java index dfd863a..1da1214 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java @@ -55,12 +55,12 @@ public interface ErpContractService { ErpContractDO getErpContract(Long id); /** - * 获得ERP合同映射通过合同主信息主键 + * 获得ERP合同映射通过合同编号 * - * @param contractMainId 合同主信息主键 + * @param paperNumber 合同编号 * @return ERP合同映射 */ - ErpContractDO getErpContractByMainId(Long contractMainId); + ErpContractDO getErpContractByPaperNumber(String paperNumber); /** * 获得ERP合同映射分页 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 21f750c..b3f15f8 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 @@ -104,8 +104,8 @@ public class ErpContractServiceImpl implements ErpContractService { } @Override - public ErpContractDO getErpContractByMainId(Long contractMainId) { - return erpContractMapper.selectOne("CTRT_MAIN_ID", contractMainId); + public ErpContractDO getErpContractByPaperNumber(String paperNumber) { + return erpContractMapper.selectOne("CTRT_PPR_NUM", paperNumber); } @Override @@ -231,8 +231,8 @@ public class ErpContractServiceImpl implements ErpContractService { // 转换为DO ErpContractDO erpContract = BeanUtils.toBean(erpContractVO, ErpContractDO.class); - // 根据合同主信息ID查询合同映射 - ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId()); + // 根据合同编号查询合同映射 + ErpContractDO erpContractDO = getErpContractByPaperNumber(erpContract.getContractPaperNumber()); if (erpContractDO == null) { // 不存在映射表则新增 erpContract.setDeleted(false);