fix:修改备货出库
This commit is contained in:
parent
78bb0fcdbc
commit
df74f03a55
@ -2231,6 +2231,157 @@ public class ToSAPServiceImpl {
|
||||
}
|
||||
return undoId;
|
||||
}
|
||||
|
||||
// 采购退货
|
||||
public String PurchaseStockOut(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;
|
||||
}
|
||||
|
||||
//MES上报工单消耗数据-261工单投料
|
||||
public String mesMaterialConsume(List<String> boxIdList, List<String> qtyList, String user,String wo) throws Exception {
|
||||
|
@ -1293,7 +1293,8 @@ public class SAPToWMSController {
|
||||
+"AND (:MATERIALSPECNAME IS NULL OR M.MATERIALSPECNAME=:MATERIALSPECNAME) "
|
||||
+"AND (:CHARGE IS NULL OR M.CHARGE=:CHARGE) "
|
||||
+"AND (:ERPLOCATION IS NULL OR M.ERPLOCATION=:ERPLOCATION) "
|
||||
+"AND M.STOCKSTATE='Stocked' "
|
||||
+"AND M.STOCKSTATE='Stocked' "
|
||||
+"AND M.SPECIALSTATE='2' "
|
||||
+"AND M.MATERIALPACKINGTYPE='Box' "
|
||||
+"GROUP BY M.ERPFACTORY,M.MATERIALSPECNAME,M.ERPLOCATION,M.CHARGE ";
|
||||
Map<String,Object> map=new HashMap<String, Object>();
|
||||
|
@ -212,6 +212,7 @@ public class InvoiceServiceImpl implements InvoiceService {
|
||||
Map<String, Object> hashMap = new HashMap<String,Object> ();
|
||||
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||
List<String> materialPackingKeyList = new ArrayList<> ();
|
||||
List<MaterialPackingKey> arrayList = new ArrayList<MaterialPackingKey> ();
|
||||
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
|
||||
String shipRequestType = queryForList.get(0).get("SHIPREQUESTTYPE").toString();
|
||||
String detailype = queryForList.get(0).get("SHIPREQUESTDETAILTYPE").toString();
|
||||
@ -321,6 +322,8 @@ public class InvoiceServiceImpl implements InvoiceService {
|
||||
}
|
||||
}
|
||||
materialPackingKeyList.add(materialPackingName);
|
||||
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialPackingName);
|
||||
arrayList.add(materialPackingKey);
|
||||
}
|
||||
//判断会有多少个仓库发货,不同仓库需要分开走账
|
||||
StringBuffer cklx = new StringBuffer();
|
||||
@ -344,12 +347,14 @@ public class InvoiceServiceImpl implements InvoiceService {
|
||||
case "01"://生产领料
|
||||
case "02"://生产补料
|
||||
// 判断是否是现场仓
|
||||
String IsSql = "SELECT m.ERPRECEIVELOCATION,m. FROM MATERIALSHIPREQUESTDETAIL m WHERE SHIPREQUESTNAME = :SHIPREQUESTNAME";
|
||||
String IsSql = "SELECT m.ERPRECEIVELOCATION,m.ERPLOCATION,m.ERPRECEIVEFACTORY FROM MATERIALSHIPREQUESTDETAIL m WHERE SHIPREQUESTNAME = :SHIPREQUESTNAME";
|
||||
Map<String,Object> bpc=new HashMap<>();
|
||||
bpc.put("SHIPREQUESTNAME", shipRequestName);
|
||||
List<Map<String,Object>> receiveList = IDMFrameServiceProxy.getSqlTemplate().queryForList(IsSql, bpc);
|
||||
String ERPRECEIVELOCATION = receiveList.get(0).get("ERPRECEIVELOCATION") == null ? "" : receiveList.get(0).get("ERPRECEIVELOCATION").toString();
|
||||
String ERPLOCATION = receiveList.get(0).get("ERPLOCATION") == null ? "" : receiveList.get(0).get("ERPLOCATION").toString();
|
||||
String ERPRECEIVEFACTORY = receiveList.get(0).get("ERPRECEIVEFACTORY") == null ? "" : receiveList.get(0).get("ERPRECEIVEFACTORY").toString();
|
||||
|
||||
//判断是否为MES需要接收的物料
|
||||
String sqlc=" SELECT e.ENUMVALUE FROM MES_ENUMDEFVALUE e \r\n" +
|
||||
" WHERE e.ENUMNAME ='ConfirmReceiveArea'\r\n" +
|
||||
@ -359,16 +364,37 @@ public class InvoiceServiceImpl implements InvoiceService {
|
||||
" WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1))";
|
||||
|
||||
List<Map<String,Object>> src=IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlc, bpc);
|
||||
//MES需要接收,则只抛送数据
|
||||
if(!ERPRECEIVELOCATION.isEmpty())
|
||||
{
|
||||
|
||||
|
||||
//MES需要接收,则只抛送数据。 或如果是现场仓,先移到现场仓
|
||||
if(src.size()>0 || !ERPRECEIVELOCATION.isEmpty()) {
|
||||
//new MESServiceImpl().NeedReceiveMaterialInfoSend_NEW(shipRequestName, "SDK", materialPackingKeyList);
|
||||
billCode="Y";
|
||||
|
||||
|
||||
// 转库到线边仓
|
||||
// ToSAPServiceImpl.moveLibrary2(materialPackingKeyList, shipRequestName, ERPLOCATION, ERPRECEIVELOCATION,eventUser);
|
||||
if(src.size()>0) {
|
||||
//new MESServiceImpl().NeedReceiveMaterialInfoSend_NEW(shipRequestName, "SDK", materialPackingKeyList);
|
||||
billCode="Y";
|
||||
billCode = toSAPService.NoSourceChangeLocation(arrayList,ERPRECEIVEFACTORY,
|
||||
ERPRECEIVELOCATION, "", eventUser );
|
||||
|
||||
List<MaterialPackingKey> mpKeyList = new ArrayList<MaterialPackingKey> ();
|
||||
SetEventInfo setEventInfo = new SetEventInfo();
|
||||
for (MaterialPackingKey materialPacking : arrayList) {
|
||||
MaterialPackingKey key = materialPacking;
|
||||
mpKeyList.add(key);
|
||||
}
|
||||
|
||||
Map<String, Object> hashMapPack = new HashMap<String,Object> ();
|
||||
hashMapPack.put("erpLocation", ERPRECEIVELOCATION == null ? "" : ERPRECEIVELOCATION);
|
||||
hashMapPack.put("erpFactory", ERPRECEIVEFACTORY == null ? "" : ERPRECEIVEFACTORY);
|
||||
hashMapPack.put("locationName", "");
|
||||
hashMapPack.put("lastEventUser", eventUser);
|
||||
hashMapPack.put("unDoID", billCode);
|
||||
setEventInfo.setUserColumns(hashMapPack);
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mpKeyList, makeEventInfo, setEventInfo);
|
||||
//抛送MES数据
|
||||
untils.sendMaterialInfoToMES_NEW(shipRequestName, "", materialPackingKeyList);
|
||||
//billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,"");
|
||||
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -378,6 +404,7 @@ public class InvoiceServiceImpl implements InvoiceService {
|
||||
untils.sendMaterialInfoToMES_NEW(shipRequestName, "", materialPackingKeyList);
|
||||
//billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,"");
|
||||
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -96,8 +96,10 @@ public class PurchaseReturnServiceImpl implements PurchaseReturnService {
|
||||
purchaseReturnBoxListName.add(materialPacking.getMaterialPackingName());
|
||||
}
|
||||
//过账SAP
|
||||
String undoId = toSAPServiceImpl.orderStockOut(receiverequestname, siteName, user, purchaseReturnBoxListName);
|
||||
//更新库存状态
|
||||
// String undoId = toSAPServiceImpl.orderStockOut(receiverequestname, siteName, user, purchaseReturnBoxListName);
|
||||
String undoId = toSAPServiceImpl.OrderStockBackOut(receiverequestname, siteName, user);
|
||||
// String undoId = "111";
|
||||
//更新库存状态
|
||||
toSapDao.updateStockState(purchaseReturnBoxList, "StockOut", undoId);
|
||||
//更新出入库流水
|
||||
toSapDao.saveUnDoInfo(purchaseReturnBoxList, undoId, "");
|
||||
|
Loading…
x
Reference in New Issue
Block a user