From e9cad259450da40fed8c90f2dd55b080219ca2ad Mon Sep 17 00:00:00 2001 From: zhouhy Date: Sat, 7 Oct 2023 09:07:05 +0800 Subject: [PATCH] =?UTF-8?q?MES-=E8=8E=B7=E5=8F=96=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=8E=A5=E5=8F=A3/=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=8F=B0=E8=B4=A6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/SAPPortController.java | 37 ++++++++ .../aucma/api/service/ISAPPortService.java | 7 ++ .../api/service/ISAPPutStorageService.java | 9 +- .../api/service/impl/SAPPortServiceImpl.java | 88 +++++++++++++++++ .../impl/SAPPutStorageServiceImpl.java | 95 ++++++++++++++++++- .../aucma/base/domain/BaseDeviceLedger.java | 55 +++++++---- 6 files changed, 272 insertions(+), 19 deletions(-) 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 2885678..2e8ee3f 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 @@ -3,7 +3,9 @@ package com.aucma.api.controller; import com.aucma.api.domain.dto.SAPPortDto; import com.aucma.api.domain.dto.WERKSDto; import com.aucma.api.service.ISAPPortService; +import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.domain.BaseMaterialInfo; +import com.aucma.base.domain.BaseOrderInfo; import com.aucma.common.core.controller.BaseController; import com.aucma.common.core.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; @@ -44,6 +46,41 @@ public class SAPPortController extends BaseController { List materialVoList = sapPortService.getSAPMaterialData(sapPortDto); return AjaxResult.success(materialVoList); } + /** + *获取生产工单 + * */ + @PostMapping ("/getProduceWorkTickets") + public AjaxResult getProduceWorkTickets(@RequestBody Map paramMap){ + SAPPortDto sapPortDto = new SAPPortDto(); + sapPortDto.setStartDate(String.valueOf(paramMap.get("NDATE"))); + sapPortDto.setEndDate(String.valueOf(paramMap.get("EDATE"))); + HashMap>> werksMap = (HashMap>>)paramMap.get("WERKS"); + WERKSDto werksDto = new WERKSDto(); + werksDto.setItem(werksMap.get("item")); + sapPortDto.setFactoryCodes(werksDto); + sapPortService.getSapBaseOrderInfo(sapPortDto); + List BaseOrderInfoVoList = sapPortService.getSapBaseOrderInfo(sapPortDto); + + return AjaxResult.success(BaseOrderInfoVoList); + } + /** + * 获取设备台账 + * @param paramMap + * @return + */ + @PostMapping("/getDeviceLedger") + public AjaxResult getdeviceLedger(@RequestBody Map paramMap) { + SAPPortDto sapPortDto = new SAPPortDto(); + sapPortDto.setStartDate(String.valueOf(paramMap.get("NDATE"))); + sapPortDto.setEndDate(String.valueOf(paramMap.get("EDATE"))); + HashMap>> werksMap = (HashMap>>)paramMap.get("WERKS"); + WERKSDto werksDto = new WERKSDto(); + werksDto.setItem(werksMap.get("item")); + sapPortDto.setFactoryCodes(werksDto); + List BaseDeviceLedgerVoList = sapPortService.getSapDeviceLedgers(sapPortDto); + return AjaxResult.success(BaseDeviceLedgerVoList); + } + 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 7796bf9..fc83ffd 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 @@ -1,7 +1,9 @@ package com.aucma.api.service; import com.aucma.api.domain.dto.SAPPortDto; +import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.domain.BaseMaterialInfo; +import com.aucma.base.domain.BaseOrderInfo; import org.springframework.stereotype.Service; import java.util.List; @@ -21,6 +23,11 @@ public interface ISAPPortService { */ List getSAPMaterialData(SAPPortDto sapPortDto); + List getSapBaseOrderInfo(SAPPortDto sapPortDto); + List getSapDeviceLedgers(SAPPortDto sapPortDto); + + + diff --git a/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java b/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java index aeb45d4..3deb66a 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java +++ b/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java @@ -3,7 +3,9 @@ package com.aucma.api.service; import com.aucma.api.domain.vo.SAPResultVo; import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.domain.BaseMaterialInfo; +import com.aucma.base.domain.BaseOrderInfo; +import java.text.ParseException; import java.util.ArrayList; /** @@ -21,12 +23,17 @@ public interface ISAPPutStorageService { public ArrayList insertSAPMaterialInfo(SAPResultVo resultVo); + /** + * 转换生产工单实体类 保存数据 + * + * */ + public ArrayList insertSAPBaseOrderInfo(SAPResultVo resultVo) throws ParseException; /** * 转设备台账实体类 保存数据 * @param resultVo * @return */ - public ArrayList insertSAPDeviceLedger(SAPResultVo resultVo); + public ArrayList insertSAPDeviceLedger(SAPResultVo resultVo) throws ParseException; } 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 5b161ef..abdc9e1 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,7 +7,9 @@ import com.aucma.api.domain.vo.SAPResultVo; import com.aucma.api.service.ISAPPortService; import com.aucma.api.service.ISAPPutStorageService; import com.aucma.api.utils.SAPConstants; +import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.domain.BaseMaterialInfo; +import com.aucma.base.domain.BaseOrderInfo; import com.aucma.common.exception.base.BaseException; import com.aucma.common.utils.StringUtils; import com.aucma.common.utils.http.HttpUtils; @@ -75,8 +77,94 @@ public class SAPPortServiceImpl implements ISAPPortService { return materialVos; } + @Override + public List getSapBaseOrderInfo(SAPPortDto sapPortDto) { + String startDate = sapPortDto.getStartDate(); + String endDate = sapPortDto.getEndDate(); + WERKSDto werks = sapPortDto.getFactoryCodes(); + String intervalDate = "(" + startDate + "——" + endDate + ")"; + if (StringUtils.isEmpty(startDate) || StringUtils.isEmpty(endDate) || StringUtils.isNull(werks)) { + return null; + } + ArrayList baseOrderInfoVos = new ArrayList<>(); + String requestParam = null; + String result = null; + 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 = "{\"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); + //判断返回数据是否正确 + if (StringUtils.isNull(resultVo.getO_RETURN()) || !"0".equals(resultVo.getO_RETURN().getItem().get(0).get("ID"))){ + throw new BaseException("处理接口返回消息错误!(ID不为0或O_RETURN为空)"); + } + //转物料实体类 保存数据 + baseOrderInfoVos = storageService.insertSAPBaseOrderInfo(resultVo); + //保存接口日志 + PortLogUtils.savePortLog(werks.getItem().get(0).get("WERKS"), "获取SAP物料主数据" + intervalDate, "getSAPBaseOrderInfo", requestParam, result, null); + } catch (Exception e){ + //保存接口日志 + System.out.println(e.getMessage()); + PortLogUtils.savePortLog(werks.getItem().get(0).get("WERKS"), "获取SAP物料主数据" + intervalDate, "getSAPBaseOrderInfo", requestParam, result, e.toString()); + + } + + return baseOrderInfoVos ; + + + } + + @Override + public List getSapDeviceLedgers(SAPPortDto sapPortDto) { + String startDate = sapPortDto.getStartDate(); + String endDate = sapPortDto.getEndDate(); + WERKSDto werks = sapPortDto.getFactoryCodes(); + String intervalDate = "(" + startDate + "——" + endDate + ")"; + if (StringUtils.isEmpty(startDate) || StringUtils.isEmpty(endDate) || StringUtils.isNull(werks)) { + return null; + } + ArrayList baseDeviceLedgersVos = new ArrayList<>(); + String requestParam = null; + String result = null; + 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 = "{\"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); + //判断返回数据是否正确 + if (StringUtils.isNull(resultVo.getO_RETURN()) || !"0".equals(resultVo.getO_RETURN().getItem().get(0).get("ID"))){ + throw new BaseException("处理接口返回消息错误!(ID不为0或O_RETURN为空)"); + } + //转物料实体类 保存数据 + baseDeviceLedgersVos = storageService.insertSAPDeviceLedger(resultVo); + //保存接口日志 + PortLogUtils.savePortLog(werks.getItem().get(0).get("IWERK"), "获取SAP物料主数据" + intervalDate, "getSAPBaseDeviceLedger", requestParam, result, null); + } catch (Exception e) { + //保存接口日志 + System.out.println(e.getMessage()); + PortLogUtils.savePortLog(werks.getItem().get(0).get("IWERK"), "获取SAP物料主数据" + intervalDate, "getSAPBaseDeviceLedger", requestParam, result, e.toString()); + } + return baseDeviceLedgersVos; + } + + } 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 fb16811..10a4fae 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 @@ -4,12 +4,17 @@ import com.aucma.api.domain.vo.SAPResultVo; import com.aucma.api.service.ISAPPutStorageService; import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.domain.BaseMaterialInfo; +import com.aucma.base.domain.BaseOrderInfo; import com.aucma.base.service.IBaseDeviceLedgerService; import com.aucma.base.service.IBaseMaterialInfoService; +import com.aucma.base.service.IBaseOrderInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; @@ -27,6 +32,9 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { @Autowired private IBaseDeviceLedgerService baseDeviceLedgerService; + @Autowired + private IBaseOrderInfoService baseOrderInfoService; + /** * 转物料实体类 保存数据 * @param resultVo @@ -48,14 +56,97 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { 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) { + int item = 0; + List baseOrderInfos = baseOrderInfoService.selectBaseOrderInfoList(null); + //查出值进行比对 如果数据库中已有该字段则忽略本次数据 + //缺少工作中心 + for (int i=0;i insertSAPDeviceLedger(SAPResultVo resultVo) { - return null; + public ArrayList insertSAPDeviceLedger(SAPResultVo resultVo) throws ParseException { + ArrayList baseDeviceLedgerArrayList = new ArrayList<>(); + List> itemList = resultVo.getO_TAB().get("item"); + BaseDeviceLedger device = new BaseDeviceLedger(); + for (HashMap map : itemList) { + int item = 0; + List baseDeviceLedgers = baseDeviceLedgerService.selectBaseDeviceLedgerList(device); + //查出值进行比对 如果数据库中已有该字段则忽略本次数据 + for (int i=0;i