From f786ebaae853e35820c449a4e7b96f61d3c29054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Tue, 15 Apr 2025 10:29:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E9=94=80=E5=94=AE=E9=80=80=E5=92=8C?= =?UTF-8?q?=E8=B0=83=E6=8B=A8=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/MaterialReceiveRequest.java | 103 ++++++- .../data/MaterialReceiveRequestHistory.java | 98 +++++++ .../MaterialReceiveActController.java | 19 +- .../idm/controller/SAPToWMSController.java | 265 +++++++++++++----- .../idm/controller/SaleReturnController.java | 7 +- .../idm/service/Impl/InvoiceServiceImpl.java | 143 +++++++++- .../service/Impl/SaleReturnServiceImpl.java | 13 +- 7 files changed, 566 insertions(+), 82 deletions(-) diff --git a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java index 89b74dd..a70839a 100644 --- a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java +++ b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java @@ -28,7 +28,20 @@ public class MaterialReceiveRequest extends FieldAccessor implements DataInfo> datas = request.getBODY(); - String siteName = System.getProperty("company"); +// String siteName = System.getProperty("company"); + String siteName = "SDK"; // //存放所有单据号,body遍历结束后,更新成Created // List shipRequestList = new ArrayList<>(); @@ -1407,23 +1410,20 @@ public class SAPToWMSController { String carFlag = MapUtils.getString(data, "Z_SSEND");//是否需要专车派送 String factoryName = MapUtils.getString(data, "WERKS"); //工厂 - String sqlCheck =" SELECT * FROM materialshiprequest m WHERE shiprequestname =:SHIPREQUESTNAME "; + List> checkResultList = new ArrayList<>(); Map selectMap= new HashMap(); selectMap.put("SHIPREQUESTNAME", shipRequestName); - List> checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); + // 如果是销售退货 + if("ZLR1".equals(shipRequestType)) { + String sqlCheck =" SELECT * FROM MATERIALRECEIVEREQUEST m WHERE RECEIVEREQUESTNAME =:SHIPREQUESTNAME "; + checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); + }else { + String sqlCheck =" SELECT * FROM materialshiprequest m WHERE shiprequestname =:SHIPREQUESTNAME "; + checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); + } if(checkResultList == null || checkResultList.size() == 0) { - CreateMaterialShipRequestInfo createInfo = new CreateMaterialShipRequestInfo(); - createInfo.setSiteName(siteName); - createInfo.setShipRequestName(shipRequestName); - createInfo.setShipRequestType(shipRequestType); - createInfo.setShipRequestDetailType(shipRequestType); - createInfo.setCustomerNO(receiveUser); - createInfo.setShipRequestState("Created"); -// shipRequestList.add(shipRequestName); - - createInfo.setSystemType("ERP"); Map bindMap = new HashMap(); bindMap.put("shipRequestDec", shiprequestdec); bindMap.put("bezei", provinceAndCity); @@ -1441,26 +1441,55 @@ public class SAPToWMSController { // bindMap.put("erpReceiveFactory", receiveUser); - createInfo.setUserColumns(bindMap); + // 如果是销售退货 + if("ZLR1".equals(shipRequestType)) { + CreateReceiveRequestInfo reCreateInfo = new CreateReceiveRequestInfo(); + reCreateInfo.setSiteName(siteName); + reCreateInfo.setReceiveRequestName(shipRequestName); + reCreateInfo.setReceiveRequestType(shipRequestType); + reCreateInfo.setReceiveRequestState("Created"); + reCreateInfo.setSupplierNO(receiveUser); + reCreateInfo.setSystemType("ERP"); + reCreateInfo.setUserColumns(bindMap); + EventInfo reEventInfo = new EventInfo(); + reEventInfo.setEventName("CreateReceiveRequestForDNSAPToWMS"); + reEventInfo.setEventUser(createUser); - EventInfo eventInfo = new EventInfo(); - eventInfo.setEventName("MaterialShipRequestForDNSAPToWMS"); - eventInfo.setEventUser(createUser); + MaterialReceiveRequestServiceProxy.getMaterialReceiveRequestService().create(reEventInfo, reCreateInfo); + }else { + CreateMaterialShipRequestInfo createInfo = new CreateMaterialShipRequestInfo(); + createInfo.setSiteName(siteName); + createInfo.setShipRequestName(shipRequestName); + createInfo.setShipRequestType(shipRequestType); + createInfo.setShipRequestDetailType(shipRequestType); + createInfo.setCustomerNO(receiveUser); - MaterialShipRequestServiceProxy.getMaterialShipRequestService().create(eventInfo, createInfo); - }else { - MaterialShipRequestSetEventInfo info = new MaterialShipRequestSetEventInfo(); + createInfo.setShipRequestState("Created"); +// shipRequestList.add(shipRequestName); - MaterialShipRequestKey key = new MaterialShipRequestKey(); - key.setSiteName(siteName); - key.setShipRequestName(shipRequestName); + createInfo.setSystemType("ERP"); + createInfo.setUserColumns(bindMap); - MaterialShipRequest shipRequest=MaterialShipRequestServiceProxy.getMaterialShipRequestService().selectByKey(key); - - if (!shipRequest.getShipRequestState().equalsIgnoreCase("Created")) { - throw new CustomException("ERROR","交货单已确认,禁止修改!"); + EventInfo eventInfo = new EventInfo(); + eventInfo.setEventName("MaterialShipRequestForDNSAPToWMS"); + eventInfo.setEventUser(createUser); + MaterialShipRequestServiceProxy.getMaterialShipRequestService().create(eventInfo, createInfo); } + + }else { +// MaterialShipRequestSetEventInfo info = new MaterialShipRequestSetEventInfo(); +// +// MaterialShipRequestKey key = new MaterialShipRequestKey(); +// key.setSiteName(siteName); +// key.setShipRequestName(shipRequestName); +// +// MaterialShipRequest shipRequest=MaterialShipRequestServiceProxy.getMaterialShipRequestService().selectByKey(key); +// +// if (!shipRequest.getShipRequestState().equalsIgnoreCase("Created")) { +// throw new CustomException("ERROR","交货单已确认,禁止修改!"); +// } + Map bindMap = new HashMap(); bindMap.put("createUser", createUser); bindMap.put("shipRequestDec", shiprequestdec); @@ -1476,12 +1505,54 @@ public class SAPToWMSController { bindMap.put("customerArea", customerArea);//客户大区 bindMap.put("carFlag", carFlag);//是否需要专车派送 - info.setUserColumns(bindMap); +// info.setUserColumns(bindMap); +// +// EventInfo eventInfo = new EventInfo(); +// eventInfo.setEventName("ModifyMaterialShipRequest"); +// eventInfo.setEventUser(createUser); +// MaterialShipRequestServiceProxy.getMaterialShipRequestService().setEvent(key, eventInfo, info); - EventInfo eventInfo = new EventInfo(); - eventInfo.setEventName("ModifyMaterialShipRequest"); - eventInfo.setEventUser(createUser); - MaterialShipRequestServiceProxy.getMaterialShipRequestService().setEvent(key, eventInfo, info); + + // 如果是销售退货 + if("ZLR1".equals(shipRequestType)) { + SetEventInfo reInfo = new SetEventInfo(); + MaterialReceiveRequestKey key = new MaterialReceiveRequestKey(); + + key.setSiteName(siteName); + key.setReceiveRequestName(shipRequestName); + + MaterialReceiveRequest shipRequest=MaterialReceiveRequestServiceProxy.getMaterialReceiveRequestService().selectByKey(key); + + if (!shipRequest.getReceiveRequestState().equalsIgnoreCase("Created")) { + throw new CustomException("ERROR","交货单已确认,禁止修改!"); + } + + reInfo.setUserColumns(bindMap); + EventInfo reEventInfo = new EventInfo(); + reEventInfo.setEventName("ModifyMaterialtReceiveRequest"); + reEventInfo.setEventUser(createUser); + + MaterialReceiveRequestServiceProxy.getMaterialReceiveRequestService().setEvent(key, reEventInfo, reInfo); + }else { + MaterialShipRequestSetEventInfo info = new MaterialShipRequestSetEventInfo(); + + MaterialShipRequestKey key = new MaterialShipRequestKey(); + key.setSiteName(siteName); + key.setShipRequestName(shipRequestName); + + MaterialShipRequest shipRequest=MaterialShipRequestServiceProxy.getMaterialShipRequestService().selectByKey(key); + + if (!shipRequest.getShipRequestState().equalsIgnoreCase("Created")) { + throw new CustomException("ERROR","交货单已确认,禁止修改!"); + } + + info.setUserColumns(bindMap); + + EventInfo eventInfo = new EventInfo(); + eventInfo.setEventName("ModifyMaterialShipRequest"); + eventInfo.setEventUser(createUser); + MaterialShipRequestServiceProxy.getMaterialShipRequestService().setEvent(key, eventInfo, info); + } } String shipRequestDetailName = MapUtils.getString(data, "POSNR"); // 交货单行号 @@ -1507,19 +1578,38 @@ public class SAPToWMSController { String sourceNo=MapUtils.getString(data, "Z_LGORT"); //原单号 String xloek= MapUtils.getString(data, ""); // 删除标识 - MaterialShipRequestDetail mrd =new MaterialShipRequestDetail(); - MaterialShipRequestDetailKey mrdk=new MaterialShipRequestDetailKey(); - mrdk.setSiteName(siteName); - mrdk.setShipRequestName(shipRequestName); - mrdk.setShipRequestDetailName(shipRequestDetailName); + MaterialShipRequestDetailKey mrdk = new MaterialShipRequestDetailKey(); - try { - mrd=MaterialShipRequestDetailServiceProxy.getMaterialShipRequestDetailService().selectByKey(mrdk); - if (mrd.getAssignedQuantity()!=0) { - throw new CustomException("ERROR","行项目已在拣配途中!"); + if("ZLR1".equals(shipRequestType)) { + MaterialReceiveRequestDetail mrd =new MaterialReceiveRequestDetail(); + MaterialReceiveRequestDetailKey receiveKey = new MaterialReceiveRequestDetailKey(); + receiveKey.setSiteName(siteName); + receiveKey.setReceiveRequestName(shipRequestName); + receiveKey.setReceiveRequestDetailName(shipRequestDetailName); + try { + mrd = ReceiveRequestDetailServiceProxy.getReceiveRequestDetailService().selectByKey(receiveKey); + if (mrd.getReceivedQuantity() != 0) { + throw new CustomException("ERROR","行项目已在拣配途中!"); + } + } catch (Exception e) { + // TODO: handle exception + } + + }else { + MaterialShipRequestDetail mrd =new MaterialShipRequestDetail(); +// MaterialShipRequestDetailKey mrdk=new MaterialShipRequestDetailKey(); + mrdk.setSiteName(siteName); + mrdk.setShipRequestName(shipRequestName); + mrdk.setShipRequestDetailName(shipRequestDetailName); + + try { + mrd=MaterialShipRequestDetailServiceProxy.getMaterialShipRequestDetailService().selectByKey(mrdk); + if (mrd.getAssignedQuantity()!=0) { + throw new CustomException("ERROR","行项目已在拣配途中!"); + } + } catch (Exception e) { + // TODO: handle exception } - } catch (Exception e) { - // TODO: handle exception } @@ -1529,22 +1619,25 @@ public class SAPToWMSController { IDMFrameServiceProxy.getSqlTemplate().update(sql, obj); }else { - String sqlItemCheck ="SELECT * FROM materialshiprequestdetail " + - "WHERE shiprequestname =:SHIPREQUESTNAME and shiprequestdetailname = :SHIPREQUESTDETAILNAME"; - Map selectItemMap= new HashMap(); - selectItemMap.put("SHIPREQUESTNAME", shipRequestName); - selectItemMap.put("SHIPREQUESTDETAILNAME", shipRequestDetailName); - List> checkItemResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlItemCheck, selectItemMap); + List> checkItemResultList = new ArrayList>(); + if("ZLR1".equals(shipRequestType)) { + String sqlItemCheck ="SELECT * FROM MATERIALRECEIVEREQUESTDETAIL " + + "WHERE RECEIVEREQUESTNAME =:RECEIVEREQUESTNAME and RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME"; + Map selectItemMap= new HashMap(); + selectItemMap.put("RECEIVEREQUESTNAME", shipRequestName); + selectItemMap.put("RECEIVEREQUESTDETAILNAME", shipRequestDetailName); + checkItemResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlItemCheck, selectItemMap); + } else { + String sqlItemCheck ="SELECT * FROM materialshiprequestdetail " + + "WHERE shiprequestname =:SHIPREQUESTNAME and shiprequestdetailname = :SHIPREQUESTDETAILNAME"; + Map selectItemMap= new HashMap(); + selectItemMap.put("SHIPREQUESTNAME", shipRequestName); + selectItemMap.put("SHIPREQUESTDETAILNAME", shipRequestDetailName); + checkItemResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlItemCheck, selectItemMap); + } + if (checkItemResultList == null || checkItemResultList.size() == 0) { - CreateMaterialShipRequestDetailInfo createInfo = new CreateMaterialShipRequestDetailInfo(); - - createInfo.setSiteName(siteName); - createInfo.setShipRequestName(shipRequestName); - createInfo.setShipRequestDetailName(shipRequestDetailName); - createInfo.setMaterialSpecName(materialSpecName); - createInfo.setRequestQuantity(Float.parseFloat(requestQuantity)); - createInfo.setAssignedQuantity(0); Map bindMapItem = new HashMap(); bindMapItem.put("erpFactory", factoryName); // 工厂 @@ -1569,13 +1662,46 @@ public class SAPToWMSController { bindMapItem.put("sendSalesOrderDetailNo", sendSaleOrderDetailNo); // 销售订单行号 bindMapItem.put("sourceNo", sourceNo); // 原单号 - createInfo.setUserColumns(bindMapItem); - EventInfo eventInfo = new EventInfo(); - eventInfo.setEventUser(createUser); - eventInfo.setEventName("Create"); - MaterialShipRequestDetailServiceProxy.getMaterialShipRequestDetailService().create(createInfo); + // 如果是销售退 + if("ZLR1".equals(shipRequestType)) { + bindMapItem.put("receiveRequestDetailType", shipRequestType); // 原单号 + CreateReceiveRequestDetailInfo createReceiveInfo = new CreateReceiveRequestDetailInfo(); + createReceiveInfo.setSiteName(siteName); + createReceiveInfo.setReceiveRequestName(shipRequestName); + createReceiveInfo.setReceiveRequestDetailName(shipRequestDetailName); + createReceiveInfo.setMaterialSpecName(materialSpecName); + createReceiveInfo.setRequestQuantity(Float.parseFloat(requestQuantity)); + createReceiveInfo.setReceivedQuantity(0); + createReceiveInfo.setUserColumns(bindMapItem); + EventInfo eventReciveInfo = new EventInfo(); + eventReciveInfo.setEventUser(createUser); + eventReciveInfo.setEventName("Create"); + + MaterialReceiveRequestDetailKey key = new MaterialReceiveRequestDetailKey(); + + key.setSiteName(siteName); + key.setReceiveRequestName(shipRequestName); + key.setReceiveRequestDetailName(shipRequestDetailName); + ReceiveRequestDetailServiceProxy.getReceiveRequestDetailService().create(key,eventReciveInfo, createReceiveInfo); + }else { + CreateMaterialShipRequestDetailInfo createInfo = new CreateMaterialShipRequestDetailInfo(); + + createInfo.setSiteName(siteName); + createInfo.setShipRequestName(shipRequestName); + createInfo.setShipRequestDetailName(shipRequestDetailName); + createInfo.setMaterialSpecName(materialSpecName); + createInfo.setRequestQuantity(Float.parseFloat(requestQuantity)); + createInfo.setAssignedQuantity(0); + createInfo.setUserColumns(bindMapItem); + EventInfo eventInfo = new EventInfo(); + eventInfo.setEventUser(createUser); + eventInfo.setEventName("Create"); + MaterialShipRequestDetailServiceProxy.getMaterialShipRequestDetailService().create(createInfo); + } + }else { NonPrimaryKeyValueInfo nonPrimaryKeyValueInfo = new NonPrimaryKeyValueInfo(); + com.cim.idm.wmspackage.receiverequestdetail.management.info.SetEventInfo setReciveInfo = new com.cim.idm.wmspackage.receiverequestdetail.management.info.SetEventInfo(); Map bindMapItem = new HashMap(); bindMapItem.put("erpFactory", factoryName); // 工厂 bindMapItem.put("materialSpecName", materialSpecName); @@ -1601,11 +1727,24 @@ public class SAPToWMSController { bindMapItem.put("sourceNo", sourceNo); // 原单号 nonPrimaryKeyValueInfo.setUserColumns(bindMapItem); + setReciveInfo.setUserColumns(bindMapItem); EventInfo eventInfo = new EventInfo(); eventInfo.setEventUser(createUser); eventInfo.setEventName("update"); - MaterialShipRequestDetailServiceProxy.getMaterialShipRequestDetailService().setEvent(mrdk, nonPrimaryKeyValueInfo); + // 如果是销售退 + if("ZLR1".equals(shipRequestType)) { + MaterialReceiveRequestDetailKey receiveRequestDetailKey = new MaterialReceiveRequestDetailKey(); + MaterialReceiveRequestDetail receiveRequestDetail = new MaterialReceiveRequestDetail(); + receiveRequestDetailKey.setReceiveRequestDetailName(shipRequestDetailName); + receiveRequestDetailKey.setReceiveRequestName(shipRequestName); + receiveRequestDetailKey.setSiteName(siteName); + ReceiveRequestDetailServiceProxy.getReceiveRequestDetailService().setEvent(receiveRequestDetailKey, eventInfo, setReciveInfo); + }else { + MaterialShipRequestDetailServiceProxy.getMaterialShipRequestDetailService().setEvent(mrdk, nonPrimaryKeyValueInfo); + } + + } } } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java index fc22d3d..55771c0 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java @@ -167,7 +167,7 @@ public class SaleReturnController { " 1 = 1\r\n" + " AND m.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME\r\n" + " AND m.SITENAME = :SITENAME\r\n" + - " AND m2.RECEIVEREQUESTTYPE IN ('4C')\r\n" + + " AND m2.RECEIVEREQUESTTYPE IN ('ZLR1')\r\n" + " AND (m2.RETURNFLAG IS NULL\r\n" + " OR m2.RETURNFLAG <> 'Y')\r\n" + " AND m3.IS_BATCH = 'Y'\r\n" + @@ -332,7 +332,7 @@ public class SaleReturnController { + "LEFT JOIN MATERIALSHIPREQUEST m2 ON m.SHIPREQUESTNAME = m2.SHIPREQUESTNAME\r\n" + "WHERE m.STOCKSTATE ='StockOut'\r\n" + " AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" - + " AND m2.SHIPREQUESTTYPE = '4C'"; + + " AND m2.SHIPREQUESTTYPE = 'ZLF1'"; Map hashMap = new HashMap(); hashMap.put("MATERIALPACKINGNAME", materialPackingName); @@ -361,8 +361,9 @@ public class SaleReturnController { // } String invoiceSql = "SELECT M.REQUESTQUANTITY - M.RECEIVEDQUANTITY QTY, M.RECEIVEREQUESTNAME,M.RECEIVEREQUESTDETAILNAME,M.SDK_ID \r\n" + "FROM MATERIALRECEIVEREQUESTDETAIL M\r\n" + + "LEFT JOIN MATERIALSPEC B ON M.MATERIALSPECNAME = B.MATERIALSPECNAME\r\n" + "WHERE M.MATERIALSPECNAME = :MATERIALSPECNAME\r\n" - + " AND (:PHASE IS NULL OR PHASE = :PHASE)\r\n" + + " AND (:PHASE IS NULL OR B.PHASE = :PHASE)\r\n" + "-- AND (:SDK_ID IS NULL OR SDK_ID = :SDK_ID)\r\n" + " AND M.REQUESTQUANTITY - M.RECEIVEDQUANTITY > 0\r\n" + " AND RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME"; 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 043ced2..e11a334 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 @@ -284,8 +284,8 @@ public class InvoiceServiceImpl implements InvoiceService { " MATERIALSHIPREQUESTDETAIL m\r\n" + "WHERE\r\n" + " m.MATERIALSPECNAME = :MATERIALSPECNAME\r\n" + - " AND (:SDK_ID IS NULL\r\n" + - " OR SDK_ID = :SDK_ID)\r\n" + +// " AND (:SDK_ID IS NULL\r\n" + +// " OR SDK_ID = :SDK_ID)\r\n" + // " AND (:PHASE IS NULL\r\n" + // " OR PHASE = :PHASE)\r\n" + " AND SHIPREQUESTNAME = :SHIPREQUESTNAME ORDER BY TO_NUMBER(SHIPREQUESTDETAILNAME) ASC "; @@ -341,7 +341,7 @@ public class InvoiceServiceImpl implements InvoiceService { switch (shipRequestType) { case "NLCC" : //STO调拨出库 - billCode=toSAPService.TransferStockOut_NLCC(shipRequestName, "SDK", eventUser,materialPackingKeyList); + billCode=TransferStockOut_NLCC(shipRequestName, "SDK", eventUser,materialPackingKeyList); //makeEventInfo = eventInfoUtil.makeEventInfo("CompleteShipRequest", eventUser, "CompleteShipRequest:"+shipRequestType); untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo); break; @@ -710,6 +710,140 @@ public class InvoiceServiceImpl implements InvoiceService { IDMFrameServiceProxy.getSqlTemplate().update(bfSql, hashMap); IDMFrameServiceProxy.getSqlTemplate().update(scSql, hashMap); } + //重写STO业务销售交货单过账。zd.2024.8.14 + public String TransferStockOut_NLCC(String shipRequestName, String siteName, String user,List boxList) throws Exception { + String rcode; + String undoId = ""; + String rmsg = null; + String sql=" SELECT \r\n" + + " count(*) AS ZROL, \r\n" + + " m1.SHIPREQUESTDETAILNAME , \r\n" + + " t.ERPLOCATION, \r\n" + + " sum(m.QTY)MATERIALQUANTITY \r\n" + + " FROM \r\n" + + " MATERIALPACKINGSUB m \r\n" + + " LEFT JOIN MATERIALPACKING T ON \r\n" + + " m.MATERIALPACKINGNAME = T.MATERIALPACKINGNAME AND m.RECEIVEREQUESTNAME = T.SHIPREQUESTNAME \r\n" + + " LEFT JOIN MATERIALSHIPREQUESTDETAIL M1 \r\n" + + " ON \r\n" + + " m.RECEIVEREQUESTNAME = M1.SHIPREQUESTNAME \r\n" + + " AND m.RECEIVEREQUESTDETAILNAME = M1.SHIPREQUESTDETAILNAME \r\n" + + " LEFT JOIN MATERIALSHIPREQUEST M2 \r\n" + + " ON \r\n" + + " M1.SHIPREQUESTNAME = M2.SHIPREQUESTNAME \r\n" + + " WHERE \r\n" + + " T.SHIPREQUESTNAME = :SHIPREQUESTNAME \r\n" + + " AND T.SITENAME = :SITENAME \r\n" + + " AND T.STOCKSTATE = 'Stocked' AND T.MATERIALPACKINGNAME IN (:BOXLIST)\r\n" + + " GROUP BY m1.SHIPREQUESTDETAILNAME , t.ERPLOCATION"; + + Map hashMap = new HashMap(); + hashMap.put("SHIPREQUESTNAME", shipRequestName); + hashMap.put("SITENAME", siteName); + hashMap.put("BOXLIST", boxList); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); + try { + + JSONObject sendData = new JSONObject(true); + JSONObject header = new JSONObject(true); + sendData.put("HEAD", header); + JSONObject body = new JSONObject(true); + sendData.put("BODY", body); + JSONArray itemArray = new JSONArray(); + + /* + HEAD + */ + header.put("DEST_SYSTEM", "SAP"); + header.put("INTF_ID", "SD023"); + header.put("SRC_SYSTEM", "WMS"); + String uniqueID = UUID.randomUUID().toString(); + header.put("SRC_MSGID", uniqueID); + header.put("BACKUP1", uniqueID); + header.put("BACKUP2", uniqueID); + + + + /* + BODY + */ + //交货单号 + body.put("VBELN", shipRequestName); + //实际过账日期 + body.put("WADAT_IST", TimeStampUtil.getCurrentTime("yyyyMMdd"));//yyyyMMddhhmmss + //发送日期 + body.put("Z_SENDDATE", TimeStampUtil.getCurrentTime("yyyyMMdd")); + //操作类型(过账) + body.put("Z_OPTION", "1"); + + if (queryForList.size() >= 1) { + for (Map mm : queryForList) { + JSONObject item = new JSONObject(true); + + //交货单行号 + item.put("POSNR", mm.get("SHIPREQUESTDETAILNAME")); + //交货数量 + item.put("PIKMG", mm.get("MATERIALQUANTITY")); + //库存地点 + item.put("LGORT", mm.get("ERPLOCATION")); + //实际发货卷数 + item.put("Z_ROL", mm.get("ZROL")); + //实际发货平方米 + item.put("Z_SQUE", mm.get("MATERIALQUANTITY")); + + itemArray.add(item); + } + body.put("ITEMS", itemArray); + }else { + for (Map mm : queryForList) { + + //交货单行号 + body.put("POSNR", mm.get("SHIPREQUESTDETAILNAME")); + //交货数量 + body.put("PIKMG", mm.get("MATERIALQUANTITY")); //SUM + //库存地点 + body.put("LGORT", mm.get("ERPLOCATION")); + //实际发货卷数 + body.put("Z_ROL", mm.get("ZROL")); //COUNT + //实际发货平方米 + body.put("Z_SQUE", mm.get("MATERIALQUANTITY")); + + } + } + +// log.info("SendTOSAP >>>>" + sendData); + String sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.DNUrl, "", sendData.toJSONString()); + org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn); + + //销售交货单过账不返回物料凭证,且RETURN为JsonArray + 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 = "S"; + } + //将log写到表里 + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(""); + erplog.setServerName("WmsToErp"); + erplog.setEventName("调拨出库(NLCC)"); + erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); + erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(sendData.toJSONString()); + erplog.setSendMsg2(sendData.toJSONString()); + erplog.setReturnMsg2(sapreturn); + erplog.setResultCode(rcode); + MessageLogUtil.writeMessageLog(erplog); + } catch (Exception e) { +// log.info(e.getMessage(), e); + throw new RuntimeException("SAP返回" + rmsg); + } + if (!"S".equals(rcode)) { + throw new RuntimeException("SAP返回" + rmsg); + } + return undoId; + } /** * @@ -1984,6 +2118,7 @@ public class InvoiceServiceImpl implements InvoiceService { erplog.setEventName("成本中心/研发领料"); erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(sendData.toJSONString()); erplog.setSendMsg2(sendData.toJSONString()); erplog.setReturnMsg2(sapreturn); erplog.setResultCode(rcode); @@ -2118,6 +2253,7 @@ public class InvoiceServiceImpl implements InvoiceService { erplog.setEventName("调拨出库(NLCC)"); erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(sendData.toJSONString()); erplog.setSendMsg2(sendData.toJSONString()); erplog.setReturnMsg2(sapreturn); erplog.setResultCode(rcode); @@ -2274,6 +2410,7 @@ public class InvoiceServiceImpl implements InvoiceService { erplog.setId(uuid.toString()); erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(sendData.toJSONString()); erplog.setSendMsg2(sendData.toJSONString()); erplog.setReturnMsg2(sapreturn); erplog.setResultCode(rcode); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SaleReturnServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SaleReturnServiceImpl.java index 2607049..5b57cd5 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SaleReturnServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SaleReturnServiceImpl.java @@ -189,6 +189,16 @@ public class SaleReturnServiceImpl implements SaleReturnService { oqa = "NG"; } } + + String sqlDetString = "SELECT RECEIVEREQUESTDETAILNAME FROM MATERIALPACKINGSUB WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" + + " AND RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME"; + Map DeH = new HashMap(); + DeH.put("MATERIALPACKINGNAME", materialPackingName); + DeH.put("RECEIVEREQUESTNAME", receiveRequestName); + List> mapsList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlDetString, DeH); + + String receiveRequestDetailName = mapsList.get(0).get("RECEIVEREQUESTDETAILNAME") == null ? "" : mapsList.get(0).get("RECEIVEREQUESTDETAILNAME").toString(); + EventInfoUtil eventInfoUtil = new EventInfoUtil(); SetEventInfo setEventInfo = new SetEventInfo(); EventInfo eventInfo = EventInfoUtil.makeEventInfo("ProductSaleReturn", user, "ProductSaleReturn"); @@ -198,7 +208,8 @@ public class SaleReturnServiceImpl implements SaleReturnService { hashMap2.put("locationName", locationName); hashMap2.put("receiveRequestName",receiveRequestName); - hashMap2.put("shipRequestName",""); + hashMap2.put("receiveRequestDetailName",receiveRequestDetailName); +// hashMap2.put("shipRequestName",""); hashMap2.put("stockState", "Created"); hashMap2.put("oqaResult", oqa); hashMap2.put("packingGrade", oqa);