using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using wcftest.BussinessExtension.Handle; using wcftest.orm; using wcftest.sendToSap; namespace wcftest.BussinessExtension { /// /// SAP交互服务 /// public class SAPHelper { private static sendToSap.SapWcfServiceClient sendSap = new sendToSap.SapWcfServiceClient(); #region 推送 /// 移库确认 【已完结】 /// 移库确认 【已完结】 /// /// 移库明细 /// public static string moveStockConfirm(SapSendInfo sapSendInfo, string moveList) { string msg = ""; // return form.textBox7.Text.Trim(); var logTitle = GetSapLog("moveStockConfirm", "移库确认", moveList); try { Log4NetHelper.WriteInfoLog(LogType.SAPService, "开始推送" + logTitle); MovMaterialEntity[] results = JsonConvert.DeserializeObject(moveList); //ConfirmMOV string result = sendSap.ConfirmMOV(results, out msg); if (msg == "") { //成功记录到数据库 if (sapSendInfo == null) {//只有不存在的时候,才会写进去,已经存在的,只需要更改状态即可 SapSendInfoHandler.SaveAddSapSendInfoForMove(true, results.ToList(), result, msg); } Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送成功" + logTitle); var data = new { result = true, msg = result }; msg = JsonConvert.SerializeObject(data); return msg; } else { SapSendFailRecodInfoHandler.AddForMove(results, result, msg);//增加 [EditBy shaocx,2022-02-22] Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); var data = new { result = false, msg = "失败" }; msg = JsonConvert.SerializeObject(data); return msg; } } catch (Exception ex) { Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message, ex); var data = new { result = false, msg = "异常" }; msg = JsonConvert.SerializeObject(data); //logtxt.txtWrite("类名: " + "apitest" + "方法名:" + "moveStockConfirm" + "产生异常" + logtxt.oneRow(ex.ToString()), 2); } return msg; } /// 出库确认,将出库信息反馈给SAP 【注意:只有按单出库的时候推送给SAP】 /// 出库确认,将出库信息反馈给SAP /// /// 出库物料明细 /// public static string StockOutConfirm(SapSendInfo sapSendInfo, string outList) { string msg = ""; GIMaterialEntity[] results = JsonConvert.DeserializeObject(outList); var logTitle = GetSapLog("StockOutConfirm", "出库确认,将出库信息反馈给SAP", outList); try { //记录日志 Log4NetHelper.WriteInfoLog(LogType.SAPService, "开始推送" + logTitle); string result = sendSap.ConfirmGI(results, out msg); if (msg == "") { //成功记录到数据库 if (sapSendInfo == null) {//只有不存在的时候,才会写进去,已经存在的,只需要更改状态即可 SapSendInfoHandler.SaveAddSapSendInfoForOutStore(true, outList, results.ToList(), result, msg); } Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送成功" + logTitle); var data = new { result = true, msg = result }; msg = JsonConvert.SerializeObject(data); return msg; } else { Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); SapSendFailRecodInfoHandler.AddForOutStore(results, result, msg);//记录失败表 var data = new { result = false, msg = "失败" }; msg = JsonConvert.SerializeObject(data); return msg; } } catch (Exception ex) { Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message, ex); SapSendFailRecodInfoHandler.AddForOutStore(results, "WMS抛出异常", "WMS抛出异常:" + ex.Message);//记录失败表 var data = new { result = false, msg = "异常" }; msg = JsonConvert.SerializeObject(data); //logtxt.txtWrite("出库确认异常 类名: " + "apitest" + "方法名:StockOutConfirm" + "出库明细:" + outList + ex.StackTrace.ToString(), 2); } return msg; } /// 按凭证退货 【已完结】 /// 按凭证退货 【已完结】 /// /// /// public static string reverser(string res) { string msg = ""; if (res.Trim() == "") { return "参数为空"; } var logTitle = GetSapLog("reverser", "按凭证退货", res); try { Log4NetHelper.WriteInfoLog(LogType.SAPService, "开始推送" + logTitle); string result = sendSap.WmsReverser(res, out msg); if (msg == "") { //记录到表中 SapSendInfoHandler.AddSapSendInfoForWmsReverser(res, result, msg); Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送成功" + logTitle); return msg; } else { //这里是 收货,退货失败? [EditBy shaocx,2022-03-06] Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); SapSendFailRecodInfoHandler.AddForReverser(res, result, msg);//记录失败表 return msg; } } catch (Exception ex) { msg = "WMS异常:" + ex.Message; Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message, ex); return msg; } } /// 对收到的物料进行收货确认 【已完结】 /// 对收到的物料进行收货确认 【已完结】 /// /// public static bool ConfirmGR(GRMaterialEntity[] results, out string msg) { msg = ""; var logTitle = GetSapLog("ConfirmGR", "对收到的物料进行收货确认", JsonConvert.SerializeObject(results)); try { Log4NetHelper.WriteInfoLog(LogType.SAPService, "开始推送" + logTitle); string info = sendSap.ConfirmGR(results, out msg); //form.textBox6.Text = DateTime.Now.ToString("dd-HH-mm-ss") + "收货,退货成功,凭证:" + info + "返回信息" + msg + "\r\n" + form.textBox6.Text; if (msg == "") { //成功记录到表中 SapSendInfoHandler.AddSapSendInfoForSH(JsonConvert.SerializeObject(results), results, info, msg); Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送成功" + logTitle); //logtxt.txtWrite("收货,退货成功,凭证:" + info, 0); return true; } else { //这里是 收货,退货失败? [EditBy shaocx,2022-03-06] Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送失败" + logTitle + ",返回结果:" + msg); //logtxt.txtWrite("收货,退货失败,凭证:" + info + ",返回msg:" + msg, 0); SapSendFailRecodInfoHandler.AddForSH(results, info, msg);//记录失败表 return false; } } catch (Exception ex) { msg = "WMS异常:" + ex.Message; Log4NetHelper.WriteInfoLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message); Log4NetHelper.WriteErrorLog(LogType.SAPService, "推送异常:" + logTitle + ",返回结果:" + msg + ",异常:" + ex.Message, ex); return false; } } #endregion #region 获取 /// /// 根据采购单号获取采购单 /// /// /// /// public static PurchaseOrderEntity GetPurchaseOrder(string poCode, out string msg) { PurchaseOrderEntity resultPo = sendSap.GetPurchaseOrder(poCode, out msg); return resultPo; } #endregion /// /// 生成基础的日志前缀 /// /// /// /// /// private static string GetSapLog(string funSap, string funDesc, string param) { //如: [ConfirmGR](对收到的物料进行收货确认),参数: return " => [" + funSap + "](" + funDesc + "),参数:" + param; } } }