合同审核接口修改

合同提交审核接口修改
调整价配置对应字段修改
合同提交erp接口修改
作废接口修改
完结接口修改
This commit is contained in:
guojunyun
2025-10-17 15:44:57 +08:00
parent e70f0d8469
commit 36ff79ac97
9 changed files with 314 additions and 163 deletions

View File

@@ -16,6 +16,9 @@ public class DeductRespDTO {
@Schema(description = "条款主键") @Schema(description = "条款主键")
private Long formulaId; private Long formulaId;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "数据项类型(字典:GRD_CFG_TP)") @Schema(description = "数据项类型(字典:GRD_CFG_TP)")
private String configType; private String configType;
@@ -25,6 +28,18 @@ public class DeductRespDTO {
@Schema(description = "调整价") @Schema(description = "调整价")
private BigDecimal gradeAmount; private BigDecimal gradeAmount;
@Schema(description = "区间方式(字典STLM_RNG_WY)")
private String rangeWay;
@Schema(description = "上限")
private String up;
@Schema(description = "下限")
private String down;
@Schema(description = "类型(字典STLM_COEF)")
private String type;
@Schema(description = "创建时间") @Schema(description = "创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
} }

View File

@@ -135,11 +135,10 @@ public class ContractController implements BusinessControllerMarker {
return success(contractService.submitApproval(id)); return success(contractService.submitApproval(id));
} }
// TODO
@PostMapping("/approval") @PostMapping("/approval")
@Operation(summary = "合同审批 TODO") @Operation(summary = "合同审批")
@PreAuthorize("@ss.hasPermission('base:contract:approval')") @PreAuthorize("@ss.hasPermission('base:contract:approval')")
public CommonResult<String> approval(@Valid @RequestBody ApprovalReqVO reqVO) { public CommonResult<Boolean> approval(@Valid @RequestBody ApprovalReqVO reqVO) {
return success(contractService.approval(reqVO)); return success(contractService.approval(reqVO));
} }

View File

@@ -13,11 +13,11 @@ public class ApprovalReqVO {
@NotNull(message = "合同主键ID不能为空") @NotNull(message = "合同主键ID不能为空")
private Long id; private Long id;
@Schema(description = "审核结果(通过PASS驳回REJECT)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "审核结果不能为空")
private String auditResult;
@Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "审核意见不能为空") @NotBlank(message = "审核意见不能为空")
private String reviewOpinion; private String reviewOpinion;
@Schema(description = "状态:待推送 WAIT_PUSH已驳回 REJECTED", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "审核状态不能为空")
private String status;
} }

View File

@@ -15,6 +15,9 @@ public class DeductRespVO {
@Schema(description = "条款主键") @Schema(description = "条款主键")
private Long formulaId; private Long formulaId;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "数据项类型(字典:GRD_CFG_TP)") @Schema(description = "数据项类型(字典:GRD_CFG_TP)")
private String configType; private String configType;
@@ -24,6 +27,18 @@ public class DeductRespVO {
@Schema(description = "调整价") @Schema(description = "调整价")
private BigDecimal gradeAmount; private BigDecimal gradeAmount;
@Schema(description = "区间方式(字典STLM_RNG_WY)")
private String rangeWay;
@Schema(description = "上限")
private String up;
@Schema(description = "下限")
private String down;
@Schema(description = "类型(字典STLM_COEF)")
private String type;
@Schema(description = "创建时间") @Schema(description = "创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
} }

View File

@@ -15,6 +15,9 @@ public class DeductSaveReqVO {
@Schema(description = "条款主键") @Schema(description = "条款主键")
private Long formulaId; private Long formulaId;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "数据项类型(字典:GRD_CFG_TP)") @Schema(description = "数据项类型(字典:GRD_CFG_TP)")
private String configType; private String configType;
@@ -23,4 +26,16 @@ public class DeductSaveReqVO {
@Schema(description = "调整价") @Schema(description = "调整价")
private BigDecimal gradeAmount; private BigDecimal gradeAmount;
@Schema(description = "区间方式(字典STLM_RNG_WY)")
private String rangeWay;
@Schema(description = "上限")
private String up;
@Schema(description = "下限")
private String down;
@Schema(description = "类型(字典STLM_COEF)")
private String type;
} }

View File

@@ -34,6 +34,11 @@ public class ContractDeductDO extends BusinessBaseDO {
*/ */
@TableField("FMU_ID") @TableField("FMU_ID")
private Long formulaId; private Long formulaId;
/**
* 金属元素缩写Cu\Au\Ag
*/
@TableField("ELEM_ABBR")
private String elementAbbreviation;
/** /**
* 数据项类型(字典:GRD_CFG_TP) * 数据项类型(字典:GRD_CFG_TP)
*/ */
@@ -49,4 +54,24 @@ public class ContractDeductDO extends BusinessBaseDO {
*/ */
@TableField("GRD_AMT") @TableField("GRD_AMT")
private BigDecimal gradeAmount; private BigDecimal gradeAmount;
/**
* 区间方式(字典STLM_RNG_WY)
*/
@TableField("RNG_WY")
private String rangeWay;
/**
* 上限
*/
@TableField("UP")
private String up;
/**
* 下限
*/
@TableField("DOWN")
private String down;
/**
* 类型(字典STLM_COEF)
*/
@TableField("TP")
private String type;
} }

View File

@@ -64,7 +64,7 @@ public interface ContractService {
* @param reqVO 审批信息 * @param reqVO 审批信息
* @return 审批结果 * @return 审批结果
*/ */
String approval(@Valid ApprovalReqVO reqVO); Boolean approval(@Valid ApprovalReqVO reqVO);
/** /**
* 查询不计价规则列表 * 查询不计价规则列表

View File

@@ -20,8 +20,8 @@ import com.zt.plat.module.base.dal.mysql.tmpltp.TmplInscBsnRelMapper;
import com.zt.plat.module.base.service.tmpltp.TemplateInstanceDataService; import com.zt.plat.module.base.service.tmpltp.TemplateInstanceDataService;
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.zt.plat.module.bpm.api.task.dto.*;
import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
import com.zt.plat.module.contractorder.api.dto.contract.*; import com.zt.plat.module.contractorder.api.dto.contract.*;
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; 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.dataobject.contract.*;
@@ -923,6 +923,7 @@ public class ContractServiceImpl implements ContractService {
newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode()); newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode());
} else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(oldContractMainDO.getStatus()) } else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(oldContractMainDO.getStatus())
|| DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus())) { || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus())) {
// 其它状态编辑后都为“待审核”
newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode()); newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode());
} }
@@ -1040,9 +1041,35 @@ public class ContractServiceImpl implements ContractService {
if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) {
// TODO待审核状态重新提交审批处理 // 获取流程当前审批的任务节点
// 进入审批流程的合同,查询当前审批的任务节点
List<BpmTaskRespDTO> taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData(); List<BpmTaskRespDTO> taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData();
if (CollectionUtils.isNotEmpty(taskList)) {
BpmTaskRespDTO bpmTaskDto = taskList.get(taskList.size() - 1);
BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO();
badrDto.setProcessInstanceId(contractMainDO.getProcessInstanceId()); // 流程实例id
badrDto.setTaskId(bpmTaskDto.getId()); // 当前审核任务节点id
BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi.getApprovalDetail(SecurityFrameworkUtils.getLoginUserId(), badrDto).getData();
if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) {
// 如果状态是驳回状态,需要重新创建一个流程实例
BpmProcessInstanceCreateReqDTO pidtoNew = new BpmProcessInstanceCreateReqDTO();
pidtoNew.setProcessDefinitionKey(ProcessConstants.CONTRACT_APPROVAL_PROCESS);
pidtoNew.setBusinessKey(String.valueOf(id));
String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidtoNew).getData();
if (StringUtils.isNotBlank(data)) {
// 获取流程当前审批的任务节点
List<BpmTaskRespDTO> taskListNew = bpmTaskApi.getTaskListByProcessInstanceId(data).getData();
contractMainDO.setProcessInstanceId(data);
if (CollectionUtils.isNotEmpty(taskListNew)) {
BpmTaskRespDTO undoTask = taskListNew.get(taskListNew.size() - 1);
contractMainDO.setTaskNodeId(undoTask.getId());
}
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode());
contractMainMapper.updateById(contractMainDO);
return true;
}
}
}
} else { } else {
// 未进入审批流程的合同,创建审批流程 // 未进入审批流程的合同,创建审批流程
@@ -1069,7 +1096,7 @@ public class ContractServiceImpl implements ContractService {
} }
@Override @Override
public String approval(ApprovalReqVO reqVO) { public Boolean approval(ApprovalReqVO reqVO) {
// 合同主键ID // 合同主键ID
Long id = reqVO.getId(); Long id = reqVO.getId();
@@ -1086,18 +1113,60 @@ public class ContractServiceImpl implements ContractService {
} }
// 合同状态校验 // 合同状态校验
if (DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) if (!(DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus())
|| DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) || DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) {
|| DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(contractMainDO.getStatus())
|| DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus())
|| DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(contractMainDO.getStatus())
|| DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) {
throw exception(CONTRACT_STATUS_NOT_APPROVAL, throw exception(CONTRACT_STATUS_NOT_APPROVAL,
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
} }
return ""; // 获取当前流程正在审批的任务节点
List<BpmTaskRespDTO> taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData();
BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1);
// 判断是否流程已经通过、驳回
BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO();
badrDto.setProcessInstanceId(contractMainDO.getProcessInstanceId()); // 流程实例id
badrDto.setTaskId(undoTask.getId()); // 当前审核任务节点id
BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi.getApprovalDetail(SecurityFrameworkUtils.getLoginUserId(), badrDto).getData();
// 更新合同状态,状态需要根据流程的状态进行判断
contractMainDO.setReviewOpinion(reqVO.getReviewOpinion());
if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.NOT_START.getStatus())) {
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode());
} else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) {
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode());
} else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.APPROVE.getStatus())) {
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode());
} else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.REJECT.getStatus())) {
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_REJECTED.getCode());
} else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.CANCEL.getStatus())) {
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_REJECTED.getCode());
}
if (ObjectUtils.isNotEmpty(undoTask)) {
contractMainDO.setTaskNodeId(undoTask.getId());
}
contractMainMapper.updateById(contractMainDO);
// 需要调用bpm 审核接口更新审批中的状态
if (DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode().equals(reqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) {
if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) {
BpmTaskApproveReqDTO btarDto = new BpmTaskApproveReqDTO();
btarDto.setId(undoTask.getId());
btarDto.setReason(reqVO.getReviewOpinion());
bpmProcessInstanceApi.approveTask(btarDto);
}
} else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(reqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) {
if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) {
BpmTaskRejectReqDTO btrrDto = new BpmTaskRejectReqDTO();
btrrDto.setId(undoTask.getId());
btrrDto.setReason(reqVO.getReviewOpinion());
bpmProcessInstanceApi.rejectTask(btrrDto);
}
}
return true;
} }
@Override @Override
@@ -1232,148 +1301,7 @@ public class ContractServiceImpl implements ContractService {
if (contractMainDO != null) { if (contractMainDO != null) {
// 生成ERP合同映射表 // 生成ERP合同映射表
ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO);
// 合同主信息表主键:BSE_CTRT_MAIN
erpContractVO.setContractMainId(id);
// 操作标识:OPTN_ID
// 1、先调用009ERP接口查询合同信息
ErpContractPageReqVO pageReqVO = new ErpContractPageReqVO();
// BUKRS 合同签订主体公司代码 收支方向判断如果为“支出”传“ERP甲方公司编码”反之传“ERP乙方公司编码”
// PARTNER 对方客商编号 收支方向判断如果为“支出”传“ERP乙方公司编码”反之传“ERP甲方公司编码”
// INEDR 1-借(销售合同)2-贷(采购合同) 收支方向判断如果为“支出”传“2”反之传“1”
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setContractCategory("2");
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setContractCategory("1");
}
// ZHTBH 合同编号 合同编号:CTRT_PPR_NUM
pageReqVO.setContractTypeNumber(contractMainDO.getContractPaperNumber());
// ZHTMC 合同名称 合同名称:CTRT_NAME
pageReqVO.setContractName(contractMainDO.getContractName());
PageResult<ErpContractDO> erpContractPage = erpContractService.getErpContractPage(pageReqVO);
if (erpContractPage.getTotal() > 0) {
// 2、如果009接口返回值中“合同编号”字段存在值并且与传入的相同则OPTN_ID值为“1”
erpContractVO.setOperationId("1");
} else {
// 3、如果009接口返回值中“合同编号”字段不存在值根据合同主键查询映射表中是否存在没有删除的数据如果有值为“1”如果没有值为“0”
ErpContractDO erpContract = erpContractService.getErpContractByMainId(id);
if (erpContract != null) {
erpContractVO.setOperationId("1");
} else {
erpContractVO.setOperationId("0");
}
}
// 合同编号:CTRT_PPR_NUM
erpContractVO.setContractPaperNumber(contractMainDO.getContractPaperNumber());
// 合同名称:CTRT_NAME
erpContractVO.setContractName(contractMainDO.getContractName());
// 合同类型编号:CTRT_TP_NUM
erpContractVO.setContractTypeNumber(contractMainDO.getConstructionTypeNumber());
// 合同类型名称:CTRT_TP_NAME
erpContractVO.setContractTypeName(contractMainDO.getConstructionTypeName());
// 合同类别:CTRT_CTGR
erpContractVO.setContractCategory(contractMainDO.getCategory());
// 是否虚拟合同:IS_VRTL_CTRT
erpContractVO.setIsVirtualContract(contractMainDO.getContractVirtual());
// 客商编号:SPLR_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP乙方公司编码”反之为“ERP甲方公司编码”
// 客商名称:SPLR_NAME 根据合同主表的收支方向判断如果为“支出”值为“ERP乙方公司名称”反之为“ERP甲方公司名称”
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setSupplierNumber(contractMainDO.getErpSalesCompanyNumber());
erpContractVO.setSupplierName(contractMainDO.getErpSalesCompanyName());
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setSupplierNumber(contractMainDO.getErpPurchaseCompanyNumber());
erpContractVO.setSupplierName(contractMainDO.getErpPurchaseCompanyName());
}
// 代理方:AGT
erpContractVO.setAgent(contractMainDO.getAgent());
// 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP甲方公司编码”反之为“ERP乙方公司编码”
// 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP甲方公司名称”反之为“ERP乙方公司名称”
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setContractImplementNumber(contractMainDO.getErpPurchaseCompanyNumber());
erpContractVO.setContractSignNumber(contractMainDO.getErpPurchaseCompanyName());
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setContractImplementNumber(contractMainDO.getErpSalesCompanyNumber());
erpContractVO.setContractSignNumber(contractMainDO.getErpSalesCompanyName());
}
// 合同签订日期:SGN_DT
if (contractMainDO.getSignDate() != null) {
erpContractVO.setSignDate(contractMainDO.getSignDate().toLocalDate());
}
// 合同起始日期:STRT_DT
if (contractMainDO.getStartDate() != null) {
erpContractVO.setStartDate(contractMainDO.getStartDate().toLocalDate());
}
// 合同终止日期:STOP_DT
if (contractMainDO.getEndDate() != null) {
erpContractVO.setStopDate(contractMainDO.getEndDate().toLocalDate());
}
// 币种编号:CUR
erpContractVO.setCurrency(contractMainDO.getCurrency());
// 合同总金额(原币-含税):SRC_AMT
erpContractVO.setSourceAmount(contractMainDO.getCooAmount());
// 合同总金额(本位币-含税):BSC_AMT
erpContractVO.setBasicAmount(contractMainDO.getBasicAmount());
// 变更后合同总金额(原币-含税):CHG_SRC_AMT
erpContractVO.setChangeSourceAmount(contractMainDO.getChangeCooAmount());
// 变更后合同总金额(本位币-含税):CHG_BSC_AMT
erpContractVO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount());
// 合同状态编号:STS_NUM 参照060接口
erpContractVO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode());
// 合同状态名称:STS_NAME 参照060接口
erpContractVO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel());
// 是否有预付款:IS_PPYM
erpContractVO.setIsPrepayment(contractMainDO.getHasPrepayment());
// 预付款比例:PPYM_RTIO
erpContractVO.setPrepaymentRatio(contractMainDO.getPrepaymentRatio());
// 预付款金额:PPYM_AMT
erpContractVO.setPrepaymentAmount(contractMainDO.getPrepaymentAmount());
// 履约保证金-变更前(原币):SRC_BFR_BND
erpContractVO.setSourceBeforeBond(contractMainDO.getChangeCooAmountDeposit());
// 履约保证金-变更前(本位币):BSC_BFR_BND
erpContractVO.setBasicBeforeBond(contractMainDO.getChangeBasicAmountDeposit());
// 履约保证金-变更后(原币):SRC_AFT_BND
erpContractVO.setSourceAfterBond(contractMainDO.getChangeCooAmountDeposit());
// 履约保证金-变更后(本位币):BSC_AFT_BND
erpContractVO.setBasicAfterBond(contractMainDO.getChangeBasicAmountDeposit());
// 是否含质保金:IS_QUA_AMT
erpContractVO.setIsQualityassuranceAmount(contractMainDO.getHasQualityAmount());
// 质保金比例:QUA_RTIO
erpContractVO.setQualityassuranceRatio(contractMainDO.getQualityRatio());
// 质保金金额:QUA_AMT
erpContractVO.setQualityassuranceAmount(contractMainDO.getQualityAmount());
// 是否内部企业:IS_INTL
erpContractVO.setIsInternal(contractMainDO.getIsInternal());
// 收支性质:NTR
erpContractVO.setNature(contractMainDO.getDirection());
// 备注信息:RMK
erpContractVO.setRemark(contractMainDO.getRemark());
// 是否框架合同:IS_FMWK
erpContractVO.setIsFramework(contractMainDO.getIsFramework());
// 境内/境外:IS_DOM
erpContractVO.setIsDomestic(contractMainDO.getIsDomestic());
// 达到收款条件金额:PYEE_CND_AMT
erpContractVO.setPayeeConditionAmount(contractMainDO.getPayeeConditionAmount());
// 建筑服务发生地:ARCH_SVC_PLCE
erpContractVO.setArchitectureServicePlace(contractMainDO.getArchitectureServicePlace());
// 公司编号
erpContractVO.setCompanyId(contractMainDO.getCompanyId());
// 公司名称
erpContractVO.setCompanyName(contractMainDO.getCompanyName());
// 部门编号
erpContractVO.setDeptId(contractMainDO.getDeptId());
// 部门名称
erpContractVO.setDeptName(contractMainDO.getDeptName());
// 岗位编号
erpContractVO.setPostId(contractMainDO.getPostId());
// 创建者
erpContractVO.setCreatorName(contractMainDO.getCreatorName());
// 更新者
erpContractVO.setUpdaterName(contractMainDO.getUpdaterName());
// 调用ERP模块 // 调用ERP模块
String erpResult = null; String erpResult = null;
@@ -1535,6 +1463,9 @@ public class ContractServiceImpl implements ContractService {
contractMainMapper.updateById(contractMainDO); contractMainMapper.updateById(contractMainDO);
}); });
// 重新提交erp
submitErp(ids);
return true; return true;
} }
@@ -1563,9 +1494,160 @@ public class ContractServiceImpl implements ContractService {
contractMainMapper.updateById(contractMainDO); contractMainMapper.updateById(contractMainDO);
}); });
// 重新提交erp
submitErp(ids);
return true; return true;
} }
private ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO) {
ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO();
// 合同主信息表主键:BSE_CTRT_MAIN
erpContractVO.setContractMainId(contractMainDO.getId());
// 操作标识:OPTN_ID
// 1、先调用009ERP接口查询合同信息
ErpContractPageReqVO pageReqVO = new ErpContractPageReqVO();
// BUKRS 合同签订主体公司代码 收支方向判断如果为“支出”传“ERP甲方公司编码”反之传“ERP乙方公司编码”
// PARTNER 对方客商编号 收支方向判断如果为“支出”传“ERP乙方公司编码”反之传“ERP甲方公司编码”
// INEDR 1-借(销售合同)2-贷(采购合同) 收支方向判断如果为“支出”传“2”反之传“1”
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setContractCategory("2");
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setContractCategory("1");
}
// ZHTBH 合同编号 合同编号:CTRT_PPR_NUM
pageReqVO.setContractTypeNumber(contractMainDO.getContractPaperNumber());
// ZHTMC 合同名称 合同名称:CTRT_NAME
pageReqVO.setContractName(contractMainDO.getContractName());
PageResult<ErpContractDO> erpContractPage = erpContractService.getErpContractPage(pageReqVO);
if (erpContractPage.getTotal() > 0) {
// 2、如果009接口返回值中“合同编号”字段存在值并且与传入的相同则OPTN_ID值为“1”
erpContractVO.setOperationId("1");
} else {
// 3、如果009接口返回值中“合同编号”字段不存在值根据合同主键查询映射表中是否存在没有删除的数据如果有值为“1”如果没有值为“0”
ErpContractDO erpContract = erpContractService.getErpContractByMainId(contractMainDO.getId());
if (erpContract != null) {
erpContractVO.setOperationId("1");
} else {
erpContractVO.setOperationId("0");
}
}
// 合同编号:CTRT_PPR_NUM
erpContractVO.setContractPaperNumber(contractMainDO.getContractPaperNumber());
// 合同名称:CTRT_NAME
erpContractVO.setContractName(contractMainDO.getContractName());
// 合同类型编号:CTRT_TP_NUM
erpContractVO.setContractTypeNumber(contractMainDO.getConstructionTypeNumber());
// 合同类型名称:CTRT_TP_NAME
erpContractVO.setContractTypeName(contractMainDO.getConstructionTypeName());
// 合同类别:CTRT_CTGR
erpContractVO.setContractCategory(contractMainDO.getCategory());
// 是否虚拟合同:IS_VRTL_CTRT
erpContractVO.setIsVirtualContract(contractMainDO.getContractVirtual());
// 客商编号:SPLR_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP乙方公司编码”反之为“ERP甲方公司编码”
// 客商名称:SPLR_NAME 根据合同主表的收支方向判断如果为“支出”值为“ERP乙方公司名称”反之为“ERP甲方公司名称”
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setSupplierNumber(contractMainDO.getErpSalesCompanyNumber());
erpContractVO.setSupplierName(contractMainDO.getErpSalesCompanyName());
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setSupplierNumber(contractMainDO.getErpPurchaseCompanyNumber());
erpContractVO.setSupplierName(contractMainDO.getErpPurchaseCompanyName());
}
// 代理方:AGT
erpContractVO.setAgent(contractMainDO.getAgent());
// 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP甲方公司编码”反之为“ERP乙方公司编码”
// 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP甲方公司名称”反之为“ERP乙方公司名称”
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setContractImplementNumber(contractMainDO.getErpPurchaseCompanyNumber());
erpContractVO.setContractSignNumber(contractMainDO.getErpPurchaseCompanyName());
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
erpContractVO.setContractImplementNumber(contractMainDO.getErpSalesCompanyNumber());
erpContractVO.setContractSignNumber(contractMainDO.getErpSalesCompanyName());
}
// 合同签订日期:SGN_DT
if (contractMainDO.getSignDate() != null) {
erpContractVO.setSignDate(contractMainDO.getSignDate().toLocalDate());
}
// 合同起始日期:STRT_DT
if (contractMainDO.getStartDate() != null) {
erpContractVO.setStartDate(contractMainDO.getStartDate().toLocalDate());
}
// 合同终止日期:STOP_DT
if (contractMainDO.getEndDate() != null) {
erpContractVO.setStopDate(contractMainDO.getEndDate().toLocalDate());
}
// 币种编号:CUR
erpContractVO.setCurrency(contractMainDO.getCurrency());
// 合同总金额(原币-含税):SRC_AMT
erpContractVO.setSourceAmount(contractMainDO.getCooAmount());
// 合同总金额(本位币-含税):BSC_AMT
erpContractVO.setBasicAmount(contractMainDO.getBasicAmount());
// 变更后合同总金额(原币-含税):CHG_SRC_AMT
erpContractVO.setChangeSourceAmount(contractMainDO.getChangeCooAmount());
// 变更后合同总金额(本位币-含税):CHG_BSC_AMT
erpContractVO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount());
// 合同状态编号:STS_NUM 参照060接口
erpContractVO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode());
// 合同状态名称:STS_NAME 参照060接口
erpContractVO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel());
// 是否有预付款:IS_PPYM
erpContractVO.setIsPrepayment(contractMainDO.getHasPrepayment());
// 预付款比例:PPYM_RTIO
erpContractVO.setPrepaymentRatio(contractMainDO.getPrepaymentRatio());
// 预付款金额:PPYM_AMT
erpContractVO.setPrepaymentAmount(contractMainDO.getPrepaymentAmount());
// 履约保证金-变更前(原币):SRC_BFR_BND
erpContractVO.setSourceBeforeBond(contractMainDO.getChangeCooAmountDeposit());
// 履约保证金-变更前(本位币):BSC_BFR_BND
erpContractVO.setBasicBeforeBond(contractMainDO.getChangeBasicAmountDeposit());
// 履约保证金-变更后(原币):SRC_AFT_BND
erpContractVO.setSourceAfterBond(contractMainDO.getChangeCooAmountDeposit());
// 履约保证金-变更后(本位币):BSC_AFT_BND
erpContractVO.setBasicAfterBond(contractMainDO.getChangeBasicAmountDeposit());
// 是否含质保金:IS_QUA_AMT
erpContractVO.setIsQualityassuranceAmount(contractMainDO.getHasQualityAmount());
// 质保金比例:QUA_RTIO
erpContractVO.setQualityassuranceRatio(contractMainDO.getQualityRatio());
// 质保金金额:QUA_AMT
erpContractVO.setQualityassuranceAmount(contractMainDO.getQualityAmount());
// 是否内部企业:IS_INTL
erpContractVO.setIsInternal(contractMainDO.getIsInternal());
// 收支性质:NTR
erpContractVO.setNature(contractMainDO.getDirection());
// 备注信息:RMK
erpContractVO.setRemark(contractMainDO.getRemark());
// 是否框架合同:IS_FMWK
erpContractVO.setIsFramework(contractMainDO.getIsFramework());
// 境内/境外:IS_DOM
erpContractVO.setIsDomestic(contractMainDO.getIsDomestic());
// 达到收款条件金额:PYEE_CND_AMT
erpContractVO.setPayeeConditionAmount(contractMainDO.getPayeeConditionAmount());
// 建筑服务发生地:ARCH_SVC_PLCE
erpContractVO.setArchitectureServicePlace(contractMainDO.getArchitectureServicePlace());
// 公司编号
erpContractVO.setCompanyId(contractMainDO.getCompanyId());
// 公司名称
erpContractVO.setCompanyName(contractMainDO.getCompanyName());
// 部门编号
erpContractVO.setDeptId(contractMainDO.getDeptId());
// 部门名称
erpContractVO.setDeptName(contractMainDO.getDeptName());
// 岗位编号
erpContractVO.setPostId(contractMainDO.getPostId());
// 创建者
erpContractVO.setCreatorName(contractMainDO.getCreatorName());
// 更新者
erpContractVO.setUpdaterName(contractMainDO.getUpdaterName());
return erpContractVO;
}
/** /**
* 校验合同内容 * 校验合同内容
* *

View File

@@ -338,7 +338,7 @@ public class ErpContractServiceImpl implements ErpContractService {
head.put("DDSKJE", erpContract.getPayeeConditionAmount()); head.put("DDSKJE", erpContract.getPayeeConditionAmount());
Map<String, Object> req = new HashMap<>(); Map<String, Object> req = new HashMap<>();
req.put("head", head); req.put("header", head);
erpSubmitReqDTO.setReq(req); erpSubmitReqDTO.setReq(req);
HashMap<String, String> response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); HashMap<String, String> response = erpExternalApi.submitDataToErp(erpSubmitReqDTO);