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;
}
}
}