From a25e85cb8ee537195b166f1cc1c1965202b08406 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 15:42:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=88=E5=90=8C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E3=80=81=E6=8F=90erp=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 1 + .../enums/contract/DictEnum.java | 4 + .../admin/contract/ContractController.java | 11 +- .../service/contract/ContractService.java | 11 +- .../service/contract/ContractServiceImpl.java | 107 ++++++++++++++++-- .../service/erp/ErpContractServiceImpl.java | 4 +- 6 files changed, 118 insertions(+), 20 deletions(-) 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 050bbd5..c41c670 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 @@ -22,4 +22,5 @@ public interface ErrorCodeConstants { 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公司信息"); + ErrorCode CONTRACT_STATUS_NOT_DELETE = new ErrorCode(1_027_000_010, "{}状态合同不允许删除"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 5aeeeb3..274dc75 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -63,4 +63,8 @@ public enum DictEnum { public String getRemark() { return remark; } + + public static DictEnum getByCode(String code, String dictType) { + return DictEnum.valueOf(dictType + "_" +code); + } } 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 bffc2a1..27489ba 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 @@ -85,13 +85,11 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.update(reqVO)); } - // TODO @DeleteMapping("/delete") @Operation(summary = "删除合同") - @Parameter(name = "ids", description = "合同ID集合", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('base:contract:delete')") - public CommonResult delete(@RequestParam("ids") Long[] ids) { - return success(true); + public CommonResult> delete(@RequestBody List ids) { + return success(contractService.delete(ids)); } // TODO @@ -144,11 +142,10 @@ public class ContractController implements BusinessControllerMarker { public void viewApproval() { } - // TODO @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public void submitErp(@RequestBody List ids) { - contractService.submitErp(ids); + public CommonResult> submitErp(@RequestBody List ids) { + return success(contractService.submitErp(ids)); } } 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 7df8cf5..d51fe28 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 @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.service.contract; +import cn.hutool.json.JSONObject; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; @@ -101,5 +102,13 @@ public interface ContractService { * @param ids 合同ID集合 * @return */ - void submitErp(List ids); + List submitErp(List ids); + + /** + * 删除合同 + * + * @param ids 合同ID集合 + * @return 删除结果 + */ + List delete(List ids); } 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 6cf1aec..78642fd 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 @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.service.contract; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; @@ -21,10 +22,7 @@ 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.*; 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.*; import com.zt.plat.module.contractorder.enums.contract.DictEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; @@ -412,7 +410,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_UPDATE, - DictEnum.valueOf(oldContractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 请求更新的合同信息 @@ -596,6 +594,83 @@ public class ContractServiceImpl implements ContractService { } } + @Override + public List delete(List ids) { + + // 执行结果 + List result = new ArrayList<>(); + + ids.forEach(id -> { + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", id.toString() + ":" + CONTRACT_NOT_EXISTS)); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus())) { + String msg = id.toString() + + ":" + + CONTRACT_STATUS_NOT_DELETE.getMsg() + .replace("{}", DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", msg)); + } + + // 删除关联信息 + // 查询合同明细 + List detailDOS = contractDetailMapper + .selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id); + if (detailDOS != null && !detailDOS.isEmpty()) { + detailDOS.forEach(detailDO -> { + Long detailDOId = detailDO.getId(); + + // 删除交货计划 + contractPlanMapper.delete(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detailDOId.toString()); + }); + + // 删除合同明细 + contractDetailMapper.delete(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id.toString()); + } + + // 查询价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + formulaDOS.forEach(formulaDO -> { + + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + + // 删除基础系数配置 + contractCoefficientMapper.delete(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formulaDOId.toString()); + // 删除品位等级价配置 + contractGradeMapper.delete(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formulaDOId.toString()); + // 删除调整价配置 + contractDeductMapper.delete(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formulaDOId.toString()); + // 删除市场价配置 + contractPriceMapper.delete(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formulaDOId.toString()); + }); + + // 删除价款结算条款 + contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id.toString()); + } + + // 删除参数降级规则 + contractDemoteMapper.delete(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, id.toString()); + + // 删除品位不计价规则 + contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, id.toString()); + + // 删除合同数据 + contractMainMapper.deleteById(id); + + result.add(new JSONObject().putOnce("deleted", true).putOnce("msg", id.toString())); + }); + + return result; + } + @Override public String submitApproval(Long id) { @@ -618,7 +693,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, - DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 合同内容校验 @@ -684,7 +759,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_APPROVAL, - DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } return ""; @@ -828,7 +903,10 @@ public class ContractServiceImpl implements ContractService { } @Override - public void submitErp(List ids) { + public List submitErp(List ids) { + + // 返回结果 + List result = new ArrayList<>(); // 遍历合同ID集合 ids.forEach(id -> { @@ -983,9 +1061,20 @@ public class ContractServiceImpl implements ContractService { erpContractVO.setUpdaterName(contractMainDO.getUpdaterName()); // 调用ERP模块 - erpContractService.submitErp(erpContractVO); + String erpResult = null; + try { + erpContractService.submitErp(erpContractVO); + } catch (Exception e) { + erpResult = e.getMessage(); + } + log.info("合同提交ERP结果:{}", erpResult); + result.add(id.toString() + ":" + erpResult); + } else { + result.add(id.toString() + ":" + CONTRACT_NOT_EXISTS); } }); + + return result; } /** 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 78cd703..ec54ad4 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 @@ -342,9 +342,7 @@ public class ErpContractServiceImpl implements ErpContractService { HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); - System.out.println(response.get("resStr")); - - return ""; + return response.get("resStr"); } /**