From 75f40226cf76491180521523b643660b0282288f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Sat, 24 May 2025 17:26:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E6=88=90=E5=93=81?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=A6=82=E6=9E=9C=E6=98=AF=E9=9D=9E=E8=B4=A8?= =?UTF-8?q?=E6=A3=80=E8=BF=87=E8=B4=A6=20=E4=B8=BA311=E8=B4=A8=E6=A3=80?= =?UTF-8?q?=E4=B8=BA321?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idm/service/impl/ToSAPServiceImpl.java | 160 ++++++++++++++++++ .../cim/idm/controller/InvoiceController.java | 2 +- .../controller/MaterialUndoController.java | 8 +- .../idm/service/Impl/InvoiceServiceImpl.java | 146 ++++++++-------- .../idm/service/Impl/MESToWMSServiceImpl.java | 1 - .../service/Impl/MaterialShipServiceImpl.java | 14 +- .../service/Impl/MaterialUndoServiceImpl.java | 26 +-- .../service/Impl/ProductIntoServiceImpl.java | 2 +- 8 files changed, 260 insertions(+), 99 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 446fa16..d1c9c95 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 @@ -5131,6 +5131,166 @@ public class ToSAPServiceImpl { return undoId; } + + //成品入库-无来源转库过账-已质检323,非质检(311) + public String FGStockNoSourceChangeLocation(List all, + String aimFactory, + String aimERPlocation, + String aimLocationName, + String user, String commitDate) throws Exception { + String rcode; + String undoId = ""; + String rmsg = null; + StringBuffer sql = new StringBuffer(); + sql + .append(" SELECT ").append(SystemPropHelper.CR) + .append(" MP.MATERIALSPECNAME, ").append(SystemPropHelper.CR) + .append(" MP.ERPFACTORY , ").append(SystemPropHelper.CR) + .append(" :AIMFACTORY AS UMWRK_RECIEVEFACTORY, ").append(SystemPropHelper.CR) + .append(" MP.ERPLOCATION, ").append(SystemPropHelper.CR) + .append(" :AIMERPLOCATION AS UMLGO_RECIEVEERPLOCATION, ").append(SystemPropHelper.CR) + .append(" MP.MATERIALQUANTITY , ").append(SystemPropHelper.CR) + .append(" MP.UNIT, ").append(SystemPropHelper.CR) + .append(" MP.PACKINGGRADE, ").append(SystemPropHelper.CR) + .append(" :AIMLOCATIONNAME AS NULL_RECIVELOCAITONNAME ").append(SystemPropHelper.CR) + .append(" FROM ").append(SystemPropHelper.CR) + .append(" MATERIALPACKING MP ").append(SystemPropHelper.CR) + .append(" WHERE ").append(SystemPropHelper.CR) + .append(" MP.MATERIALPACKINGNAME IN ").append(SystemPropHelper.CR); + Map hashMap = new HashMap (); + hashMap.put("AIMFACTORY", aimFactory); + hashMap.put("AIMLOCATIONNAME", aimLocationName); + hashMap.put("AIMERPLOCATION", aimERPlocation); + String str = ""; + str += "("; + for (MaterialPackingKey materialPackingKey : all) { + str += "'" + materialPackingKey.getMaterialPackingName() + "',"; + } + str += "'')"; + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString() + str, hashMap); + if (queryForList == null || queryForList.size() < 1) { + return ""; + } + 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("INTF_ID", "MM067"); + String uniqueID = UUID.randomUUID().toString(); + header.put("REQ_KEYID", uniqueID); + header.put("SRC_MSGID", uniqueID); + header.put("SRC_SYSTEM", "WMS"); + header.put("DEST_SYSTEM", "SAP"); + header.put("REQUSER", user); + + /* + BODY + */ + body.put("ITEM", itemArray); + body.put("ITEMID", uniqueID); + + String outputDate = ""; + if(commitDate.isEmpty()) { + outputDate = TimeStampUtil.getCurrentTime("yyyyMMdd"); + }else { + SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat outputFormat = new SimpleDateFormat("yyyyMMdd"); + Date date = inputFormat.parse(commitDate); + outputDate = outputFormat.format(date); + } + + //过账日期 + body.put("BUDAT", outputDate); + //凭证日期 + body.put("BLDAT", outputDate); + //凭证抬头文本 + body.put("BKTXT", uniqueID); + //用户名 + body.put("USNAM", user); + + for (Map mm : queryForList) { + + JSONObject item = new JSONObject(true); + // MATNR 发货物料号 + item.put("MATNR", mm.get("MATERIALSPECNAME")); + //UMMAT 收货物料 + item.put("UMMAT", mm.get("MATERIALSPECNAME")); + // WERKS 发货工厂 + item.put("WERKS", mm.get("ERPFACTORY")); + // LGORT 发货库存地点 + item.put("LGORT", mm.get("ERPLOCATION")); + //UMWRK 收货工厂 + item.put("UMWRK", mm.get("UMWRK_RECIEVEFACTORY")); + //UMLGO 收货库存地点 + item.put("UMLGO", mm.get("UMLGO_RECIEVEERPLOCATION")); + //MENGE 数量 + item.put("MENGE", mm.get("MATERIALQUANTITY")); + //MENGE 单位 + item.put("MEINS", mm.get("UNIT")); + + + String insmk = ""; + if (StringUtils.isEmpty((String)mm.get("PACKINGGRADE"))) { + insmk = "2"; + //BWART 移动类型 + item.put("BWART", "311"); //非质检 + }else { + item.put("BWART", "323"); // 质检 + } +// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X"; + item.put("INSMK", insmk); + +// item.put("BWART", "311"); +// //ZLLORDER 自定义领料单号 +// item.put("ZLLORDER", mm.get("SHIPREQUESTNAME")); +// //ZLLITEM 自定义领料单行号 +// item.put("ZLLITEM", mm.get("SHIPREQUESTDETAILNAME")); + + itemArray.add(item); + + } + log.info("SendTOSAP >>>>" + sendData); + String sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl, "", sendData.toJSONString()); + 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();//将物料凭证号与凭证年度拼在一起 + } + //将log写到表里 + UUID uuid = UUID.randomUUID(); + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(user); + erplog.setServerName("WmsToErp"); + erplog.setEventName("无来源转库-311"); + 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); + 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; + } + //物料报废/降级品出库 (Z07) public String MaterialScrapStockOut(List all, String siteName, String user,String commitDate, String opCode,String qtc,String costName) throws Exception { diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java index 40497f0..2f89e77 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java @@ -1098,7 +1098,7 @@ public class InvoiceController { " mmm.SJMS,\n" + " mmm.PRODUCTORDERTYPE,\n" + " m2.COMMONMATERIALFLAG)\n" + - " WHERE REQUESTQUANTITY - SALEOUTQUANTITY > 0"; + " WHERE REQUESTQUANTITY - NVL(SALEOUTQUANTITY, 0) > 0"; Map bindMap = new HashMap(); bindMap.put("SHIPREQUESTNAME",shipRequestName); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java index aaf75e2..c405a40 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialUndoController.java @@ -77,12 +77,12 @@ public class MaterialUndoController { // } if ("Z002".equals(inv_TYPE) || "Z003".equals(inv_TYPE) || "Z004".equals(inv_TYPE) || "Z001".equals(inv_TYPE) || "Z005".equals(inv_TYPE) || "Z006".equals(inv_TYPE) || "Z007".equals(inv_TYPE)) { - materialUndoServiceImpl.rkUndo(undoId, userId); // 入库 +// materialUndoServiceImpl.rkUndo(undoId, userId); // 入库 materialUndoServiceImpl.cgrkUndo(undoId, userId); // 采购入库 } -// else if ("Z002".equals(inv_TYPE) || "Z003".equals(inv_TYPE) || "Z004".equals(inv_TYPE)) { -// materialUndoServiceImpl.cprkUndo(undoId, userId);// 成品入库 -// } + else if (lastEventName.contains("FGStockIn")) { + materialUndoServiceImpl.cprkUndo(undoId, userId);// 成品入库 + } else if ("Z008".equals(inv_TYPE)) { // 出库冲销 materialUndoServiceImpl.ckUndo(undoId, userId); } else if (inv_TYPE.contains("ZLR")) { 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 98406c7..acc7478 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 @@ -3078,11 +3078,11 @@ public class InvoiceServiceImpl implements InvoiceService { String qtysql = "WHERE MATERIALPACKINGNAME = ?"; List qtyQueryForList = MaterialPackingServiceProxy.getMaterialPackingService().select(qtysql, bindSet); - String qty = new Double(qtyQueryForList.get(z).getMaterialQuantity()) == null ? "0" : String.valueOf(qtyQueryForList.get(z).getMaterialQuantity()); + String qty = new Double(qtyQueryForList.get(0).getMaterialQuantity()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity()); - String qty2 = new Double(qtyQueryForList.get(z).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(z).getMaterialQuantity2()); - String materialPackingName = qtyQueryForList.get(z).getMaterialPackingName(); - String charge = qtyQueryForList.get(z).getCharge(); + String qty2 = new Double(qtyQueryForList.get(0).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity2()); + String materialPackingName = qtyQueryForList.get(0).getMaterialPackingName(); + String charge = qtyQueryForList.get(0).getCharge(); BigDecimal bigQty = new BigDecimal(qty); // 已拆数量 BigDecimal bigQty2 = new BigDecimal(qty2); @@ -3105,13 +3105,13 @@ public class InvoiceServiceImpl implements InvoiceService { // materialpackingNew.setKey(materialpackingKey); // 复制一个当前的原标签数据 - materialpackingNew.setKey(qtyQueryForList.get(z).getKey()); + materialpackingNew.setKey(qtyQueryForList.get(0).getKey()); // MaterialPacking materialpackingNew = qtyQueryForList.get(z); // 设置新为标签和数量 materialpackingNew.setMaterialPackingName(newPalletNo); // bigQty2 转double类型 materialpackingNew.setMaterialQuantity(bigQty2.doubleValue()); - boxList.add(qtyQueryForList.get(z)); + boxList.add(qtyQueryForList.get(0)); boxList.add(materialpackingNew); boolean moveTransformOut = packingChargeSplit(boxList, eventUser); if (moveTransformOut != true) { @@ -3126,7 +3126,7 @@ public class InvoiceServiceImpl implements InvoiceService { List> ZKqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(subsql, subHashMap); String preReceiverequestdetailname = ZKqueryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString(); - String shipRequestDetailName = qtyQueryForList.get(z).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(z).getShipRequestDetailName().toString(); + String shipRequestDetailName = qtyQueryForList.get(0).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(0).getShipRequestDetailName().toString(); untils.fahuoSplit(newPalletNo, shipRequestName, preReceiverequestdetailname, bigQty2); // 原条码扣减拆出的数量,用剩余数量更新原条码,条码不变,数量更新 @@ -3297,87 +3297,87 @@ public class InvoiceServiceImpl implements InvoiceService { } else { if(!ERPRECEIVELOCATION.isEmpty()) { -// 拆条码,查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改了数量,不相等则修改了数量 -// 如果已修改数量,则进行拆条码 - for (int z = 0; z < packingQueryForList.size(); z++) { - String MATERIALPACKINGNAME = packingQueryForList.get(z).get("MATERIALPACKINGNAME").toString(); - Object[] bindSet = {MATERIALPACKINGNAME}; - String qtysql = "WHERE MATERIALPACKINGNAME = ?"; - List qtyQueryForList = MaterialPackingServiceProxy.getMaterialPackingService().select(qtysql, bindSet); + // 拆条码,查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改了数量,不相等则修改了数量 + // 如果已修改数量,则进行拆条码 + for (int z = 0; z < packingQueryForList.size(); z++) { + String MATERIALPACKINGNAME = packingQueryForList.get(z).get("MATERIALPACKINGNAME").toString(); + Object[] bindSet = {MATERIALPACKINGNAME}; + String qtysql = "WHERE MATERIALPACKINGNAME = ?"; + List qtyQueryForList = MaterialPackingServiceProxy.getMaterialPackingService().select(qtysql, bindSet); - String qty = new Double(qtyQueryForList.get(z).getMaterialQuantity()) == null ? "0" : String.valueOf(qtyQueryForList.get(z).getMaterialQuantity()); + String qty = new Double(qtyQueryForList.get(0).getMaterialQuantity()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity()); - String qty2 = new Double(qtyQueryForList.get(z).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(z).getMaterialQuantity2()); - String materialPackingName = qtyQueryForList.get(z).getMaterialPackingName(); - String charge = qtyQueryForList.get(z).getCharge(); - BigDecimal bigQty = new BigDecimal(qty); - // 已拆数量 - BigDecimal bigQty2 = new BigDecimal(qty2); + String qty2 = new Double(qtyQueryForList.get(0).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity2()); + String materialPackingName = qtyQueryForList.get(0).getMaterialPackingName(); + String charge = qtyQueryForList.get(0).getCharge(); + BigDecimal bigQty = new BigDecimal(qty); + // 已拆数量 + BigDecimal bigQty2 = new BigDecimal(qty2); - // 如果已拆数量不等于原数量,并且已拆数量为0(未拆分数量) - if(bigQty.compareTo(bigQty2) != 0 && !"0".equals(qty2)) { - // 剩余数量 - BigDecimal restQty = bigQty.subtract(bigQty2); + // 如果已拆数量不等于原数量,并且已拆数量为0(未拆分数量) + if(bigQty.compareTo(bigQty2) != 0 && !"0".equals(qty2)) { + // 剩余数量 + BigDecimal restQty = bigQty.subtract(bigQty2); - // 生成新的拆分条码 - String stringBigQty2 = bigQty2.toString(); - String newPalletNo = CodeGenerator.packingGenerateCode(materialPackingName,stringBigQty2,charge); + // 生成新的拆分条码 + String stringBigQty2 = bigQty2.toString(); + String newPalletNo = CodeGenerator.packingGenerateCode(materialPackingName,stringBigQty2,charge); - // 写入拆分的新条码,更新原数据库 - List boxList = new ArrayList(); -// MaterialPackingKey materialpackingKey = new MaterialPackingKey(); - MaterialPacking materialpackingNew = new MaterialPacking(); -// materialpackingKey.setSiteName("SDK"); -// materialpackingKey.setMaterialPackingName(newPalletNo); -// materialpackingNew.setKey(materialpackingKey); + // 写入拆分的新条码,更新原数据库 + List boxList = new ArrayList(); + // MaterialPackingKey materialpackingKey = new MaterialPackingKey(); + MaterialPacking materialpackingNew = new MaterialPacking(); + // materialpackingKey.setSiteName("SDK"); + // materialpackingKey.setMaterialPackingName(newPalletNo); + // materialpackingNew.setKey(materialpackingKey); - // 复制一个当前的原标签数据 - materialpackingNew.setKey(qtyQueryForList.get(z).getKey()); -// MaterialPacking materialpackingNew = qtyQueryForList.get(z); - // 设置新为标签和数量 - materialpackingNew.setMaterialPackingName(newPalletNo); - // bigQty2 转double类型 - materialpackingNew.setMaterialQuantity(bigQty2.doubleValue()); - boxList.add(qtyQueryForList.get(z)); - boxList.add(materialpackingNew); - boolean moveTransformOut = packingChargeSplit(boxList, eventUser); - if (moveTransformOut != true) { - throw new RuntimeException("修改数量拆分失败"); - } + // 复制一个当前的原标签数据 + materialpackingNew.setKey(qtyQueryForList.get(0).getKey()); + // MaterialPacking materialpackingNew = qtyQueryForList.get(z); + // 设置新为标签和数量 + materialpackingNew.setMaterialPackingName(newPalletNo); + // bigQty2 转double类型 + materialpackingNew.setMaterialQuantity(bigQty2.doubleValue()); + boxList.add(qtyQueryForList.get(0)); + boxList.add(materialpackingNew); + boolean moveTransformOut = packingChargeSplit(boxList, eventUser); + if (moveTransformOut != true) { + throw new RuntimeException("修改数量拆分失败"); + } - //记录到拆分表 - String subsql = "SELECT RECEIVEREQUESTDETAILNAME FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME\n"; - Map subHashMap = new HashMap(); - subHashMap.put("RECEIVEREQUESTNAME", shipRequestName); - subHashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME); - List> ZKqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(subsql, subHashMap); - String preReceiverequestdetailname = ZKqueryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString(); + //记录到拆分表 + String subsql = "SELECT RECEIVEREQUESTDETAILNAME FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME\n"; + Map subHashMap = new HashMap(); + subHashMap.put("RECEIVEREQUESTNAME", shipRequestName); + subHashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME); + List> ZKqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(subsql, subHashMap); + String preReceiverequestdetailname = ZKqueryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString(); - String shipRequestDetailName = qtyQueryForList.get(z).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(z).getShipRequestDetailName().toString(); - untils.fahuoSplit(newPalletNo, shipRequestName, preReceiverequestdetailname, bigQty2); + String shipRequestDetailName = qtyQueryForList.get(0).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(0).getShipRequestDetailName().toString(); + untils.fahuoSplit(newPalletNo, shipRequestName, preReceiverequestdetailname, bigQty2); - // 原条码扣减拆出的数量,用剩余数量更新原条码,条码不变,数量更新 - SetEventInfo setEventInfo = new SetEventInfo(); - Map pakHashMap = new HashMap<>(); - pakHashMap.put("materialQuantity", restQty.doubleValue()); - pakHashMap.put("materialQuantity2", 0); - pakHashMap.put("shipRequestName", ""); - pakHashMap.put("shipRequestDetailName", ""); + // 原条码扣减拆出的数量,用剩余数量更新原条码,条码不变,数量更新 + SetEventInfo setEventInfo = new SetEventInfo(); + Map pakHashMap = new HashMap<>(); + pakHashMap.put("materialQuantity", restQty.doubleValue()); + pakHashMap.put("materialQuantity2", 0); + pakHashMap.put("shipRequestName", ""); + pakHashMap.put("shipRequestDetailName", ""); - EventInfo eventInfo = new EventInfoUtil().makeEventInfo("备货出库拆分条码", eventUser, "拆分条码"); - setEventInfo.setUserColumns(pakHashMap); - MaterialPackingServiceProxy.getMaterialPackingService().setEvent(new MaterialPackingKey( "SDK", MATERIALPACKINGNAME), eventInfo, setEventInfo); + EventInfo eventInfo = new EventInfoUtil().makeEventInfo("备货出库拆分条码", eventUser, "拆分条码"); + setEventInfo.setUserColumns(pakHashMap); + MaterialPackingServiceProxy.getMaterialPackingService().setEvent(new MaterialPackingKey( "SDK", MATERIALPACKINGNAME), eventInfo, setEventInfo); + + // 删除被拆分的原条码数据,用拆分出的新条码覆盖,进行后面的过账,现场仓过账只过账已拆分出的数量,剩余数量的原条码不过账 + boolean deletePacking = materialPackingKeyList.remove(MATERIALPACKINGNAME); + if (deletePacking) { + materialPackingKeyList.add(newPalletNo); + } - // 删除被拆分的原条码数据,用拆分出的新条码覆盖,进行后面的过账,现场仓过账只过账已拆分出的数量,剩余数量的原条码不过账 - boolean deletePacking = materialPackingKeyList.remove(MATERIALPACKINGNAME); - if (deletePacking) { - materialPackingKeyList.add(newPalletNo); } } - } - //new MESServiceImpl().NeedReceiveMaterialInfoSend_NEW(shipRequestName, "SDK", materialPackingKeyList); billCode="Y"; diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java index 8625c0a..6b72095 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java @@ -143,7 +143,6 @@ public class MESToWMSServiceImpl implements MESToWMSService { } } - } // 将工单的物料消耗数据传给SAP String undoId = toSAPService.mesMaterialConsume("MES",payMentDate, eventInfo); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java index 95a1f31..a44fffd 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java @@ -786,13 +786,13 @@ public class MaterialShipServiceImpl implements IMaterialShipService { String qtysql = "WHERE MATERIALPACKINGNAME = ?"; List qtyQueryForList = MaterialPackingServiceProxy.getMaterialPackingService().select(qtysql, bindSet); - String qty = String.valueOf(qtyQueryForList.get(z).getMaterialQuantity()); + String qty = String.valueOf(qtyQueryForList.get(0).getMaterialQuantity()); - String qty2 = new Double(qtyQueryForList.get(z).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(z).getMaterialQuantity2()); - String materialPackingName = qtyQueryForList.get(z).getMaterialPackingName(); + String qty2 = new Double(qtyQueryForList.get(0).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity2()); + String materialPackingName = qtyQueryForList.get(0).getMaterialPackingName(); // String charge = qtyQueryForList.get(z).getCharge(); // 辅材出库无批次 List boxId = MaterialPackingServiceImpl.generateBoxID("LabelId", siteName, - "1", qtyQueryForList.get(z).getMakeDate().toString(),packingQueryForList.get(z).get("MATERIALTYPE").toString(),qtyQueryForList.get(z).getErpFactory()); + "1", qtyQueryForList.get(0).getMakeDate().toString(),packingQueryForList.get(z).get("MATERIALTYPE").toString(),qtyQueryForList.get(0).getErpFactory()); BigDecimal bigQty = new BigDecimal(qty); // 已拆数量 BigDecimal bigQty2 = new BigDecimal(qty2); @@ -815,20 +815,20 @@ public class MaterialShipServiceImpl implements IMaterialShipService { // materialpackingNew.setKey(materialpackingKey); // 复制一个当前的原标签数据 - materialpackingNew.setKey(qtyQueryForList.get(z).getKey()); + materialpackingNew.setKey(qtyQueryForList.get(0).getKey()); // MaterialPacking materialpackingNew = qtyQueryForList.get(z); // 设置新为标签和数量 materialpackingNew.setMaterialPackingName(newPalletNo); // bigQty2 转double类型 materialpackingNew.setMaterialQuantity(bigQty2.doubleValue()); - boxList2.add(qtyQueryForList.get(z)); + boxList2.add(qtyQueryForList.get(0)); boxList2.add(materialpackingNew); boolean moveTransformOut = packingChargeSplit(boxList2, user); if (moveTransformOut != true) { throw new RuntimeException("修改数量拆分失败"); } // 记录到拆分表 - String shipRequestDetailName = qtyQueryForList.get(z).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(z).getShipRequestDetailName().toString(); + String shipRequestDetailName = qtyQueryForList.get(0).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(0).getShipRequestDetailName().toString(); untils.fahuoSplit(newPalletNo, shipRequestName, shipRequestDetailName, bigQty2); // 原条码扣减拆出的数量,用剩余数量更新原条码,条码不变,数量更新,并且解绑单据 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java index 329b7d5..3560afe 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialUndoServiceImpl.java @@ -73,7 +73,8 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService { */ @Transactional public void cgrkUndo (String undoId, String user) throws Exception { - String billCode = toSAPService.cancelShipInter(undoId, user); + String billCode = ""; + billCode = toSAPService.cancelShipInter(undoId, user); if (billCode == null) { throw new GlobalException("报送ERP失败,请联系IT处理!"); } @@ -146,11 +147,12 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService { */ @Transactional public void cprkUndo (String undoId, String user) throws Exception { - String billCode = toSAPService.cancelShipInter(undoId, user); - if (billCode == null) { - throw new GlobalException("报送ERP失败,请联系IT处理!"); - } - EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("MakeUndo", user, "MakeUndo"); +// sap过账 +// String billCode = toSAPService.cancelShipInter(undoId, user); +// if (billCode == null) { +// throw new GlobalException("报送ERP失败,请联系IT处理!"); +// } + EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("成品入库冲销", user, "成品入库冲销"); String condition="SELECT MATERIALPACKINGNAME FROM MATERIALPACKING WHERE UNDOID = :UNDOID "; // String[] bindSet={undoId}; Map hashMap = new HashMap (); @@ -393,7 +395,7 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService { List materialPackingKeyList = new ArrayList<>(); - EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("MakeUndo", user, "MakeUndo"); + EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("单号凭证冲销", user, "单号凭证冲销"); String condition="WHERE UNDOID =? "; String[] bindSet={undoId}; //根据物料凭证找到所有的待冲销数据,更新库存状态为创建 @@ -403,10 +405,10 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService { materialPackingKeyList.add(materialPackingName); } -// String billCode = toSAPService.outOrderChancel(undoId, "SKD",user, materialPackingKeyList,commitDate); -// if (billCode == null) { -// throw new GlobalException("报送ERP失败,请联系IT处理!"); -// } + String billCode = toSAPService.outOrderChancel(undoId, "SKD",user, materialPackingKeyList,commitDate); + if (billCode == null) { + throw new GlobalException("报送ERP失败,请联系IT处理!"); + } Map hashMap = new HashMap (); hashMap.put("stockState", "Stocked"); @@ -431,7 +433,7 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService { // 查出非拆分的原批次 String NsplitCondition="WHERE charge =? AND split IS NULL"; String[] NspliBindSet={CHARGE}; - //根据物料凭证找到所有的待冲销数据,更新库存状态为创建 + // List noSplitList = MaterialPackingServiceProxy.getMaterialPackingService().select(NsplitCondition, NspliBindSet); String NoSMaterialPackingName = noSplitList.get(0).getMaterialPackingName(); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java index 5570b60..9543b26 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java @@ -327,7 +327,7 @@ public class ProductIntoServiceImpl implements FGStockInService { String aimErpFactory = boxList.get(0).getErpFactory(); String aimErpLocation = boxList.get(0).getErpLocation(); String aimLOcationName = boxList.get(0).getLocationName(); - undoID = toSAPService.NoSourceChangeLocation(arrayList,aimErpFactory, + undoID = toSAPService.FGStockNoSourceChangeLocation(arrayList,aimErpFactory, aimErpLocation, aimLOcationName, user, commitDate); //更新物料凭证和库存状态 toSapDao.updateLocationStockState(boxList, "Stocked", undoID,aimErpFactory,aimErpLocation,aimLOcationName,user);