From b998dade75530d0639df8f29b33b6705a07b58be Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Tue, 23 Sep 2025 16:38:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=81=E8=A3=85erp=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/api/dto/ErpSubmitReqDTO.java | 1 - .../module/erp/common/conf/ErpConfig.java | 64 ++++++++++--------- .../admin/erp/ErpBomController.java | 10 ++- .../admin/erp/ErpCompanyController.java | 2 +- .../admin/erp/ErpContractController.java | 2 +- .../admin/erp/ErpCostcenterController.java | 2 +- .../module/erp/service/erp/ErpBomService.java | 2 + .../erp/service/erp/ErpBomServiceImpl.java | 61 ++++++++++++++++-- 8 files changed, 104 insertions(+), 40 deletions(-) diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java index 6926f5f..ce0cc58 100644 --- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java @@ -23,7 +23,6 @@ public class ErpSubmitReqDTO { * "sign": 签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定 * "req": {具体参数,参见RFC功能列表} */ - private String uuid; private String srcsys; private String funcnr; private String bskey; diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java index 74ce304..69dc671 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java @@ -85,40 +85,42 @@ public class ErpConfig { /** * 调用ERP接口更新erp数据 */ - public ResponseEntity pushDataToErp(ErpSubmitReqDTO reqDTO) { - try { - // 构建完整URL - String url = "http://" + erpAddress + "/api/rfc/post"; - // 构建请求参数 - JSONObject requestBody = new JSONObject(); - requestBody.put("uuid", reqDTO.getUuid()); - requestBody.put("sapsys", sapsys); - requestBody.put("srcsys", reqDTO.getSrcsys()); - requestBody.put("funcnr", reqDTO.getFuncnr()); - requestBody.put("bskey", reqDTO.getBskey()); - requestBody.put("usrid", reqDTO.getUsrid()); - requestBody.put("usrnm", reqDTO.getUsrnm()); +public ResponseEntity pushDataToErp(ErpSubmitReqDTO reqDTO) { + try { + // 构建完整URL + String url = "http://" + erpAddress + "/api/rfc/post"; + // 构建请求参数 + JSONObject requestBody = new JSONObject(); + requestBody.put("uuid", UUID.randomUUID().toString()); + requestBody.put("sapsys", sapsys); + requestBody.put("srcsys", reqDTO.getSrcsys()); + requestBody.put("funcnr", reqDTO.getFuncnr()); + requestBody.put("bskey", reqDTO.getBskey()); + requestBody.put("usrid", reqDTO.getUsrid()); + requestBody.put("usrnm", reqDTO.getUsrnm()); + if (reqDTO.getSign() != null){ requestBody.put("sign", reqDTO.getSign()); - if (reqDTO.getReq() != null) { - requestBody.put("req", reqDTO.getReq()); - } - // 设置请求头 - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - // 创建HTTP请求实体 - HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); - - // 发送POST请求 - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); - - return response; - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - return ResponseEntity.status(500).body("调用ERP接口失败: " + e.getMessage()); } + if (reqDTO.getReq() != null) { + requestBody.put("req", reqDTO.getReq()); + } + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + // 创建HTTP请求实体 + HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + + // 发送POST请求 + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + + return response; + } catch (Exception e) { + log.error("调用ERP RFC接口失败:"+e.getMessage(), e); + return ResponseEntity.status(500).body("调用ERP接口失败: " + e.getMessage()); } +} //list public Map> numbers(JSONArray dataArray, String key, String dataKey) { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java index a03e3d6..bfb21f3 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java @@ -103,9 +103,17 @@ public class ErpBomController { @PostMapping("/getErpBomTask") @Operation(summary = "定时获得erp更新物料清单(BOM)") - @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:create')") public void getErpBomTask() { erpBomService.callErpRfcInterface(); } + @PostMapping("/submitDataToErp") + @Operation(summary = "推送") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:create')") + public void submitDataToErp() { + erpBomService.submitDataToErp(); + } + + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java index 1c2b8e8..a05399a 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java @@ -103,7 +103,7 @@ public class ErpCompanyController { @PostMapping("/getErpCompanyTask") @Operation(summary = "定时获得erp更新公司") - @PreAuthorize("@ss.hasPermission('sply:erp-company:query')") + @PreAuthorize("@ss.hasPermission('sply:erp-company:create')") public void getErpCompanyTask() { erpCompanyService.callErpRfcInterface(); } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpContractController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpContractController.java index 22fb230..c32e793 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpContractController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpContractController.java @@ -103,7 +103,7 @@ public class ErpContractController { @PostMapping("/getErpContractTask") @Operation(summary = "定时获得erp更新合同") - @PreAuthorize("@ss.hasPermission('sply:erp-contract:query')") + @PreAuthorize("@ss.hasPermission('sply:erp-contract:create')") public void getErpContractTask() { erpContractService.callErpRfcInterface(); } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java index ed36591..329a3dd 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java @@ -103,7 +103,7 @@ public class ErpCostcenterController { @PostMapping("/getErpCostcenterTask") @Operation(summary = "定时获得erp更新成本中心") - @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:create')") public void getErpCostcenterTask() { erpCostcenterService.callErpRfcInterface(); } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomService.java index f760e1e..d918774 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomService.java @@ -62,4 +62,6 @@ public interface ErpBomService { PageResult getErpBomPage(ErpBomPageReqVO pageReqVO); void callErpRfcInterface(); + + void submitDataToErp(); } \ 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/ErpBomServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java index f559337..bf9d4bd 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java @@ -3,6 +3,8 @@ package com.zt.plat.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.erp.api.ErpExternalApi; +import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; import com.zt.plat.module.erp.common.conf.ErpConfig; import com.zt.plat.module.erp.common.enums.OftenEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; @@ -16,14 +18,13 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xxl.job.core.handler.annotation.XxlJob; import jakarta.annotation.Resource; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_BOM_NOT_EXISTS; @@ -44,6 +45,9 @@ public class ErpBomServiceImpl implements ErpBomService { @Resource private ErpConfig erpConfig; + @Resource + public ErpExternalApi erpExternalApi; + @Override public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) { // 插入 @@ -226,4 +230,53 @@ public class ErpBomServiceImpl implements ErpBomService { this.allnumbers = allnumbers; } } + + + @Override + public void submitDataToErp() { + ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); + reqDTO.setSrcsys("MOM"); + reqDTO.setFuncnr("061"); + reqDTO.setBskey("POTEST011"); + reqDTO.setUsrid("cuibin"); + reqDTO.setUsrnm("崔斌"); + + Map req = new HashMap<>(); + + Map exte = new HashMap<>(); + exte.put("zzhth", "成品采购合同0406-1-xt"); + req.put("exte", exte); + + Map head = new HashMap<>(); + head.put("pur_group", "120"); + head.put("purch_org", "3017"); + head.put("comp_code", "3017"); + head.put("vendor", "0000003162"); + head.put("doc_date", "20230406"); + head.put("currency", "CNY"); + head.put("exch_rate", 1.00000000); + head.put("doc_type", "PO01"); + head.put("zzhth", "成品采购合同0406-1-xt"); + req.put("head", head); + + List> items = new ArrayList<>(); + Map item = new HashMap<>(); + item.put("material", "000000000000226986"); + item.put("net_price", 40000.00); + item.put("plant", "3026"); + item.put("po_item", 1); + item.put("po_unit", "TON"); + item.put("price_unit", 1); + item.put("quantity", 2000.000); + item.put("stge_loc", "4011"); + item.put("tax_code", "J0"); + item.put("unlimited_dlv", "X"); + items.add(item); + req.put("item", items); + reqDTO.setReq(req); + ResponseEntity response = erpExternalApi.submitDataToErp(reqDTO); + if (response.getStatusCode() == HttpStatus.OK){ + log.info("ERP数据提交成功"); + } + } } \ No newline at end of file