From df9a06b174c033782b73ac7d5a9f73fafc849c78 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 17 Nov 2022 11:17:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sap/service/impl/SapToLmsServiceImpl.java | 5 +++ .../service/impl/CheckOutBillServiceImpl.java | 37 +++++++++++----- .../impl/InAndOutRetrunServiceImpl.java | 43 +++++++++++++------ 3 files changed, 63 insertions(+), 22 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java index dc94592b1..cec339e2a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java @@ -76,6 +76,9 @@ public class SapToLmsServiceImpl implements SapToLmsService { jsonMst.put("bill_type", "1001"); jsonMst.put("source_id", json.getLongValue("VBELN")); jsonMst.put("source_name", "交货单"); + jsonMst.put("receiver", json.getString("CONSIGNEE")); // 收货人 + jsonMst.put("receiptphone", json.getString("TEL_NUMBER")); // 联系电话 + jsonMst.put("contractno", json.getString("BSTNK")); // 合同号 // 明细 JSONObject jsonMater = materTab.query("material_code = '" + json.getString("MATNR") + "'").uniqueResult(0); @@ -87,6 +90,8 @@ public class SapToLmsServiceImpl implements SapToLmsService { jsonDtl.put("qty_unit_name",jsonUnit.getString("unit_name")); jsonDtl.put("plan_qty",json.getDoubleValue("LFIMG")); jsonDtl.put("source_bill_code",json.getString("VGBEL-VGPOS")); + jsonDtl.put("vbeln",json.getString("VBELN")); // 来源交货单 + jsonDtl.put("posnr",json.getString("POSNR")); // 来源交货单行 tableData.add(jsonDtl); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 30b690b93..68452b500 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -1537,6 +1537,10 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_IOStorInv"); // 物料表 WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); + // 库区表 + WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr"); + // 子卷包装关系表 + WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); String iostorinv_id = form.getString("iostorinv_id"); Long currentUserId = SecurityUtils.getCurrentUserId(); @@ -1639,9 +1643,10 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // 销售出库 if (StrUtil.equals(bill_type, "1001")) { // 1.回传sap + JSONArray paramSapMstArr = new JSONArray(); + JSONObject paramSapMst = new JSONObject(); paramSapMst.put("ZACTION", "P"); - paramSapMst.put("VBELN", ""); // 交货 paramSapMst.put("BUDAT", jo_mst.getString("biz_date")); paramSapMst.put("ZZYGYF", jo_mst.getString("estimated_freight")); paramSapMst.put("ZZYFGY", jo_mst.getString("trans_code")); @@ -1655,10 +1660,10 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // 明细 JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("VBELN", ""); // 交货 - jsonDtl.put("POSNR", json.getString("seq_no")); + jsonDtl.put("VBELN", json.getString("vbeln")); // 交货 + paramSapMst.put("VBELN", json.getString("vbeln")); // 主表交货 + jsonDtl.put("POSNR", json.getString("posnr")); // 项目 jsonDtl.put("MATNR", jsonMater.getString("material_code")); - jsonDtl.put("LGORT", ""); // 储存地点 // 分配明细 JSONArray disArr = wo_dis.query("iostorinvdtl_id = '" + json.getString("iostorinvdtl_id") + "'").getResultJSONArray(0); @@ -1666,12 +1671,20 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { JSONObject json2 = disArr.getJSONObject(j); JSONObject jsonDis = new JSONObject(); - jsonDis.put("VBELN", ""); // 交货 - jsonDis.put("POSNR", json2.getString("seq_no")); - jsonDis.put("CHARG", json2.getString("pcsn")); - jsonDis.put("LFIMG", json.getString("plan_qty")); + JSONObject jsonSect = sectTab.query("sect_id = '" + json2.getString("sect_id") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonSect)) { + jsonDtl.put("LGORT", jsonSect.getString("ext_id")); // 明細储存地点 + } + + JSONObject jsonSub = subTab.query("container_name = '" + json2.getString("pcsn") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonSect)) { + jsonDis.put("CHARG", jsonSub.getString("sap_pcsn")); // sap批次 + } + jsonDis.put("VBELN", json.getString("vbeln")); // 交货 + jsonDis.put("POSNR", json.getString("posnr")); // 项目 + jsonDis.put("LFIMG", json2.getString("real_qty")); jsonDis.put("VRKME", json.getString("qty_unit_name")); - jsonDis.put("PIKMG", json2.getString("plan_qty")); + jsonDis.put("PIKMG", json2.getString("real_qty")); jsonDis.put("VRKMP", json2.getString("qty_unit_name")); paramDisArr.add(jsonDis); } @@ -1679,9 +1692,13 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { paramDtlArr.add(jsonDtl); } paramSapMst.put("ITEM", paramDtlArr); + paramSapMstArr.add(paramSapMst); + + JSONObject param = new JSONObject(); + param.put("HEAD", paramSapMstArr); // 调用接口回传 - new LmsToSapServiceImpl().returnDelivery(paramSapMst); + new LmsToSapServiceImpl().returnDelivery(param); // 2.回传mes JSONObject paramMesMst = new JSONObject(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java index a446af22b..6100fe3d5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java @@ -75,6 +75,11 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_IOStorInv"); // 物料表 WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); + // 库区表 + WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr"); + // 子卷包装关系表 + WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); + //根据出入单类型判断回传业务 //1、生产入库:回传MES;手工入库:回传SAP //1、销售出库:回传MES、SAP;改切出库:回传SAP @@ -92,26 +97,27 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 销售出库 if (StrUtil.equals(bill_type, "1001")) { // 1.回传sap + JSONArray paramSapMstArr = new JSONArray(); + JSONObject paramSapMst = new JSONObject(); paramSapMst.put("ZACTION", "P"); - paramSapMst.put("VBELN", ""); // 交货 paramSapMst.put("BUDAT", jo_mst.getString("biz_date")); paramSapMst.put("ZZYGYF", jo_mst.getString("estimated_freight")); paramSapMst.put("ZZYFGY", jo_mst.getString("trans_code")); JSONArray paramDtlArr = new JSONArray(); JSONArray dtlArr = wo_dtl.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0); - for (int m = 0; m < dtlArr.size(); m++) { + for (int k = 0; k < dtlArr.size(); k++) { JSONArray paramDisArr = new JSONArray(); - JSONObject json = dtlArr.getJSONObject(m); + JSONObject json = dtlArr.getJSONObject(k); JSONObject jsonMater = materTab.query("material_id = '" + json.getString("material_id") + "'").uniqueResult(0); // 明细 JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("VBELN", ""); // 交货 - jsonDtl.put("POSNR", json.getString("seq_no")); + jsonDtl.put("VBELN", json.getString("vbeln")); // 交货 + paramSapMst.put("VBELN", json.getString("vbeln")); // 主表交货 + jsonDtl.put("POSNR", json.getString("posnr")); // 项目 jsonDtl.put("MATNR", jsonMater.getString("material_code")); - jsonDtl.put("LGORT", ""); // 储存地点 // 分配明细 JSONArray disArr = wo_dis.query("iostorinvdtl_id = '" + json.getString("iostorinvdtl_id") + "'").getResultJSONArray(0); @@ -119,12 +125,20 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { JSONObject json2 = disArr.getJSONObject(j); JSONObject jsonDis = new JSONObject(); - jsonDis.put("VBELN", ""); // 交货 - jsonDis.put("POSNR", json2.getString("seq_no")); - jsonDis.put("CHARG", json2.getString("pcsn")); - jsonDis.put("LFIMG", json.getString("plan_qty")); + JSONObject jsonSect = sectTab.query("sect_id = '" + json2.getString("sect_id") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonSect)) { + jsonDtl.put("LGORT", jsonSect.getString("ext_id")); // 明細储存地点 + } + + JSONObject jsonSub = subTab.query("container_name = '" + json2.getString("pcsn") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonSect)) { + jsonDis.put("CHARG", jsonSub.getString("sap_pcsn")); // sap批次 + } + jsonDis.put("VBELN", json.getString("vbeln")); // 交货 + jsonDis.put("POSNR", json.getString("posnr")); // 项目 + jsonDis.put("LFIMG", json2.getString("real_qty")); jsonDis.put("VRKME", json.getString("qty_unit_name")); - jsonDis.put("PIKMG", json2.getString("plan_qty")); + jsonDis.put("PIKMG", json2.getString("real_qty")); jsonDis.put("VRKMP", json2.getString("qty_unit_name")); paramDisArr.add(jsonDis); } @@ -132,9 +146,14 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { paramDtlArr.add(jsonDtl); } paramSapMst.put("ITEM", paramDtlArr); + paramSapMstArr.add(paramSapMst); + + JSONObject param = new JSONObject(); + param.put("HEAD", paramSapMstArr); +// System.out.println(param.toString()); // 调用接口回传 - new LmsToSapServiceImpl().returnDelivery(paramSapMst); + new LmsToSapServiceImpl().returnDelivery(param); // 2.回传mes JSONObject paramMesMst = new JSONObject();