From c7b35364d79ccf543c220f930a8b7a499c368fff Mon Sep 17 00:00:00 2001 From: yinq <1345442242@qq.com> Date: Thu, 12 Oct 2023 11:08:28 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20sap=E6=8E=A5=E5=8F=A3=E9=89=B4?= =?UTF-8?q?=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yml | 2 + .../src/main/resources/application-local.yml | 6 +- .../src/main/resources/application-prod.yml | 4 +- .../api/controller/SAPPortController.java | 19 ++-- .../aucma/api/service/ISAPPortService.java | 23 +++-- .../api/service/impl/SAPPortServiceImpl.java | 53 +++++------ .../impl/SAPPutStorageServiceImpl.java | 90 +++++++++---------- .../main/java/com/aucma/api/task/SAPTask.java | 57 ++++-------- .../java/com/aucma/api/utils/ApiUtils.java | 41 +++++++++ .../com/aucma/api/utils/SAPConstants.java | 18 ++++ .../impl/ProductPlanInfoServiceImpl.java | 2 +- 11 files changed, 183 insertions(+), 132 deletions(-) create mode 100644 aucma-api/src/main/java/com/aucma/api/utils/ApiUtils.java diff --git a/aucma-admin/src/main/resources/application-dev.yml b/aucma-admin/src/main/resources/application-dev.yml index d7df4ad..3dd3296 100644 --- a/aucma-admin/src/main/resources/application-dev.yml +++ b/aucma-admin/src/main/resources/application-dev.yml @@ -20,6 +20,8 @@ server: sap: # URL前缀 prefix: http://soaqas.aucma.com:8011 + username: mes05 + password: Abcd1234 # 数据源配置 diff --git a/aucma-admin/src/main/resources/application-local.yml b/aucma-admin/src/main/resources/application-local.yml index 4118679..4a568db 100644 --- a/aucma-admin/src/main/resources/application-local.yml +++ b/aucma-admin/src/main/resources/application-local.yml @@ -19,7 +19,10 @@ server: # SAP接口 sap: # URL前缀 - prefix: http://10.11.43.111:81 + prefix: 10.11.43.111:81 +# prefix: http://soaqas.aucma.com:8011 + username: mes05 + password: Abcd1234 # 数据源配置 spring: @@ -64,6 +67,7 @@ spring: # 主库数据源 master: url: jdbc:oracle:thin:@175.27.215.92:1521/helowin +# url: jdbc:oracle:thin:@192.168.80.10:1521/orcl username: aucma_mes password: aucma # 从库数据源 diff --git a/aucma-admin/src/main/resources/application-prod.yml b/aucma-admin/src/main/resources/application-prod.yml index 4118679..990dfec 100644 --- a/aucma-admin/src/main/resources/application-prod.yml +++ b/aucma-admin/src/main/resources/application-prod.yml @@ -19,7 +19,9 @@ server: # SAP接口 sap: # URL前缀 - prefix: http://10.11.43.111:81 + prefix: http://soa.aucma.com:8011 + username: mes05 + password: HnMes@2o23 # 数据源配置 spring: diff --git a/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java b/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java index d548172..e9506f2 100644 --- a/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java +++ b/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java @@ -9,7 +9,6 @@ import com.aucma.base.domain.BaseOrderInfo; import com.aucma.base.domain.OrderBomInfo; import com.aucma.common.core.controller.BaseController; import com.aucma.common.core.domain.AjaxResult; -import com.aucma.production.domain.BaseBomInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -48,9 +47,12 @@ public class SAPPortController extends BaseController { List materialVoList = sapPortService.getSAPMaterialData(sapPortDto); return AjaxResult.success(materialVoList); } + /** - *获取生产工单 - * */ + * 获取生产工单 + * @param paramMap + * @return + */ @PostMapping ("/getProduceWorkTickets") public AjaxResult getProduceWorkTickets(@RequestBody Map paramMap){ SAPPortDto sapPortDto = new SAPPortDto(); @@ -62,9 +64,9 @@ public class SAPPortController extends BaseController { sapPortDto.setFactoryCodes(werksDto); sapPortService.getSapBaseOrderInfo(sapPortDto); List BaseOrderInfoVoList = sapPortService.getSapBaseOrderInfo(sapPortDto); - return AjaxResult.success(BaseOrderInfoVoList); } + /** * 获取设备台账 * @param paramMap @@ -82,9 +84,12 @@ public class SAPPortController extends BaseController { List BaseDeviceLedgerVoList = sapPortService.getSapDeviceLedgers(sapPortDto); return AjaxResult.success(BaseDeviceLedgerVoList); } + /** * 获取产品bom信息 - * */ + * @param paramMap + * @return + */ @PostMapping("/getBaseBomInfo") public AjaxResult getBaseBomInfo(@RequestBody Map paramMap) { SAPPortDto sapPortDto = new SAPPortDto(); @@ -99,8 +104,4 @@ public class SAPPortController extends BaseController { } - - - - } diff --git a/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java b/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java index 1852972..243ad35 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java +++ b/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java @@ -25,13 +25,26 @@ public interface ISAPPortService { */ List getSAPMaterialData(SAPPortDto sapPortDto); + + /** + * 获取生产工单 + * @param sapPortDto + * @return + */ List getSapBaseOrderInfo(SAPPortDto sapPortDto); + + /** + * 获取设备台账 + * @param sapPortDto + * @return + */ List getSapDeviceLedgers(SAPPortDto sapPortDto); + + /** + * 获取产品bom信息 + * @param sapPortDto + * @return + */ List getSapOrderBomInfo(SAPPortDto sapPortDto); - - - - - } diff --git a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java index ad04495..ac26a17 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java +++ b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java @@ -7,6 +7,7 @@ import com.aucma.api.domain.vo.SAPResultBomVo; import com.aucma.api.domain.vo.SAPResultVo; import com.aucma.api.service.ISAPPortService; import com.aucma.api.service.ISAPPutStorageService; +import com.aucma.api.utils.ApiUtils; import com.aucma.api.utils.SAPConstants; import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.domain.BaseMaterialInfo; @@ -57,7 +58,7 @@ public class SAPPortServiceImpl implements ISAPPortService { // 格式化输出 // objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); requestParam = objectMapper.writeValueAsString(sapPortDto); - result = HttpUtils.sendHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.MATERIAL_URL, requestParam); + result = ApiUtils.sendSAPHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.MATERIAL_URL, requestParam); // 处理接口返回消息 // result = "{\"O_TAB\":{\"item\":[{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"盖后加固体,BC/BD-127FA\",\"WERKS\":\"2004\",\"MTART\":\"HALB\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-06\",\"MATNR\":\"000000008106000102\"},{\"MAKTX\":\"SC-246,YZXGWB乳品\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009002003478\"},{\"MAKTX\":\"SD-460,YZXGW蒙牛冰品\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009000004735\"},{\"MAKTX\":\"BC-100E,特需\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-02\",\"MATNR\":\"000000009001002406\"},{\"MAKTX\":\"BD(C)-310T,特需\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-20\",\"MATNR\":\"000000009000000225\"}]},\"WERKS\":null,\"O_RETURN\":{\"item\":[{\"MESSAGE\":\"查询成功1!\",\"ID\":\" 0\",\"TYPE\":\"S\"}]}}"; ObjectMapper resultMapper = new ObjectMapper(); @@ -79,6 +80,11 @@ public class SAPPortServiceImpl implements ISAPPortService { return materialVos; } + /** + * 获取生产工单 + * @param sapPortDto + * @return + */ @Override public List getSapBaseOrderInfo(SAPPortDto sapPortDto) { String startDate = sapPortDto.getStartDate(); @@ -94,13 +100,10 @@ public class SAPPortServiceImpl implements ISAPPortService { try{ // 创建ObjectMapper实例 对象转JSON字符串 ObjectMapper objectMapper = new ObjectMapper(); - // 格式化输出 -// objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); requestParam = objectMapper.writeValueAsString(sapPortDto); //发送post请求 调用获取工单接口 - result = HttpUtils.sendHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.PRODUCTION_ORDERS_URL, requestParam); + result = ApiUtils.sendSAPHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.PRODUCTION_ORDERS_URL, requestParam); // 处理接口返回消息 - // result = "{\"O_TAB\":{\"item\":[{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"盖后加固体,BC/BD-127FA\",\"WERKS\":\"2004\",\"MTART\":\"HALB\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-06\",\"MATNR\":\"000000008106000102\"},{\"MAKTX\":\"SC-246,YZXGWB乳品\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009002003478\"},{\"MAKTX\":\"SD-460,YZXGW蒙牛冰品\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009000004735\"},{\"MAKTX\":\"BC-100E,特需\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-02\",\"MATNR\":\"000000009001002406\"},{\"MAKTX\":\"BD(C)-310T,特需\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-20\",\"MATNR\":\"000000009000000225\"}]},\"WERKS\":null,\"O_RETURN\":{\"item\":[{\"MESSAGE\":\"查询成功1!\",\"ID\":\" 0\",\"TYPE\":\"S\"}]}}"; ObjectMapper resultMapper = new ObjectMapper(); // 将 JSON 字符串转换为 Java 对象 SAPResultVo resultVo = resultMapper.readValue(result, SAPResultVo.class); @@ -118,16 +121,14 @@ public class SAPPortServiceImpl implements ISAPPortService { PortLogUtils.savePortLog(werks.getItem().get(0).get("WERKS"), "获取生产工单" + intervalDate, "getSAPBaseOrderInfo", requestParam, result, e.toString()); } - - return baseOrderInfoVos ; - - - - - - + return baseOrderInfoVos; } + /** + * 获取设备台账 + * @param sapPortDto + * @return + */ @Override public List getSapDeviceLedgers(SAPPortDto sapPortDto) { String startDate = sapPortDto.getStartDate(); @@ -143,15 +144,9 @@ public class SAPPortServiceImpl implements ISAPPortService { try { // 创建ObjectMapper实例 对象转JSON字符串 ObjectMapper objectMapper = new ObjectMapper(); - // 格式化输出 - // objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); requestParam = objectMapper.writeValueAsString(sapPortDto); - result = HttpUtils.sendHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.EQUIPMENT_URL, requestParam); + result = ApiUtils.sendSAPHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.EQUIPMENT_URL, requestParam); // 处理接口返回消息 - // result = "{\"O_TAB\":{\"item\":[{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"盖后加固体,BC/BD-127FA\",\"WERKS\":\"2004\",\"MTART\":\"HALB\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-06\",\"MATNR\":\"000000008106000102\"},{\"MAKTX\":\"SC-246,YZXGWB乳品\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009002003478\"},{\"MAKTX\":\"SD-460,YZXGW蒙牛冰品\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009000004735\"},{\"MAKTX\":\"BC-100E,特需\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-02\",\"MATNR\":\"000000009001002406\"},{\"MAKTX\":\"BD(C)-310T,特需\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-20\",\"MATNR\":\"000000009000000225\"}]},\"WERKS\":null,\"O_RETURN\":{\"item\":[{\"MESSAGE\":\"查询成功1!\",\"ID\":\" 0\",\"TYPE\":\"S\"}]}}"; -// System.out.println("========================================================"); -// System.out.println(result); -// System.out.println("========================================================"); ObjectMapper resultMapper = new ObjectMapper(); // 将 JSON 字符串转换为 Java 对象 SAPResultVo resultVo = resultMapper.readValue(result, SAPResultVo.class); @@ -171,6 +166,11 @@ public class SAPPortServiceImpl implements ISAPPortService { return baseDeviceLedgersVos; } + /** + * 获取产品bom信息 + * @param sapPortDto + * @return + */ @Override public List getSapOrderBomInfo(SAPPortDto sapPortDto) { String startDate = sapPortDto.getStartDate(); @@ -189,20 +189,15 @@ public class SAPPortServiceImpl implements ISAPPortService { // 格式化输出 // objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); requestParam = objectMapper.writeValueAsString(sapPortDto); - result = HttpUtils.sendHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.PRODUCTS_BOM_URL, requestParam); + result = ApiUtils.sendSAPHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.PRODUCTS_BOM_URL, requestParam); // 处理接口返回消息 -// System.out.println("========================================================"); -// System.out.println(result); -// System.out.println("========================================================"); - - // result = "{\"O_TAB\":{\"item\":[{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"盖后加固体,BC/BD-127FA\",\"WERKS\":\"2004\",\"MTART\":\"HALB\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-06\",\"MATNR\":\"000000008106000102\"},{\"MAKTX\":\"SC-246,YZXGWB乳品\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009002003478\"},{\"MAKTX\":\"SD-460,YZXGW蒙牛冰品\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009000004735\"},{\"MAKTX\":\"BC-100E,特需\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-02\",\"MATNR\":\"000000009001002406\"},{\"MAKTX\":\"BD(C)-310T,特需\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-20\",\"MATNR\":\"000000009000000225\"}]},\"WERKS\":null,\"O_RETURN\":{\"item\":[{\"MESSAGE\":\"查询成功1!\",\"ID\":\" 0\",\"TYPE\":\"S\"}]}}"; ObjectMapper resultMapper = new ObjectMapper(); // 将 JSON 字符串转换为 Java 对象 SAPResultBomVo resultVo = resultMapper.readValue(result, SAPResultBomVo.class); //判断返回数据是否正确 -// if (StringUtils.isNull(resultVo.getO_RETURN()) || !"0".equals(resultVo.getO_RETURN().get(0).get("ID"))){ -// throw new BaseException("处理接口返回消息错误!(ID不为0或O_RETURN为空)"); -// } + if (StringUtils.isNull(resultVo.getO_RETURN()) || !"0".equals(resultVo.getO_RETURN().getItem().get(0).get("ID"))){ + throw new BaseException("处理接口返回消息错误!(ID不为0或O_RETURN为空)"); + } //转物料实体类 保存数据 orderBomInfosVos = storageService.insertSAPOrderBomInfo(resultVo); //保存接口日志 diff --git a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java index be90511..2d7443f 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java +++ b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java @@ -29,6 +29,7 @@ import java.util.List; /** * SAP接口存入数据业务层 + * * @Author YinQ * @create 2023-09-27 15:07 */ @@ -48,63 +49,62 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { /** * 转物料实体类 保存数据 + * * @param resultVo * @return */ - public ArrayList insertSAPMaterialInfo(SAPResultVo resultVo){ + public ArrayList insertSAPMaterialInfo(SAPResultVo resultVo) { ArrayList baseMaterialInfoArrayList = new ArrayList<>(); List> itemList = resultVo.getO_TAB().get("item"); for (HashMap map : itemList) { BaseMaterialInfo baseMaterialInfo = new BaseMaterialInfo(); baseMaterialInfo.setMaterialCode(map.get("MATNR")); List baseMaterialInfoList = baseMaterialInfoService.selectBaseMaterialInfoList(baseMaterialInfo); - if (!baseMaterialInfoList.isEmpty()){ - BaseMaterialInfo materialInfo = new BaseMaterialInfo(); - materialInfo.setMaterialCode(map.get("MATNR")); - materialInfo.setMaterialName(map.get("MAKTX")); - materialInfo.setMaterialType(map.get("MTART")); - materialInfo.setPlantCode(map.get("WERKS")); - materialInfo.setMaterialUnit(map.get("MEINS")); - baseMaterialInfoService.insertBaseMaterialInfo(materialInfo); - baseMaterialInfoArrayList.add(materialInfo); - } + if (!baseMaterialInfoList.isEmpty()) { + BaseMaterialInfo materialInfo = new BaseMaterialInfo(); + materialInfo.setMaterialCode(map.get("MATNR")); + materialInfo.setMaterialName(map.get("MAKTX")); + materialInfo.setMaterialType(map.get("MTART")); + materialInfo.setPlantCode(map.get("WERKS")); + materialInfo.setMaterialUnit(map.get("MEINS")); + baseMaterialInfoService.insertBaseMaterialInfo(materialInfo); + baseMaterialInfoArrayList.add(materialInfo); + } } return baseMaterialInfoArrayList; } /** * 转换生产工单实体类 保存数据 - * - * */ + */ @Override public ArrayList insertSAPBaseOrderInfo(SAPResultVo resultVo) throws ParseException { ArrayList baseOrderInfoList = new ArrayList<>(); List> itemList = resultVo.getO_TAB().get("item"); for (HashMap map : itemList) { - String aufnr = map.get("AUFNR"); BaseOrderInfo boInfo = new BaseOrderInfo(); boInfo.setOrderCode(aufnr); List baseOrderInfos = baseOrderInfoService.selectBaseOrderInfoList(boInfo); - if (baseOrderInfos.isEmpty()){ - BaseOrderInfo baseOrderInfo = new BaseOrderInfo(); - baseOrderInfo.setOrderCode(map.get("AUFNR")); - baseOrderInfo.setOrderStatus(map.get("STTXT")); - baseOrderInfo.setSaleOrderCode(map.get("KDAUF")); - baseOrderInfo.setMaterialCode(map.get("MATNR")); - baseOrderInfo.setMaterialName(map.get("MAKTX")); - if (!map.get("GAMNG").equals(null)){ - baseOrderInfo.setOrderAmount(Long.valueOf(map.get("GAMNG"))); - } - baseOrderInfo.setFactoryCode(map.get("WERKS")); - baseOrderInfo.setOrderType(map.get("AUART")); - baseOrderInfo.setBeginDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("GLTRP"))); - baseOrderInfo.setEndDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("GSTRP"))); - baseOrderInfo.setCreatedTime(DateUtils.getNowDate()); - baseOrderInfoService.insertBaseOrderInfo(baseOrderInfo); + if (baseOrderInfos.isEmpty()) { + BaseOrderInfo baseOrderInfo = new BaseOrderInfo(); + baseOrderInfo.setOrderCode(map.get("AUFNR")); + baseOrderInfo.setOrderStatus(map.get("STTXT")); + baseOrderInfo.setSaleOrderCode(map.get("KDAUF")); + baseOrderInfo.setMaterialCode(map.get("MATNR")); + baseOrderInfo.setMaterialName(map.get("MAKTX")); + if (!map.get("GAMNG").equals(null)) { + baseOrderInfo.setOrderAmount(Long.valueOf(map.get("GAMNG"))); + } + baseOrderInfo.setFactoryCode(map.get("WERKS")); + baseOrderInfo.setOrderType(map.get("AUART")); + baseOrderInfo.setBeginDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("GLTRP"))); + baseOrderInfo.setEndDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("GSTRP"))); + baseOrderInfo.setCreatedTime(DateUtils.getNowDate()); + baseOrderInfoService.insertBaseOrderInfo(baseOrderInfo); - baseOrderInfoList.add(baseOrderInfo); - } + baseOrderInfoList.add(baseOrderInfo); + } } @@ -114,6 +114,7 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { /** * 转设备台账实体类 保存数据 + * * @param resultVo * @return */ @@ -126,18 +127,17 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { device.setDeviceCode(map.get("EQUNR")); List baseDeviceLedgers = baseDeviceLedgerService.selectBaseDeviceLedgerList(device); - if (!baseDeviceLedgers.isEmpty()){ - BaseDeviceLedger deviceLedger = new BaseDeviceLedger(); - deviceLedger.setCostCenter(map.get("KOSTL"));// - deviceLedger.setFactoryCode(map.get("IWERK")); - deviceLedger.setDeviceName(map.get("EQKTX")); - deviceLedger.setEnableDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("INBDT"))); - deviceLedger.setManufacturer(map.get("ELIEF")); - deviceLedger.setDeviceType(map.get("EQTYP")); - deviceLedger.setDeviceCode(map.get("EQUNR"));// - deviceLedger.setUsedDepartment(map.get("NAME1")); - deviceLedger.setCreatedTime(DateUtils.getNowDate()); - + if (!baseDeviceLedgers.isEmpty()) { + BaseDeviceLedger deviceLedger = new BaseDeviceLedger(); + deviceLedger.setCostCenter(map.get("KOSTL"));// + deviceLedger.setFactoryCode(map.get("IWERK")); + deviceLedger.setDeviceName(map.get("EQKTX")); + deviceLedger.setEnableDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("INBDT"))); + deviceLedger.setManufacturer(map.get("ELIEF")); + deviceLedger.setDeviceType(map.get("EQTYP")); + deviceLedger.setDeviceCode(map.get("EQUNR"));// + deviceLedger.setUsedDepartment(map.get("NAME1")); + deviceLedger.setCreatedTime(DateUtils.getNowDate()); baseDeviceLedgerService.insertBaseDeviceLedger(deviceLedger); baseDeviceLedgerArrayList.add(deviceLedger); } @@ -171,7 +171,7 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { } } - return orderBomInfoList; + return orderBomInfoList; } diff --git a/aucma-api/src/main/java/com/aucma/api/task/SAPTask.java b/aucma-api/src/main/java/com/aucma/api/task/SAPTask.java index 475dfca..03ad637 100644 --- a/aucma-api/src/main/java/com/aucma/api/task/SAPTask.java +++ b/aucma-api/src/main/java/com/aucma/api/task/SAPTask.java @@ -27,18 +27,7 @@ public class SAPTask { * @param days 开始时间(天) */ public void SAPMaterialDataTask(String factoryCode, Long days) { - String startDate = DateUtils.convertDaysToDateString(days); - String endDate = DateUtils.getDate(); - SAPPortDto sapPortDto = new SAPPortDto(); - WERKSDto werksDto = new WERKSDto(); - List> factoryList = new ArrayList<>(); - HashMap hashMap = new HashMap<>(); - sapPortDto.setStartDate(startDate); - sapPortDto.setEndDate(endDate); - hashMap.put("WERKS", factoryCode); - factoryList.add(hashMap); - werksDto.setItem(factoryList); - sapPortDto.setFactoryCodes(werksDto); + SAPPortDto sapPortDto = this.SAPRequestDataAssembly(factoryCode, days); portService.getSAPMaterialData(sapPortDto); } @@ -48,19 +37,7 @@ public class SAPTask { * @param days 开始时间(天) */ public void SAPProduceWorkTicketsDataTask(String factoryCode, Long days) { - String startDate = DateUtils.convertDaysToDateString(days); - String endDate = DateUtils.getDate(); - SAPPortDto sapPortDto = new SAPPortDto(); - WERKSDto werksDto = new WERKSDto(); - List> factoryList = new ArrayList<>(); - HashMap hashMap = new HashMap<>(); - sapPortDto.setStartDate(startDate); - sapPortDto.setEndDate(endDate); - hashMap.put("WERKS", factoryCode); - factoryList.add(hashMap); - werksDto.setItem(factoryList); - sapPortDto.setFactoryCodes(werksDto); -// System.out.println("调用2"); + SAPPortDto sapPortDto = this.SAPRequestDataAssembly(factoryCode, days); portService.getSapBaseOrderInfo(sapPortDto); } /** @@ -69,19 +46,7 @@ public class SAPTask { * @param days 开始时间(天) */ public void SAPDeviceLedgerDataTask(String factoryCode, Long days) { - String startDate = DateUtils.convertDaysToDateString(days); - String endDate = DateUtils.getDate(); - SAPPortDto sapPortDto = new SAPPortDto(); - WERKSDto werksDto = new WERKSDto(); - List> factoryList = new ArrayList<>(); - HashMap hashMap = new HashMap<>(); - sapPortDto.setStartDate(startDate); - sapPortDto.setEndDate(endDate); - hashMap.put("WERKS", factoryCode); - factoryList.add(hashMap); - werksDto.setItem(factoryList); - sapPortDto.setFactoryCodes(werksDto); -// System.out.println("调用3"); + SAPPortDto sapPortDto = this.SAPRequestDataAssembly(factoryCode, days); portService.getSapDeviceLedgers(sapPortDto); } @@ -91,6 +56,18 @@ public class SAPTask { * @param days 开始时间(天) */ public void SAPBaseBomInfoDataTask(String factoryCode, Long days) { + SAPPortDto sapPortDto = this.SAPRequestDataAssembly(factoryCode, days); + portService.getSapOrderBomInfo(sapPortDto); + } + + + /** + * 定时任务:SAP请求数据组装 + * @param factoryCode + * @param days + * @return + */ + public SAPPortDto SAPRequestDataAssembly(String factoryCode, Long days) { String startDate = DateUtils.convertDaysToDateString(days); String endDate = DateUtils.getDate(); SAPPortDto sapPortDto = new SAPPortDto(); @@ -103,9 +80,7 @@ public class SAPTask { factoryList.add(hashMap); werksDto.setItem(factoryList); sapPortDto.setFactoryCodes(werksDto); -// System.out.println("调用4"); - portService.getSapOrderBomInfo(sapPortDto); + return sapPortDto; } - } diff --git a/aucma-api/src/main/java/com/aucma/api/utils/ApiUtils.java b/aucma-api/src/main/java/com/aucma/api/utils/ApiUtils.java new file mode 100644 index 0000000..a5ae529 --- /dev/null +++ b/aucma-api/src/main/java/com/aucma/api/utils/ApiUtils.java @@ -0,0 +1,41 @@ +package com.aucma.api.utils; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; + +import java.util.Base64; + +/** + * @Author YinQ + * @create 2023-10-12 10:52 + */ +public class ApiUtils { + + + /** + * POST请求json格式 + * @param apiUrl + * @param jsonData + * @return + */ + public static String sendSAPHttpPost(String apiUrl, String jsonData) { + try { + // 构建POST请求 + HttpRequest request = HttpRequest.post(apiUrl) + .header("Authorization", "Basic " + Base64.getUrlEncoder(). + encodeToString((SAPConstants.USER_NAME + ":" + SAPConstants.PASS_WORD).getBytes())) + .body(jsonData) // 设置JSON格式的请求体 + .contentType("application/json"); // 设置Content-Type为application/json + + // 发送POST请求 + HttpResponse httpResponse = request.execute(); + + // 获取响应内容 + return httpResponse.body(); + } catch (Exception e) { + // 捕获异常并重新抛出自定义异常 + throw new RuntimeException("Failed to send SAP HTTP POST request: " + e.getMessage(), e); + } + + } +} diff --git a/aucma-api/src/main/java/com/aucma/api/utils/SAPConstants.java b/aucma-api/src/main/java/com/aucma/api/utils/SAPConstants.java index 02e3a21..c800597 100644 --- a/aucma-api/src/main/java/com/aucma/api/utils/SAPConstants.java +++ b/aucma-api/src/main/java/com/aucma/api/utils/SAPConstants.java @@ -16,6 +16,16 @@ public class SAPConstants { */ public static String SAP_PREFIX_URL; + /** + * SAP-用户名 + */ + public static String USER_NAME; + + /** + * SAP-密码 + */ + public static String PASS_WORD; + /** * 获取物料主数据(MES2019) */ @@ -42,6 +52,14 @@ public class SAPConstants { SAP_PREFIX_URL = value; } + @Value("${sap.username}") + public void setUserName(String value) { + USER_NAME = value; + } + @Value("${sap.password}") + public void setPassWord(String value) { + PASS_WORD = value; + } } diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java index b9f3fe3..1a5cfd0 100644 --- a/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java @@ -133,7 +133,7 @@ public class ProductPlanInfoServiceImpl implements IProductPlanInfoService BaseBomInfo bomInfo = new BaseBomInfo(); bomInfo.setParentId(baseOrderInfo.getMaterialCode()); List baseBomInfoList = baseBomInfoService.selectBaseBomInfoList(bomInfo); - + //若一个工单可下达多计划:则需要根据工单编号和物料编号去重 //检查生产BOM是否满足下计划条件 baseBomInfoService.checkBomInfo(baseBomInfoList);