From a82a288014f4de0523323bf60d9fed8f65582aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Tue, 1 Apr 2025 19:46:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E9=A2=86=E6=96=99?= =?UTF-8?q?=E7=8E=B0=E5=9C=BA=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idm/service/impl/ToSAPServiceImpl.java | 72 +++++++++++++++++++ .../idm/service/Impl/InvoiceServiceImpl.java | 22 ++++-- 2 files changed, 88 insertions(+), 6 deletions(-) diff --git a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java index 55ec298..aa51674 100644 --- a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java +++ b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java @@ -4740,6 +4740,78 @@ public class ToSAPServiceImpl { } + public String moveLibrary2(List materialPackingNameList, String shipRequestName, String fromErpLocation, String toErpLocation, String eventUser) throws Exception { + StringBuilder materialPackingNames = new StringBuilder(); + materialPackingNameList.forEach(e -> { + materialPackingNames.append("'" + e + "'").append(","); + }); + materialPackingNames.delete(materialPackingNames.length() - 1, materialPackingNames.length()); + + StringBuilder sql = new StringBuilder(); + //编写 需要执行的SQL + sql.append("SELECT mp.MATERIALSPECNAME ,").append(SystemPropHelper.CR) + .append(" mp.ERPFACTORY ,").append(SystemPropHelper.CR) + .append(" mp.ERPLOCATION ,").append(SystemPropHelper.CR) + .append(" mp.SHIPREQUESTNAME ,").append(SystemPropHelper.CR) + .append(" mp.SHIPREQUESTDETAILNAME ,").append(SystemPropHelper.CR) + .append(" m.SHIPREQUESTTYPE, ").append(SystemPropHelper.CR) + .append(" m2.UNIT ,").append(SystemPropHelper.CR) + .append(" sum (mp.MATERIALQUANTITY ) MATERIALQUANTITY ").append(SystemPropHelper.CR) + .append(" FROM materialpacking mp").append(SystemPropHelper.CR) + .append("LEFT JOIN MATERIALSHIPREQUEST m").append(SystemPropHelper.CR) + .append(" ON m.shiprequestname = mp.SHIPREQUESTNAME ").append(SystemPropHelper.CR) + .append("LEFT JOIN MATERIALSHIPREQUESTDETAIL m2 ").append(SystemPropHelper.CR) + .append(" ON m.shiprequestname = m2.shiprequestname").append(SystemPropHelper.CR) + .append(" AND mp.shiprequestdetailname = m2.shiprequestdetailname").append(SystemPropHelper.CR) + .append(" AND m2.materialspecname = mp.MATERIALSPECNAME ").append(SystemPropHelper.CR) + .append(" WHERE mp.MATERIALPACKINGNAME IN (").append(materialPackingNames.toString()).append(") ").append(SystemPropHelper.CR) + .append(" AND m.SHIPREQUESTNAME = :SHIPREQUESTNAME ").append(SystemPropHelper.CR) + .append("GROUP BY mp.MATERIALSPECNAME, mp.ERPFACTORY, mp.ERPLOCATION, mp.SHIPREQUESTNAME ,mp.SHIPREQUESTDETAILNAME ,m.SHIPREQUESTTYPE,m2.UNIT "); + Map hashMap = new HashMap<>(); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); + + String moveLibraryInfo = makeMoveLibrary(queryForList, eventUser); + + String sapreturn = ""; + String rcode = ""; + String rmsg = ""; + String undoId = ""; + try { + sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl, "", + moveLibraryInfo); + org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn); + + org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN"); + rcode = returnJsonObject.get("STATUS").toString(); + rmsg = returnJsonObject.get("MSGTXT").toString(); + if ("S".equals(rcode)) { + undoId = returnJsonObject.get("MBLNR").toString()+"_"+returnJsonObject.get("MJAHR").toString();//将物料凭证号与凭证年度拼在一起 + } + } catch (Exception e) { + log.error("WMS请求SAP:" + e.getMessage(), e); + throw new RuntimeException("WMS请求SAP" + rmsg); + } finally { + // 写入message log + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(eventUser); + erplog.setServerName("WmsToErp"); + erplog.setEventName("PurStockIn"); + erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); + erplog.setMessageId(shipRequestName); + erplog.setSendMsg2(moveLibraryInfo); + erplog.setSendMsg(moveLibraryInfo); + erplog.setReturnMsg2(sapreturn); + erplog.setResultCode(rcode); + MessageLogUtil.writeMessageLog(erplog); + } + + if (!"S".equals(rcode)) { + throw new Exception("SAP返回异常" + rmsg); + } + return null; + + } + public String makeMoveLibrary(List> queryForList, String user) { if (queryForList == null || queryForList.size() < 1) { return ""; diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java index 451f924..ef60d13 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java @@ -343,7 +343,13 @@ public class InvoiceServiceImpl implements InvoiceService { case "01"://生产领料 case "02"://生产补料 - + // 判断是否是现场仓 + String IsSql = "SELECT m.ERPRECEIVELOCATION,m. FROM MATERIALSHIPREQUESTDETAIL m WHERE SHIPREQUESTNAME = :SHIPREQUESTNAME"; + Map bpc=new HashMap<>(); + bpc.put("SHIPREQUESTNAME", shipRequestName); + List> receiveList = IDMFrameServiceProxy.getSqlTemplate().queryForList(IsSql, bpc); + String ERPRECEIVELOCATION = receiveList.get(0).get("ERPRECEIVELOCATION") == null ? "" : receiveList.get(0).get("ERPRECEIVELOCATION").toString(); + String ERPLOCATION = receiveList.get(0).get("ERPLOCATION") == null ? "" : receiveList.get(0).get("ERPLOCATION").toString(); //判断是否为MES需要接收的物料 String sqlc=" SELECT e.ENUMVALUE FROM MES_ENUMDEFVALUE e \r\n" + " WHERE e.ENUMNAME ='ConfirmReceiveArea'\r\n" + @@ -351,14 +357,18 @@ public class InvoiceServiceImpl implements InvoiceService { " SELECT p.AREANAME FROM MES_PRODUCTREQUEST p \r\n" + " WHERE p.PRODUCTREQUESTNAME =(SELECT m.RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m \r\n" + " WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1))"; - Map bpc=new HashMap<>(); - bpc.put("SHIPREQUESTNAME", shipRequestName); + List> src=IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlc, bpc); //MES需要接收,则只抛送数据 - if(src.size()>0) + if(!ERPRECEIVELOCATION.isEmpty()) { - //new MESServiceImpl().NeedReceiveMaterialInfoSend_NEW(shipRequestName, "SDK", materialPackingKeyList); - billCode="Y"; + // 转库到线边仓 +// ToSAPServiceImpl.moveLibrary2(materialPackingKeyList, shipRequestName, ERPLOCATION, ERPRECEIVELOCATION,eventUser); + if(src.size()>0) { + //new MESServiceImpl().NeedReceiveMaterialInfoSend_NEW(shipRequestName, "SDK", materialPackingKeyList); + billCode="Y"; + } + } else {