fix:修改领料现场仓

This commit is contained in:
郭飞 2025-04-01 19:46:30 +08:00
parent 95d6e76402
commit a82a288014
2 changed files with 88 additions and 6 deletions

View File

@ -4740,6 +4740,78 @@ public class ToSAPServiceImpl {
} }
public String moveLibrary2(List materialPackingNameList, String shipRequestName, String fromErpLocation, String toErpLocation, String eventUser) throws Exception {
StringBuilder materialPackingNames = new StringBuilder();
materialPackingNameList.forEach(e -> {
materialPackingNames.append("'" + e + "'").append(",");
});
materialPackingNames.delete(materialPackingNames.length() - 1, materialPackingNames.length());
StringBuilder sql = new StringBuilder();
//编写 需要执行的SQL
sql.append("SELECT mp.MATERIALSPECNAME ,").append(SystemPropHelper.CR)
.append(" mp.ERPFACTORY ,").append(SystemPropHelper.CR)
.append(" mp.ERPLOCATION ,").append(SystemPropHelper.CR)
.append(" mp.SHIPREQUESTNAME ,").append(SystemPropHelper.CR)
.append(" mp.SHIPREQUESTDETAILNAME ,").append(SystemPropHelper.CR)
.append(" m.SHIPREQUESTTYPE, ").append(SystemPropHelper.CR)
.append(" m2.UNIT ,").append(SystemPropHelper.CR)
.append(" sum (mp.MATERIALQUANTITY ) MATERIALQUANTITY ").append(SystemPropHelper.CR)
.append(" FROM materialpacking mp").append(SystemPropHelper.CR)
.append("LEFT JOIN MATERIALSHIPREQUEST m").append(SystemPropHelper.CR)
.append(" ON m.shiprequestname = mp.SHIPREQUESTNAME ").append(SystemPropHelper.CR)
.append("LEFT JOIN MATERIALSHIPREQUESTDETAIL m2 ").append(SystemPropHelper.CR)
.append(" ON m.shiprequestname = m2.shiprequestname").append(SystemPropHelper.CR)
.append(" AND mp.shiprequestdetailname = m2.shiprequestdetailname").append(SystemPropHelper.CR)
.append(" AND m2.materialspecname = mp.MATERIALSPECNAME ").append(SystemPropHelper.CR)
.append(" WHERE mp.MATERIALPACKINGNAME IN (").append(materialPackingNames.toString()).append(") ").append(SystemPropHelper.CR)
.append(" AND m.SHIPREQUESTNAME = :SHIPREQUESTNAME ").append(SystemPropHelper.CR)
.append("GROUP BY mp.MATERIALSPECNAME, mp.ERPFACTORY, mp.ERPLOCATION, mp.SHIPREQUESTNAME ,mp.SHIPREQUESTDETAILNAME ,m.SHIPREQUESTTYPE,m2.UNIT ");
Map<String, String> hashMap = new HashMap<>();
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap);
String moveLibraryInfo = makeMoveLibrary(queryForList, eventUser);
String sapreturn = "";
String rcode = "";
String rmsg = "";
String undoId = "";
try {
sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl, "",
moveLibraryInfo);
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();//将物料凭证号与凭证年度拼在一起
}
} catch (Exception e) {
log.error("WMS请求SAP:" + e.getMessage(), e);
throw new RuntimeException("WMS请求SAP" + rmsg);
} finally {
// 写入message log
ErpMessageLog erplog = new ErpMessageLog();
erplog.setEventUser(eventUser);
erplog.setServerName("WmsToErp");
erplog.setEventName("PurStockIn");
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
erplog.setMessageId(shipRequestName);
erplog.setSendMsg2(moveLibraryInfo);
erplog.setSendMsg(moveLibraryInfo);
erplog.setReturnMsg2(sapreturn);
erplog.setResultCode(rcode);
MessageLogUtil.writeMessageLog(erplog);
}
if (!"S".equals(rcode)) {
throw new Exception("SAP返回异常" + rmsg);
}
return null;
}
public String makeMoveLibrary(List<Map<String, Object>> queryForList, String user) { public String makeMoveLibrary(List<Map<String, Object>> queryForList, String user) {
if (queryForList == null || queryForList.size() < 1) { if (queryForList == null || queryForList.size() < 1) {
return ""; return "";

View File

@ -343,7 +343,13 @@ public class InvoiceServiceImpl implements InvoiceService {
case "01"://生产领料 case "01"://生产领料
case "02"://生产补料 case "02"://生产补料
// 判断是否是现场仓
String IsSql = "SELECT m.ERPRECEIVELOCATION,m. 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();
//判断是否为MES需要接收的物料 //判断是否为MES需要接收的物料
String sqlc=" SELECT e.ENUMVALUE FROM MES_ENUMDEFVALUE e \r\n" + String sqlc=" SELECT e.ENUMVALUE FROM MES_ENUMDEFVALUE e \r\n" +
" WHERE e.ENUMNAME ='ConfirmReceiveArea'\r\n" + " WHERE e.ENUMNAME ='ConfirmReceiveArea'\r\n" +
@ -351,14 +357,18 @@ public class InvoiceServiceImpl implements InvoiceService {
" SELECT p.AREANAME FROM MES_PRODUCTREQUEST p \r\n" + " SELECT p.AREANAME FROM MES_PRODUCTREQUEST p \r\n" +
" WHERE p.PRODUCTREQUESTNAME =(SELECT m.RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m \r\n" + " WHERE p.PRODUCTREQUESTNAME =(SELECT m.RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m \r\n" +
" WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1))"; " WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1))";
Map<String,Object> bpc=new HashMap<>();
bpc.put("SHIPREQUESTNAME", shipRequestName);
List<Map<String,Object>> src=IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlc, bpc); List<Map<String,Object>> src=IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlc, bpc);
//MES需要接收则只抛送数据 //MES需要接收则只抛送数据
if(src.size()>0) if(!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";
}
} }
else else
{ {