update 二次确认物料出库请求接口/meswms_materialout_request,增加payMentDate字段过账时间
This commit is contained in:
parent
b9b2e02b08
commit
e62be693e1
@ -719,4 +719,132 @@ public class MESServiceImpl implements MESService{
|
||||
bp.put("LASTEVENTTIMEKEY", timekey);
|
||||
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;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2073,7 +2073,7 @@ public class ToSAPServiceImpl {
|
||||
}
|
||||
|
||||
//生产领料-261/311 (单据类型01、02) 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 undoId = "";
|
||||
@ -2175,7 +2175,7 @@ public class ToSAPServiceImpl {
|
||||
body.put("ITEM", itemArray);
|
||||
body.put("ITEMID", uniqueID);
|
||||
//过账日期
|
||||
body.put("BUDAT", TimeStampUtil.getCurrentTime("yyyyMMdd"));
|
||||
body.put("BUDAT", payMentDate);
|
||||
//凭证日期
|
||||
body.put("BLDAT", TimeStampUtil.getCurrentTime("yyyyMMdd"));
|
||||
//凭证抬头文本
|
||||
|
@ -3159,7 +3159,8 @@ public class InvoiceServiceImpl implements InvoiceService {
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mpKeyList, makeEventInfo, setEventInfo);
|
||||
*/
|
||||
//抛送MES数据
|
||||
untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList);
|
||||
//untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList);
|
||||
untils.StockOutSendMaterialInfoToMES(shipRequestName, "", materialPackingKeyList);
|
||||
//更新BOX状态
|
||||
EventInfo mesEventInfo = eventInfoUtil.makeEventInfo("CompletedShipRequestMES", eventUser, "CompletedShipRequestMES");
|
||||
SetEventInfo setEventInfo = new SetEventInfo();
|
||||
|
@ -169,16 +169,26 @@ public class MESToWMSServiceImpl implements MESToWMSService {
|
||||
|
||||
List<String> boxIdList = new ArrayList<>();
|
||||
String shipRequestName = "";
|
||||
String payMentDate = "";
|
||||
for (int i = 0; i < in.size(); i++) {
|
||||
JSONObject jb = in.getJSONObject(i);
|
||||
// String charge = jb.get("charge").toString(); // 批号
|
||||
String materialPackingName = jb.get("lotName").toString();
|
||||
shipRequestName = jb.get("shipRequestName").toString(); // 领料单号
|
||||
String materialPackingName = jb.get("lotName") == null ? "" : jb.get("lotName").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);
|
||||
|
||||
}
|
||||
|
||||
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");
|
||||
new CommonUtils().SaveUnDoInfoByStockPending(boxIdList, billCode, makeEventInfo);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user