update 二次确认物料出库请求接口/meswms_materialout_request,增加payMentDate字段过账时间

This commit is contained in:
18110972313 2025-05-13 14:08:47 +08:00
parent b9b2e02b08
commit e62be693e1
5 changed files with 179 additions and 7 deletions

View File

@ -719,4 +719,132 @@ public class MESServiceImpl implements MESService{
bp.put("LASTEVENTTIMEKEY", timekey); bp.put("LASTEVENTTIMEKEY", timekey);
IDMFrameServiceProxy.getSqlTemplate().update(sql, bp); IDMFrameServiceProxy.getSqlTemplate().update(sql, bp);
} }
public String sendMESAndInsertMaterialPackingMDC(String shipRequestName, String siteName, String receiveActNo, String wo,
String erpReceiveLocation,String erpReceiveFactory,List<String> boxList) throws CustomException{
//根据单据获取要发送MES的信息
String sql="SELECT * from(\r\n" +
" SELECT m.CHARGE,m.MATERIALPACKINGNAME,m.MATERIALSPECNAME,to_char(m.EXPIRINGDATE,'YYYY-MM-DD HH24:MI')EXPIRINGDATE,m.PHASE, \r\n" +
" m.TRUEGG ,m.FQTY ,m.FUNIT ,m.GXID,m.LASTEVENTUSER ,m.REMARK , m3.SHIPREQUESTTYPE, \r\n" +
" m3.SHIPREQUESTDETAILTYPE ,m2.MATERIALUNIT ,bm.DENOMINATOR/bm.MODULECULE CONVERSIONSCALE, \r\n" +
" m4.DESCRIPTION ,m2.MATERIALTYPE ,(SELECT RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m5 \r\n" +
" WHERE m5.SHIPREQUESTNAME=:SHIPREQUESTNAME AND m5.MATERIALSPECNAME=m.MATERIALSPECNAME \r\n" +
" ORDER BY m5.USEDATE,m5.SHIPREQUESTDETAILNAME FETCH FIRST ROW ONLY)WO \r\n" +
" FROM MATERIALPACKING m , MATERIALSPEC m2 ,MATERIALSHIPREQUEST m3 ,BS_MATERIALDESCRIPTION m4 ,BS_MATERIALUNIT bm \r\n" +
" WHERE m.SITENAME =:SITENAME \r\n" +
" AND m.SHIPREQUESTNAME =:SHIPREQUESTNAME\r\n" +
" AND m.MATERIALPACKINGNAME in(:BOXLIST) \r\n" +
" AND m4.LANGUAGE = 'ZH' \r\n" +
" AND m.MATERIALSPECNAME =m2.MATERIALSPECNAME \r\n" +
" AND m.SHIPREQUESTNAME =m3.SHIPREQUESTNAME \r\n" +
" AND m.MATERIALSPECNAME =m4.MATERIALSPECNAME \r\n" +
" AND m.MATERIALSPECNAME =bm.MATERIALSPECNAME(+) \r\n" +
" AND m.FUNIT =bm.ADDITIONALUNIT(+))A\r\n" +
" LEFT JOIN (\r\n" +
" SELECT m.MATERIALPACKINGNAME MPS,sum(m.QTY)MATERIALQUANTITY FROM MATERIALPACKINGSUB m \r\n" +
" WHERE m.MATERIALPACKINGNAME in(:BOXLIST)\r\n" +
" AND m.RECEIVEREQUESTNAME =:SHIPREQUESTNAME\r\n" +
" GROUP BY m.MATERIALPACKINGNAME)B\r\n" +
" ON A.MATERIALPACKINGNAME=b.MPS";
Map<String, Object> hashMap = new HashMap<String, Object> ();
hashMap.put("RECEIVEACTNO", receiveActNo);
hashMap.put("SITENAME", siteName);
hashMap.put("SHIPREQUESTNAME", shipRequestName);
hashMap.put("ERPFACTORY", erpReceiveFactory);
hashMap.put("ERPLOCATION", erpReceiveLocation);
hashMap.put("BOXLIST", boxList);
hashMap.put("EVENTNAME", "StockOut");
//hashMap.put("WO", wo);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap);
String makeOutMaterialInfoSendJson = MakeOutMaterialInfoSendJson(queryForList,shipRequestName);
System.out.println("JSON=================:"+makeOutMaterialInfoSendJson);
String httpPost = mesHttpUtil.httpPost(baseUrl + "/wms/consumableReceive", makeOutMaterialInfoSendJson);
org.json.JSONObject jsonObject = new org.json.JSONObject(httpPost);
String code = jsonObject.getString("code");
boolean success = jsonObject.getBoolean("success");
// 写log
ErpMessageLog erplog = new ErpMessageLog();
erplog.setEventUser("");
erplog.setServerName("WmsToMES");
erplog.setEventName("OutMaterialInfoSend");
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
erplog.setMessageId(UUID.randomUUID().toString());
erplog.setSendMsg(makeOutMaterialInfoSendJson);
erplog.setReturnMsg2(httpPost.toString());
erplog.setResultCode(code);
MessageLogUtil.writeMessageLog(erplog);
if (!success) {
String msg = jsonObject.getString("msg");
throw new CustomException("发送MES失败");
}
//插入MATERIALPCKINGMDC表
for(int i=0;i<boxList.size();i++)
{
String boxid=boxList.get(i);
String sqls="SELECT m.MATERIALPACKINGNAME FROM MATERIALPACKINGMDC m \r\n" +
" WHERE m.CHARGE =(SELECT m.CHARGE FROM MATERIALPACKING m \r\n" +
" WHERE m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME)";
Map<String, Object> bps = new HashMap<String, Object> ();
bps.put("MATERIALPACKINGNAME", boxid);
bps.put("SHIPREQUESTNAME", shipRequestName);
List<Map<String, Object>> srs=IDMFrameServiceProxy.getSqlTemplate().queryForList(sqls, bps);
String sql2="SELECT nvl(sum(qty),0)QTY FROM MATERIALPACKINGSUB m \r\n" +
"WHERE m.RECEIVEREQUESTNAME =:SHIPREQUESTNAME\r\n" +
"AND m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME";
List<Map<String, Object>> sr2=IDMFrameServiceProxy.getSqlTemplate().queryForList(sql2, bps);
String qty=sr2.get(0).get("QTY").toString();
bps.put("QTY", qty);
if(srs.size()>0)
{
// String sqlu="UPDATE MATERIALPACKINGMDC m SET m.MATERIALQUANTITY =m.MATERIALQUANTITY + :QTY \r\n" +
// " WHERE m.CHARGE =(SELECT m.CHARGE FROM MATERIALPACKING m \r\n" +
// " WHERE m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME)";
String sqlu="DELETE FROM MATERIALPACKINGMDC m "+
" WHERE m.CHARGE =(SELECT m.CHARGE FROM MATERIALPACKING m \r\n" +
" WHERE m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME)";
IDMFrameServiceProxy.getSqlTemplate().update(sqlu, bps);
}
String sqli = "INSERT INTO MATERIALPACKINGMDC(MATERIALPACKINGNAME,CHARGE,MATERIALSPECNAME,EXPIRINGDATE,PHASE, \r\n"
+ " TRUEGG ,MATERIALQUANTITY ,FQTY ,FUNIT ,LASTEVENTUSER ,REMARK , \r\n"
+ " SHIPREQUESTDETAILTYPE ,MATERIALUNIT ,CONVERSIONSCALE, \r\n"
+ " DESCRIPTION ,MATERIALTYPE, ERPFACTORY,ERPLOCATION,OUTTIME,EVENTNAME,EVENTTIME,WO,SHIPREQUESTNAME) \r\n"
+ " SELECT m.MATERIALPACKINGNAME,m.CHARGE,m.MATERIALSPECNAME,m.EXPIRINGDATE,m.PHASE, \r\n"
+ " m.TRUEGG ,:QTY ,m.FQTY ,m.FUNIT ,m.LASTEVENTUSER ,m.REMARK , \r\n"
+ " m3.SHIPREQUESTDETAILTYPE ,m2.MATERIALUNIT ,bm.DENOMINATOR/bm.MODULECULE CONVERSIONSCALE, \r\n"
+ " m4.DESCRIPTION ,m2.MATERIALTYPE ,:ERPFACTORY,:ERPLOCATION,SYSDATE,:EVENTNAME,SYSDATE ,\r\n"
+ " (SELECT RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m5\r\n"
+ " WHERE m5.SHIPREQUESTNAME=:SHIPREQUESTNAME AND m5.MATERIALSPECNAME=m.MATERIALSPECNAME \r\n"
+ " ORDER BY m5.USEDATE,m5.SHIPREQUESTDETAILNAME FETCH FIRST ROW ONLY)WO,:SHIPREQUESTNAME \r\n"
+ " FROM MATERIALPACKING m ,MATERIALSPEC m2 ,MATERIALSHIPREQUEST m3 ,BS_MATERIALDESCRIPTION m4 ,BS_MATERIALUNIT bm \r\n"
+ " WHERE m.SITENAME =:SITENAME \r\n"
+ " AND m.SHIPREQUESTNAME =:SHIPREQUESTNAME AND m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME\r\n"
+ " AND (m.RECEIVEACTNO =:RECEIVEACTNO OR :RECEIVEACTNO IS NULL ) \r\n"
+ " AND m.MATERIALSPECNAME =m2.MATERIALSPECNAME \r\n"
+ " AND m.SHIPREQUESTNAME =m3.SHIPREQUESTNAME \r\n"
+ " AND m.MATERIALSPECNAME =m4.MATERIALSPECNAME \r\n"
+ " AND m.MATERIALSPECNAME =bm.MATERIALSPECNAME(+) \r\n"
+ " AND m.FUNIT =bm.ADDITIONALUNIT(+) AND m.STOCKSTATE = 'StockPending'";
hashMap.put("QTY", qty);
hashMap.put("MATERIALPACKINGNAME", boxid);
IDMFrameServiceProxy.getSqlTemplate().update(sqli, hashMap);
}
return code;
}
} }

View File

@ -2073,7 +2073,7 @@ public class ToSAPServiceImpl {
} }
//生产领料-261/311 (单据类型0102) zd.2024.8.14 //生产领料-261/311 (单据类型0102) zd.2024.8.14
public String ProductionStockOut_NEW(String shipRequestName, String siteName, String user,List<String> boxList) throws Exception { public String ProductionStockOut_NEW(String shipRequestName, String siteName, String user,List<String> boxList, String payMentDate) throws Exception {
String rcode; String rcode;
String undoId = ""; String undoId = "";
@ -2175,7 +2175,7 @@ public class ToSAPServiceImpl {
body.put("ITEM", itemArray); body.put("ITEM", itemArray);
body.put("ITEMID", uniqueID); body.put("ITEMID", uniqueID);
//过账日期 //过账日期
body.put("BUDAT", TimeStampUtil.getCurrentTime("yyyyMMdd")); body.put("BUDAT", payMentDate);
//凭证日期 //凭证日期
body.put("BLDAT", TimeStampUtil.getCurrentTime("yyyyMMdd")); body.put("BLDAT", TimeStampUtil.getCurrentTime("yyyyMMdd"));
//凭证抬头文本 //凭证抬头文本

View File

@ -3159,7 +3159,8 @@ public class InvoiceServiceImpl implements InvoiceService {
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mpKeyList, makeEventInfo, setEventInfo); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mpKeyList, makeEventInfo, setEventInfo);
*/ */
//抛送MES数据 //抛送MES数据
untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList); //untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList);
untils.StockOutSendMaterialInfoToMES(shipRequestName, "", materialPackingKeyList);
//更新BOX状态 //更新BOX状态
EventInfo mesEventInfo = eventInfoUtil.makeEventInfo("CompletedShipRequestMES", eventUser, "CompletedShipRequestMES"); EventInfo mesEventInfo = eventInfoUtil.makeEventInfo("CompletedShipRequestMES", eventUser, "CompletedShipRequestMES");
SetEventInfo setEventInfo = new SetEventInfo(); SetEventInfo setEventInfo = new SetEventInfo();

View File

@ -169,16 +169,26 @@ public class MESToWMSServiceImpl implements MESToWMSService {
List<String> boxIdList = new ArrayList<>(); List<String> boxIdList = new ArrayList<>();
String shipRequestName = ""; String shipRequestName = "";
String payMentDate = "";
for (int i = 0; i < in.size(); i++) { for (int i = 0; i < in.size(); i++) {
JSONObject jb = in.getJSONObject(i); JSONObject jb = in.getJSONObject(i);
// String charge = jb.get("charge").toString(); // 批号 // String charge = jb.get("charge").toString(); // 批号
String materialPackingName = jb.get("lotName").toString(); String materialPackingName = jb.get("lotName") == null ? "" : jb.get("lotName").toString();
shipRequestName = jb.get("shipRequestName").toString(); // 领料单号 shipRequestName = jb.get("shipRequestName") == null ? "" : jb.get("shipRequestName").toString(); // 领料单号
payMentDate = jb.get("payMentDate") == null ? "" : jb.get("payMentDate").toString(); // 过账时间
//判空
if (StringUtils.isNotEmpty(payMentDate) || StringUtils.isNotEmpty(shipRequestName) || StringUtils.isNotEmpty(materialPackingName)) {
result = AjaxResult.me().setSuccess(false).setErrorCode(500).setMessage("过账日期、单号、条码不能为空");
loginfo.setResultCode("1");
loginfo.setReturnMsg(JSONObject.toJSONString(result));
// 消息保存日志erp推送wms的数据写入表BS_ERPMESSAGELOG中
MessageLogUtil.writeMessageLog(loginfo);
return result;
}
boxIdList.add(materialPackingName); boxIdList.add(materialPackingName);
} }
String billCode = new ToSAPServiceImpl().ProductionStockOut_NEW(shipRequestName, "SDK", "MES", boxIdList); String billCode = new ToSAPServiceImpl().ProductionStockOut_NEW(shipRequestName, "SDK", "MES", boxIdList, payMentDate);
EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("CompleteShipRequest", "MES", "CompleteShipRequest:MES Receive"); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("CompleteShipRequest", "MES", "CompleteShipRequest:MES Receive");
new CommonUtils().SaveUnDoInfoByStockPending(boxIdList, billCode, makeEventInfo); new CommonUtils().SaveUnDoInfoByStockPending(boxIdList, billCode, makeEventInfo);

View File

@ -810,4 +810,37 @@ public void SaveUnDoInfo_ForSap(List<String> list, String undoid, EventInfo mak
} }
} }
public void StockOutSendMaterialInfoToMES(String invoiceNo,String receiveActNo,List<String> boxList){
// 定义SQL查询语句用于获取物料接收位置和接收工厂信息
String sql="SELECT m.ERPRECEIVELOCATION,m.ERPRECEIVEFACTORY FROM MATERIALSHIPREQUEST a,MATERIALSHIPREQUESTDETAIL m \r\n" +
" WHERE m.SHIPREQUESTNAME =:SHIPREQUESTNAME and m.SHIPREQUESTNAME=a.SHIPREQUESTNAME "
+ " AND a.SHIPREQUESTDETAILTYPE in('311','261','201')";
// 创建参数映射用于执行SQL查询
Map<String, Object> bp=new HashMap<>();
bp.put("SHIPREQUESTNAME", invoiceNo);
try {
// 执行SQL查询获取查询结果列表
List<Map<String, Object>> sr=IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bp);
if(sr.size()>0)
{
// 创建MESServiceImpl实例用于调用发送物料信息到MES系统的方法
MESServiceImpl mesService=new MESServiceImpl() ;
// 调用MESServiceImpl的OutMaterialInfoSend_NEW方法发送物料信息到MES系统
/*
mesService.OutMaterialInfoSend_NEW2(invoiceNo, "SDK", receiveActNo, "",
sr.get(0).get("ERPRECEIVELOCATION")==null?"":sr.get(0).get("ERPRECEIVELOCATION").toString()
,sr.get(0).get("ERPRECEIVEFACTORY")==null?"":sr.get(0).get("ERPRECEIVEFACTORY").toString(),boxList );
*/
mesService.sendMESAndInsertMaterialPackingMDC(invoiceNo, "SDK", receiveActNo, "",
sr.get(0).get("ERPRECEIVELOCATION")==null?"":sr.get(0).get("ERPRECEIVELOCATION").toString()
,sr.get(0).get("ERPRECEIVEFACTORY")==null?"":sr.get(0).get("ERPRECEIVEFACTORY").toString(),boxList );
}
} catch (CustomException e) {
// 异常处理打印异常堆栈跟踪信息
e.printStackTrace();
}
}
} }