合同提交erp功能编写

This commit is contained in:
guojunyun
2025-10-14 09:37:28 +08:00
parent 8b584ab1af
commit f1b90a51ac
4 changed files with 215 additions and 50 deletions

View File

@@ -199,4 +199,24 @@ public class ErpContractSaveReqVO {
@Schema(description = "达到收款条件金额;销售合同且类型为SAP02COSR必填")
private BigDecimal payeeConditionAmount;
@Schema(description = "公司编号")
private Long companyId;
@Schema(description = "公司名称")
private String companyName;
@Schema(description = "部门编号")
private Long deptId;
@Schema(description = "部门名称")
private String deptName;
@Schema(description = "岗位编号")
private Long postId;
@Schema(description = "创建者")
private String creatorName;
@Schema(description = "更新者")
private String updaterName;
}

View File

@@ -70,4 +70,12 @@ public interface ErpContractService {
PageResult<ErpContractDO> getErpContractPage(ErpContractPageReqVO pageReqVO);
void callErpRfcInterface();
/**
* 合同提交ERP
*
* @param erpContractVO ERP合同映射数据
* @return ERP合同映射
*/
String submitErp(ErpContractSaveReqVO erpContractVO);
}

View File

@@ -6,6 +6,9 @@ import com.alibaba.fastjson.JSONObject;
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.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.erp.api.ErpExternalApi;
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractRespVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
@@ -46,6 +49,9 @@ public class ErpContractServiceImpl implements ErpContractService {
@Resource
private ErpConfig erpConfig;
@Resource
public ErpExternalApi erpExternalApi;
@Override
public ErpContractRespVO createErpContract(ErpContractSaveReqVO createReqVO) {
// 插入
@@ -226,6 +232,121 @@ public class ErpContractServiceImpl implements ErpContractService {
}
}
@Override
public String submitErp(ErpContractSaveReqVO erpContractVO) {
// 转换为DO
ErpContractDO erpContract = BeanUtils.toBean(erpContractVO, ErpContractDO.class);
// 根据合同主信息ID查询合同映射
ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId());
if (erpContractDO == null) {
// 不存在映射表则新增
erpContractMapper.insert(erpContract);
} else {
// 存在映射表则更新
erpContract.setId(erpContractDO.getId());
erpContractMapper.updateById(erpContract);
}
// 构建ERP接口的参数
ErpSubmitReqDTO erpSubmitReqDTO = new ErpSubmitReqDTO();
erpSubmitReqDTO.setFuncnr("060");
erpSubmitReqDTO.setBskey(erpContract.getContractPaperNumber());
erpSubmitReqDTO.setUsrid(SecurityFrameworkUtils.getLoginUserId().toString());
erpSubmitReqDTO.setUsrnm(SecurityFrameworkUtils.getLoginUserNickname());
Map<String, Object> head = new HashMap<>();
// CZBS 操作标识 枚举值0新增 1修改
head.put("CZBS", erpContract.getOperationId());
// HTBH 合同编号
head.put("HTBH", erpContract.getContractPaperNumber());
// HTMC 合同名称
head.put("HTMC", erpContract.getContractName());
// HTLXBH 合同类型编号
head.put("HTLXBH", erpContract.getContractTypeNumber());
// HTLXMC 合同类型名称
head.put("HTLXMC", erpContract.getContractTypeName());
// HTLB 合同类别 枚举值1购销合同
head.put("HTLB", erpContract.getContractCategory());
// SFXNHT 是否虚拟合同 枚举值 0否 1
head.put("SFXNHT", erpContract.getIsVirtualContract());
// WLDWBH 客户/供应商编号 如果合同类型是收入类的,传客户编号和客户名称;
head.put("WLDWBH", erpContract.getSupplierNumber());
// WLDWMC 客户/供应商名称 如果合同类型是支出类的,传供应商编号和供应商名称;
head.put("WLDWMC", erpContract.getSupplierName());
// ZLIFNR 代理方
head.put("ZLIFNR", erpContract.getAgent());
// HTSSZTBH 合同实施主体编号 SAP公司代码
head.put("HTSSZTBH", erpContract.getContractImplementNumber());
// HTQDZTBH 合同签订主体编号 SAP公司代码
head.put("HTQDZTBH", erpContract.getContractSignNumber());
// HTQDRQ 合同签订日期 格式YYYY-MM-DD
head.put("HTQDRQ", erpContract.getSignDate());
// HTQSRQ 合同起始日期 格式YYYY-MM-DD
head.put("HTQSRQ", erpContract.getStartDate());
// HTZZRQ 合同终止日期 格式YYYY-MM-DD
head.put("HTZZRQ", erpContract.getStopDate());
// BZBH 币种编号 CNY、USD…
head.put("BZBH", erpContract.getCurrency());
// HTYBZJE 合同总金额(原币-含税)
head.put("HTYBZJE", erpContract.getSourceAmount());
// HTBWBZJE 合同总金额(本位币-含税)
head.put("HTBWBZJE", erpContract.getBasicAmount());
// BGHHTYBZJE 变更后合同总金额(原币-含税) 如果未做合同变更,金额等于合同总金额(原币-含税)
head.put("BGHHTYBZJE", erpContract.getChangeSourceAmount());
// BGHHTBWBZJE 变更后合同总金额(本位币-含税) 如果未做合同变更,金额等于合同总金额(本位币-含税)
head.put("BGHHTBWBZJE", erpContract.getChangeBasicAmount());
// HTZTBH 合同状态编号
head.put("HTZTBH", erpContract.getStatusNumber());
// HTZTMC 合同状态名称
head.put("HTZTMC", erpContract.getStatusName());
// SFYYFK 是否有预付款 枚举值 0否 1
head.put("SFYYFK", erpContract.getIsPrepayment());
// YFKBL 预付款比例 如果是否有预付款为1则必填
head.put("YFKBL", erpContract.getPrepaymentRatio());
// YFKJE 预付款金额
head.put("YFKJE", erpContract.getPrepaymentAmount());
// LYBZJBGQYB 履约保证金-变更前(原币)
head.put("LYBZJBGQYB", erpContract.getSourceBeforeBond());
// LYBZJBGQBWB 履约保证金-变更前(本位币)
head.put("LYBZJBGQBWB", erpContract.getBasicBeforeBond());
// LYBZJBGHYB 履约保证金-变更后(原币)
head.put("LYBZJBGHYB", erpContract.getSourceAfterBond());
// LYBZJBGHBWB 履约保证金-变更后(本位币)
head.put("LYBZJBGHBWB", erpContract.getBasicAfterBond());
// SFHZBJ 是否含质保金 枚举值 0否 1
head.put("SFHZBJ", erpContract.getIsQualityassuranceAmount());
// ZBJBL 质保金比例 如果是否含质保金为1则必填
head.put("ZBJBL", erpContract.getQualityassuranceRatio());
// BZJJE 质保金金额
head.put("BZJJE", erpContract.getQualityassuranceAmount());
// SFNBQY 是否内部企业 枚举值 0否 1
head.put("SFNBQY", erpContract.getIsInternal());
// SZXZ 收支性质 枚举值 1收入 2支出
head.put("SZXZ", erpContract.getNature());
// BZXX 备注信息
head.put("BZXX", erpContract.getRemark());
// SFKJHT 是否框架合同 01当等于1时合同总金额本币、合同总金额原币、变更后合同总金额原币-含税)、变更后合同总金额(本位币-含税赋默认值为1000000000000000.00
head.put("SFKJHT", erpContract.getIsFramework());
// JNJW 境内/境外 枚举值 0境内 1境外
head.put("JNJW", erpContract.getIsDomestic());
// JZFWFSD 建筑服务发生地
head.put("JZFWFSD", erpContract.getArchitectureServicePlace());
// DDSKJE 达到收款条件金额
head.put("DDSKJE", erpContract.getPayeeConditionAmount());
Map<String, Object> req = new HashMap<>();
req.put("head", head);
erpSubmitReqDTO.setReq(req);
HashMap<String, String> response = erpExternalApi.submitDataToErp(erpSubmitReqDTO);
System.out.println(response.get("resStr"));
return "";
}
/**
* 处理数据,区分新增和更新
*/