From 36ff79ac9748758114728d70ee5e91fa98c984dd Mon Sep 17 00:00:00 2001 From: guojunyun Date: Fri, 17 Oct 2025 15:44:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=90=8C=E5=AE=A1=E6=A0=B8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9=20=E5=90=88=E5=90=8C=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=AE=A1=E6=A0=B8=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=20=E8=B0=83=E6=95=B4=E4=BB=B7=E9=85=8D=E7=BD=AE=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=20=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=8F=90=E4=BA=A4erp=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E4=BD=9C=E5=BA=9F=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E5=AE=8C=E7=BB=93=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/contract/DeductRespDTO.java | 15 + .../admin/contract/ContractController.java | 5 +- .../contract/vo/contract/ApprovalReqVO.java | 8 +- .../contract/vo/contract/DeductRespVO.java | 15 + .../contract/vo/contract/DeductSaveReqVO.java | 15 + .../dataobject/contract/ContractDeductDO.java | 25 ++ .../service/contract/ContractService.java | 2 +- .../service/contract/ContractServiceImpl.java | 390 +++++++++++------- .../service/erp/ErpContractServiceImpl.java | 2 +- 9 files changed, 314 insertions(+), 163 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java index 27ef2e2..6184e42 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java @@ -16,6 +16,9 @@ public class DeductRespDTO { @Schema(description = "条款主键") private Long formulaId; + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") private String configType; @@ -25,6 +28,18 @@ public class DeductRespDTO { @Schema(description = "调整价") 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 = "创建时间") private LocalDateTime createTime; } \ 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/controller/admin/contract/ContractController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java index d8420e0..fef3ebe 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java @@ -135,11 +135,10 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.submitApproval(id)); } - // TODO @PostMapping("/approval") - @Operation(summary = "合同审批 TODO") + @Operation(summary = "合同审批") @PreAuthorize("@ss.hasPermission('base:contract:approval')") - public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { + public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { return success(contractService.approval(reqVO)); } 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/ApprovalReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ApprovalReqVO.java index 4d59d2e..92e166d 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ApprovalReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ApprovalReqVO.java @@ -13,11 +13,11 @@ public class ApprovalReqVO { @NotNull(message = "合同主键ID不能为空") private Long id; - @Schema(description = "审核结果(通过:PASS,驳回:REJECT)", requiredMode = Schema.RequiredMode.REQUIRED) - @NotBlank(message = "审核结果不能为空") - private String auditResult; - @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "审核意见不能为空") private String reviewOpinion; + + @Schema(description = "状态:待推送 WAIT_PUSH,已驳回 REJECTED", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核状态不能为空") + private String status; } 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/DeductRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductRespVO.java index 8471ee1..c37f024 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductRespVO.java @@ -15,6 +15,9 @@ public class DeductRespVO { @Schema(description = "条款主键") private Long formulaId; + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") private String configType; @@ -24,6 +27,18 @@ public class DeductRespVO { @Schema(description = "调整价") 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 = "创建时间") private LocalDateTime createTime; } 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/DeductSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductSaveReqVO.java index fbecdb6..8246ab7 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductSaveReqVO.java @@ -15,6 +15,9 @@ public class DeductSaveReqVO { @Schema(description = "条款主键") private Long formulaId; + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") private String configType; @@ -23,4 +26,16 @@ public class DeductSaveReqVO { @Schema(description = "调整价") 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; } \ 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/ContractDeductDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDeductDO.java index a6ed755..f89b3d0 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDeductDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDeductDO.java @@ -34,6 +34,11 @@ public class ContractDeductDO extends BusinessBaseDO { */ @TableField("FMU_ID") private Long formulaId; + /** + * 金属元素缩写(Cu\Au\Ag) + */ + @TableField("ELEM_ABBR") + private String elementAbbreviation; /** * 数据项类型(字典:GRD_CFG_TP) */ @@ -49,4 +54,24 @@ public class ContractDeductDO extends BusinessBaseDO { */ @TableField("GRD_AMT") 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; } \ 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/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 9f2db38..d17780a 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 @@ -64,7 +64,7 @@ public interface ContractService { * @param reqVO 审批信息 * @return 审批结果 */ - String approval(@Valid ApprovalReqVO reqVO); + Boolean approval(@Valid ApprovalReqVO reqVO); /** * 查询不计价规则列表 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 a49f76d..7451ddb 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 @@ -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.bpm.api.task.BpmProcessInstanceApi; 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.BpmTaskRespDTO; +import com.zt.plat.module.bpm.api.task.dto.*; +import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; 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.dal.dataobject.contract.*; @@ -923,6 +923,7 @@ public class ContractServiceImpl implements ContractService { newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode()); } else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(oldContractMainDO.getStatus()) || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus())) { + // 其它状态编辑后都为“待审核” newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode()); } @@ -1040,9 +1041,35 @@ public class ContractServiceImpl implements ContractService { if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { - // TODO:待审核状态重新提交审批处理 - // 进入审批流程的合同,查询当前审批的任务节点 + // 获取流程当前审批的任务节点 List 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 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 { // 未进入审批流程的合同,创建审批流程 @@ -1069,7 +1096,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public String approval(ApprovalReqVO reqVO) { + public Boolean approval(ApprovalReqVO reqVO) { // 合同主键ID Long id = reqVO.getId(); @@ -1086,18 +1113,60 @@ public class ContractServiceImpl implements ContractService { } // 合同状态校验 - if (DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_IN_PROGRESS.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())) { + if (!(DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) { throw exception(CONTRACT_STATUS_NOT_APPROVAL, DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } - return ""; + // 获取当前流程正在审批的任务节点 + List 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 @@ -1232,148 +1301,7 @@ public class ContractServiceImpl implements ContractService { if (contractMainDO != null) { // 生成ERP合同映射表 - ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); - // 合同主信息表主键: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 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.setArchitectureService‌Place(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()); + ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); // 调用ERP模块 String erpResult = null; @@ -1535,6 +1463,9 @@ public class ContractServiceImpl implements ContractService { contractMainMapper.updateById(contractMainDO); }); + // 重新提交erp + submitErp(ids); + return true; } @@ -1563,9 +1494,160 @@ public class ContractServiceImpl implements ContractService { contractMainMapper.updateById(contractMainDO); }); + // 重新提交erp + submitErp(ids); + 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 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.setArchitectureService‌Place(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; + } + /** * 校验合同内容 * 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 36c8f91..194fe72 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 @@ -338,7 +338,7 @@ public class ErpContractServiceImpl implements ErpContractService { head.put("DDSKJE", erpContract.getPayeeConditionAmount()); Map req = new HashMap<>(); - req.put("head", head); + req.put("header", head); erpSubmitReqDTO.setReq(req); HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO);