国贸2.0系统合同调用接口生成内部供应链的合同:根据客商信息列表提交多个合同映射到erp
This commit is contained in:
@@ -30,4 +30,7 @@ public class Partner {
|
|||||||
private String partnerType; // 客商类型
|
private String partnerType; // 客商类型
|
||||||
@Schema(description = "境内/外")
|
@Schema(description = "境内/外")
|
||||||
private String domesticOrOverseas; // 境内/外
|
private String domesticOrOverseas; // 境内/外
|
||||||
|
|
||||||
|
@Schema(description = "erp合同编号")
|
||||||
|
private String erpContractPaperNumber; // erp合同编号
|
||||||
}
|
}
|
||||||
@@ -28,5 +28,6 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode CONTRACT_STATUS_NOT_SUBMIT_ERP = new ErrorCode(1_027_000_013, "{}状态合同不允许提交ERP");
|
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_ORDER_EXISTS = new ErrorCode(1_027_000_014, "关联订单已存在");
|
||||||
ErrorCode CONTRACT_SUBMIT_ERP_FAIL = new ErrorCode(1_027_000_015, "合同提交erp失败:{}");
|
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, "客商信息不存在");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,17 +186,47 @@ public class ContractApiImpl implements ContractApi {
|
|||||||
throw exception(CONTRACT_UNKNOWN_OPERATE);
|
throw exception(CONTRACT_UNKNOWN_OPERATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提交合同到erp
|
// 根据客商信息列表提交多个合同映射到erp
|
||||||
// 生成ERP合同映射表
|
if (reqVO.getPartnerList() == null || reqVO.getPartnerList().isEmpty()) {
|
||||||
ErpContractSaveReqVO erpContractVO = contractService.getErpContract(contractMainDO);
|
throw exception(CONTRACT_PARTNER_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
// 调用ERP模块
|
// 合同主信息-合同编号
|
||||||
JSONObject erpResult = contractService.sendToErp(erpContractVO);
|
String contractPaperNumber = contractMainDO.getContractPaperNumber();
|
||||||
log.info("合同提交ERP结果:{}", erpResult);
|
// 合同主信息-合同名称
|
||||||
|
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 contractMainDO = new ContractMainDO();
|
||||||
|
// 系统合同编号
|
||||||
|
contractMainDO.setSystemContractNumber(contractService.generateSystemContractNumber("SAP02NCOZC"));
|
||||||
// 合同编号
|
// 合同编号
|
||||||
contractMainDO.setContractPaperNumber(reqVO.getContractCode());
|
contractMainDO.setContractPaperNumber(reqVO.getContractCode());
|
||||||
// 合同名称
|
// 合同名称
|
||||||
@@ -385,10 +417,6 @@ public class ContractApiImpl implements ContractApi {
|
|||||||
contractMainDO.setDirection(DictEnum.ERP_RCV_DLVY_EXPENSES.getCode());
|
contractMainDO.setDirection(DictEnum.ERP_RCV_DLVY_EXPENSES.getCode());
|
||||||
// 是否框架合同
|
// 是否框架合同
|
||||||
contractMainDO.setIsFramework(reqVO.getIsFramework());
|
contractMainDO.setIsFramework(reqVO.getIsFramework());
|
||||||
// 境内/境外 -> 客商信息:境内/外
|
|
||||||
if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) {
|
|
||||||
contractMainDO.setIsDomestic(reqVO.getPartnerList().get(0).getDomesticOrOverseas());
|
|
||||||
}
|
|
||||||
// 建筑服务发生地 默认值:NULL
|
// 建筑服务发生地 默认值:NULL
|
||||||
// 达到收款条件金额 默认值:NULL
|
// 达到收款条件金额 默认值:NULL
|
||||||
// 是否有履约保证金 默认值:否
|
// 是否有履约保证金 默认值:否
|
||||||
@@ -410,18 +438,6 @@ public class ContractApiImpl implements ContractApi {
|
|||||||
contractMainDO.setErpPurchaseCompanyName("");
|
contractMainDO.setErpPurchaseCompanyName("");
|
||||||
// 甲方地址 默认值:NULL
|
// 甲方地址 默认值:NULL
|
||||||
// 甲方法定代表人 默认值: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
|
||||||
// 乙方企业负责人 默认值:NULL
|
// 乙方企业负责人 默认值:NULL
|
||||||
|
|
||||||
|
|||||||
@@ -207,4 +207,6 @@ public interface ContractService {
|
|||||||
JSONObject sendToErp(ErpContractSaveReqVO erpContractVO);
|
JSONObject sendToErp(ErpContractSaveReqVO erpContractVO);
|
||||||
|
|
||||||
ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO);
|
ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO);
|
||||||
|
|
||||||
|
String generateSystemContractNumber(String category);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1635,7 +1635,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
operationId = "1";
|
operationId = "1";
|
||||||
} else {
|
} else {
|
||||||
// 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0”
|
// 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0”
|
||||||
ErpContractDO erpContract = erpContractService.getErpContractByMainId(contractMainDO.getId());
|
ErpContractDO erpContract = erpContractService.getErpContractByPaperNumber(contractMainDO.getContractPaperNumber());
|
||||||
if (erpContract != null) {
|
if (erpContract != null) {
|
||||||
operationId = "1";
|
operationId = "1";
|
||||||
} else {
|
} else {
|
||||||
@@ -1971,7 +1971,8 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
*
|
*
|
||||||
* @return 系统合同编号
|
* @return 系统合同编号
|
||||||
*/
|
*/
|
||||||
private String generateSystemContractNumber(String category) {
|
@Override
|
||||||
|
public String generateSystemContractNumber(String category) {
|
||||||
|
|
||||||
// 单据名称(拼音)
|
// 单据名称(拼音)
|
||||||
String documentName = "XTHT";
|
String documentName = "XTHT";
|
||||||
|
|||||||
@@ -55,12 +55,12 @@ public interface ErpContractService {
|
|||||||
ErpContractDO getErpContract(Long id);
|
ErpContractDO getErpContract(Long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得ERP合同映射通过合同主信息主键
|
* 获得ERP合同映射通过合同编号
|
||||||
*
|
*
|
||||||
* @param contractMainId 合同主信息主键
|
* @param paperNumber 合同编号
|
||||||
* @return ERP合同映射
|
* @return ERP合同映射
|
||||||
*/
|
*/
|
||||||
ErpContractDO getErpContractByMainId(Long contractMainId);
|
ErpContractDO getErpContractByPaperNumber(String paperNumber);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得ERP合同映射分页
|
* 获得ERP合同映射分页
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ public class ErpContractServiceImpl implements ErpContractService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErpContractDO getErpContractByMainId(Long contractMainId) {
|
public ErpContractDO getErpContractByPaperNumber(String paperNumber) {
|
||||||
return erpContractMapper.selectOne("CTRT_MAIN_ID", contractMainId);
|
return erpContractMapper.selectOne("CTRT_PPR_NUM", paperNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -231,8 +231,8 @@ public class ErpContractServiceImpl implements ErpContractService {
|
|||||||
// 转换为DO
|
// 转换为DO
|
||||||
ErpContractDO erpContract = BeanUtils.toBean(erpContractVO, ErpContractDO.class);
|
ErpContractDO erpContract = BeanUtils.toBean(erpContractVO, ErpContractDO.class);
|
||||||
|
|
||||||
// 根据合同主信息ID查询合同映射
|
// 根据合同编号查询合同映射
|
||||||
ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId());
|
ErpContractDO erpContractDO = getErpContractByPaperNumber(erpContract.getContractPaperNumber());
|
||||||
if (erpContractDO == null) {
|
if (erpContractDO == null) {
|
||||||
// 不存在映射表则新增
|
// 不存在映射表则新增
|
||||||
erpContract.setDeleted(false);
|
erpContract.setDeleted(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user