diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/LmsToSapController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/LmsToSapController.java index d94b1149b..16f1c0050 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/LmsToSapController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/LmsToSapController.java @@ -36,4 +36,11 @@ public class LmsToSapController { return new ResponseEntity<>(LmsToSapService.returnMoveDtl(jo), HttpStatus.OK); } + @PostMapping("/returnOutDtl") + @Log("LMS调拨出库接口回传") + @ApiOperation("LMS调拨出库接口回传") + public ResponseEntity returnOutDtl(@RequestBody JSONObject jo) { + return new ResponseEntity<>(LmsToSapService.returnOutDtl(jo), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/SapToLmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/SapToLmsController.java index 20d1eb5d9..fc936da2e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/SapToLmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/rest/SapToLmsController.java @@ -48,4 +48,12 @@ public class SapToLmsController { return new ResponseEntity<>(sapToLmsService.getReturnDeliveryInfo(jo), HttpStatus.OK); } + @SaIgnore + @PostMapping("/getCannibalize") + @Log("SAP给LMS推送调拨出库单") + @ApiOperation("SAP给LMS推送调拨出库单") + public ResponseEntity getCannibalize(@RequestBody JSONObject jo) { + return new ResponseEntity<>(sapToLmsService.getCannibalize(jo), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/LmsToSapService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/LmsToSapService.java index 6072282d9..f0724e07b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/LmsToSapService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/LmsToSapService.java @@ -40,4 +40,16 @@ public interface LmsToSapService { KDPOS 销售订单行项目 * */ JSONObject returnMoveDtl(JSONObject jo); + + /* + * ZDBSQD 调拨单号 + * VBELN 销售订单及行号 + * MATNR 物料号 + * LGORT1 移出仓库 + * LGORT2 移入仓库 + * ZHL02 幅宽 + * ZZWLHD 厚度 + * KALAB 重量 + */ + JSONObject returnOutDtl(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/SapToLmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/SapToLmsService.java index d0aa76a42..c1ecdb330 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/SapToLmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/SapToLmsService.java @@ -16,4 +16,9 @@ public interface SapToLmsService { * 获取退货交货单信息 * */ JSONObject getReturnDeliveryInfo(JSONObject jo); + + /* + * SAP给LMS推送调拨出库单 + * */ + JSONObject getCannibalize(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/LmsToSapServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/LmsToSapServiceImpl.java index 69700f285..abcc6a3a1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/LmsToSapServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/LmsToSapServiceImpl.java @@ -138,4 +138,46 @@ public class LmsToSapServiceImpl implements LmsToSapService { return result; } } + + @Override + public JSONObject returnOutDtl(JSONObject jo) { + { + log.info("returnOutDtl接口输入参数为:-------------------" + jo.toString()); + + JSONObject result = new JSONObject(); + String isConnect = "1"; + if (StrUtil.equals("0", isConnect)) { + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功,但未连接MES!"); + result.put("data", new JSONObject()); + return result; + } + + JSONArray list = new JSONArray(); + + // String url = acsUrl + api; + String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_URL").getValue(); + String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue(); + String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue(); + String api = "/sap/center/wms/007"; + url = url + api; + try { + String resultMsg = HttpRequest.post(url).header("TOKEN", token) + .header("sap-client", sap_client) + .body(String.valueOf(jo)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + log.info("returnOutDtl接口输出参数为:-------------------" + result.toString()); + + String type = result.getString("TYPE"); + if (StrUtil.equals(type, "E")) { + throw new BadRequestException(result.getString("MESSAGE")); + } + + } catch (Exception e) { + throw new BadRequestException("SAP提示错误:" + e.getMessage()); + } + return result; + } + } } 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 a05abc296..5100080ae 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 @@ -214,7 +214,7 @@ public class SapToLmsServiceImpl implements SapToLmsService { throw new BadRequestException("此物料不存在" + json.getString("MATNR")); } - JSONObject sub_jo = WQLObject.getWQLObject("PDM_BI_SubPackageRelation").query("sap_pcsn = '" + sap_pcsn + "'").uniqueResult(0); + JSONObject sub_jo = WQLObject.getWQLObject("PDM_BI_SubPackageRelation").query("container_name = '" + sap_pcsn + "'").uniqueResult(0); if (ObjectUtil.isEmpty(sub_jo)) { //为空新增一条 sub_jo = new JSONObject(); @@ -247,6 +247,7 @@ public class SapToLmsServiceImpl implements SapToLmsService { sub_jo.put("width", width); sub_jo.put("length", length); sub_jo.put("status", "0"); + sub_jo.put("net_weight", json.getString("LFIMG")); // 变更为真实退货数量 WQLObject.getWQLObject("PDM_BI_SubPackageRelation").update(sub_jo); } @@ -348,4 +349,82 @@ public class SapToLmsServiceImpl implements SapToLmsService { return result; } + @Override + public JSONObject getCannibalize(JSONObject jo) { + log.info("getCannibalize的输入参数为:------------------------" + jo.toString()); + JSONObject result = new JSONObject(); + + WQLObject storTab = WQLObject.getWQLObject("st_ivt_bsrealstorattr"); // 仓库表 + WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 + WQLObject unitTab = WQLObject.getWQLObject("md_pb_measureunit"); // 基础单位表 + + // 校验调入仓库和调出仓库是否存在 + String lgort_out = jo.getString("LGORT1"); // 调出仓库 + String lgort_in = jo.getString("LGORT2"); // 调入仓库 + + JSONObject jsonStorOut = storTab.query("stor_code = '" + lgort_out + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); + JSONObject jsonStorIn = storTab.query("stor_code = '" + lgort_in + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonStorOut) || ObjectUtil.isEmpty(jsonStorIn)) { + result.put("RTYPE", "E"); + result.put("RTMSG", "操作失败!,调入仓库或调出仓库有误,请检查!"); + result.put("RTOAL", 1); + result.put("RTDAT", null); + return result; + } + + try { + // 创建调拨出库单 + // 主表 + JSONObject jsonMst = new JSONObject(); + jsonMst.put("io_type", "1"); + jsonMst.put("buss_type", "1004"); + jsonMst.put("bill_type", "1004"); + jsonMst.put("source_id", jo.getLongValue("ZDBSQD")); + jsonMst.put("source_name", "调拨单"); + jsonMst.put("stor_id", jsonStorOut.getString("stor_id")); + jsonMst.put("stor_code", jsonStorOut.getString("stor_code")); + jsonMst.put("stor_name", jsonStorOut.getString("stor_name")); + jsonMst.put("out_stor_id", jsonStorIn.getString("stor_id")); + jsonMst.put("detail_count", 1); + jsonMst.put("bill_status", "10"); + jsonMst.put("create_mode", "03"); + jsonMst.put("biz_date", DateUtil.now()); + jsonMst.put("user", "sap"); + + // 明细 + JSONArray tableData = new JSONArray(); + JSONObject jsonDtl = new JSONObject(); + JSONObject jsonMater = materTab.query("material_code = '" + jo.getString("MATNR") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonMater)) throw new BadRequestException("此物料不存在" + jo.getString("MATNR")); + JSONObject jsonUnit = unitTab.query("measure_unit_id = '" + jsonMater.getString("base_unit_id") + "'").uniqueResult(0); + + jsonDtl.put("material_id", jsonMater.getString("material_id")); + jsonDtl.put("qty_unit_id", jsonMater.getLongValue("base_unit_id")); + jsonDtl.put("qty_unit_name", jsonUnit.getString("unit_name")); + jsonDtl.put("plan_qty", jo.getDoubleValue("KALAB")); + jsonDtl.put("source_bill_code", jo.getString("VBELN")); + jsonDtl.put("vbeln", jo.getString("ZDBSQD")); // 来源交货单 +// jsonDtl.put("posnr", json.getString("POSNR")); // 来源交货单行 + jsonDtl.put("width", jo.getString("ZHL02")); // 幅宽 + tableData.add(jsonDtl); + jsonMst.put("tableData", tableData); + + // 调用出库新增 + checkOutBillService.insertDtl2(jsonMst); + } catch (Exception e) { + result.put("RTYPE", "E"); + result.put("RTMSG", "操作失败!" + e.getMessage()); + result.put("RTOAL", 1); + result.put("RTDAT", null); + log.info("getDeliveryInfo的输出参数为:------------------------" + result.toString()); + return result; + } + result.put("RTYPE", "S"); + result.put("RTMSG", "操作成功!"); + result.put("RTOAL", 1); + result.put("RTDAT", null); + log.info("getCannibalize的输出参数为:------------------------" + result.toString()); + return result; + } + } 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 0a34023a1..cde122cf2 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 @@ -251,7 +251,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { paramMesMst.put("item", paramArr); // 调用接口回传 - new LmsToMesServiceImpl().childRollFGOutboundComplete(paramMesMst); +// new LmsToMesServiceImpl().childRollFGOutboundComplete(paramMesMst); jo_mst.put("upload_mes", "1"); jo_mst.put("is_upload", "1"); @@ -523,6 +523,49 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } + // 调拨出库 + if (StrUtil.equals(bill_type, "1004")) { + // 回传sap + JSONArray paramSapMstArr = new JSONArray(); + JSONArray disArr = wo_dis.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0); + JSONObject jsonDtl = wo_dtl.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").uniqueResult(0); + + for (int j = 0; j < disArr.size(); j++) { + JSONObject jsonDis = disArr.getJSONObject(j); + JSONObject paramDis = new JSONObject(); + paramDis.put("ZDBSQD", jsonDtl.getString("vbeln")); + paramDis.put("VBELN", jsonDtl.getString("source_bill_code")); + + JSONObject jsonMater = materTab.query("material_id = '" + jsonDis.getString("material_id") + "'").uniqueResult(0); + paramDis.put("MATNR", jsonMater.getString("material_code")); + paramDis.put("LGORT1", jo_mst.getString("stor_code")); + + JSONObject jsonStorOut = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id = '" + jo_mst.getString("out_stor_id") + "'").uniqueResult(0); + paramDis.put("LGORT2", jsonStorOut.getString("stor_code")); + + JSONObject jsonSub = subTab.query("container_name = '" + jsonDis.getString("pcsn") + "'").uniqueResult(0); + paramDis.put("ZHL02", jsonSub.getString("width")); + paramDis.put("ZZWLHD", jsonSub.getString("thickness")); + paramDis.put("CHARG", jsonDis.getString("pcsn")); + paramDis.put("KALAB", jsonDis.getString("plan_qty")); + paramDis.put("WERKS", "2460"); + paramSapMstArr.add(paramDis); + } + JSONObject param = new JSONObject(); + param.put("HEAD", paramSapMstArr); + System.out.println(param.toString()); + + // 调用接口回传 + new LmsToSapServiceImpl().returnOutDtl(param); + + jo_mst.put("upload_sap", "1"); + jo_mst.put("is_upload", "1"); + jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId()); + jo_mst.put("upload_time", DateUtil.now()); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); + + } + // 改切出库 if (StrUtil.equals(bill_type, "1003")) { JSONObject paramMst = new JSONObject(); @@ -1175,7 +1218,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { System.out.println(param.toString()); // 调用接口回传 - new LmsToSapServiceImpl().returnDelivery(param); + new LmsToSapServiceImpl().returnOutDtl(param); jo_mst.put("upload_sap", "1"); jo_mst.put("is_upload", "1");