fix:修改出库退料
This commit is contained in:
parent
7a381c4d68
commit
f6821719de
@ -156,9 +156,11 @@ public class MESServiceImpl implements MESService{
|
|||||||
// if (!"00000".equals(code)) {
|
// if (!"00000".equals(code)) {
|
||||||
// throw new CustomException("ACTSTATEERROR","","");
|
// throw new CustomException("ACTSTATEERROR","","");
|
||||||
// }
|
// }
|
||||||
String msg = jsonObject.getString("msg");
|
// String msg = jsonObject.getString("msg");
|
||||||
//JSONObject object = (JSONObject) jsonObject.get("data");
|
//JSONObject object = (JSONObject) jsonObject.get("data");
|
||||||
|
|
||||||
|
boolean success = jsonObject.getBoolean("success");
|
||||||
|
|
||||||
// 写log
|
// 写log
|
||||||
ErpMessageLog erplog = new ErpMessageLog();
|
ErpMessageLog erplog = new ErpMessageLog();
|
||||||
erplog.setEventUser("");
|
erplog.setEventUser("");
|
||||||
@ -171,6 +173,11 @@ public class MESServiceImpl implements MESService{
|
|||||||
erplog.setResultCode(code);
|
erplog.setResultCode(code);
|
||||||
MessageLogUtil.writeMessageLog(erplog);
|
MessageLogUtil.writeMessageLog(erplog);
|
||||||
|
|
||||||
|
if (!success) {
|
||||||
|
String msg = jsonObject.getString("msg");
|
||||||
|
throw new CustomException("发送MES失败!");
|
||||||
|
}
|
||||||
|
|
||||||
//插入MATERIALPCKINGMDC表
|
//插入MATERIALPCKINGMDC表
|
||||||
for(int i=0;i<boxList.size();i++)
|
for(int i=0;i<boxList.size();i++)
|
||||||
{
|
{
|
||||||
|
1112
zi-wms-pda/src/main/java/com/cim/idm/controller/QMSController.java
Normal file
1112
zi-wms-pda/src/main/java/com/cim/idm/controller/QMSController.java
Normal file
File diff suppressed because it is too large
Load Diff
@ -373,7 +373,8 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
|
|
||||||
case "06"://成本中心领料
|
case "06"://成本中心领料
|
||||||
case "09"://研发领料
|
case "09"://研发领料
|
||||||
billCode=toSAPService.orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
// billCode=toSAPService.orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
billCode=orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
//更新MES管芯数据
|
//更新MES管芯数据
|
||||||
new MESServiceImpl().updateDurable_ByCostcenter(shipRequestName, "SDK", eventUser, materialPackingKeyList);
|
new MESServiceImpl().updateDurable_ByCostcenter(shipRequestName, "SDK", eventUser, materialPackingKeyList);
|
||||||
//billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,"");
|
//billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,"");
|
||||||
@ -388,12 +389,14 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
case "ZLF6":
|
case "ZLF6":
|
||||||
case "ZLF7":
|
case "ZLF7":
|
||||||
case "ZLF8":
|
case "ZLF8":
|
||||||
billCode=toSAPService.saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
// billCode=toSAPService.saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
billCode=saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "OEM":
|
case "OEM":
|
||||||
billCode=toSAPService.oemStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
// billCode=toSAPService.oemStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
billCode=oemStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
@ -1573,4 +1576,474 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
return undoId;
|
return undoId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String orderStockOut(String shipRequestName, String siteName, String user,List<String> boxList) throws Exception {
|
||||||
|
|
||||||
|
String rcode;
|
||||||
|
String undoId = "";
|
||||||
|
String rmsg = null;
|
||||||
|
String sql=" SELECT MP.MATERIALSPECNAME, \r\n" +
|
||||||
|
" MP.ERPFACTORY, \r\n" +
|
||||||
|
" MP.ERPLOCATION, \r\n" +
|
||||||
|
" MS.SHIPREQUESTDETAILTYPE, \r\n" +
|
||||||
|
" MP.UNIT, \r\n" +
|
||||||
|
" MD.COSTCENTER, \r\n" +
|
||||||
|
" MD.RECEIVEPRODUCTIONORDERNUMBER, \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME, \r\n" +
|
||||||
|
" MD.SHIPREQUESTDETAILNAME, \r\n" +
|
||||||
|
" MD.ERPRECEIVELOCATION, \r\n" +
|
||||||
|
" MD.ERPRECEIVEFACTORY, \r\n" +
|
||||||
|
" MD.CAUSEOFMOVEMENT, \r\n" +
|
||||||
|
" SUM(t.QTY) AS MATERIALQUANTITY \r\n" +
|
||||||
|
" FROM \r\n" +
|
||||||
|
" MATERIALPACKING MP \r\n" +
|
||||||
|
" LEFT JOIN MATERIALPACKINGSUB T\r\n" +
|
||||||
|
" ON mp.MATERIALPACKINGNAME =t.MATERIALPACKINGNAME \r\n" +
|
||||||
|
" AND mp.SHIPREQUESTNAME =t.RECEIVEREQUESTNAME \r\n" +
|
||||||
|
" LEFT JOIN MATERIALSHIPREQUESTDETAIL MD \r\n" +
|
||||||
|
" ON \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME = MD.SHIPREQUESTNAME \r\n" +
|
||||||
|
" AND MP.SITENAME = MD.SITENAME \r\n" +
|
||||||
|
" AND t.RECEIVEREQUESTDETAILNAME = MD.SHIPREQUESTDETAILNAME \r\n" +
|
||||||
|
" LEFT JOIN MATERIALSHIPREQUEST MS \r\n" +
|
||||||
|
" ON \r\n" +
|
||||||
|
" MD.SHIPREQUESTNAME = MS.SHIPREQUESTNAME \r\n" +
|
||||||
|
" WHERE \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME = :SHIPREQUESTNAME \r\n" +
|
||||||
|
" AND MP.SITENAME = :SITENAME \r\n" +
|
||||||
|
" AND MP.STOCKSTATE = 'Stocked'\r\n" +
|
||||||
|
" AND MP.MATERIALPACKINGNAME IN (:BOXLIST)\r\n" +
|
||||||
|
" GROUP BY \r\n" +
|
||||||
|
" MP.MATERIALSPECNAME, \r\n" +
|
||||||
|
" MP.ERPFACTORY, \r\n" +
|
||||||
|
" MP.ERPLOCATION, \r\n" +
|
||||||
|
" MS.SHIPREQUESTDETAILTYPE, \r\n" +
|
||||||
|
" MP.UNIT, \r\n" +
|
||||||
|
" MD.COSTCENTER, \r\n" +
|
||||||
|
" MD.RECEIVEPRODUCTIONORDERNUMBER, \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME, \r\n" +
|
||||||
|
" MD.SHIPREQUESTDETAILNAME,\r\n" +
|
||||||
|
" MD.ERPRECEIVELOCATION, \r\n" +
|
||||||
|
" MD.ERPRECEIVEFACTORY, \r\n" +
|
||||||
|
" MD.CAUSEOFMOVEMENT ";
|
||||||
|
Map<String, Object> hashMap = new HashMap<String, Object>();
|
||||||
|
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
hashMap.put("SITENAME", siteName);
|
||||||
|
hashMap.put("BOXLIST", boxList);
|
||||||
|
List<Map<String, Object>> 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("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);
|
||||||
|
//过账日期
|
||||||
|
body.put("BUDAT", TimeStampUtil.getCurrentTime("yyyyMMdd"));
|
||||||
|
//凭证日期
|
||||||
|
body.put("BLDAT", TimeStampUtil.getCurrentTime("yyyyMMdd"));
|
||||||
|
//凭证抬头文本
|
||||||
|
body.put("BKTXT", uniqueID);
|
||||||
|
//用户名
|
||||||
|
body.put("USNAM", user);
|
||||||
|
|
||||||
|
for (Map<String, Object> mm : queryForList) {
|
||||||
|
|
||||||
|
JSONObject item = new JSONObject(true);
|
||||||
|
//BWART 移动类型
|
||||||
|
item.put("BWART", mm.get("SHIPREQUESTDETAILTYPE"));
|
||||||
|
// MATNR 发货物料号
|
||||||
|
item.put("MATNR", mm.get("MATERIALSPECNAME"));
|
||||||
|
// WERKS 收货工厂
|
||||||
|
item.put("WERKS", mm.get("ERPFACTORY"));
|
||||||
|
// LGORT 发货库存地点
|
||||||
|
item.put("LGORT", mm.get("ERPLOCATION"));
|
||||||
|
//MENGE 数量
|
||||||
|
item.put("MENGE", mm.get("MATERIALQUANTITY"));
|
||||||
|
//MENGE 单位
|
||||||
|
item.put("MEINS", mm.get("UNIT"));
|
||||||
|
//KOSTL 成本中心
|
||||||
|
item.put("KOSTL", mm.get("COSTCENTER"));
|
||||||
|
//AUFNR 订单号
|
||||||
|
item.put("AUFNR", mm.get("RECEIVEPRODUCTIONORDERNUMBER"));
|
||||||
|
//GRUND 移动原因 (201,202回传)
|
||||||
|
item.put("GRUND", mm.get("CAUSEOFMOVEMENT"));
|
||||||
|
//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写到表里
|
||||||
|
ErpMessageLog erplog = new ErpMessageLog();
|
||||||
|
erplog.setEventUser("");
|
||||||
|
erplog.setServerName("WmsToErp");
|
||||||
|
erplog.setEventName("成本中心/研发领料");
|
||||||
|
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||||
|
erplog.setMessageId(UUID.randomUUID().toString());
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
//重写销售交货单过账。zd.2024.8.14
|
||||||
|
public String saleStockOut_NEW(String shipRequestName, String siteName, String user,List<String> 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<String, Object> hashMap = new HashMap<String, Object>();
|
||||||
|
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
hashMap.put("SITENAME", siteName);
|
||||||
|
hashMap.put("BOXLIST", boxList);
|
||||||
|
List<Map<String, Object>> 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<String, Object> 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);//销售过账需放ITEMS
|
||||||
|
}else {
|
||||||
|
for (Map<String, Object> 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.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;
|
||||||
|
}
|
||||||
|
|
||||||
|
//重写委外发料。zd.2024.8.17
|
||||||
|
public String oemStockOut_NEW(String shipRequestName, String siteName, String user,List<String> boxList) throws Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
String rcode;
|
||||||
|
String undoId = "";
|
||||||
|
String rmsg = null;
|
||||||
|
String sql="SELECT \r\n" +
|
||||||
|
" MS.DELIVERYADDRESS, \r\n" +
|
||||||
|
" MP.MATERIALSPECNAME, \r\n" +
|
||||||
|
" MP.ERPFACTORY, \r\n" +
|
||||||
|
" MP.ERPLOCATION, \r\n" +
|
||||||
|
" MS.SHIPREQUESTDETAILTYPE, \r\n" +
|
||||||
|
" MP.UNIT, \r\n" +
|
||||||
|
" MD.COSTCENTER, \r\n" +
|
||||||
|
" MD.RECEIVEPRODUCTIONORDERNUMBER, \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME, \r\n" +
|
||||||
|
" MP.SHIPREQUESTDETAILNAME, \r\n" +
|
||||||
|
" MD.ERPRECEIVELOCATION, \r\n" +
|
||||||
|
" MD.ERPRECEIVEFACTORY, \r\n" +
|
||||||
|
" SUM(M.QTY) AS MATERIALQUANTITY \r\n" +
|
||||||
|
" FROM \r\n" +
|
||||||
|
" MATERIALPACKING MP \r\n" +
|
||||||
|
" LEFT JOIN MATERIALPACKINGSUB m \r\n" +
|
||||||
|
" ON mp.MATERIALPACKINGNAME =m.MATERIALPACKINGNAME \r\n" +
|
||||||
|
" AND mp.SHIPREQUESTNAME =m.RECEIVEREQUESTNAME \r\n" +
|
||||||
|
" LEFT JOIN MATERIALSHIPREQUESTDETAIL MD \r\n" +
|
||||||
|
" ON \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME = MD.SHIPREQUESTNAME \r\n" +
|
||||||
|
" AND MP.SITENAME = MD.SITENAME \r\n" +
|
||||||
|
" AND m.RECEIVEREQUESTDETAILNAME =md.SHIPREQUESTDETAILNAME \r\n" +
|
||||||
|
" LEFT JOIN MATERIALSHIPREQUEST MS \r\n" +
|
||||||
|
" ON \r\n" +
|
||||||
|
" MD.SHIPREQUESTNAME = MS.SHIPREQUESTNAME \r\n" +
|
||||||
|
" WHERE \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME = :SHIPREQUESTNAME \r\n" +
|
||||||
|
" AND MP.SITENAME = :SITENAME \r\n" +
|
||||||
|
" AND MP.STOCKSTATE = 'Stocked'\r\n" +
|
||||||
|
" AND mp.MATERIALPACKINGNAME IN (:BOXLIST)\r\n" +
|
||||||
|
" GROUP BY \r\n" +
|
||||||
|
" MS.DELIVERYADDRESS, \r\n" +
|
||||||
|
" MP.MATERIALSPECNAME, \r\n" +
|
||||||
|
" MP.ERPFACTORY, \r\n" +
|
||||||
|
" MP.ERPLOCATION, \r\n" +
|
||||||
|
" MS.SHIPREQUESTDETAILTYPE, \r\n" +
|
||||||
|
" MP.UNIT, \r\n" +
|
||||||
|
" MD.COSTCENTER, \r\n" +
|
||||||
|
" MD.RECEIVEPRODUCTIONORDERNUMBER, \r\n" +
|
||||||
|
" MP.SHIPREQUESTNAME, \r\n" +
|
||||||
|
" MP.SHIPREQUESTDETAILNAME, \r\n" +
|
||||||
|
" MD.ERPRECEIVELOCATION, \r\n" +
|
||||||
|
" MD.ERPRECEIVEFACTORY ";
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, Object> hashMap = new HashMap<String, Object>();
|
||||||
|
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
hashMap.put("SITENAME", siteName);
|
||||||
|
hashMap.put("BOXLIST", boxList);
|
||||||
|
List<Map<String, Object>> 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("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);
|
||||||
|
//过账日期
|
||||||
|
body.put("BUDAT", TimeStampUtil.getCurrentTime("yyyyMMdd"));
|
||||||
|
//凭证日期
|
||||||
|
body.put("BLDAT", TimeStampUtil.getCurrentTime("yyyyMMdd"));
|
||||||
|
//凭证抬头文本
|
||||||
|
body.put("BKTXT", uniqueID);
|
||||||
|
//用户名
|
||||||
|
body.put("USNAM", user);
|
||||||
|
|
||||||
|
for (Map<String, Object> mm : queryForList) {
|
||||||
|
|
||||||
|
JSONObject item = new JSONObject(true);
|
||||||
|
|
||||||
|
// MATNR 发货物料号
|
||||||
|
item.put("MATNR", mm.get("MATERIALSPECNAME"));
|
||||||
|
// WERKS 收货工厂
|
||||||
|
item.put("WERKS", mm.get("ERPFACTORY"));
|
||||||
|
// LGORT 发货库存地点
|
||||||
|
item.put("LGORT", mm.get("ERPLOCATION"));
|
||||||
|
//BWART 移动类型
|
||||||
|
item.put("BWART", "541O");
|
||||||
|
//SOBKZ 特殊库存标识
|
||||||
|
// item.put("SOBKZ", "O");
|
||||||
|
//LIFNR 供应商编码
|
||||||
|
item.put("LIFNR", mm.get("DELIVERYADDRESS"));
|
||||||
|
//MENGE 数量
|
||||||
|
item.put("MENGE", mm.get("MATERIALQUANTITY"));
|
||||||
|
//MENGE 单位
|
||||||
|
item.put("MEINS", mm.get("UNIT"));
|
||||||
|
|
||||||
|
itemArray.add(item);
|
||||||
|
|
||||||
|
updateOEMINVENTORY(mm.get("ERPFACTORY").toString(),mm.get("DELIVERYADDRESS").toString(),
|
||||||
|
mm.get("MATERIALSPECNAME").toString(),mm.get("MATERIALQUANTITY").toString());
|
||||||
|
|
||||||
|
}
|
||||||
|
// 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("");
|
||||||
|
erplog.setServerName("WmsToErp");
|
||||||
|
erplog.setEventName("委外发料541O");
|
||||||
|
erplog.setId(uuid.toString());
|
||||||
|
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||||
|
erplog.setMessageId(UUID.randomUUID().toString());
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新OEMINVENTORY。zd.2024.8.7
|
||||||
|
public void updateOEMINVENTORY(String erpFactory,String supplierNo,String materialSpecName,String qty) throws Exception
|
||||||
|
{
|
||||||
|
String sqls="SELECT o.MATERIALSPECNAME FROM OEMINVENTORY o \r\n" +
|
||||||
|
" WHERE o.ERPFACTORY =:ERPFACTORY\r\n" +
|
||||||
|
" AND o.MATERIALSPECNAME =:MATERIALSPECNAME\r\n" +
|
||||||
|
" AND o.SUPPLIERNO =:SUPPLIERNO";
|
||||||
|
Map<String, Object> bp=new HashMap<>();
|
||||||
|
bp.put("ERPFACTORY", erpFactory);
|
||||||
|
bp.put("MATERIALSPECNAME", materialSpecName);
|
||||||
|
bp.put("SUPPLIERNO", supplierNo);
|
||||||
|
bp.put("QTY", qty);
|
||||||
|
List<Map<String, Object>> sr=IDMFrameServiceProxy.getSqlTemplate().queryForList(sqls, bp);
|
||||||
|
if(sr.size()>0)
|
||||||
|
{
|
||||||
|
String sqlu="UPDATE OEMINVENTORY o SET o.QTY =o.QTY + :QTY\r\n" +
|
||||||
|
" WHERE o.ERPFACTORY =:ERPFACTORY\r\n" +
|
||||||
|
" AND o.MATERIALSPECNAME =:MATERIALSPECNAME\r\n" +
|
||||||
|
" AND o.SUPPLIERNO =:SUPPLIERNO";
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(sqlu, bp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String sqli="INSERT INTO OEMINVENTORY(ERPFACTORY,MATERIALSPECNAME,SUPPLIERNO,QTY)\r\n" +
|
||||||
|
" VALUES (:ERPFACTORY,:MATERIALSPECNAME,:SUPPLIERNO,:QTY)";
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(sqli, bp);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user