diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java
index f99bcef..7fba414 100644
--- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java
+++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java
@@ -20,4 +20,7 @@ public class ApiConstants {
public static final String VERSION = "1.0.0";
+ public static final String PURCHASE = "甲方";
+
+ public static final String SALES = "乙方";
}
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 57c28fb..050bbd5 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
@@ -21,4 +21,5 @@ public interface ErrorCodeConstants {
ErrorCode CONTRACT_DATA_NOT_EXISTS = new ErrorCode(1_027_000_006, "{}不存在");
ErrorCode CONTRACT_STATUS_NOT_SUBMIT_APPROVAL = new ErrorCode(1_027_000_007, "{}状态合同不允许提交审核");
ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核");
+ ErrorCode CONTRACT_ERP_COMPANY_PLEASE_BIND = new ErrorCode(1_027_000_009, "请先绑定{}ERP公司信息");
}
diff --git a/zt-module-contract-order/zt-module-contract-order-server/pom.xml b/zt-module-contract-order/zt-module-contract-order-server/pom.xml
index 2894858..cf916c2 100644
--- a/zt-module-contract-order/zt-module-contract-order-server/pom.xml
+++ b/zt-module-contract-order/zt-module-contract-order-server/pom.xml
@@ -136,6 +136,11 @@
zt-module-bpm-api
${revision}
+
+ com.zt.plat
+ zt-module-erp-server
+ ${revision}
+
diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java
index ea8a563..361069c 100644
--- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java
+++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java
@@ -208,6 +208,9 @@ public class ContractSaveReqVO {
@Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
private BigDecimal payeeConditionAmount;
+ @Schema(description = "是否内部企业(字典:ERP_CTRT_YN)")
+ private String isInternal;
+
// 模板部分
@Schema(description = "模板实例主键", example = "10196")
private Long instanceId;
@@ -221,6 +224,6 @@ public class ContractSaveReqVO {
// 参数降级规则
private List demotes;
- // 品位不计价配置
+ // 品位不计价规则
private List nots;
}
\ No newline at end of file
diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java
index 4cc33ce..b8ce37d 100644
--- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java
+++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java
@@ -40,7 +40,7 @@ public class ContractMainDO extends BusinessBaseDO {
@TableField("SYS_CTRT_NUM")
private String systemContractNumber;
/**
- * 状态
+ * 状态(字典: BSE_CTRT_STS)
*/
@TableField("STS")
private String status;
@@ -60,7 +60,7 @@ public class ContractMainDO extends BusinessBaseDO {
@TableField("CTRT_VRTL")
private String contractVirtual;
/**
- * 是否先款后货
+ * 交易方式(字典: HS_PYBL_TP)
*/
@TableField("HS_PYBL")
private String hasPayable;
@@ -270,7 +270,7 @@ public class ContractMainDO extends BusinessBaseDO {
@TableField("STP")
private Integer step;
/**
- * ERP请求状态
+ * ERP请求状态(字典: ERP_REQ_STS)
*/
@TableField("ERP_STS")
private String erpStatus;
@@ -364,4 +364,29 @@ public class ContractMainDO extends BusinessBaseDO {
*/
@TableField("SALE_CTCT_ADR")
private String salesContactAddress;
+ /**
+ * ERP甲方公司编号
+ */
+ @TableField("ERP_PRCH_CPN_NUM")
+ private String erpPurchaseCompanyNumber;
+ /**
+ * ERP甲方公司名称
+ */
+ @TableField("ERP_PRCH_CPN_NAME")
+ private String erpPurchaseCompanyName;
+ /**
+ * ERP乙方公司编码
+ */
+ @TableField("ERP_SALE_CPN_NUM")
+ private String erpSalesCompanyNumber;
+ /**
+ * ERP乙方公司名称
+ */
+ @TableField("ERP_SALE_CPN_NAME")
+ private String erpSalesCompanyName;
+ /**
+ * 是否内部企业(字典:ERP_CTRT_YN)
+ */
+ @TableField("IS_INTL")
+ private String isInternal;
}
\ No newline at end of file
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 a9918d3..616eb58 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
@@ -19,11 +19,13 @@ import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO;
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
import com.zt.plat.module.contractorder.dal.dataobject.contract.*;
import com.zt.plat.module.contractorder.dal.mysql.contract.*;
+import com.zt.plat.module.contractorder.enums.ApiConstants;
import com.zt.plat.module.contractorder.enums.DateConstants;
import com.zt.plat.module.contractorder.enums.ProcessConstants;
import com.zt.plat.module.contractorder.enums.TableFieldConstants;
import com.zt.plat.module.contractorder.enums.contract.ContractStatusEnum;
import com.zt.plat.module.contractorder.enums.contract.ErpCtrtYesNoEnum;
+import com.zt.plat.module.erp.service.erp.ErpCompanyService;
import com.zt.plat.module.system.api.user.AdminUserApi;
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
import jakarta.annotation.Resource;
@@ -83,6 +85,8 @@ public class ContractServiceImpl implements ContractService {
private BpmTaskApi bpmTaskApi;
@Resource
private ContractDemoteMapper contractDemoteMapper;
+ @Resource
+ private ErpCompanyService erpCompanyService;
@Override
public PageResult getContractPage(ContractPageReqVO pageReqVO) {
@@ -109,6 +113,21 @@ public class ContractServiceImpl implements ContractService {
}
}
+ // 校验ERP的公司
+ if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())
+ || StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) {
+ if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) {
+ if (erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber()) == null) {
+ throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE);
+ }
+ }
+ if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) {
+ if (erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber()) == null) {
+ throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES);
+ }
+ }
+ }
+
// 合同主信息
ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class);
// 合同状态保存为草稿
diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java
index 1a4ca8c..c01411b 100644
--- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java
+++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java
@@ -20,4 +20,5 @@ public class ApiConstants {
public static final String VERSION = "1.0.0";
+ public static final String TABLE_FIELD_SPLY_ERP_CPN_NUM = "NUM";
}
diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java
index 21a23e6..2dd2cee 100644
--- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java
+++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java
@@ -62,4 +62,12 @@ public interface ErpCompanyService {
PageResult getErpCompanyPage(ErpCompanyPageReqVO pageReqVO);
void callErpRfcInterface();
+
+ /**
+ * 通过公司编码获得ERP公司
+ *
+ * @param number 公司编码
+ * @return ERP公司
+ */
+ ErpCompanyDO getErpCompanyByNumber(String number);
}
\ No newline at end of file
diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java
index 5f86f82..464b7d6 100644
--- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java
+++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java
@@ -7,14 +7,14 @@ import com.xxl.job.core.handler.annotation.XxlJob;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
-import com.zt.plat.module.erp.utils.ErpConfig;
-import com.zt.plat.module.erp.utils.MyRedisConfig;
-import com.zt.plat.module.erp.enums.OftenEnum;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyRespVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
import com.zt.plat.module.erp.dal.mysql.erp.ErpCompanyMapper;
+import com.zt.plat.module.erp.enums.OftenEnum;
+import com.zt.plat.module.erp.utils.ErpConfig;
+import com.zt.plat.module.erp.utils.MyRedisConfig;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -27,7 +27,7 @@ import java.util.Map;
import java.util.stream.Collectors;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_BOM_NOT_EXISTS;
+import static com.zt.plat.module.erp.enums.ApiConstants.TABLE_FIELD_SPLY_ERP_CPN_NUM;
import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS;
import static dm.jdbc.util.DriverUtil.log;
@@ -136,6 +136,11 @@ public class ErpCompanyServiceImpl implements ErpCompanyService {
}
}
+ @Override
+ public ErpCompanyDO getErpCompanyByNumber(String number) {
+ return erpCompanyMapper.selectOne(TABLE_FIELD_SPLY_ERP_CPN_NUM, number);
+ }
+
/**
* 处理数据,区分新增和更新
*/